Value |
Description |
|
---|---|---|
Hex | Dec | |
00h |
(0) | INIT |
01h |
(1) | MEDIA CHECK (block devices) |
02h |
(2) | BUILD BPB (block devices) |
03h |
(3) | IOCTL INPUT |
04h |
(4) | INPUT |
05h |
(5) | NONDESTRUCTIVE INPUT, NO WAIT (character devices) |
06h |
(6) | INPUT STATUS (character devices) |
07h |
(7) | INPUT FLUSH (character devices) |
08h |
(8) | OUTPUT |
09h |
(9) | OUTPUT WITH VERIFY |
0Ah |
(10) | OUTPUT STATUS (character devices) |
0Bh |
(11) | OUTPUT FLUSH (character devices) |
0Ch |
(12) | IOCTL OUTPUT |
0Dh |
(13) | (DOS 3.0+) DEVICE OPEN |
0Eh |
(14) | (DOS 3.0+) DEVICE CLOSE |
0Fh |
(15) | (DOS 3.0+) REMOVABLE MEDIA (block devices) |
10h |
(16) | (DOS 3.0+) OUTPUT UNTIL BUSY (character devices) |
11h |
(17) | (European MS-DOS 4.0) STOP OUTPUT (console screen drivers only) |
12h |
(18) | (European MS-DOS 4.0) RESTART OUTPUT (console screen drivers only) |
13h |
(19) | (DOS 3.2+) GENERIC IOCTL |
14h |
(20) | (DOS 4.0, KKCFUNC) DEVICE RESTORE (character device) |
15h |
(21) | (European MS-DOS 4.0) RESET UNCERTAIN MEDIA FLAG |
16h |
(22) | (DOS 4.0) unknown??? |
17h |
(23) | (DOS 3.2+) GET LOGICAL DEVICE |
18h |
(24) | (DOS 3.2+) SET LOGICAL DEVICE |
19h |
(25) | (DOS 5.0+) CHECK GENERIC IOCTL SUPPORT |
80h |
(128) | (CD-ROM,DRFAT32) READ LONG |
81h |
(129) | (CD-ROM) reserved |
82h |
(130) | (CD-ROM,DRFAT32) READ LONG PREFETCH |
83h |
(131) | (CD-ROM,DRFAT32) SEEK |
84h |
(132) | (CD-ROM) PLAY AUDIO |
85h |
(133) | (CD-ROM) STOP AUDIO |
86h |
(134) | (CD-ROM,DRFAT32) WRITE LONG |
87h |
(135) | (CD-ROM,DRFAT32) WRITE LONG VERIFY |
88h |
(136) | (CD-ROM) RESUME AUDIO |
Bit | Description |
---|---|
15 |
error |
14 - 11 |
reserved |
10 |
??? set by DOS kernel on entry to some driver calls |
9 |
busy |
8 |
done |
7 - 0 |
error code if bit 15 set |
Offset | Size | Description | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00h |
BYTE |
length of request header | ||||||||||||||||||||||||||||||||||||||||||
01h |
BYTE |
subunit within device driver | ||||||||||||||||||||||||||||||||||||||||||
02h |
BYTE |
command code | ||||||||||||||||||||||||||||||||||||||||||
03h |
WORD |
status (filled in by device driver) | ||||||||||||||||||||||||||||||||||||||||||
---DOS--- |
||||||||||||||||||||||||||||||||||||||||||||
05h |
4 BYTEs |
reserved (unused in DOS 2.x and 3.x) | ||||||||||||||||||||||||||||||||||||||||||
09h |
DWORD |
(European MS-DOS 4.0 only) pointer to next request header in device's request queue |
||||||||||||||||||||||||||||||||||||||||||
(other versions) reserved (unused in DOS 2.x and 3.x) |
||||||||||||||||||||||||||||||||||||||||||||
---STARLITE architecture--- |
||||||||||||||||||||||||||||||||||||||||||||
05h |
DWORD |
pointer to next request header | ||||||||||||||||||||||||||||||||||||||||||
09h |
4 BYTEs |
reserved | ||||||||||||||||||||||||||||||||||||||||||
---command code 00h--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
(ret) | number of units | |||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
(call) |
(European MS-DOS 4.0 only) pointer to DOS device helper function |
|||||||||||||||||||||||||||||||||||||||||
(DOS 5+) pointer past end of memory available to driver |
||||||||||||||||||||||||||||||||||||||||||||
(ret) | address of first free byte following driver | |||||||||||||||||||||||||||||||||||||||||||
12h |
DWORD |
(call) | pointer to commandline arguments | |||||||||||||||||||||||||||||||||||||||||
(ret) | pointer to BPB array (block drivers) or 0000h:0000h (character drivers) | |||||||||||||||||||||||||||||||||||||||||||
16h |
BYTE |
(DOS 3.0+) drive number for first unit of block driver (0=A) | ||||||||||||||||||||||||||||||||||||||||||
---European MS-DOS 4.0--- |
||||||||||||||||||||||||||||||||||||||||||||
17h |
DWORD |
pointer to function to save registers on stack | ||||||||||||||||||||||||||||||||||||||||||
---DOS 5+ --- |
||||||||||||||||||||||||||||||||||||||||||||
17h |
WORD |
(ret) | error-message flag 0001h MS-DOS should display error msg on init failure |
|||||||||||||||||||||||||||||||||||||||||
---command code 01h--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
media descriptor | ||||||||||||||||||||||||||||||||||||||||||
0Eh |
BYTE |
(ret) | media status
|
|||||||||||||||||||||||||||||||||||||||||
0Fh |
DWORD |
(ret) | (DOS 3.0+) pointer to previous volume
ID if the OPEN/CLOSE/RM bit in device header is set and disk changed
|
|||||||||||||||||||||||||||||||||||||||||
---command code 02h--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
media descriptor | ||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address![]() ![]() |
||||||||||||||||||||||||||||||||||||||||||
12h |
DWORD |
pointer to BPB (set by driver) | ||||||||||||||||||||||||||||||||||||||||||
---command codes 03h, 0Ch--- |
||||||||||||||||||||||||||||||||||||||||||||
(see also INT 21/AX=4402h"DOS 2+",INT 21/AX=4403h"DOS") |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
media descriptor (block devices only) | ||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address | ||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
(call) | number of bytes to read/write | |||||||||||||||||||||||||||||||||||||||||
(ret) | actual number of bytes read or written | |||||||||||||||||||||||||||||||||||||||||||
---command codes 04h, 08h, 09h (except Compaq DOS 3.31, DR DOS 6)--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
media descriptor (block devices only) | ||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address | ||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
byte count (character devices) or sector count (block devices) | ||||||||||||||||||||||||||||||||||||||||||
14h |
WORD |
starting sector number (block devices only) | ||||||||||||||||||||||||||||||||||||||||||
16h |
DWORD |
(DOS 3.0+) pointer to volume ID if error 0Fh returned | ||||||||||||||||||||||||||||||||||||||||||
1Ah |
DWORD |
(DOS 4.0+) 32-bit starting sector number (block devices with device attribute word bit 1 set only) if starting sector number above is FFFFh (see INT 21/AH=52h) | ||||||||||||||||||||||||||||||||||||||||||
---command codes 04h, 08h, 09h (Compaq DOS 3.31, DR DOS 6)--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
media descriptor (block devices only) | ||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address | ||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
byte count (character devices) or sector count (block devices) | ||||||||||||||||||||||||||||||||||||||||||
14h |
DWORD |
32-bit starting sector number (block
devices only)
|
||||||||||||||||||||||||||||||||||||||||||
---command code 05h--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
byte read from device if BUSY bit clear on return | ||||||||||||||||||||||||||||||||||||||||||
---command codes 06h, 07h, 0Ah, 0Bh, 0Dh, 0Eh, 0Fh--- |
||||||||||||||||||||||||||||||||||||||||||||
no further fields |
||||||||||||||||||||||||||||||||||||||||||||
---command code 10h--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
unused | ||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address | ||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
(call) | number of bytes to write | |||||||||||||||||||||||||||||||||||||||||
(ret) | actual number of bytes written | |||||||||||||||||||||||||||||||||||||||||||
---command codes 11h, 12h--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
reserved | ||||||||||||||||||||||||||||||||||||||||||
---command code 14h--- |
||||||||||||||||||||||||||||||||||||||||||||
no further fields |
||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||
---command code 15h--- |
||||||||||||||||||||||||||||||||||||||||||||
no further fields |
||||||||||||||||||||||||||||||||||||||||||||
---command codes 13h, 19h--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
category code
|
||||||||||||||||||||||||||||||||||||||||||
0Eh |
BYTE |
function code
|
||||||||||||||||||||||||||||||||||||||||||
0Fh |
WORD |
copy of DS at time of IOCTL call
(apparently unused in DOS 3.3) SI contents (European MS-DOS 4.0) |
||||||||||||||||||||||||||||||||||||||||||
11h |
WORD |
offset of device driver header DI contents (European MS-DOS 4.0) |
||||||||||||||||||||||||||||||||||||||||||
13h |
DWORD |
pointer to parameter block from INT 21/AX=440Ch or AX=440Dh | ||||||||||||||||||||||||||||||||||||||||||
---command codes 80h, 82h--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
addressing mode
|
||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address (ignored for command 82h) | ||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
number of sectors to read (if 0 for command 82h, request is an advisory seek) | ||||||||||||||||||||||||||||||||||||||||||
14h |
DWORD |
starting sector number logical sector number in HSG mode frame/second/minute/unused in Red Book mode (HSG sector = minute * 4500 + second * 75 + frame - 150) |
||||||||||||||||||||||||||||||||||||||||||
18h |
BYTE |
data read mode
|
||||||||||||||||||||||||||||||||||||||||||
19h |
BYTE |
interleave size (number of sectors stored consecutively) | ||||||||||||||||||||||||||||||||||||||||||
1Ah |
BYTE |
interleave skip factor (number of sectors between consecutive portions) | ||||||||||||||||||||||||||||||||||||||||||
---command code 83h--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
addressing mode
|
||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address (ignored) | ||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
number of sectors to read (ignored) | ||||||||||||||||||||||||||||||||||||||||||
14h |
DWORD |
starting sector number (see also above) | ||||||||||||||||||||||||||||||||||||||||||
---command code 84h--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
addressing mode
|
||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
starting sector number (see also above) | ||||||||||||||||||||||||||||||||||||||||||
12h |
DWORD |
number of sectors to play | ||||||||||||||||||||||||||||||||||||||||||
---command codes 85h, 88h--- |
||||||||||||||||||||||||||||||||||||||||||||
no further fields |
||||||||||||||||||||||||||||||||||||||||||||
---command codes 86h, 87h--- |
||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
addressing mode
|
||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address (ignored in write mode 0) | ||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
number of sectors to write | ||||||||||||||||||||||||||||||||||||||||||
14h |
DWORD |
starting sector number (also see above) | ||||||||||||||||||||||||||||||||||||||||||
18h |
BYTE |
write mode
|
||||||||||||||||||||||||||||||||||||||||||
19h |
BYTE |
interleave size (number of sectors stored consecutively) | ||||||||||||||||||||||||||||||||||||||||||
1Ah |
BYTE |
interleave skip factor (number of sectors between consecutive portions) |
Value | Description |
---|---|
00h |
write-protect violation |
01h |
unknown unit |
02h |
drive not ready |
03h |
unknown command |
04h |
CRC error |
05h |
bad drive request structure length |
06h |
seek error |
07h |
unknown media |
08h |
sector not found |
09h |
printer out of paper |
0Ah |
write fault |
0Bh |
read fault |
0Ch |
general failure |
0Dh |
reserved |
0Eh |
(CD-ROM) media unavailable |
0Fh |
invalid disk change |