Format of ATA Request Block (ARB):
Offset Size Description )
00h BYTE command code (see #90002)
01h BYTE (ret) status (see #90004)
02h BYTE ATA controller number
03h BYTE request flags (see #90005)
04h DWORD reserved (0)
---request 00h---
08h BYTE (ret) total number of ATA controllers
valid only if ATA controller number = 0FFh
09h BYTE reserved (0)
0Ah 16 BYTEs (ret) ATA manager ID
1Ah 16 BYTEs (ret) ATA controller ID
2Ah 16 BYTEs (ret) controller unique parameters (see #90010)
---request 01h---
08h BYTE device ID (00h = master, 01h = slave)
09h BYTE reserved (0)
0Ah BYTE (ret) peripheral device type (see #90007)
---request 02h---
08h BYTE device ID
09h BYTE reserved (0)
0Ah DWORD data transfer length
(ret) residual byte length
0Eh BYTE sense allocation length (N)
0Fh DWORD data buffer pointer
13h DWORD reserved (0)
17h BYTE ACB length (M)
for Task File requests must be set to 07h, for ATAPI Packet
requests must match the number of bytes in the packet
18h BYTE (ret) ATA controller status (see #90006)
19h BYTE (ret) device status
value of the error register, 00h if no error (see #P0512)
1Ah DWORD post routine address (see #90009)
1Eh WORD data transfer block size (in bytes)
number of data bytes to transfer per hardware interrupt for Task
File requests; number of data bytes host prefers to transfer
per hardware interrupt for ATAPI Packet commands
20h 32 BYTEs reserved for ATASPI workspace
40h M BYTEs ATA/ATAPI command block (ACB)
contains AT Task File Structure (see #90008) if bit 2 of the
request flags is set, ATAPI packet (see #03236,#03237,#03238)
if bit 2 is cleared
40h+M N BYTEs sense allocation area
---request 03h---
08h DWORD address of ARB to be aborted
---request 04h---
08h BYTE device ID
09h 15 BYTEs reserved (0)
18h BYTE (ret) ATA controller status (see #90006)
19h BYTE (ret) device status
1Ah DWORD post routine address (see #90009)
1Eh 34 BYTEs reserved for ATASPI workspace
---request 05h---
08h 16 BYTEs controller unique parameters (vendor unique)
---request 06h---
08h BYTE device ID
09h BYTE reserved (0)
0Ah BYTE (ret) drive flags (see #01461)
0Bh BYTE (ret) INT 13h drive
0Ch BYTE (ret) preferred head translation
0Dh BYTE (ret) preferred sector translation
0Eh 10 BYTEs reserved (0)