数码之家

 找回密码
 立即注册
搜索
查看: 2431|回复: 25

[硬件] 如何用EPROM模拟软盘或硬盘?30年前自己开发的测试卡

[复制链接]
发表于 2022-11-17 14:56:45 | 显示全部楼层 |阅读模式
本帖最后由 18912334956 于 2022-11-17 20:37 编辑

ISA 卡 + EPROM + GAL 芯片 模拟软盘或硬盘
30年前自己开发的产品, 硬件没有保留, 只留下图纸和代码, 还有说明书。 和大家共享。

1. 数据存贮先顺序填满0柱面0磁头的所有扇区,之后顺序填满0柱面的各个磁头,当0柱面填满后,再顺序以相同规则填满各个柱面。
由此可见,硬盘编址是以柱面、磁头及扇区为单位的三维编址,而固态盘的编址实际是一维的,因此,为仿真硬盘工作,必须提供一个地址转换子程序。
由于固态盘的容量并不象硬盘那样固定不变,对于固态盘参数的选择应当尽可能简单。
对于硬盘来说,在0柱面0磁头第一个扇区中保存主引导扇区,而此磁道的其他扇区均无法利用,因此,一个磁道中扇区数不宜太大。
此次固态盘容量为8M,我选择的参数是16个磁头,64个柱面,每磁道16个扇区。固态盘硬件最多可插16片芯片,只需根据芯片数修改磁头参数即可。
2. 在MS-DOS环境下,INTEL 80X86系列微处理器通常在实模式下运行。在此模式下,INTEL所有微处理器均保持兼容,由于只使用20根地址线,
处理器寻址范围为1MB。一九八零年,IBM的工程师在设计最早的IBM PC机时,对内存地址空间使用做了如下规划:
在处理器可寻址的1MB地址空间的头640KB(00000-9FFFF)用作程序运行使用,称为常规内存,
其后的128KB(A0000-BFFFF)作为显示内存区域,这就造成了MS-DOS众所周知的640K内存限制。
地址空间的最后64KB地址空间由系统BIOS使用;剩余192KB地址空间(C0000-EFFFF)则供各种插件BIOS使用。
计算机启动自检时,会扫描这个区域,并自动加载找到的BIOS代码,由于代码执行在操作系统加载之前,能够实现对操作系统的透明。
实际上,现代PC插卡大多就是使用这种方法扩展本身的功能的。固态盘BIOS地址也正在这个区域中。
PC机硬盘工作原理与软盘有很大不同,在底层,系统BIOS提供了一个中断服务程序INT 13H专门处理硬盘基本操作,可在程序中直接调用,
除此之外,系统BIOS还维护了硬盘参数表及其他若干参数。要想在底层实现固态盘的硬盘仿真,实际上要建立一个新的中断服务程序以代替系统BIOS的INT 13H,
同时以相同的方式维护各种硬盘参数。
利用INT 13H可进行多种功能调用,用户选择调用功能是通过给AH寄存器置相应的数值,同时发出13H中断来完成的。利用中断13H的功能调用如下:
        AH        功能调用
        00H        复位磁盘
        01H        取磁盘状态
        02H        读扇区
        03H        写扇区
        04H        监测扇区
        05H        格式化磁道
        08H        取当前驱动器参数
        09H        初始化双驱动器参数
        0AH        读长扇区
        0BH        写长扇区
        0CH        查找磁道
        0DH        驱动器复位
        10H        监测磁盘是否准备好
        11H        复校驱动器
        14H        控制器内部诊断
        15H        取磁盘类型
其中最重要的功能调用是读写、校验扇区,格式化磁道及取当前驱动器参数,它们构成了磁盘工作的主体。为保持兼容性,对其他功能调用也必须提供相应的服务程序。
此外,中断向量41H、46H指向硬盘BIOS维护的硬盘参数表,参数定义了硬盘主要参数:
        字节        说明
        00H-01H        指定驱动器最大柱面数
        02H        指定驱动器最大磁头数
        03H-04H        00
        05H-06H        开始写预补偿柱面号
        07H        ECC数据簇长度
        08H        控制字符
        09H-0DH        00
        0EH        每磁道扇区数
        0FH        00
实际上,INT 13H的08H取驱动器参数就是由此而来,如果二者不匹配,则DOS分区程序FDISK.EXE将认为硬盘不存在。由于系统实际上保持了两个参数表,就获得了支持两个不同硬盘驱动器的能力,
仿真盘同样需维护一个硬盘参数表,这就要求仿真盘必须与系统中可能存在的硬盘协同工作,互不影响。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 4家元 +80 收起 理由
北落师门 + 20 謝謝分享
jpdd521 + 20 30年前是亮点
fangyinghh + 20 厉害
家睦 + 20 謝謝分享

查看全部打赏

发表于 2022-11-17 16:03:13 | 显示全部楼层
楼主是老鸟啊,eprom用的是多大容量的可以实现这些功能?我以前是用27c512的eeprom或者eprom写plpbt和plop,实现古董机的usb启动
回复 支持 反对

使用道具 举报

