中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS启动盘 & LOGO技术 (启动盘室) » 请系统高手帮助解答有关 CDROM 扇区大小的一个问题
作者:
标题: 请系统高手帮助解答有关 CDROM 扇区大小的一个问题 上一主题 | 下一主题
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『楼 主』:  请系统高手帮助解答有关 CDROM 扇区大小的一个问题

从 ATAPI for CD-ROMs 的 SFF-8020i 标准可以知道,访问 CDROM 扇区数据的最小单位是 2048 字节。就是说,你不可能只读取 2048 字节扇区的末尾处的 512 字节而跳过它前面的 1536 字节。换句话说,你要想读取末尾处的 512 字节,必须连同前面的 1536 字节一起读取才行。这意味着,你为了读取 512 字节的 CDROM 数据,需要 2048 字节的内存缓冲区。

当 CDROM 以仿真软盘(或者仿真硬盘)的方式启动时,访问仿真软盘的扇区可以通过 BIOS 的 int13 来实现。这个 int13,处理的扇区大小是通常的 512 字节。当用户(也就是 DOS 应用程序)用 int13 读取 512 字节的数据时,这个 int13 只能把 512 字节的数据(而不是 2048 字节的数据)放入用户所提供的内存区域中,否则就会覆盖掉用户的内存数据或代码。

那么,这个 int13 是怎么保证这一点的呢?注意这个 int13 是 BIOS 提供的,DOS 以及实模式的其他程序都可以调用它。这意味着,这个 INT13 不可以在 DOS 所使用的内存空间中开辟一个 2048 字节的缓冲区供 BIOS 使用。那么 INT13 是如何放置从 CDROM 上读入到内存中的 2048 字节的数据的呢?大概只有下面的三种情况:

1。任何调用 int13 的程序,都有一个堆栈可以利用,BIOS 中的 INT13 处理程序就利用调用者的堆栈来存放 2048 字节的 CDROM 数据。但是这有两个问题。其一,这要求调用者的堆栈足够大,至少有 2K,而这是一个比较苛刻的数字。当调用者提供的堆栈空间不够大时,这将引起死机。同时,INT13 规范中并未说明用户的堆栈空间要在 2K 以上,因此,不能保证用户所提供的堆栈空间是 2K。其二,当本次 INT13 的执行结束时,堆栈中的 2048 字节的数据被弹出,这意味着下一次 int13 调用不可以利用刚刚从 CDROM 读取到内存的数据,而必须再次从 CDROM 读取一次,即便两者是同一 2048 字节扇区中的不同小扇区(512字节)。这种效率的低下,也使得这个方案不太可能会被 BIOS 所采纳。综合以上两点,基本上可以肯定,BIOS 是不会采纳这个方法的。

2。在 Extended BIOS Data Area(扩展的 BIOS 数据区)中开辟一个 2048 字节的 CDROM 缓冲区。这个比较容易验证,大家可以从一个用仿真软盘模式制作的光盘启动,看看是否此时的 EBIOS 数据区比从硬盘启动时增大了 2K。

3。将 2048 字节的 CDROM 缓冲区放入 ROM 中。记得我们以前曾经发现,ROM 是可写的,因此 BIOS 可以把 ROM 作为它自己使用的空间,而不至于影响到 DOS 以及 DOS 下的应用程序。(用户自己当然不能写入 ROM,但是 BIOS 自己却有办法写入 ROM,这不是我们现在要讨论的话题。)

现在请回答,BIOS 的 INT13 处理程序究竟是怎样放置这 2048 字节的数据的?是以上三种之中的一种呢?还是另外还有别的方法?如果确实是这三种方法之一,那么具体究竟是哪种方法?

[ Last edited by 不点 on 2006-7-4 at 11:20 ]



因为我们亲手创建,这个世界更加美丽。
2006-7-4 09:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 2 楼』:  

支持!不懂也帮顶一下

2006-7-5 21:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 3 楼』:  

看看这个有用吗

“El Torito”Bootable CD-ROM Format Specification Version 1.0

2006-7-7 01:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: