中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » 发现了Grub for Dos 的一个很奇怪的问题!
作者:
标题: 发现了Grub for Dos 的一个很奇怪的问题! 上一主题 | 下一主题
bean123
中级用户




积分 214
发帖 34
注册 2004-3-10
状态 离线
『楼 主』:  发现了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。

2005-9-29 10:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bean123
中级用户




积分 214
发帖 34
注册 2004-3-10
状态 离线
『第 2 楼』:  

关于40:75=8,是INT13,AH=8处理程序中设置的值,但是映射出多个硬盘的问题,仍然不知其解。而且,这问题似乎和BIOS有关。在我测试过的三部机器中,有1部正常,而其他2部出问题。

2005-9-29 13:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bean123
中级用户




积分 214
发帖 34
注册 2004-3-10
状态 离线
『第 3 楼』:  

终于弄清楚了,这个问题主要由于某些(比较旧)的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选项实际上便没有起到作用。

2005-9-29 17:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tinybit
初级用户





积分 137
发帖 57
注册 2005-9-29
状态 离线
『第 4 楼』:  

呵,竟然出现这样的事情。我会检查 map 的 int13/ah=8 程序,将其返回值改为正确的值。

2005-9-29 21:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: