资源描述:
《cd-rom编程研究论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、CD-ROM编程研究论文在多媒体系统中,cD-Rom是必不可少的。以DoS为例,cD-Rom应用环境的大致结构是:用户↓mScDEX↓厂家提供的驱动程序↓cD-Rom其中,mScDEX起到了一个转换器的作用,将cD上的文件格式转化为标准的DoS文件格式,使cD-Rom象普通驱动器一样受DoS管理。但是,在一般应用中,cD-Rom还能用来播放音乐碟,许多应用软件可以模拟一台cD音响,完成出盒、入盒、播放、快速进退和重复等一系列功能。实际上,mScDEX并未提供这些功能,必须访问cD-Rom的驱动程序,才能达到上述目的,因为所
2、有cD-Rom的驱动程序与mScDEX之间的接口都是规范的,这给我们提供了极大的方便。下面将详细阐述如何实现上述功能。DoS的设备分为字符设备和块设备两种,cD-Rom的驱动程序属于前者,访问它必须遵循DoS的要求:填写设备驱动程序请求头、访问驱动程序的策略过程、访问驱动程序的中断过程。设备驱动程序请求头的基本格式如下:偏移量类型含义00H字节请求头长度01H字节驱动程序内的子单元02H字节命令码03H单字返回码…以下内容根据命令码进行填写下面给出几种cD-Rom常用功能使用的命令码和格式:.IocTLINPUT:偏移量类
3、型内容00H字节1AH01H字节00H02H字节03H03H字节11DUP0EH双字缓冲区地址2H单字缓冲区长度4H字节6DUP在缓冲区内按一定的格式填入参数,便可得到cD-Rom的各种状态。缓冲区的格式:作用长度格式取cD-Rom状态5输入:06xxxxxxxx返回:06SSSS0000说明:SSSS为状态字,关键的有两位位0:1、开门0、关门位B:1、有盘0、无盘取cD总扇区数5输入:08xxxxxxxx返回:08LLLLLLLL说明:LLLLLLLL为总扇区数取音乐cD信息7输入:0Axxxxxxxxxxxx返回:0
4、AxxNNTTSSmmxx说明:NN为曲目数mm为分钟数SS为秒数TT为扇区数cD的一个扇区大小为2048B播放速度为每秒75扇区即150kB/s取指定歌曲7输入:0BNNxxxxxxxxxx的起始时间返回:0BNNTTSSmmxxxx说明:NN为曲目序号mm为起始分钟数SS为起始秒数TT为起始扇区数取播放状态11输入:0cxxxxxxxxxxxxxxxxxxxx返回:0cxxNNxxmmSSTTxxZmZSZT说明:NN为曲目序号mm为该曲目分钟数SS为该曲目秒数TT为扇区数Zm为总分钟数ZS为总秒数ZT为扇区数2.Io
5、cTLoUTPUT偏移量类型内容00H字节1AH01H字节00H02H字节0cH03H字节11DUP0EH双字缓冲区地址2H单字缓冲区长度4H字节6DUP在缓冲区内按一定的格式填入参数,便可操纵cD-Rom的动作。缓冲区的格式:作用长度格式出盒1输入:00解锁出盒键2输入:0100加锁出盒键2输入:0101入盒1输入:053.PLAyAUDIo偏移量类型内容00H字节16H01H字节00H02H字节84H03H字节10DUP0DH字节01H0EH字节起始扇区数0FH字节起始秒数0H字节起始分钟数1H字节00H2H双字播放扇
6、区数从指定的起始时间开始播放指定的扇区数然后自动停止4.SToPAUDIo偏移量类型内容00H字节oDH01H字节00H02H字节85H03H字节10DUP停止播放以上给出的是cD-Rom常用功能的设备驱动程序请求头格式,但是在应用中怎样实现上述功能呢?有两种方法。一是直接访问设备驱动程序,这种方法比较复杂,本文不作介绍。二是使用mScDEX提供的接口。主要功能有以下几种。检测mScDEX是否安装BX=0AX=1500HINT2FH返回:BX=cD-Rom的个数cX=起始的cD-Rom盘号发送设备驱动程序请求ES:BX=设
7、备驱动程序请求头地址cX=cD-Rom盘号AX=1510HINT2FH用户填写请求头,通过INT2FH完成所需要的功能。下面给出一段例程,播放cD中第二支曲目30秒钟。限于篇幅,本程序未作错误处理,假设执行正确。coDESEGmENTASSUmEcS:coDE,DS:coDEBUFDBoBH,2,5DUPREQDB1AH,0,3,11DUPDDBUFDw7DB6DUPPLAyDB16H,0,84H,10DUP,1DB3DUP,0DD75*30START:moVAX,coDEmoVDS,AXXoRBX,BXmoVAX,150
8、0HINT2FHoRBX,BXjZNo-cDmoVAX,SEGREQmoVES,AXmoVBX,oFFSETREQmoVAX,1510HINT2FHmoVAX,[BUF2]moV[PLAy0EH],AXmoVAL,[BUF4]moV[PLAy10H],ALmoVAX,SEGPLAymoVES,AXmoV