发表于 2022-11-17 16:09:13 | 显示全部楼层
在20多年前能开发出这种仿真硬件是有很大难度的,可惜计算机技术的发展迅猛,迅速淘汰了很多之前“先进”技术,在当时任何操作系统都没有中文,也都不兼容汉字,此时就是靠这种外挂的板卡实现中文界面的操作,当时的一块汉卡就卖到上万元。也是通过一块巴掌大小的卡插入到计算机8位插槽上,开机就进入了中文界面。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-11-17 16:11:16 | 显示全部楼层
本帖最后由 18912334956 于 2022-11-17 20:04 编辑
8139 发表于 2022-11-17 16:03
楼主是老鸟啊,eprom用的是多大容量的可以实现这些功能?我以前是用27c512的eeprom或者eprom写plpbt和plop ...

我们当时使用的是大容量的 EPROM, 20管脚, 型号好像是 27C4001, 每片4M Bits, 也就是 512K Bytes. 我做了几种卡, 小的 1片 EPROM,模拟 512K 软盘, 大的 三片 EPROMs, 模拟 1.44M 软盘. 当时销量不太好, 主要是上市太晚了,硬盘已经流行起来了。
所有原理图和程序都在。硬件没有保留。
回复 支持 3 反对 0

使用道具 举报

 楼主| 发表于 2022-11-17 16:16:24 | 显示全部楼层
kerchi 发表于 2022-11-17 16:09
在20多年前能开发出这种仿真硬件是有很大难度的,可惜计算机技术的发展迅猛,迅速淘汰了很多之前“先进”技 ...

当时确实觉得难度大,是我大学学习的是 Z80 汇编, 这里用到的是 8088 汇编。现在手头几本原版的 8088汇编书籍看懂了, 开发这个就没太大难度。另外,数字电路基本原理掌握了, GAL 芯片实现解码、锁存等功能,轻而易举。
回复 支持 反对

使用道具 举报

发表于 2022-11-17 21:39:49 | 显示全部楼层
你这并不是真的仿真硬盘.真要仿真硬盘,应该直接从ATA端口接受指令.而不是修改BIOS
回复 支持 反对

使用道具 举报

发表于 2022-11-18 08:47:01 | 显示全部楼层

大神级别的楼主 学习一下
回复 支持 反对

使用道具 举报

发表于 2022-11-18 08:49:23 | 显示全部楼层
感谢大神分享
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-18 09:26:14 | 显示全部楼层
过来的人 发表于 2022-11-17 21:39
你这并不是真的仿真硬盘.真要仿真硬盘,应该直接从ATA端口接受指令.而不是修改BIOS ...

从 ATA 端口接收指令,那就不再是 仿真硬盘了,就是物理硬盘了。
回复 支持 反对

使用道具 举报

发表于 2022-11-18 10:36:24 | 显示全部楼层
过来的人 发表于 2022-11-17 21:39
你这并不是真的仿真硬盘.真要仿真硬盘,应该直接从ATA端口接受指令.而不是修改BIOS ...

这个是插ISA口的,需要在bios支持下才能启动的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-18 10:46:56 | 显示全部楼层
xw801 发表于 2022-11-18 10:36
这个是插ISA口的,需要在bios支持下才能启动的。

正解! 电脑开机后,BIOS 程序会扫描 ISA 设备,ISA 插卡ROM中代码 CHECKSUM 必须为0, CPU 才会执行该
ROM 中的代码。也就是在这时,仿真软盘/硬盘 ROM 中的程序工作,并非真正的物理软盘在工作,而是 ISA 卡
上的 ROM 程序在工作, 所以才叫【仿真】。
回复 支持 反对

使用道具 举报

发表于 2022-11-18 11:13:53 来自手机浏览器 | 显示全部楼层
这不就是早期的ssd,可惜没继续开发。以色列msystem开发的doc跟这类似吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-18 11:20:32 | 显示全部楼层
maithon 发表于 2022-11-18 11:13
这不就是早期的ssd,可惜没继续开发。以色列msystem开发的doc跟这类似吧。

对, 早期的 SSD。 以色列 msystem 开发的doc没用过,不了解是不是类似。谢谢!
回复 支持 反对

使用道具 举报

发表于 2022-11-18 13:30:36 | 显示全部楼层
太厉害了 技术强大
回复 支持 反对

使用道具 举报

发表于 2022-11-18 16:46:46 | 显示全部楼层
27C的存储器不是要紫外线才能擦除的么?

只能读?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-18 17:31:43 | 显示全部楼层
mapleft 发表于 2022-11-18 16:46
27C的存储器不是要紫外线才能擦除的么?

只能读?

有两种, 27c4001, 还有一种 28xxx FLASH
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-18 17:37:58 | 显示全部楼层
mapleft 发表于 2022-11-18 16:46
27C的存储器不是要紫外线才能擦除的么?

只能读?

当时开发了一个系类, 共有 5-6 个产品。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2022-11-19 14:34:00 | 显示全部楼层
太厉害了,在当年来说肯定是非常高的技术了!
回复 支持 反对

使用道具 举报

发表于 2022-11-19 18:05:09 | 显示全部楼层
30年前自己开发的测试卡

这当年是一哥级别的大佬。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-19 22:38:07 | 显示全部楼层
jpdd521 发表于 2022-11-19 18:05
30年前自己开发的测试卡

这当年是一哥级别的大佬。

当年这种技术,和如今的软件著作权,哪个技术含量高?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-24 16:36 , Processed in 0.187200 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表