设为首页   加入最爱           最新更新:全方位英文文章资料库
 
资料坊搜索: 标题 全文     
深入CD-ROM编程
   首页>>YesizeCOM>>论文坊>>计算机类>>正文       
 
广告招租,e-mail:yesize@hotmail.com

广告招租,e-mail:yesize@hotmail.com

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

MSCDEX

厂家提供的驱动程序

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
还有一些功能,因为不是应用必需的,这里就不再赘述。

作者:余珏 陈志慧


上一篇:用C语言实现按钮新技术 下一篇:STRATEGIES FOR WEB BASED INSTRUCTION IN DISTANCE EDUCATION

版权说明:作品来源于网上,版权归作者所有,如果无意中侵犯了您的版权,请来信告知,本站将在3个工作日内删除。yesize@hotmail.com
  热门小游戏分类 
射击小游戏 连连看小游戏
台球小游戏 成人小游戏
CS小游戏 化妆小游戏
赛车小游戏 休闲小游戏
篮球小游戏 换装小游戏
儿童小游戏 牛牛小游戏
麻将小游戏 冒险小游戏
美媚小游戏 益智小游戏
体育小游戏  
Society Recreation & Sports
Travel & Leisure Communications
Vehicles Computers
Fashion Arts & Entertainment
Reference & Education Disease & Illness
Writing & Speaking Politics
Product Reviews Food & Beverage
Finance Internet Business
Self Improvement Home & Family
Health & Fitness Business
最新更新内容
警惕“公务员报考热”背
公务员考试不是丈母娘考
一名新公务员的自白:我
公务员考脑筋急转弯与挂
北努斗:2006行政能力测
大讨论:06行测BT题目大
过来人回忆:当年,我也
一家之言:公务员热折射
公务员考试申论要是有正
数十万大学生走进公务员
      粤ICP备05005424         Copyright ©2000 - 2004 Yesize.COM