Int 21/AX=4402h

lup.gif ldown.gif Interrups Categories Contents

rbline.gif

CD-ROM device driver - IOCTL INPUT

AX = 4402h
BX = file handle referencing character device for CD-ROM driver
CX = number of bytes to read
DS:DX -> control block (see #01449)

Return:
CF clear if successful AX = number of bytes actually read CF set on error AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)

Notes: The data returned depends on the first byte of the control block (two bytes for functions 01h/07h/0Bh, see #01449); the remainder of the control block is filled by the driver. Some device drivers support several subunits (that is more than one drive) but it is not possible to distinguish between them with this function; use INT 2F/AX=1510h or INT 2F/AX=0802h instead. Under Windows95, the "mscd$$$$" device cannot be opened so you cannot

obtain the handle required by this function:
Use INT 2F/AX=1510h or INT 2F/AX=0802h instead

See Also: AX=4403h"CD-ROM" - INT 2F/AX=0802h - INT 2F/AX=1510h

(Table 01448) Values for CD-ROM data being requested: 00h device driver header address 01h drive head location 02h reserved 03h error statistics 04h audio channel info 05h raw drive bytes (uninterpreted and device-specific) 06h device status 07h sector size 08h volume size 09h media change status 0Ah audio disk info 0Bh audio track info 0Ch audio Q-Channel info 0Dh audio sub-channel info 0Eh UPC code 0Fh audio status info

Format of CD-ROM control block: Offset Size Description (Table 01449) 00h BYTE data being requested (see #01448) ---function 00h--- 01h DWORD device driver header address (see also AH=52h,#01646) ---function 01h--- 01h BYTE (call) addressing mode 00h HSG 01h Red Book 02h DWORD current location of drive's head logical sector number in HSG mode frame/second/minute/unused in Red Book mode (HSG sector = minute * 4500 + second * 75 + frame - 150) ---function 03h--- 01h N BYTEs undefined as of 5 Aug 88 specification ---function 04h--- 01h BYTE input channel (0-3) for output channel 0 02h BYTE volume for output channel 0 03h BYTE input channel (0-3) for output channel 1 04h BYTE volume for output channel 1 05h BYTE input channel (0-3) for output channel 2 06h BYTE volume for output channel 2 07h BYTE input channel (0-3) for output channel 3 08h BYTE volume for output channel 3

Notes: Output channels 0 and 1 are left and right, 2 and 3 are left prime and right prime; a volume of 00h is off. The default setting is for each input channel to be assigned to the same-numbered output channel at full (FFh) volume ---function 05h--- 01h BYTE number of bytes read 02h 128 BYTEs buffer for drive bytes ---function 06h--- 01h DWORD device parameters (see #01450) ---function 07h--- 01h BYTE (call) read mode 00h cooked 01h raw 02h WORD (return) sector size in bytes ---function 08h--- 01h DWORD volume size in sectors

BUGS: Aztech device driver v1.10 and v1.27 (at least) return the last sector number, i.e. total number of sectors - 1. Windows95 returns the total number of sectors + 150 (see the Red Book to HSG conversion formula at function 01h to understand why this happens) ---function 09h--- 01h BYTE media change status 00h don't know 01h media unchanged FFh media has been changed ---function 0Ah--- 01h BYTE lowest audio track number 02h BYTE highest audio track number 03h DWORD start address of lead-out track (Red Book format) --function 0Bh--- 01h BYTE (call) track number 02h DWORD starting point of track (Red Book format) 06h BYTE track control info

bits 15,14,12:
Track type (notice: bits not contiguous!) 000 two audio channels, no pre-emphasis 001 two audio channels with pre-emphasis 010 data track 100 four audio channels, no pre-emphasis 101 four audio channels with pre-emphasis other reserved

bit 13:
Digital copy permitted ---function 0Ch--- 01h BYTE CONTROL and ADR byte (as received from drive) 02h BYTE track number 03h BYTE point or index 04h BYTE minute \ 05h BYTE second > running time within track 06h BYTE frame / 07h BYTE zero 08h BYTE "AMIN" or "PMIN" \ 09h BYTE "ASEC" or "PSEC" > running time on disk 0Ah BYTE "AFRAME" or "PFRAME" / ---function 0Dh--- 01h DWORD starting frame address (Red Book format) 05h DWORD transfer address 09h DWORD number of sectors to read

Note: Copies 96 bytes of sub-channel info per sector into buffer ---function 0Eh--- 01h BYTE CONTROL and ADR byte 02h 7 BYTEs UPC/EAN code (13 BCD digits,low-order nybble of last byte is 0) 09h BYTE zero 0Ah BYTE "AFRAME" ---function 0Fh--- ??? documentation not yet available 01h WORD pause status (0000h not paused, 0001h paused) 03h DWORD audio play start address 07h DWORD ??? audio play length or end address

Bitfields for CD-ROM device parameters: Bit(s) Description (Table 01450) 0 door open 1 door unlocked 2 supports raw reading in addition to cooked 3 writable 4 can play audio/video tracks 5 supports interleaving 6 reserved 7 supports prefetch requests 8 supports audio channel control 9 supports Red Book addressing in addition to HSG 10 audio is playing 11 no disk in drive 12 supports R-W subchannels

Category: Disk I/O Enhancements - Int 21h - C

rbline.gif

lup.gif ldown.gif Interrups Categories Contents