Specifications
56 AMD Geode™ GeodeROM Functional Specification
Non-Removable Media
32087C
6.3 INT 13h Extensions API
The functions in this section were defined by IBM in the document entitled, “INT 13h Extensions API” as an alternate mech-
anism for handling large IDE drives and to provide a uniform API for devices that support removable media. The functions
in this extended API share a common data structure called the Disk_Address_Packet, whose format appears here:
Disk_Address_Packet STRUCT 1
Packet_Size db 16 ; Size of this packet in bytes
Reserved db 0 ; Reserved / Unused
Block_Count dw 0 ; Number of blocks (sectors) to transfer
pBuffer dd ; SEG:OFFSET address of transfer buffer
Block_Offset dq ; Starting device block number
Disk_Address_Packer ENDS
Packet_Size - The supporting firmware examines the Packet_Size field to determine if it can support the caller’s request. A
value other than 16 indicates that the caller is requesting support for a revision of this API that does not yet exist. In this
case, the BIOS would return with CF = 1 and an error code.
Block_Count - On input, Block_Count is the number of blocks (sectors) the caller wants to transfer. On output, it repre-
sents the number of blocks actually transferred. Zero is a legal value, and implies that no data be transferred.
pBuffer - The segment offset pointer to the start of the caller-supplied data transfer buffer.
Block_Offset - The absolute logical block number on the device.
6.3.1 Calling Conventions
Wherever possible, these extensions share the following register usage convention:
• DS:SI: Far pointer to Disk_Address_Packet structure
• DL: Drive number (80h = C:, 81h = D:, etc.)
• AH: On input, contains the function index. On output, contains the function return status.
The following return codes have been added to support these extensions:
• B0h: Volume not locked in drive
• B1h: Volume locked in drive
• B2h: Volume not removable
• B3h: Volume in use
• B4h: Lock count exceeded
• B5h: Valid eject request failed
6.3.2 INT 13h Extensions API Subsets
The INT 13h extensions API allows implementors to support certain subsets of the entire interface without violating that
specification. Each subset is well defined, and if supported, must be done so in its entirety.
6.3.2.1 Large IDE Drive Support API Subset
This subset consists of the following functions:
• Function 41h: Check Extensions Present
• Function 42h: Extended Read Sectors
• Function 43h: Extended Write Sectors
• Function 44h: Extended Verify Sectors
• Function 47h: Extended Seek to Cylinder
• Function 48h: Extended Get Drive Parameters