|
我没写错标题,我是要讨论DOS4GW,不是DOS4GRUB。
在座的比较年轻的坛友,可能没经过DOS的游戏年代。那时候,有很多的游戏大作,如“DOOM 1”、“QUAKE 1、2”、“地下城守护者1”等等,它们都有一个共同的能力,就是能突破DOS的16位内存模式,能轻易访问远远超过640K基本内存,你很难想象那时候的4M的SD内存能卖到1200元的天价,其背后的推动力就是这些DOS游戏大作了。
打开这些DOS游戏大作的文件夹,你会发现它们都拥有一个共同的EXE文件:DOS4GW.exe,它就是今天我们讨论的主角了。
DOS4GW是哪一位天才写出来的,我已经记不起来了,但它能够令DOS程序使用32位的地址指针去访问所有内存,令各个DOS游戏大作能毫无顾忌地使用大字库大贴图大模型。(题外话,当年我在DOS下编程,刚接触了DOS4GW短短一段时间,然后WIN95大潮就来袭了,我只好无可奈何地随波逐流搞WIN编程,没能真正写一段DOS下的32位模式的代码,至今引以为憾......唉)
DOS4GW支持使用的32位地址指针进行寻址,就是我所感兴趣的,需要展开讨论。
引用一下无忧版主netwinxp的话:
“windows、linux等访问USB存储设备的时候并不使用BIOS的INT 13H,而是通过USB总线直接发UFI命令包,采用的地址也是LBA,所以就不太存在兼容性问题。然而U盘启动引导程序确是依靠BIOS的INT 13H来访问。”
windows和linux如何直接访问USB总线呢?我猜,就是USB总线的访问地址的数值被定义得极之大,远远超过了16位模式的寻址能力,但在32位内存模式下却是可以轻易访问到的。因为windows和linux都是运行在32位内存实模式下,所以能直接访问USB总路线,而DOS运行在16位内存模式下,所以不能直接访问USB设备,只能依靠BIOS的INT 13H来间接访问!
如果,这就是DOS下的USBASPI.SYS的兼容性差的根源所在的话,那么,如果我们在运行任何DOS程序之前先启动DOS4GW.exe,然后再去访问USB设备呢?
以上厥词,皆为抛砖引玉之用,期盼高手出现,能解说一下DOS4GW对于解决DOS下访问USB设备的兼容性问题有没有帮助,非常感谢! |
|