先上一幅铁娃娃OS读取软盘的桌面截图。
这幅图片是铁娃娃OS在进入32bit模式后,在不能利用BIOS的INT 0x13情况下,再次读取
软盘扇区获得的。
按“纸娃娃”的作者所言,进入32bit系统以后,就不能调用BIOS功能了。不能调用BIOS
就不能利用BIOS的INT 0x13访问软盘。虽然可以在进入32bit模式之前,利用BIOS功能预
先读取,但能读取的扇区数是受到限制的。实际上是不能把整个软盘2880扇区都读入到电
脑内存里的。因为在16bit模式下,给我们利用的内存范围是"0x7E00~0x9FBFF"之间(见中
文版P49.的解释)。书中介绍的程序大多只用到10个磁道,即180KB。作者也介绍了用20个
磁道(360KB)的例子。由于可用内存的限制,即最大只能用到33磁道。所以虽然一张3.5寸
软盘有80个磁道,实际上OS的img文件,最多只能放607KB的内容。也就是说软盘还有一
大半存储空间没有利用呢。感慨纸娃娃作者千方百计地压缩OS的size是多么辛苦。
所以才有本文的实验尝试。基本思路是利用底层的I/O命令,直接访问软盘驱动器的接口。
纸娃娃OS为我们提供了不少的利用底层的I/O命令的例子,如定时器8237的设置,中断控制
器的8259的设置等。
我开始用带软盘驱动器的东芝古董电脑,对I/O的"3F2"输出一个8bit命令,软盘的马达
居然“嚓嚓”开始运转了。还有其他控制命令,如磁道定位等。虽然眼睛是看不到磁头的动作,
听到“咔咔”的声音可以判断出来。接下来就暂不用古董电脑,转移到虚拟机上调试。
首先,目标是读取一个Boot扇区。
(待续)
12.22
这幅图片是铁娃娃OS在进入32bit模式后,在不能利用BIOS的INT 0x13情况下,再次读取
软盘扇区获得的。
按“纸娃娃”的作者所言,进入32bit系统以后,就不能调用BIOS功能了。不能调用BIOS
就不能利用BIOS的INT 0x13访问软盘。虽然可以在进入32bit模式之前,利用BIOS功能预
先读取,但能读取的扇区数是受到限制的。实际上是不能把整个软盘2880扇区都读入到电
脑内存里的。因为在16bit模式下,给我们利用的内存范围是"0x7E00~0x9FBFF"之间(见中
文版P49.的解释)。书中介绍的程序大多只用到10个磁道,即180KB。作者也介绍了用20个
磁道(360KB)的例子。由于可用内存的限制,即最大只能用到33磁道。所以虽然一张3.5寸
软盘有80个磁道,实际上OS的img文件,最多只能放607KB的内容。也就是说软盘还有一
大半存储空间没有利用呢。感慨纸娃娃作者千方百计地压缩OS的size是多么辛苦。
所以才有本文的实验尝试。基本思路是利用底层的I/O命令,直接访问软盘驱动器的接口。
纸娃娃OS为我们提供了不少的利用底层的I/O命令的例子,如定时器8237的设置,中断控制
器的8259的设置等。
我开始用带软盘驱动器的东芝古董电脑,对I/O的"3F2"输出一个8bit命令,软盘的马达
居然“嚓嚓”开始运转了。还有其他控制命令,如磁道定位等。虽然眼睛是看不到磁头的动作,
听到“咔咔”的声音可以判断出来。接下来就暂不用古董电脑,转移到虚拟机上调试。
首先,目标是读取一个Boot扇区。
(待续)
12.22