![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 12:07 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » 32位dos下怎样播放cd?用mscdex 2fh中断吗? |
| 可打印版本 925 / 0 |
| 第1楼 jk20012001 | 发表于 2004-04-24 00:00 |
| 初级用户 发帖 2 积分 112 | |
|
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的段地址,然后ES X中存放B的偏移量和段地址,这就更复杂了,我应该怎么办?那32位模式下能不能使用这种类型的中断?另外,我用watcom c的16位模式编译运行成功了,一到32位下就不行,这究竟有什么解决办法吗?(我暂时还不想转到WIN下)还请个位高手指教一下小弟,非常非常感谢! |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |