CD-ROM编程研究论文

本 文由第 一公文网 收集整理2

在多媒体系统中,CD-ROM是必不可少的。以DOS为例,CD-ROM应用环境的大致结构是:
用户

MSCDEX

厂家提供的驱动程序

CD-ROM
其中,MSCDEX起到了一个转换器的作用,将CD上的文件格式转化为标准的DOS文件格式,使CD-ROM象普通驱动器一样受DOS管理。
但是,在一般应用中,CD-ROM还能用来播放音乐碟,许多应用软件(如CrtvLbs的QuCD)可以模拟一台CD音响,完成出盒、入盒、播放、快速进退和重复等一系列功能。实际上,MSCDEX并未提供这些功能,必须访问CD-ROM的驱动程序,才能达到上述目的,因为所有CD-ROM的驱动程序与MSCDEX之间的接口都是规范的,这给我们提供了极大的方便。下面将详细阐述如何实现上述功能。
DOS的设备分为字符设备和块设备两种,CD-ROM的驱动程序属于前者,访问它必须遵循DOS的要求:填写设备驱动程序请求头、访问驱动程序的策略(Strty)过程、访问驱动程序的中断(Itrrupt)过程。
设备驱动程序请求头的基本格式如下:
偏移量类型含义
00H字节请求头长度
0H字节驱动程序内的子单元
02H字节命令码
03H单字返回码

以下内容根据命令码进行填写
下面给出几种CD-ROM常用功能使用的命令码和格式:
IOCTLINPUT:
偏移量类型内容
00H字节AH
0H字节00H
02H字节03H
03H字节DUP(?)
0EH双字缓冲区地址
2H单字缓冲区长度
4H字节6DUP(?)
在缓冲区内按一定的格式填入参数,便可得到CD-ROM的各种状态。
缓冲区的格式:
作用长度格式
取CD-ROM状态5输入:06xxxxxxxx
返回:06SSSS0000
说明:SSSS为状态字,关键的有两位
位0:、开门0、关门
位B:、有盘0、无盘
取CD总扇区数5输入:08xxxxxxxx
返回:08LLLLLLLL
说明:LLLLLLLL为总扇区数
取音乐CD信息7输入:0Axxxxxxxxxxxx
返回:0AxxNNTTSSMMxx
说明:NN为曲目数
MM为分钟数
SS为秒数(0~59)
TT为扇区数(0~74)
CD的一个扇区大小为2048B
播放速度为每秒75扇区即50KB/s
取指定歌曲7输入:0BNNxxxxxxxxxx
的起始时间返回:0BNNTTSSMMxxxx
说明:NN为曲目序号
MM为起始分钟数
SS为起始秒数(0~59)
TT为起始扇区数(0~74)
取播放状态输入:0Cxxxxxxxxxxxxxxxxxxxx
返回:0CxxNNxxMMSSTTxxZMZSZT
说明:NN为曲目序号(BCD码)
MM为该曲目分钟数
SS为该曲目秒数(0~59)
TT为扇区数(0~74)
ZM为总分钟数
ZS为总秒数(0~59)
ZT为扇区数(0~74)
2IOCTLOUTPUT
偏移量类型内容
00H字节AH
0H字节00H
02H字节0CH
03H字节DUP(?)
0EH双字缓冲区地址
2H单字缓冲区长度
4H字节6DUP(?)
在缓冲区内按一定的格式填入参数,便可操纵CD-ROM的动作。
缓冲区的格式:
作用长度格式
出盒输入:00
解锁出盒键2输入:000
加锁出盒键2输入:00
入盒输入:05
3PLAYAUDIO
偏移量类型内容
00H字节6H
0H字节00H
02H字节84H
03H字节0DUP(?)
0DH字节0H
0EH字节起始扇区数(0~74)
0FH字节起始秒数
0H字节起始分钟数
H字节00H
2H双字播放扇区数(75扇区/s)
从指定的起始时间开始播放指定的扇区数然后自动停止
4STOPAUDIO
偏移量类型内容
00H字节ODH
0H字节00H
02H字节85H
03H字节0DUP(?)
停止播放
以上给出的是CD-ROM常用功能的设备驱动程序请求头格式,但是在应用中怎样实现上述功能呢?有两种方法。
一是直接访问设备驱动程序,这种方法比较复杂,本文不作介绍。
二是使用MSCDEX提供的接口。主要功能有以下几种。
()检测MSCDEX是否安装
BX=0
AX=500H
INT2FH
返回:
BX=CD-ROM的个数
CX=起始的CD-ROM盘号(0-A,-B,等等)
(2)发送设备驱动程序请求
ES:BX=设备驱动程序请求头地址
CX=CD-ROM盘号(0-A,-B,等等)
AX=50H
INT2FH
用户填写请求头,通过INT2FH完成所需要的功能。
下面给出一段例程,播放CD中第二支曲目30秒钟。
限于篇幅,本程序未作错误处理,假设执行正确。
CODESEGMENT
ASSUMECS:CODE,DS:CODE
BUFDBOBH,2,5DUP(?)
REQDBAH,0,3,DUP(?)
DDBUF
DW7
DB6DUP(?)
PLAYDB6H,0,84H,0DUP(?),
DB3DUP(?),0
DD75*30
START:
MOVAX,CODE
MOVDS,AX
XORBX,BX
MOVAX,500H
INT2FH
ORBX,BX
JZNO-CD
MOVAX,SEGREQ
MOVES,AX
MOVBX,OFFSETREQ
MOVAX,50H
INT2FH
MOVAX,[BUF2]
MOV[PLAY0EH],AX
MOVAL,[BUF4]
MOV[PLAY0H],AL
MOVAX,SEG

PLAY
MOVES,AX
MOVBX,OFFSETPLAY
MOVAX,50H
INT2FH
NO-CD:
MOVAH,4CH
INT2H
CODEENDS
ENDSTART

本 文由第 一公文网 收集整理2

浏览次数:  更新时间:2013-06-19 21:33:44
上一篇:浅析饭店员工流失率问题
下一篇:FC和iSCSI协议分析比较论文
网友评论《CD-ROM编程研究论文》
评论功能已关闭