中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 22:33
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » 发现了Grub for Dos 的一个很奇怪的问题!
可打印版本  1,357 / 3
第1楼 bean123 发表于 2005-09-29 10:46
中级用户 发帖 34 积分 214
发现了Grub for Dos 的一个很奇怪的问题!
测试的是 map 的 --mem 虚拟盘功能

menu.lst如下:

title memdisk
map --mem (hd0,0)/aa.dsk (hd0)
map --hook
chainloader (hd0,0)+1
rootnoverify (hd0)

起初是下QEMU下试的,看来很正常。但有一个很偶然的机会要查看硬盘的数目(40:75),发现竟然是8!

后来在真正的机器上测试,发现40:75的数目也是8,而且在第一只虚拟盘的后面,出现了7只和真正硬盘的一样的盘!

使用的grub4dos是 0.4.1pre28,系统是英文98第二版的MSDOS。
第2楼 bean123 发表于 2005-09-29 13:03
中级用户 发帖 34 积分 214
关于40:75=8,是INT13,AH=8处理程序中设置的值,但是映射出多个硬盘的问题,仍然不知其解。而且,这问题似乎和BIOS有关。在我测试过的三部机器中,有1部正常,而其他2部出问题。
第3楼 bean123 发表于 2005-09-29 17:34
中级用户 发帖 34 积分 214
终于弄清楚了,这个问题主要由于某些(比较旧)的BIOS处理INT13的Bug所引起的。

在我的机器上:

若只有一只硬盘,用 DL=80,81,82...都可以访问第一只硬盘。当然,INT 13 在处理前,会比较DL和[40:75]的数值。因此,要看到DL=81或以后的结果,应该手动把[40:75]设为一个较大的值。

若有两只硬盘,DL=80,82,83...都可以访问第一只硬盘,而DL=81则访问第二只硬盘!

顺便提一下,希望TinyBit能把[40:75]的值作为AH=8中DL的返回结果。这是由于MSDOS在启动时会查询AH=8中DL的结果,并根据它修改[40:75]的值。因此,假如说DL返回8,而[40:75]是1,则在MSDOS下[40:75]会改为8。这样,map的--harddrive选项实际上便没有起到作用。
第4楼 tinybit 发表于 2005-09-29 21:28
初级用户 发帖 57 积分 137
呵,竟然出现这样的事情。我会检查 map 的 int13/ah=8 程序,将其返回值改为正确的值。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023