·网站地图
·收藏本页
·文章搜索

深入CD-ROM编程

整理:新范文   来源:互联网   收藏本页   保存本文


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

以下内容根据命令码进行填写
下面给出几种CD-ROM常用功能使用的命令码和格式:
1.IOCTL INPUT:
偏移量 类型 内容
00H 字节 1AH
01H 字节 00H
02H 字节 03H
03H 字节 11 DUP(?)
0EH 双字 缓冲区地址
12H 单字 缓冲区长度
14H 字节 6 DUP (?)
在缓冲区内按一定的格式填入参数,便可得到CD-ROM的各种状态。
缓冲区的格式:
作用 长度 格式
取CD-ROM状态 5 输入:06 xx xx xx xx
返回:06 SS SS 00 00
说明:SS SS为状态字,关键的有两位
位0:1、开门 0、关门
位B:1、有盘 0、无盘
取CD总扇区数 5 输入:08 xx xx xx xx
返回:08 LL LL LL LL
说明:LL LL LL LL为总扇区数
取音乐CD信息 7 输入:0A xx xx xx xx xx xx
返回:0A xx NN TT SS MM xx
说明: NN为曲目数
MM为分钟数
SS为秒数(0~59)
TT为扇区数(0~74)
CD的一个扇区大小为2048B
播放速度为每秒75扇区即150KB/s
取指定歌曲 7 输入:0B NN xx xx xx xx xx
的起始时间 返回:0B NN TT SS MM xx xx
说明: NN为曲目序号
MM为起始分钟数
SS为起始秒数(0~59)
TT为起始扇区数(0~74)
取播放状态 11 输入:0C xx xx xx xx xx xx xx xx xx xx
返回:0C xx NN xx MM SS TT xx ZM ZS ZT
说明: NN为曲目序号(BCD码)
MM为该曲目分钟数
SS为该曲目秒数(0~59)
TT为扇区数(0~74)
ZM为总分钟数
ZS为总秒数(0~59)
ZT为扇区数(0~74)
2.IOCTL OUTPUT
偏移量 类型 内容
00H 字节 1AH
01H 字节 00H
02H 字节 0CH
03H 字节 11 DUP(?)
0EH 双字 缓冲区地址
12H 单字 缓冲区长度
14H 字节 6 DUP(?)
在缓冲区内按一定的格式填入参数,便可操纵CD-ROM的动作。
缓冲区的格式:
作用 长度 格式
出盒 1 输入:00
解锁出盒键 2 输入:01 00
加锁出盒键 2 输入:01 01
入盒 1 输入:05
3.PLAY AUDIO
偏移量 类型 内容
00H 字节 16H
01H 字节 00H
02H 字节 84H
03H 字节 10 DUP (?)
0DH 字节 01H
0EH 字节 起始扇区数(0~74)
0FH 字节 起始秒数
10H 字节 起始分钟数
11H 字节 00H
12H 双字 播放扇区数(75扇区/s)
从指定的起始时间开始播放指定的扇区数然后自动停止
4.STOP AUDIO
偏移量 类型 内容
00H 字节 ODH
01H 字节 00H
02H 字节 85H
03H 字节 10 DUP (?)
停止播放
以上给出的是CD-ROM常用功能的设备驱动程序请求头格式,但是在应用中怎样实现上述功能呢?有两种方法。
一是直接访问设备驱动程序,这种方法比较复杂,本文不作介绍。
二是使用MSCDEX提供的接口。主要功能有以下几种。
(1) 检测MSCDEX是否安装
BX=0
AX=1500H
INT 2FH
返回:
BX=CD-ROM的个数
CX=起始的CD-ROM盘号(0-A,1-B,等等)
(2) 发送设备驱动程序请求
ES:BX=设备驱动程序请求头地址
CX=CD-ROM盘号(0-A,1-B,等等)
AX=1510H
INT 2FH
用户填写请求头,通过INT 2FH完成所需要的功能。
下面给出一段例程,播放CD中第二支曲目30秒钟。
限于篇幅,本程序未作错误处理,假设执行正确。
CODE SEGMENT
ASSUME CS: CODE, DS:CODE
BUF DB OBH, 2, 5 DUP(?)
REQ DB 1AH,0,3,11 DUP(?)
DD BUF
DW 7
DB 6 DUP (?)
PLAY DB 16 H,0,84H,10 DUP (?),1
DB 3 DUP(?),0
DD 75*30
START:
MOV AX,CODE
MOV DS,AX
XOR BX,BX
MOV AX,1500H
INT 2FH
OR BX,BX
JZ NO-CD
MOV AX,SEG REQ
MOV ES,AX
MOV BX,OFFSET REQ
MOV AX,1510H
INT 2FH
MOV AX, [BUF+2]
MOV [PLAY+0EH],AX
MOV AL, [BUF+4]
MOV [PLAY+10H],AL
MOV AX, SEG
PLAY
MOV ES,AX
MOV BX,OFFSET PLAY
MOV AX,1510H
INT 2FH
NO-CD:
MOV AH,4CH
INT 21H
CODE ENDS
END START
还有一些功能,因为不是应用必需的,这里就不再赘述。

作者:余珏 陈志慧

--

 相关文章
·Windows NT中的登记项及其完整性
·用C语言实现按钮新技术
·彩色图象的二维变形
·VGA色彩编辑技术
·文本方式下图形提示界面制作
·NetWare与UNIX的互联方法与实现
·C语言实现串行通信接口程序
·用Excel开发MIS的方法
·静态图像的直接显示
·也谈硬盘参数测试t2gg
·为什么不选择电子商务
·企业电子商务的市场战略
·网站营销如何成功
·哪些产品适合网上营销
近期本站推荐

读后感
·2008年大学毕业生IBM实习总结
·公司2008年办公室工作计划
·三国演义读后感1000字
·朝花夕拾读后感
·水浒传读后感1500字
·读骆驼祥子有感
·迎奥运手抄报
·制作个人简历九大标准
·如何使简历醒目
·将个性品质特征融入你的简历

个人简历



About收藏本站设置首页..
Copyright @ www.xinfanwen.com Powered by 新范文 All Rights Reserved.