INT 13 programming interface. Details for each command can be found on
Ralf Brown\'s Interrupt List
[h="2"] INT 13 Supported Functions [/h]
align="center" border="1" cellpadding="3" cellspacing="0" width="95%"
|
-
| AH = 00h || Reset Disk Drives || No actual ATA command sent to drive, always returns success (see 0dh)
|
-
| AH = 01h || Check Drive Status || returns status of last operation
|
-
| AH = 02h || Read Sectors From Drive
|
-
| AH = 03h || Write Sectors To Drive
|
-
| AH = 04h || Verify Sectors
|
-
| AH = 08h || Get Drive Parameters
|
-
| AH = 09h || Initialize Disk Controller || Not Required. Already done by controller, returns success
|
-
| AH = 0Ch || Move Drive Head To Cylinder || No actual ATA command sent to drive, always returns success
|
-
| AH = 0Dh || Reset Disk Drives || No means of actually resetting an ATA drive with this controller
|
-
| AH = 15h || Read Drive Type
|
-
| AH = 19h || Park Heads || Parking is done by the drive automatically
[h="2"] INT 13 Unsupported Functions [/h]
These function calls return status in AH=01 and CY flag is set, signaling that the routine is unsupported by XT-IDE BIOS.
align="center" border="1" cellpadding="3" cellspacing="0" width="95%"
|
-
| AH = 05h || format track(s) || not used on IDE devices
|
-
| AH = 06h || format track(s) & set bad sector map || not used on IDE devices
|
-
| AH = 07h || format drive starting at track || not used on IDE devices
|
-
| AH = 0Ah || read long || read and return CRC data. Does anyone use this?
|
-
| AH = 0Bh || write long || write with CRC data. Does anyone use this?
|
-
| AH = 0Eh || read sector buffer (XT only) || no idea what this is supposed to do
|
-
| AH = 0Fh || write sector buffer (XT only) || no idea what this is supposed to do
|
-
| AH = 10h || check if drive ready || maybe this should be supported? Never seen it used
|
-
| AH = 11h || recalibrate drive || not used on IDE devices
|
-
| AH = 12h || controller RAM diagnostics || not used on IDE devices
|
-
| AH = 13h || Drive Diagnostics || not used on IDE devices
|
-
| AH = 14h || perform internal diagnostics || not used on IDE devices
|
-
| AH = 16h || floppy only
|
-
| AH = 17h || set format type (floppy)
|
-
| AH = 18h || set format type (HDD) || not used on IDE devices
|
-
| AH = 1Ah || ESDI, unused
|
-
| AH = 1Bh || ESDI, unused
|
-
| AH = 1Ch || ESDI, unused
|
-
| AH = 1Dh || IBM Cache, unused
|
-
| AH = 1Eh || unused
|
-
| AH = 1Fh || Syquest, unused
|
-
| AH = 20h || unused
|
-
| AH = 26-40 || unused
[h="2"] INT 13 Future Supported Functions [/h]
These function calls currently return status in AH=01 and CY flag is set, signaling that the routine is unsupported by XT-IDE BIOS. Support for these functions may or may not be forthcoming, depending on user requirements
align="center" border="1" cellpadding="3" cellspacing="0" width="95%"
|
-
| AH = 21h || read multiple
|
-
| AH = 22h || write multiple
|
-
| AH = 23h || set features
|
-
| AH = 24h || set multiple mode
|
-
| AH = 25h || get drive ID data
[h="2"] Enhanced INT 13 Supported Functions [/h]
These function calls are used only by operating systems that have Enhanced INT 13 support, such as FreeDOS, MS-DOS 7 (DOS that comes with MS Windows 95 and higher).
EINT13 calls allow for drives up to over 2TB in size.
align="center" border="1" cellpadding="3" cellspacing="0" width="95%"
|
-
| AH = 41h || check extensions present
|
-
| AH = 42h || read sectors
|
-
| AH = 43h || write sectors
|
-
| AH = 44h || verify sectors
|
-
| AH = 47h || Extended seek || No actual ATA command sent to drive, always returns success
|
-
| AH = 48h || get drive parameters
[h="2"] Enhanced INT 13 Unsupported Functions [/h]
These function calls return status in AH=01 and CY flag is set, signaling that the routine is unsupported by XT-IDE BIOS.
align="center" border="1" cellpadding="3" cellspacing="0" width="95%"
|
-
| AH = 45h || lock/unlock drive || no removable drive support
|
-
| AH = 46h || eject drive || no removable drive support
|
-
| AH = 49h || removable media eject || no removable drive support
|
-
| AH = 4ah-4d || reserved
|
-
| AH = 4eh || set hardware configuration || No need to change PIO modes
Ralf Brown\'s Interrupt List
[h="2"] INT 13 Supported Functions [/h]
|
-
| AH = 00h || Reset Disk Drives || No actual ATA command sent to drive, always returns success (see 0dh)
|
-
| AH = 01h || Check Drive Status || returns status of last operation
|
-
| AH = 02h || Read Sectors From Drive
|
-
| AH = 03h || Write Sectors To Drive
|
-
| AH = 04h || Verify Sectors
|
-
| AH = 08h || Get Drive Parameters
|
-
| AH = 09h || Initialize Disk Controller || Not Required. Already done by controller, returns success
|
-
| AH = 0Ch || Move Drive Head To Cylinder || No actual ATA command sent to drive, always returns success
|
-
| AH = 0Dh || Reset Disk Drives || No means of actually resetting an ATA drive with this controller
|
-
| AH = 15h || Read Drive Type
|
-
| AH = 19h || Park Heads || Parking is done by the drive automatically
These function calls return status in AH=01 and CY flag is set, signaling that the routine is unsupported by XT-IDE BIOS.
|
-
| AH = 05h || format track(s) || not used on IDE devices
|
-
| AH = 06h || format track(s) & set bad sector map || not used on IDE devices
|
-
| AH = 07h || format drive starting at track || not used on IDE devices
|
-
| AH = 0Ah || read long || read and return CRC data. Does anyone use this?
|
-
| AH = 0Bh || write long || write with CRC data. Does anyone use this?
|
-
| AH = 0Eh || read sector buffer (XT only) || no idea what this is supposed to do
|
-
| AH = 0Fh || write sector buffer (XT only) || no idea what this is supposed to do
|
-
| AH = 10h || check if drive ready || maybe this should be supported? Never seen it used
|
-
| AH = 11h || recalibrate drive || not used on IDE devices
|
-
| AH = 12h || controller RAM diagnostics || not used on IDE devices
|
-
| AH = 13h || Drive Diagnostics || not used on IDE devices
|
-
| AH = 14h || perform internal diagnostics || not used on IDE devices
|
-
| AH = 16h || floppy only
|
-
| AH = 17h || set format type (floppy)
|
-
| AH = 18h || set format type (HDD) || not used on IDE devices
|
-
| AH = 1Ah || ESDI, unused
|
-
| AH = 1Bh || ESDI, unused
|
-
| AH = 1Ch || ESDI, unused
|
-
| AH = 1Dh || IBM Cache, unused
|
-
| AH = 1Eh || unused
|
-
| AH = 1Fh || Syquest, unused
|
-
| AH = 20h || unused
|
-
| AH = 26-40 || unused
These function calls currently return status in AH=01 and CY flag is set, signaling that the routine is unsupported by XT-IDE BIOS. Support for these functions may or may not be forthcoming, depending on user requirements
|
-
| AH = 21h || read multiple
|
-
| AH = 22h || write multiple
|
-
| AH = 23h || set features
|
-
| AH = 24h || set multiple mode
|
-
| AH = 25h || get drive ID data
These function calls are used only by operating systems that have Enhanced INT 13 support, such as FreeDOS, MS-DOS 7 (DOS that comes with MS Windows 95 and higher).
EINT13 calls allow for drives up to over 2TB in size.
|
-
| AH = 41h || check extensions present
|
-
| AH = 42h || read sectors
|
-
| AH = 43h || write sectors
|
-
| AH = 44h || verify sectors
|
-
| AH = 47h || Extended seek || No actual ATA command sent to drive, always returns success
|
-
| AH = 48h || get drive parameters
These function calls return status in AH=01 and CY flag is set, signaling that the routine is unsupported by XT-IDE BIOS.
|
-
| AH = 45h || lock/unlock drive || no removable drive support
|
-
| AH = 46h || eject drive || no removable drive support
|
-
| AH = 49h || removable media eject || no removable drive support
|
-
| AH = 4ah-4d || reserved
|
-
| AH = 4eh || set hardware configuration || No need to change PIO modes