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)