中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 32位dos下怎样播放cd?用mscdex 2fh中断吗?
作者:
标题: 32位dos下怎样播放cd?用mscdex 2fh中断吗? 上一主题 | 下一主题
jk20012001
初级用户




积分 112
发帖 2
注册 2004-4-19
状态 离线
『楼 主』:  32位dos下怎样播放cd?用mscdex 2fh中断吗?

我原来在DOS的Turbo C下有一个16位的CDROM函数库,能播放CD和检测光驱状况等,前不久转到watcom c的32位环境下后我又重新写了一个,可运行时什么也不出来,
它的核心是调用0X2F的MSCDEX中断,播放CD的原理是这样的:有一个22字节的存储区存放控制码(如播放CD的开始和长度等),然后要在DX中指定此存储区的偏移量,ES中存放它的段地址,(16位下是这样的,而且运行正常),可现在我不知道32位模式下对于这种16bit-legacy中断的调用具体应该怎样做,因为当时内存模式是flat,ES=DS=CS=SS,我就没有置ES的值,直接将此缓冲区的32位地址存入EDX,可是运行时光驱一点反应也没有,
还有一种就是查询光驱的状况,它和上面又有不同:一个26字节的缓冲区(比如为A),还有一个5-8字节的控制区(为B),A中有两字节存放B的偏移量,再后面两字节存放B的段地址,然后ESX中存放B的偏移量和段地址,这就更复杂了,我应该怎么办?那32位模式下能不能使用这种类型的中断?

另外,我用watcom c的16位模式编译运行成功了,一到32位下就不行,这究竟有什么解决办法吗?(我暂时还不想转到WIN下)还请个位高手指教一下小弟,非常非常感谢!

2004-4-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: