Index for interrupt INT 13
Table of Contents by Order
1300 - INT 13 - DISK - RESET DISK SYSTEM
1301 - INT 13 - DISK - GET STATUS OF LAST OPERATION
1302 - INT 13 - DISK - READ SECTOR(S) INTO MEMORY
1303 - INT 13 - DISK - WRITE DISK SECTOR(S)
1304 - INT 13 - DISK - VERIFY DISK SECTOR(S)
1305 - INT 13 - FLOPPY - FORMAT TRACK
1305 - INT 13 - FIXED DISK - FORMAT TRACK
1305 - INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
13057FSI324D - INT 13 - 2M - FORMAT TRACK
1306 - INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
1306 - INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
1306 - INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES
1306 - INT 13 - V10DISK.SYS - READ DELETED SECTORS
1307 - INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
1307 - INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
1307 - INT 13 - V10DISK.SYS - WRITE DELETED SECTORS
1308 - INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
1308 - INT 13 - V10DISK.SYS - SET FORMAT
130800DLF0 - INT 13 - SecureDrive - INSTALLATION CHECK
1309 - INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
130A - INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
130B - INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
130C - INT 13 - HARD DISK - SEEK TO CYLINDER
130D - INT 13 - HARD DISK - RESET HARD DISKS
130E - INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
130F - INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
1310 - INT 13 - HARD DISK - CHECK IF DRIVE READY
1311 - INT 13 - HARD DISK - RECALIBRATE DRIVE
1312 - INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
1312 - INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
1312 - INT 13 - SyQuest - START/STOP SCSI DISK
1313 - INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
1313 - INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+)
1314 - INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
1315 - INT 13 - DISK - GET DISK TYPE (XT 1986/1/10 or later,XT286,AT,PS)
1316 - INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1986/1/10 or later,XT286,AT,PS)
1317 - INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
131700 - INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
1318 - INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
1318 - INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
1318--CX5055 - INT 13 - PU_1700.COM - INSTALLATION CHECK
1318--CXD2C9 - INT 13 - XDF.COM - API
1319 - INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS)
1319 - INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
131A - INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
131A - INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
131B - INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
131B - INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
131C - INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
131C - INT 13 U - ESDI FIXED DISK - ???
131C08 - INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
131C09 - INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
131C0A - INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
131C0B - INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
131C0C - INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
131C0D - INT 13 U - ESDI FIXED DISK - ???
131C0E - INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
131C0F - INT 13 U - ESDI FIXED DISK - ???
131C12 - INT 13 U - ESDI FIXED DISK - ???
131D - INT 13 - IBMCACHE.SYS - CACHE STATUS
131F - INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
1320 - INT 13 - DISK - ??? (Western Digital "Super BIOS")
1320 - INT 13 U - Compaq, ATAPI Removable Media Device - GET CURRENT MEDIA FORMAT
1320 - INT 13 u - QUICKCACHE II v4.20 - DISMOUNT
1321 - INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
1321 - INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE
1322 - INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
1322 - INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE
1323 - INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
1323 - INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
1324 - INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
1324 - INT 13 u - QUICKCACHE II v4.20 - SET SECTORS
1325 - INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
1325 - INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL
1326 - INT 13 U - QUICKCACHE II v4.20 - UNINSTALL
1327--BX0000 - INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK
1328 - INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT
1329 - INT 13 U - QUICKCACHE II v4.20 - NOP
132A - INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE
132B - INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
132C - INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES
132D - INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ
132E - INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT
132F - INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH
1330 - INT 13 u - QUICKCACHE II v4.20 - GET INFO
1331 - INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
1332 - INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
1333 - INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
1334 - INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
1335 - INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
1336 - INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
1337 - INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
1338 - INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
1339 - INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
133A - INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
133B - INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
133C - INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
133D - INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
133E - INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
133F - INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
1340 - INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
1341--BX55AA - INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
1341 - INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
1342 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
134257DX1234 - INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
1343 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
1344 - INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
1345 - INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
1346 - INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
1347 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
1348 - INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
1349 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
134A - INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION
134B00 - INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION
134B01 - INT 13 - Bootable CD-ROM - GET STATUS
134C - INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT
134D00 - INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG
134E - INT 13 - IBM/MS INT 13 Extensions v2.1+ - SET HARDWARE CONFIGURATION
135001 - INT 13 - Enhanced Disk Drive Spec v3.0 - SEND PACKET COMMAND
135001 - INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK
135342CX0001 - INT 13 - ScanBoot - INSTALLATION CHECK
135501 - INT 13 - Seagate ST01/ST02 - Inquiry
135502 - INT 13 - Seagate ST01/ST02 - RESERVED
135503 - INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
135504 - INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
135504 - INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
135505 - INT 13 - Seagate - ??? - PARK HEADS
135505 - INT 13 - Seagate ST01/ST02 - PARK HEADS
135506 - INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
135507 - INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
135514 - INT 13 U - Seagate - ???
135515 - INT 13 U - Seagate - PARK HEADS???
1359 - INT 13 - SyQuest - Generic SCSI pass through
1370 - INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
1375 - INT 13 - ???
1376 - INT 13 - ???
137B00 - INT 13 - NOW! v3.05 - GET INFORMATION
137B01 - INT 13 - NOW! v3.05 - ???
137B02 - INT 13 - NOW! v3.05 - SET INFORMATION
137B03 - INT 13 - NOW! v3.05 - ???
137B04 - INT 13 - NOW! v3.05 - ???
137B05 - INT 13 - NOW! v3.05 - GET DISK ACCESSES???
137B06 - INT 13 - NOW! v3.05 - GET ???
137B07 - INT 13 - NOW! v3.05 - GET ???
137B08 - INT 13 - NOW! v3.05 - ???
1380--CX6572 - INT 13 - FAST! v4.02+ - API
138001CX6572 - INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
138006CX6572 - INT 13 - FAST! v4.02+ - INSTALLATION CHECK
138007CX6572 - INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
1381--SI4358 - INT 13 - Super PC-Kwik v3.20+ - ???
1382--SI4358 - INT 13 - Super PC-Kwik v3.20+ - ???
1383--SI4358 - INT 13 - Super PC-Kwik v3.20+ - ???
1384--SI4358 - INT 13 - Super PC-Kwik v3.20+ - ???
1385--SI4358 - INT 13 - Super PC-Kwik v3.20+ - ???
1386--SI4358 - INT 13 - Super PC-Kwik v4.00+ - ???
1387--SI4358 - INT 13 - Super PC-Kwik v4.00+ - ???
1388--SI4358 - INT 13 - Super PC-Kwik v4.00+ - ???
1389--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
138A--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
138EED - INT 13 - HyperDisk v4.01+ - ???
138EEE - INT 13 - HyperDisk v4.01+ - ???
138EEF - INT 13 - HyperDisk v4.01+ - ???
1392--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
1393--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
1394--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
1395--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
1396--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
1397--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
1398--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
1399--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
139A--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
139B--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
139C--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
139D--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
13A0--SI4358 - INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
13A1--SI4358 - INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
13A2--SI4358 - INT 13 - Super PC-Kwik v3.20+ - ???
13A3--SI4358 - INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
13A4--SI4358 - INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
13A5--SI4358 - INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
13A6--SI4358 - INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
13A7--SI4358 - INT 13 CU - Super PC-Kwik 5.1 - ???
13A759 - INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
13A8--SI4358 - INT 13 CU - Super PC-Kwik 5.1 - ???
13A9--SI4358 - INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
13AA--SI4358 - INT 13 - Super PC-Kwik v4+ - ???
13AB--SI4358 - INT 13 - Super PC-Kwik v4+ - ???
13AC--SI4358 - INT 13 - Super PC-Kwik v4+ - ???
13AD - INT 13 - Priam HARD DISK CONTROLLER???
13AD--SI4358 - INT 13 - Super PC-Kwik v4+ - ???
13AE--SI4358 - INT 13 - Super PC-Kwik v5.10+ - ???
13B0--SI4358 - INT 13 - Super PC-Kwik v3.20+ - ???
13BF00 - INT 13 - Mylex/Adaptec??? - ???
13E000 - INT 13 - XBIOS - COMMAND
13EC00 - INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
13EE - INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
13EF - INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
13F2 - INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
13F9 - INT 13 - SWBIOS - INSTALLATION CHECK
13FA--DX5945 - INT 13 - PC Tools v8+ VSAFE, VWATCH - API
13FD50 - INT 13 - VIRUS - "Predator" - INSTALLATION CHECK
13FE - INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
13FF - INT 13 - EZ-Drive - INSTALLATION CHECK
13FF - INT 13 - IBM SurePath BIOS - Officially "Private" Function
13FFFFBHAA - INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
INT 13 - DISK - RESET DISK SYSTEM AH = 00h DL = drive (if bit 7 is set both hard disks and floppy disks reset) Return: AH = status (see #00234) CF clear if successful (returned AH=00h) CF set on error Note: forces controller to recalibrate drive heads (seek to track 0) for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems, both the master drive and the slave drive respond to the Reset function that is issued to either drive SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4D/AH=00h"TI Professional" SeeAlso: INT 56"Tandy 2000",MEM 0040h:003EhTop
INT 13 - DISK - GET STATUS OF LAST OPERATION AH = 01h DL = drive (bit 7 set for hard disk) Return: CF clear if successful (returned status 00h) CF set on error AH = status of previous operation (see #00234) Note: some BIOSes return the status in AL; the PS/2 Model 30/286 returns the status in both AH and AL SeeAlso: AH=00h,INT 4D/AH=01h,MEM 0040h:0041h,MEM 0040h:0074h (Table 00234) Values for disk operation status: 00h successful completion 01h invalid function in AH or invalid parameter 02h address mark not found 03h disk write-protected 04h sector not found/read error 05h reset failed (hard disk) 05h data did not verify correctly (TI Professional PC) 06h disk changed (floppy) 07h drive parameter activity failed (hard disk) 08h DMA overrun 09h data boundary error (attempted DMA across 64K boundary or >80h sectors) 0Ah bad sector detected (hard disk) 0Bh bad track detected (hard disk) 0Ch unsupported track or invalid media 0Dh invalid number of sectors on format (PS/2 hard disk) 0Eh control data address mark detected (hard disk) 0Fh DMA arbitration level out of range (hard disk) 10h uncorrectable CRC or ECC error on read 11h data ECC corrected (hard disk) 20h controller failure 31h no media in drive (IBM/MS INT 13 extensions) 32h incorrect drive type stored in CMOS (Compaq) 40h seek failed 80h timeout (not ready) AAh drive not ready (hard disk) B0h volume not locked in drive (INT 13 extensions) B1h volume locked in drive (INT 13 extensions) B2h volume not removable (INT 13 extensions) B3h volume in use (INT 13 extensions) B4h lock count exceeded (INT 13 extensions) B5h valid eject request failed (INT 13 extensions) B6h volume present but read protected (INT 13 extensions) BBh undefined error (hard disk) CCh write fault (hard disk) E0h status register error (hard disk) FFh sense operation failed (hard disk) SeeAlso: #M0022Top
INT 13 - DISK - READ SECTOR(S) INTO MEMORY AH = 02h AL = number of sectors to read (must be nonzero) CH = low eight bits of cylinder number CL = sector number 1-63 (bits 0-5) high two bits of cylinder (bits 6-7, hard disk only) DH = head number DL = drive number (bit 7 set for hard disk) ES:BX -> data buffer Return: CF set on error if AH = 11h (corrected ECC error), AL = burst length CF clear if successful AH = status (see #00234) AL = number of sectors transferred (only valid if CF set for some BIOSes) Notes: errors on a floppy may be due to the motor failing to spin up quickly enough; the read should be retried at least three times, resetting the disk with AH=00h between attempts most BIOSes support "multitrack" reads, where the value in AL exceeds the number of sectors remaining on the track, in which case any additional sectors are read beginning at sector 1 on the following head in the same cylinder; the MSDOS CONFIG.SYS command MULTITRACK (or the Novell DOS DEBLOCK=) can be used to force DOS to split disk accesses which would wrap across a track boundary into two separate calls the IBM AT BIOS and many other BIOSes use only the low four bits of DH (head number) since the WD-1003 controller which is the standard AT controller (and the controller that IDE emulates) only supports 16 heads AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH under Windows95, a volume must be locked (see INT 21/AX=440Dh/CX=084Bh) in order to perform direct accesses such as INT 13h reads and writes all versions of MS-DOS (including MS-DOS 7 [Windows 95]) have a bug which prevents booting on hard disks with 256 heads (FFh), so many modern BIOSes provide mappings with at most 255 (FEh) heads some cache drivers flush their buffers when detecting that DOS is bypassed by directly issuing INT 13h from applications. A dummy read can be used as one of several methods to force cache flushing for unknown caches (e.g. before rebooting). BUGS: When reading from floppies, some AMI BIOSes (around 1990-1991) trash the byte following the data buffer, if it is not arranged to an even memory boundary. A workaround is to either make the buffer word aligned (which may also help to speed up things), or to add a dummy byte after the buffer. MS-DOS may leave interrupts disabled on return from this function. Apparently some BIOSes or intercepting resident software have bugs that may destroy DX on return or not properly set the Carry flag. At least some Microsoft software frames calls to this function with PUSH DX, STC, INT 13h, STI, POP DX. on the original IBM AT BIOS (1984/01/10) this function does not disable interrupts for harddisks (DL >= 80h). On these machines the MS-DOS/ PC DOS IO.SYS/IBMBIO.COM installs a special filter to bypass the buggy code in the ROM (see CALL F000h:211Eh) SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM" SeeAlso: INT 21/AX=440Dh/CX=084Bh,INT 4D/AH=02hTop
INT 13 - DISK - WRITE DISK SECTOR(S) AH = 03h AL = number of sectors to write (must be nonzero) CH = low eight bits of cylinder number CL = sector number 1-63 (bits 0-5) high two bits of cylinder (bits 6-7, hard disk only) DH = head number DL = drive number (bit 7 set for hard disk) ES:BX -> data buffer Return: CF set on error CF clear if successful AH = status (see #00234) AL = number of sectors transferred (only valid if CF set for some BIOSes) Notes: errors on a floppy may be due to the motor failing to spin up quickly enough; the write should be retried at least three times, resetting the disk with AH=00h between attempts most BIOSes support "multitrack" writes, where the value in AL exceeds the number of sectors remaining on the track, in which case any additional sectors are written beginning at sector 1 on the following head in the same cylinder; the CONFIG.SYS command MULTITRACK can be used to force DOS to split disk accesses which would wrap across a track boundary into two separate calls the IBM AT BIOS and many other BIOSes use only the low four bits of DH (head number) since the WD-1003 controller which is the standard AT controller (and the controller that IDE emulates) only supports 16 heads AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH under Windows95, an application must issue a physical volume lock on the drive via INT 21/AX=440Dh before it can successfully write to the disk with this function SeeAlso: AH=02h,AH=0Bh,AH=07h"V10DISK.SYS",AH=22h"PS/1",AH=43h"IBM" SeeAlso: INT 21/AX=440Dh"DOS 3.2+",INT 4D/AH=03hTop
INT 13 - DISK - VERIFY DISK SECTOR(S) AH = 04h AL = number of sectors to verify (must be nonzero) CH = low eight bits of cylinder number CL = sector number 1-63 (bits 0-5) high two bits of cylinder (bits 6-7, hard disk only) DH = head number DL = drive number (bit 7 set for hard disk) ES:BX -> data buffer (PC,XT,AT with BIOS prior to 1985/11/15) Return: CF set on error CF clear if successful AH = status (see #00234) AL = number of sectors verified Notes: errors on a floppy may be due to the motor failing to spin up quickly enough (timeout error 80h); the write should be retried at least three times, resetting the disk with AH=00h between attempts on floppys, the operation should also be retried on media change (06h) detection. this function does not compare the disk with memory, it merely checks whether the sector's stored CRC matches the data's actual CRC the IBM AT BIOS and many other BIOSes use only the low four bits of DH (head number) since the WD-1003 controller which is the standard AT controller (and the controller that IDE emulates) only supports 16 heads AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH BUG: some Epson ROM BIOSes sometimes have problems properly handling this function. The workaround is to reset the disk (INT 13/AH=00h) before the call. SeeAlso: AH=02h,AH=44h,INT 4D/AH=04h,INT 4D/AH=06hTop
INT 13 - FLOPPY - FORMAT TRACK AH = 05h AL = number of sectors to format CH = track number DH = head number DL = drive number ES:BX -> address field buffer (see #00235) Return: CF set on error CF clear if successful AH = status (see #00234) Notes: on AT or higher, call AH=17h first the number of sectors per track is read from the diskette parameter table pointed at by INT 1E BUG: some old Compaq BIOSes have a bug when attempting to call this function from Windows Standard Mode with EMM386 loaded. A possible workaround is to call this function from Real Mode e.g. through DPMI function "Call Real Mode function with FAR return" (see INT 31/AX=0301h). SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E Format of floppy format address field buffer entry (one per sector in track): Offset Size Description (Table 00235) 00h BYTE track number 01h BYTE head number (0-based) 02h BYTE sector number 03h BYTE sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)Top
INT 13 - FIXED DISK - FORMAT TRACK AH = 05h AL = interleave value (XT-type controllers only) ES:BX -> 512-byte format buffer the first 2*(sectors/track) bytes contain F,N for each sector F = sector type 00h for good sector 20h to unassign from alternate location 40h to assign to alternate location 80h for bad sector N = sector number CH = cylinder number (bits 8,9 in high bits of CL) CL = high bits of cylinder number (bits 7,6) DH = head DL = drive Return: CF set on error CF clear if successful AH = status code (see #00234) Notes: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH for XT-type controllers on an AT or higher, AH=0Fh should be called first the IBM AT BIOS and many other BIOSes use only the low four bits of DH (head number) since the WD-1003 controller which is the standard AT controller (and the controller that IDE emulates) only supports 16 heads not all controller support sector types 20h and 40h under Windows95, an application must issue a physical volume lock on the drive via INT 21/AX=440Dh before it can successfully write to the disk with this function SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1AhTop
INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND AH = 05h DL = hard drive ID ES:BX -> mode select data (see #00236) Return: CF set on error CF clear if successful AH = status code (see #00234) Notes: this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to format a SCSI disk with the desired parameters the mode select data below is from the SCSI-1 specification the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h Format of Future Domain SCSI mode select data: Offset Size Description (Table 00236) 00h BYTE number of bytes of remaining data (12 + vendor unique length) 01h BYTE reserved (0) 02h BYTE medium type (0 for hard disk) 03h BYTE reserved (0) 04h BYTE block descriptor length (8) 05h BYTE density code (0 for hard disk) 06h 3 BYTEs (big-endian) number of blocks (000000h for entire disk) 09h BYTE reserved (0) 0Ah 3 BYTEs (big-endian) block length (512 standard, or 256) 0Dh ??? vendor-specific parameter bytes (optional)Top
INT 13 - 2M - FORMAT TRACK AX = 057Fh SI = 324Dh ("2M") CH = track number DH = head number DL = drive number ES:BX -> boot sector of future 2M diskette Return: CF set on error CF clear if successful AH = status (see #00234) Program: 2M is a TSR developed by Ciriaco GarcĀ”a de Celis to support non standard diskettes with 820-902/1476-1558K (5.25 DD/HD) and 984-1066/1804-1886K/3608-3772K (3.5 DD/HD/ED) InstallCheck: must search for a "CiriSOFT:2M:1.3" or "CiriSOFT:2MX:3.0" or similar (recomended ":2M:", ":2MX:", or ":2MB:" substrings) in the CiriSOFT TSR interface Notes: it is not necessary to call AH=17h or AH=18h first (will be ignored) the diskette format must always begin on cylinder 0 head 0 the boot sector can be obtained from an already-formatted 2M diskette (by calling AH=02h with head number 00h in 2M v1.x and with head number 80h for 2M v2+) since 2M v2.0, the BOOT sector is emulated using the first physical sector of FAT2; the second-sixth physical sectors of FAT2 in HD or ED diskettes store the SuperBOOT code. To skip the FAT2 emulation (using FAT1) of 2M, in order to read the SuperBOOT code, head number must be 80h-81h instead 0-1 (bit 7 active) in standard read/write functions. This lets diskcopy programs format 2M target diskettes copying SuperBOOT code. If the target diskette is already 2MF formatted (containing boot code) this trick it is not necessary. when using STV technology (offset 65 of boot sector equal to 1) it is necessary to write the full track before formatting (except track 0 side 0) to complete the format and skip future CRC errors on read; in track 0 side 1 the head used must be 81h instead 1. Diskcopy programs may do a format-write-verify sequential phases to improve performance SeeAlso: AH=05h"FLOPPY",AH=18h/CX=5055h,INT 2F"CiriSOFT"Top
INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT) AH = 06h AL = interleave value CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive Return: AH = status code (see #00234) Note: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH SeeAlso: AH=05h"FIXED",AH=07h"FIXED"Top
INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING AH = 06h AL = interleave (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique) DL = hard drive ID DH = defect list info (see #00237) ES:BX -> defect table A, B or C (see #00238,#00239,#00240) Return: CF set on error CF clear if successful AH = status code (see #00234) Notes: block addresses must be in ascending order (for table B, cylinder is most significant, byte from index least significant; for table C, cylinder is most significant, sector number least significant) table B defect bytes from index of FFFFFFFFh indicates that the entire track shall be reassigned table C defect sector number of FFFFFFFFh indicates that the entire track shall be reassigned the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI" Bitfields for Future Domain SCSI defect list info: Bit(s) Description (Table 00237) 7-5 drive LUN 4 defect list is available 3 defect list is complete (erase drive's defect list) 2-0 defect table format (000=use defect table A, 100=use defect table B, 101=use defect table C) Format of Future Domain SCSI defect table A: Offset Size Description (Table 00238) 00h WORD number of bytes remaining in table 02h BYTE reserved (0) 03h BYTE reserved (0) 04h WORD (big-endian) defect list length (4*number of defects) 06h 4 DWORDs (big-endian) defect block addresses Format of Future Domain SCSI defect table B: Offset Size Description (Table 00239) 00h WORD number of bytes remaining in table 02h BYTE reserved (0) 03h BYTE reserved (0) 04h WORD (big-endian) defect list length (8*number of defects) 06h 8N BYTEs defect list [array] (see #00241) Format of Future Domain SCSI defect table C: Offset Size Description (Table 00240) 00h WORD number of bytes remaining in table 02h BYTE reserved (0) 03h BYTE reserved (0) 04h WORD (big-endian) defect list length (8*number of defects) 06h 8N BYTEs defect list [array] (see #00241) Format of Future Domain SCSI defect list entry: Offset Size Description (Table 00241) 00h 3 BYTEs (big-endian) cylinder number of defect 03h BYTE head number of defect 04h DWORD (big-endian) defect bytes from indexTop
INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES AH = 06h Return: AH = status code (see #00234) CF clear if successful AL = first drive supported (80h nonconcurrent operation, 81h concurrent operation) CF set on error Desc: determine the number of the first supported SCSI drive Note: the return value is 80h when two SCSI drives are supported, 81h if only one SCSI drive is installed SeeAlso: AH=08h"PC",#00732 at INT 1A/AX=B102hTop
INT 13 - V10DISK.SYS - READ DELETED SECTORS AH = 06h AL = number of sectors CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive ES:BX -> buffer Return: AH = status code (see #00234) Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies SeeAlso: AH=02h,AH=07h"V10DISK.SYS"Top
INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT) AH = 07h AL = interleave value (XT only) ES:BX = 512-byte format buffer (see AH=05h) CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive Return: AH = status code (see #00234) Note: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1AhTop
INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE AH = 07h AL = interleave (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique) DL = hard drive ID Return: CF set on error CF clear if successful AH = status code (see #00234) SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"Top
INT 13 - V10DISK.SYS - WRITE DELETED SECTORS AH = 07h AL = number of sectors CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive ES:BX -> buffer Return: AH = status code (see #00234) Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies SeeAlso: AH=03h,AH=06h"V10DISK.SYS"Top
INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI) AH = 08h DL = drive (bit 7 set for hard disk) ES:DI = 0000h:0000h to guard against BIOS bugs Return: CF set on error AH = status (07h) (see #00234) CF clear if successful AH = 00h AL = 00h on at least some BIOSes BL = drive type (AT/PS2 floppies only) (see #00242) CH = low eight bits of maximum cylinder number CL = maximum sector number (bits 5-0) high two bits of maximum cylinder number (bits 7-6) DH = maximum head number DL = number of drives ES:DI -> drive parameter table (floppies only) Notes: may return successful even though specified drive is greater than the number of attached drives of that type (floppy/hard); check DL to ensure validity for systems predating the IBM AT, this call is only valid for hard disks, as it is implemented by the hard disk BIOS rather than the ROM BIOS the IBM ROM-BIOS returns the total number of hard disks attached to the system regardless of whether DL >= 80h on entry. Toshiba laptops with HardRAM return DL=02h when called with DL=80h, but fail on DL=81h. The BIOS data at 40h:75h correctly reports 01h. may indicate only two drives present even if more are attached; to ensure a correct count, one can use AH=15h to scan through possible drives Reportedly some Compaq BIOSes with more than one hard disk controller return only the number of drives DL attached to the corresponding controller as specified by the DL value on entry. However, on Compaq machines with "COMPAQ" signature at F000h:FFEAh, MS-DOS/PC DOS IO.SYS/IBMBIO.COM call INT 15/AX=E400h and INT 15/AX=E480h to enable Compaq "mode 2" before retrieving the count of hard disks installed in the system (DL) from this function. the maximum cylinder number reported in CX is usually two less than the total cylinder count reported in the fixed disk parameter table (see INT 41h,INT 46h) because early hard disks used the last cylinder for testing purposes; however, on some Zenith machines, the maximum cylinder number reportedly is three less than the count in the fixed disk parameter table. for BIOSes which reserve the last cylinder for testing purposes, the cylinder count is automatically decremented on PS/1s with IBM ROM DOS 4, nonexistent drives return CF clear, BX=CX=0000h, and ES:DI = 0000h:0000h machines with lost CMOS memory may return invalid data for floppy drives. In this situation CF is cleared, but AX,BX,CX,DX,DH,DI, and ES contain only 0. At least under some circumstances, MS-DOS/ PC DOS IO.SYS/IBMBIO.COM just assumes a 360 KB floppy if it sees CH to be zero for a floppy. the PC-Tools PCFORMAT program requires that AL=00h before it will proceed with the formatting if this function fails, an alternative way to retrieve the number of floppy drives installed in the system is to call INT 11h. In fact, the MS-DOS/PC-DOS IO.SYS/IBMBIO.COM attempts to get the number of floppy drives installed from INT 13/AH=08h, when INT 11h AX bit 0 indicates there are no floppy drives installed. In addition to testing the CF flag, it only trusts the result when the number of sectors (CL preset to zero) is non-zero after the call. BUGS: several different Compaq BIOSes incorrectly report high-numbered drives (such as 90h, B0h, D0h, and F0h) as present, giving them the same geometry as drive 80h; as a workaround, scan through disk numbers, stopping as soon as the number of valid drives encountered equals the value in 0040h:0075h a bug in Leading Edge 8088 BIOS 3.10 causes the DI,SI,BP,DS, and ES registers to be destroyed some Toshiba BIOSes (at least before 1995, maybe some laptops??? with 1.44 MB floppies) have a bug where they do not set the ES:DI vector even for floppy drives. Hence these registers should be preset with zero before the call and checked to be non-zero on return before using them. Also it seems these BIOSes can return wrong info in BL and CX, as S/DOS 1.0 can be configured to preset these registers as for an 1.44 MB floppy. the PS/2 Model 30 fails to reset the bus after INT 13/AH=08h and INT 13/AH=15h. A workaround is to monitor for these functions and perform a transparent INT 13/AH=01h status read afterwards. This will reset the bus. The MS-DOS 6.0 IO.SYS takes care of this by installing a special INT 13h interceptor for this purpose. AD-DOS may leave interrupts disabled on return from this function. Some Microsoft software explicitly sets STI after return. SeeAlso: AH=06h"Adaptec",AH=13h"SyQuest",AH=48h,AH=15h,INT 1E SeeAlso: INT 41"HARD DISK 0" (Table 00242) Values for diskette drive type: 01h 360K 02h 1.2M 03h 720K 04h 1.44M 05h ??? (reportedly an obscure drive type shipped on some IBM machines) 2.88M on some machines (at least AMI 486 BIOS) 06h 2.88M 10h ATAPI Removable Media DeviceTop
INT 13 - V10DISK.SYS - SET FORMAT AH = 08h AL = number of sectors CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive Return: AH = status code (see #00234) Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies Note: details not available SeeAlso: AH=03h,AH=06h"V10DISK.SYS"Top
INT 13 - SecureDrive - INSTALLATION CHECK AX = 08000h DL = F0h Return: AX = EDCBh for version 1.0-1.2 AX = EDCCh for version 1.3 CX = code segment DX = data address within code segment Program: SecureDrive by Mike Ingle <mikeingle@delphi.com> allows you to create an encrypted partition on your harddisk.Top
INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS) AH = 09h DL = drive (80h for first, 81h for second) Return: CF clear if successful CF set on error AH = status (see #00234) Notes: on the PC and XT, this function uses the parameter table pointed at by INT 41 on the AT and later, this function uses the parameter table pointed at by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if DL=81h SeeAlso: INT 41"HARD DISK 0",INT 46"HARD DISK 1"Top
INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later) AH = 0Ah AL = number of sectors (01h may be only value supported) CH = low eight bits of cylinder number CL = sector number (bits 5-0) high two bits of cylinder number (bits 7-6) DH = head number DL = drive number (80h = first, 81h = second) ES:BX -> data buffer Return: CF clear if successful CF set on error AH = status (see #00234) AL = number of sectors transferred Notes: this function reads in four to seven bytes of error-correcting code along with each sector's worth of information data errors are not automatically corrected, and the read is aborted after the first sector with an ECC error used for diagnostics only on PS/2 systems; IBM officially classifies this function as optional BUG: on the original IBM AT BIOS (1984/01/10) this function does not disable interrupts for harddisks (DL >= 80h). On these machines the MS-DOS/ PC DOS IO.SYS/IBMBIO.COM installs a special filter to bypass the buggy code in the ROM (see CALL F000h:211Eh) SeeAlso: AH=02h,AH=0Bh,MEM 0040h:0074hTop
INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later) AH = 0Bh AL = number of sectors (01h may be only value supported) CH = low eight bits of cylinder number CL = sector number (bits 5-0) high two bits of cylinder number (bits 7-6) DH = head number DL = drive number (80h = first, 81h = second) ES:BX -> data buffer Return: CF clear if successful CF set on error AH = status (see #00234) AL = number of sectors transferred Notes: each sector's worth of data must be followed by four to seven bytes of error-correction information used for diagnostics only on PS/2 systems; IBM officially classifies this function as optional SeeAlso: AH=03h,AH=0Ah,MEM 0040h:0074hTop
INT 13 - HARD DISK - SEEK TO CYLINDER AH = 0Ch CH = low eight bits of cylinder number CL = sector number (bits 5-0) high two bits of cylinder number (bits 7-6) DH = head number DL = drive number (80h = first, 81h = second hard disk) Return: CF set on error CF clear if successful AH = status (see #00234) SeeAlso: AH=00h,AH=02h,AH=0Ah,AH=47hTop
INT 13 - HARD DISK - RESET HARD DISKS AH = 0Dh DL = drive number (80h = first, 81h = second hard disk) Return: CF set on error CF clear if successful AH = status (see #00234) Notes: reinitializes the hard disk controller, resets the specified drive's parameters, and recalibrates the drive's heads (seek to track 0) for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems, both the master drive and the slave drive respond to the Reset function that is issued to either drive not for PS/2 ESDI drives SeeAlso: AH=00h,INT 21/AH=0DhTop
INT 13 - HARD DISK - READ SECTOR BUFFER (XT only) AH = 0Eh DL = drive number (80h = first, 81h = second hard disk) ES:BX -> buffer Return: CF set on error CF clear if successful AH = status code (see #00234) Notes: transfers controller's sector buffer. No data is read from the drive used for diagnostics only on PS/2 systems SeeAlso: AH=0AhTop
INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only) AH = 0Fh DL = drive number (80h = first, 81h = second hard disk) ES:BX -> buffer Return: CF set on error CF clear if successful AH = status code (see #00234) Notes: does not write data to the drive should be called before formatting to initialize an XT-type controller's sector buffer used for diagnostics only on PS/2 systems SeeAlso: AH=0BhTop
INT 13 - HARD DISK - CHECK IF DRIVE READY AH = 10h DL = drive number (80h = first, 81h = second hard disk) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) SeeAlso: AH=11hTop
INT 13 - HARD DISK - RECALIBRATE DRIVE AH = 11h DL = drive number (80h = first, 81h = second hard disk) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) Note: causes hard disk controller to seek the specified drive to cylinder 0 SeeAlso: AH=00h,AH=0Ch,AH=10h,AH=19h"FIXED DISK",MEM 0040h:003EhTop
INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS) AH = 12h DL = drive number (80h = first, 81h = second hard disk) Return: CF set on error CF clear if successful AH = status code (see #00234 at AH=01h) AL = 00h SeeAlso: AH=13h,AH=14hTop
INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK AH = 12h DL = hard drive ID Return: CF set on error CF clear if successful AH = status code (see #00234 at AH=01h) Notes: available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A if the given drive is a SCSI device, the SCSI Stop Unit command is sent and either "Disk prepared for shipping" or "Disk Stop command failed" is displayed the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h)Top
INT 13 - SyQuest - START/STOP SCSI DISK AH = 12h AL = subfunction 00h start disk 01h stop disk CX = wait flag 00h wait for ready 01h don't wait for ready DL = hard drive ID (bit 7 for hard disks must be set) Return: CF set on error CF clear if successful AH = status 00h successful 01h invalid function request 80h timeout SeeAlso: AH=12h"Future Domain",AH=13h"SyQuest"Top
INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS) AH = 13h DL = drive number (80h = first, 81h = second hard disk) Return: CF set on error CF clear if successful AH = status code (see #00234 at AH=01h) AL = 00h SeeAlso: AH=12h"HARD DISK",AH=14h"HARD DISK"Top
INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+) AH = 13h DL = drive ID (bit 7 set for hard disks) Return: CF set on error AH = status (07h) (see #00234 at AH=01h) CF clear if successful AH = 00h BL = drive type (AT/PS2 floppies only) (see #00242) CH = low eight bits of maximum cylinder number CL = maximum sector number (bits 5-0) high two bits of maximum cylinder number (bits 7-6) DH = maximum head number DL = number of drives ES:DI -> drive parameter table (floppies only) Notes: the return values are identical to the standard INT 13/AH=08h, but the number of drives is not limited to 2, so scanning all possible drive numbers with the Read DASD Type call (AH=15h) should generally be preferred to determine the number of drives attached to the system. SeeAlso: AH=08h"PC",AH=12h"SyQuest",AH=15h,AH=59h"SyQuest"Top
INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC AH = 14h Return: CF set on error CF clear if successful AH = status code (see #00234 at AH=01h) AL = 00h SeeAlso: AH=12h,AH=13hTop
INT 13 - DISK - GET DISK TYPE (XT 1986/1/10 or later,XT286,AT,PS) AH = 15h DL = drive number (bit 7 set for hard disk) (AL = FFh, CX = FFFFh, see Note) Return: CF clear if successful AH = type code 00h no such drive (SpeedStor) AL = 03h hard disk CX:DX = number of 512-byte sectors 01h floppy without change-line support 02h floppy (or other removable drive) with change-line support 03h hard disk CX:DX = number of 512-byte sectors CF set on error AH = status (see #00234 at AH=01h) Note: SyQuest can report type 01h or 02h for 'hard disks', since its media is removable BUGS: many versions of the Award 486 BIOS do not return the sector count because the BIOS exit code restores CX and DX to their original values after the function had already set them to correct values Some releases of PC Tools REBUILD preset CX=FFFFh and only trust the results if CH <= 2 on return (which would cut off drives > 16 Gb). several different Compaq BIOSes incorrectly report high-numbered drives (such as 90h, B0h, D0h, and F0h) as present, giving them the same geometry as drive 80h; as a workaround, scan through disk numbers, stopping as soon as the number of valid drives encountered equals the value in 0040h:0075h the PS/2 Model 30 fails to reset the bus after INT 13/AH=08h and INT 13/AH=15h. A workaround is to monitor for these functions and perform a transparent INT 13/AH=01h status read afterwards. This will reset the bus. The MS-DOS 6.0 IO.SYS takes care of this by installing a special INT 13h interceptor for this purpose. Some releases of SpeedStor have a bug where it reports AX=0003h instead of correctly reporting AH=03h for hard disks. A possible workaround when testing for hard disks is to check for AH=03h and AX=0003h. In this case this function should be invoked with a bogus fixed value in AL, e.g. AL=FFh. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI",MEM 0040h:0075hTop
INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1986/1/10 or later,XT286,AT,PS) AH = 16h DL = drive number (00h-7Fh) SI = 0000h (to avoid crash on AT&T 6300) Return: CF clear if change line inactive AH = 00h (disk not changed) CF set if change line active AH = status 01h invalid command (SyQuest) 06h change line active or not supported 80h drive not ready or not present Notes: call AH=15h first to determine whether the drive supports a change line this call also clears the media-change status, so that a disk change is only reported once BUGS: some versions of Award 386 Modular BIOS and AMI BIOS fail to clear the media-change status AT&T 6300 WGS systems crash if SI <> 0 on entry. some pre 1986/08/04 Compaq ROM BIOS have a serious bug where this function may re-configure a hard disk depending on what is located at ES:[BX] and data indexed to by it. MS-DOS/PC DOS IO.SYS/IBMBIO.COM install a special filter when they detect Compaq ROM BIOSes with earlier dates. some Compaq 286 systems have a bug in all INT 13h functions >= 16h, which causes the byte at DS:0074h to be destroyed when called for hard disks (DL >= 80h). MS-DOS/PC DOS IO.SYS/IBMBIO.COM performs a test on this bug using this sub-function, and if found installs a special filter which points DS into ROM, so that it cannot cause any harm. some drives (or controllers???) forget the change line status if another drive is accessed afterwards. The DOS BIOS takes care of this by not relying on the reported change line status when the change line is not active and a different drive is accessed, instead it reports "don't know" to the DOS kernel. SeeAlso: AH=15h,AH=49hTop
INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS) AH = 17h AL = format type 01h = 320/360K disk in 360K drive 02h = 320/360K disk in 1.2M drive 03h = 1.2M disk in 1.2M drive 04h = 720K disk in 720K or 1.44M drive DL = drive number Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) Note: this function does not handle 1.44M drives; use AH=18h instead SeeAlso: AH=15h,AH=18hTop
INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE AX = 1700h CL = length of buffer DL = hard drive ID ES:BX -> buffer for info (see #00243) Return: CF clear if successful CH = number of bytes returned in buffer??? CF set on error AH = status code (see #00234 at AH=01h) Notes: this function is not available with 8-bit controller ROM versions < 7.0 information block bytes 5-n are vendor-specific in older SCSI devices the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI" Format of Future Domain SCSI inquiry information block: Offset Size Description (Table 00243) 00h BYTE device type bits 0-4: peripheral device type (see #00244) bits 5-7: peripheral qualifier (see #00245) 01h BYTE device type modifier bits 0-6: device type modifier bit 7: removable medium 02h BYTE SCSI version (see #00246) 03h BYTE data format/capabilities (see #00247) 04h BYTE additional data length (total remaining bytes) 05h 2 BYTEs reserved 07h BYTE device capabilities (see #00248) 08h 8 BYTEs vendor identification (space-padded ASCII) 10h 8 BYTEs product identification (space-padded ASCII) 20h 4 BYTEs product revision level (space-padded ASCII) 24h 20 BYTEs vendor specific 38h 40 BYTEs reserved 60h var vendor specific parameters (Table 00244) Values for Future Domain SCSI peripheral device type: 00h direct-access device (e.g., magnetic disk) 01h sequential-access device (e.g., magnetic tape) 02h printer device 03h processor device 04h write-once device (e.g., some optical disks) 05h CD-ROM device 06h scanner device 07h optical memory device (e.g., some optical disks) 08h medium changer device (e.g., jukeboxes) 09h communications device 0Ah (defined by ASC IT8) 0Bh (defined by ASC IT8) 0Ch-1Eh reserved 1Fh unknown or no device type (Table 00245) Values for Future Domain SCSI peripheral qualifier: 000b device is currently connected to this logical unit and available 001b target is capable of supporting the specified peripheral, but the physical device is not currently connected to this logical unit 010b reserved 011b target can't support a physical device on this logical unit 1xxb vendor specific Bitfields for Future Domain SCSI version: Bit(s) Description (Table 00246) 0-2 ANSI-approved version 000 device might or might not comply to ANSI standard 001 device complies to ANSI SCSI-1 010 device complies to ANSI SCSI-2 other reserved 3-5 ECMA version 6-7 ISO version Bitfields for Future Domain SCSI data format/capabilities: Bit(s) Description (Table 00247) 0-2 response data format 000 information block is as specified in SCSI-1 001 information block is as specified in CCS 010 information block is as specified in SCSI-2 other reserved 4-5 reserved 6 terminate I/O process supported 7 asynchronous event notification supported Bitfields for Future Domain SCSI device capabilities: Bit(s) Description (Table 00248) 0 device responds to RESET with a hard RESET 1 tagged command queuing supported 2 reserved 3 linked commands supported 4 synchronous data transfer supported 5 16-transfers supported 6 32-transfers supported 7 relative addressing supportedTop
INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS) AH = 18h DL = drive number CH = lower 8 bits of highest cylinder number (number of cylinders - 1) CL = sectors per track (bits 0-5) top 2 bits of highest cylinder number (bits 6,7) Return: AH = status 00h requested combination supported 01h function not available 0Ch not supported or drive type unknown 80h there is no disk in the drive ES:DI -> 11-byte parameter table (see #01264 at INT 1E) Note: this function does not set the INT 1E vector to point at the returned parameter table; it is the caller's responsibility to do so SeeAlso: AH=05h,AH=07h,AH=17h,INT 1ETop
INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION AH = 18h DL = hard drive ID Return: CF set on error AH = status code (see #00234 at AH=01h) CF clear if successful AX = 4321h (magic number) CX = controller family code (see #00249) ---if family code=0200h DH = number of exclusively ROM-controlled SCSI devices DL = canonical SCSI device number for specified drive ---if family code <> 0200h BH = number of exclusively ROM-controlled SCSI devices BL = canonical SCSI device number for specified drive Notes: also sets an internal flag (non-resettable) which prevents some controller messages from being displayed, allows writes to removable devices (use caution!), and enables the INT 13 interface for more than one drive (i.e. DL >= 81h) in at least some ROM versions the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h (Table 00249) Values for Future Domain SCSI controller family code: 0200h TMC-1680/? (ROM 3.0) 0203h TMC-1650/1660/1670/1680 (ROM 2.0) 040Ah TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A) 050Dh TMC-840/841/880/881 (ROM 5.2D) 0700h TMC-830/850/860/875/885 (ROM 7.0)Top
INT 13 - PU_1700.COM - INSTALLATION CHECK AH = 18h CX = 5055h ('PU') DL = 00h Return: AX = 7570h ('up') if PU_1700 is installed Program: PU_1700 is a BIOS enhancer from PU Service Systems which permits formatting diskettes at higher capacity (1.78M instead of 1.44M) SeeAlso: AX=057Fh/SI=324Dh"2M"Top
INT 13 - XDF.COM - API AH = 18h CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey) DX = 0000h BX = function 0000h installation check Return: AH = 0Ch CX = 7269h ("ri" = Roger Ivey) ES = segment of driver CF set 2F64h ("/d") disable the driver Return: AH = 0Ch ES:BX = pointer to activation flag (it is set to 0: set it to 1 to enable the driver again) CX = 7269h CF set 2F75h ("/u") unload the driver (restore interrupts & free memory) Return: AH = 0Ch DL = 55h ("U") if successful = 00h if fails CX = 7269h ES = segment of driver CF set AL, BX, DH, and DI destroyed Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks, developed by Roger D. Ivey Note: After disabling or enabling the driver, a disk change must be performed or simulated to reset the driver.Top
INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS) AH = 19h DL = drive Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) SeeAlso: AH=11hTop
INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE AH = 19h DL = hard drive ID Return: CF set on error AH = status code (see #00234 at AH=01h) CF clear if successful AH = disk type (03h = fixed disk) CX:DX = number of 512-byte sectors Notes: sends SCSI Read Capacity command to get number of logical blocks and adjusts the result for 512-byte sectors displays either "Error in Read Capacity Command" or "nnn Bytes per sector" (nnn=256 or 512, the only sizes supported in the translation code) should probably be called when a removable device has its media changed returns the same values as AH=15h the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100hTop
INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS) AH = 1Ah AL = defect table entry count CL = format modifiers (see #00250) DL = drive (80h,81h) ES:BX -> defect table (see #00251), ignored if AL=00h Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) Note: if periodic interrupt selected, INT 15/AH=0Fh is called after each cylinder is formatted SeeAlso: AH=07h,INT 15/AH=0Fh Bitfields for ESDI format modifiers: Bit(s) Description (Table 00250) 4 generate periodic interrupt 3 perform surface analysis 2 update secondary defect map 1 ignore secondary defect map 0 ignore primary defect map Format of defect table entry [array]: Offset Size Description (Table 00251) 00h 3 BYTEs relative sector address (little-endian) 03h BYTE flags and defect count bit 7: last logical sector on track bit 6: first logical sector on track bit 5: last logical sector on cylinder bit 4: logical sectors are pushed onto next track bits 3-0: number of defects pushed from previous cylinderTop
INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY AH = 1Ah CH = track (bits 8,9 in high bits of CL) CL = sector (01h to number of sectors/track for drive) DH = head DL = hard drive ID Return: CF set on error AH = status code (see #00234 at AH=01h) CX:DX = logical block number of last quickly-accessible block after given block Notes: sends SCSI Read Capacity command with the PMI bit set to obtain the logical block address of the last block after which a substantial delay in data transfer will be encountered (usually the last block on the current cylinder). No translation to 512 byte sectors is performed on the result if data is stored on the disk in other than 512 byte sectors. the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=15h,AH=19h"SCSI"Top
INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER AH = 1Bh AL = number of sectors to read DL = drive ES:BX -> buffer for manufacturing header (defect list) Return: CF set on error CF clear if successful AH = status Note: manufacturing header format (Defect Map Record format) can be found in IBM 70MB, 115MB Fixed Disk Drives Technical Reference the first sector read contains the manufacturing header with the number of defect entries and the beginning of the defect map; the remaining sectors contain the remainder of the defect mapTop
INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK AH = 1Bh DL = hard drive ID Return: CF set on error AH = status code (see #00234 at AH=01h) CF clear if successful ES:BX -> SCSI disk information block (see #00252) Notes: also sets a non-resettable flag which prevents some controller messages from being displayed the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI" Format of Future Domain SCSI disk information block: Offset Size Description (Table 00252) 00h BYTE drive physical information (see #00253) 01h WORD translated number of cylinders 03h BYTE translated number of heads 04h BYTE translated number of sectors per track (17, 34, or 63) 05h BYTE drive address bits 0-2: logical unit number bits 3-5: device number 06h BYTE 01h at initialization 07h BYTE sense code byte 00h, or extended sense code byte 0Ch 08h BYTE 00h 09h BYTE 00h or extended sense code byte 02h (sense key) 0Ah BYTE 00h 0Bh 10 BYTEs copy of Command Descriptor Block (CDB) (see #03236,#03237) 15h DWORD translated number of sectors on device Bitfields for Future Domain SCSI device physical information: Bit(s) Description (Table 00253) 0 ??? 1 device uses parity 2 256 bytes per sector instead of 512 3 don't have capacity yet??? 4 disk is removable 5 logical unit number is not presentTop
INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM AH = 1Ch DL = hard drive ID (any valid SCSI hard disk) Return: CF set on error AH = status code (see #00234 at AH=01h) CF clear if successful ES:BX -> first byte of free RAM on controller Notes: the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h to 1BFFh on-board the controller for storing drive information and controller status; ES:BX points to the first byte available for other uses ES contains the segment at which the controller resides; the controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h SeeAlso: AH=1Bh"SCSI"Top
INT 13 U - ESDI FIXED DISK - ??? AH = 1Ch AL = subfunction (01h-06h) DL = drive (80h,81h) ??? Return: ??? Note: these functions perform a controller command 0612h without DMA SeeAlso: AX=1C08h,PORT 3510h"ESDI"Top
INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS AX = 1C08h DL = drive (80h,81h) ES:BX -> buffer for Command Complete Status Block (see #00254) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) SeeAlso: AX=1C09h,AX=1C0Ah,PORT 3510h"ESDI" Format of ESDI Command Complete Status Block: Offset Size Description (Table 00254) 00h BYTE 07h 01h BYTE size of block in words (07h) 02h BYTE command error code (see #00255) 03h BYTE command status code (see #00256) 04h BYTE device error code, group 1 (see #00257) 05h BYTE device error flags, group 2 (see #00258) 06h WORD number of unprocessed sectors due to abnormal termination 08h DWORD last Relative Sector Address processed by command 0Ch WORD number of sectors corrected by ECC codes (Table 00255) Values for ESDI command error code: 00h successful 01h parameter invalid 02h unknown function 03h unsupported command 04h command cancelled 05h unknown function 06h controller diagnostics failed 07h formatting failed 08h format error in primary map 09h format error in secondary map 0Ah diagnostic failure during formatting 0Bh warning: secondary map too large during formatting 0Ch warning: non-zero defect 0Dh system checksum error during formatting 0Eh warning: incompatible device 0Fh warning: push table overflowed 10h warning: more than 15 sectors pushed to next cylinder 11h internal hardware error 12h warning: errors found while verifying sectors 13h invalid device FFh device error (Table 00256) Values for ESDI command status code: 01h successful 03h successful after ECC 05h successful after retries 06h format partially completed 07h successful after ECC and retries 08h command completed with warning (see #00255) 09h abort complete 0Ah reset complete 0Bh data transfer ready (no status block) 0Ch command completed with failure (see #00257,#00258) 0Dh DMA error 0Eh command block error (see #00255) 0Fh bad attention code SeeAlso: #00257 (Table 00257) Values for ESDI device error code, group 1: 00h successful 01h seek fault detected by device 02h interface fault 03h sector ID not found 04h disk not formatted 05h unrecoverable ECC error 06h ECC error in sector ID 07h invalid relative sector address 08h timeout 09h sector defective 0Ah disk changed (removable media) 0Bh selection error 0Ch write protected (removable media) 0Dh write fault 0Eh read fault 0Fh no index or sector pulse 10h device not ready 11h seek error detected by adapter 12h bad format 13h volume overflow 14h data address mark not found 15h sector ID not found 16h missing device configuration data 17h first/last relative sector flags missing 18h track empty 81h timeout while waiting for stop 82h timeout while waiting for end of data transfer 84h stopped awaiting data transfer during formatting 85h timeout while waiting for head switch 86h timeout while awaiting DMA completion SeeAlso: #00256,#00258 Bitfields for ESDI device error flags, group 2: Bit(s) Description (Table 00258) 7-5 unused 4 ready 3 selected 2 write fault 1 on track 0 0 seek/command complete SeeAlso: #00257Top
INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS AX = 1C09h DL = drive (80h,81h) ES:BX -> buffer for Device Status Block (see #00259) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) SeeAlso: AX=1C08h,AX=1C0Ah,PORT 3510h"ESDI" Format of ESDI Device Status Block: Offset Size Description (Table 00259) 00h BYTE 08h 01h BYTE number of words in block (09h) 02h BYTE error flags 03h BYTE unused 04h BYTE command error code (see #00255) 05h BYTE command status code (see #00256) 06h WORD ESDI standard status 08h 5 WORDs ESDI vendor-specific status codesTop
INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION AX = 1C0Ah DL = drive (80h,81h) ES:BX -> buffer for Drive Configuration Status Block (see #00260) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) Note: device configuration format can be found in IBM ESDI Fixed Disk Drive Adapter/A Technical Reference SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch Format of ESDI Drive Configuration Status Block: Offset Size Description (Table 00260) 00h BYTE 09h 01h BYTE number of words in block (06h) 02h BYTE flags 03h BYTE number of spare sectors per cylinder 04h DWORD total number of usable sectors 08h WORD total number of cylinders 0Ah BYTE tracks per cylinder 0Bh BYTE sectors per trackTop
INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION AX = 1C0Bh ES:BX -> buffer for Controller Configuration Status Block (see #00261) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) SeeAlso: AX=1C0Ch Format of ESDI Controller Configuration Status Block: Offset Size Description (Table 00261) 00h BYTE E9h 01h BYTE number of words in block (06h) 02h WORD unused (0000h) 04h DWORD controller microcode revision level 08h 2 WORDs unused (0000h)Top
INT 13 U - ESDI FIXED DISK - GET POS INFORMATION AX = 1C0Ch ES:BX -> buffer for POS Information Status Block (see #00262) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) SeeAlso: AX=1C0Bh Format of ESDI POS Information Status Block: Offset Size Description (Table 00262) 00h BYTE EAh 01h BYTE number of words in block (05h) 02h WORD magic value FFDDh 04h BYTE POS register 3 05h BYTE POS register 2 06h BYTE POS register 5 (unused, FFh) 07h BYTE POS register 4 (unused, FFh) 08h BYTE POS register 7 (unused, FFh) 09h BYTE POS register 6 (unused, FFh)Top
INT 13 U - ESDI FIXED DISK - ??? AX = 1C0Dh DL = drive (80h,81h) ??? Return: ??? Note: invokes controller command 0614h without DMA SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"Top
INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA AX = 1C0Eh CH = low 8 bits of cylinder number CL = sector number, high two bits of cylinder number in bits 6 and 7 DH = head number DL = drive number (80h,81h) ES:BX -> ABA number Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) Note: ABA (absolute block address) format can be found in IBM ESDI Adapter Technical Reference by using its Device Configuration Status Block SeeAlso: AX=1C08h,AX=1C0Fh,PORT 3510h"ESDI"Top
INT 13 U - ESDI FIXED DISK - ??? AX = 1C0Fh DL = drive (80h,81h) ??? Return: ??? Note: invokes controller command 0614h without DMA SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT 3510h"ESDI"Top
INT 13 U - ESDI FIXED DISK - ??? AX = 1C12h DL = drive (80h,81h) ??? Return: ??? Note: invokes controller command 0612h without DMA SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"Top
INT 13 - IBMCACHE.SYS - CACHE STATUS AH = 1Dh AL = subfunction 01h get status record DL = drive??? Return: ES:BX -> status record (see #00263) CF set on error AH = error code 02h set cache status ES:BX -> status record (see #00263) DL = drive??? Return: CF set on error Format of IBMCACHE.SYS status record: Offset Size Description (Table 00263) 00h DWORD total number of read requests 04h DWORD total number of hits 08h DWORD number of physical disk reads 0Ch DWORD total number of sectors requested by physical disk reads 10h 6 BYTEs ??? 16h DWORD pointer to start of error list (see #00264) 1Ah DWORD pointer to end of error list 1Eh WORD ??? 20h BYTE using extended memory if nonzero 21h BYTE ??? 22h 4 BYTEs ASCII version number 26h WORD cache size in KB 28h WORD sectors per page Format of IBMCACHE.SYS error list: Offset Size Description (Table 00264) 00h DWORD relative block address of bad page 04h BYTE drive 05h BYTE sector bit-map 06h WORD next errorTop
INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT AH = 1Fh AL = subfunction 00h allow media removal 01h prevent media removal (lock door) DL = drive ID (bit 7 set for hard disks) Return: CF clear if successful AH = 00h CF set on error AH = error code 00h successful 01h invalid function request 80h timeout DDh media change requested SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"Top
INT 13 - DISK - ??? (Western Digital "Super BIOS") AH = 20h ??? Return: ??? Notes: returns some kind of status related to whether the drive contains its default media type QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some casesTop
INT 13 U - Compaq, ATAPI Removable Media Device - GET CURRENT MEDIA FORMAT AH = 20h DL = drive number (00h,01h) Return: CF clear if successful AL = media type (see #00265) AH = 00h CF set on error AH = error code 01h invalid request 30h drive does not support media sense 31h no such drive / media not present 32h non-default media / drive does not support media type Notes: this function is supported by the 1993/3/8 Compaq ROM BIOS, but only partially (AL is always 00h when successful) by the 1993/8/3 version this function is also supported by some recent versions of the Phoenix 486 BIOS this function does not seem to be supported by some Toshiba BIOSes (at least before 1995, maybe some laptops??? with 1.44 MB floppies), because S/DOS 1.0 contains code to bypass a call to this function, always assuming the drive would not support media sense. SeeAlso: AH=15h (Table 00265) Values for Compaq/ATAPI diskette media type: 03h 720K (1M unformatted) 04h 1.44M (2M unformatted) 06h 2.88M (4M unformatted) 0Ch 360K 0Dh 1.2M 0Eh Toshiba 3mode 0Fh NEC 3mode (1024-byte sectors) 10h ATAPI Removable Media DeviceTop
INT 13 u - QUICKCACHE II v4.20 - DISMOUNT AH = 20h AL = drive (00h = A:, etc. or 7Fh for all removable drives??? or FFh for all drives) Return: AX = status (0000h successful) Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and Associates, Inc. Desc: flush any dirty buffers for the specified drive(s) and then discard those sector buffers SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28hTop
INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS AH = 21h AL = number of sectors to write CH = low byte of 12-bit cylinder number CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7) DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7) DL = drive number (80h,81h) ES:BX -> buffer for data to be read Return: CF clear if successful ES:BX buffer filled CF set on error AH = status (see #00234 at AH=01h) Desc: read from the disk using the Multiple Block mode available on newer IDE drives and some hard disk controllers, which generates an interrupt only after the end of transferring a group of sectors rather than after each sector Notes: must call AH=24h"PS/1" before using this function input values in CL and DH are not range-checked the byte at address 0040h:0074h is set to the status of the operation SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"Top
INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE AH = 21h Return: AX = status (0000h successful) Desc: immediately write all dirty sectors back to disk Note: this is one out of several cache flush calls issued by the PTS-DOS 6.51 and S/DOS 1.0 kernel before rebooting. It is called with DL=80h and conflicts with the PS/2 function of the same function number, because the kernel does not perform Quickcache's installation check first. SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2FhTop
INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS AH = 22h AL = number of sectors to write CH = low byte of 12-bit cylinder number CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7) DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7) DL = drive number (80h,81h) ES:BX -> buffer containing data to be written Return: CF clear if successful CF set on error AH = status (see #00234 at AH=01h) Desc: write to the disk using the Multiple Block mode available on newer IDE drives and some hard disk controllers, which generates an interrupt only after the end of transferring a group of sectors rather than after each sector Notes: must call AH=24h"PS/1" before using this function input values in CL and DH are not range-checked the byte at address 0040h:0074h is set to the status of the operation SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"Top
INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE AH = 22h AL = new state (00h disabled, 01h enabled) Return: AX = status (0000h successful) Note: enables/disables caching of all drives SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4hTop
INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER AH = 23h AL = feature number (see #00266) DL = drive number (80h,81h) ??? Return: CF clear if successful CF set on error AH = status (see #00234 at AH=01h) SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1" (Table 00266) Values for PS/1 hard disk feature number: 01h select 8-bit data transfers instead of 16-bit 02h enable write cache 22h Write Same, user-specified area 33h disable retries 44h set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh) 54h set cache segments 55h disable lookahead 66h disable reverting to power-on defaults 77h disable error correctioni 81h select 16-bit data transfers (default) 82h disable write cache 88h enable error correction (default) 99h enable retries (default) AAh enable lookahead BBh set ECC length for read long/write long to four bytes CCh enable reverting to power-on defaults DDh Write Same, entire disk SeeAlso: #P0535Top
INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS AH = 23h Return: AX = status (0000h successful) ES = segment of ??? dataTop
INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE AH = 24h AL = number of sectors per block (2,4,8,16) DL = drive number (80h,81h) Return: CF clear if successful CF set onerror AH = status (see #00234 at AH=01h) Desc: specify how many sectors the controller should transfer as a group between operation-complete interrupts when using the Read Multiple and Write Multiple functions (AH=21h,AH=22h) Notes: set the number of sectors to 0 to disable multiple-transfer mode the maximum value for the block size depends on the fixed disk drive type. The value is stored in byte 15h of the fixed disk drive parameter table that is created by POST. the byte at address 0040h:0074h is set to status of operation. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1"Top
INT 13 u - QUICKCACHE II v4.20 - SET SECTORS AH = 24h BX = new number of sector buffers in cache Return: AX = status 0000h successful 0001h failed--size adjusted 8000h cache cannot be resized while enabled SeeAlso: AH=36hTop
INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE AH = 25h DL = drive number (80h,81h) ES:BX-> 512 byte buffer for reply packet Return: CF clear if successful CF set on error AH = status (see #00234 at AH=01h) buffer filled with ATA/IDE-style drive information block (see #00267) Desc: retrieves the 256 words of drive data stored on an IDE hard disk Notes: the byte at address 0040h:0074h is set to the status of the operation IBM officially classifies this function as optional SeeAlso: AH=23h"PS/1" Format of drive information block: Offset Size Description (Table 00267) 00h WORD general drive configuration (see #00268) 02h WORD number of cylinders 04h WORD reserved 06h WORD number of heads 08h WORD number of unformatted bytes per track 0Ah WORD number of unformatted bytes per sector 0Ch WORD number of sectors per track 0Eh 6 BYTEs vendor unique 14h 20 BYTEs serial number in ASCII, 0000h=not specified) 28h WORD buffer type 2Ah WORD buffer size in 512 byte increments (0000h=not specified) 2Ch WORD number of ECC bytes passed on Read/Write Long cmds 0000h = not specified 2Eh 8 BYTEs firmware revision in ASCII, 0000h=not specified 36h 40 BYTEs model number in ASCII, 0000h=not specified 5Eh WORD bits 15-8 Vendor Unique bits 7-0 00h = Read/Write Multiple commands not implemented xxh = Maximum number of sectors that can be transferred per interrupt on Read and Write Multiple commands 60h WORD 0000h = cannot perform doubleword I/O 0001h = can perform doubleword I/O 62h WORD capabilities bit 15-9 0=reserved bit 8 1=DMA Supported bit 7-0 Vendor Unique 64h WORD reserved 66h WORD bits 15-8 PIO data transfer cycle timing mode bits 7-0 Vendor Unique 68h WORD bits 15-8 DMA data transfer cycle timing mode bits 7-0 Vendor Unique 6Ah WORD bits 15-1 reserved bit 0 1=the fields reported in tranlation mode are valid 0=the fields reported in translation mode may be valid 6Ch WORD number of current cylinders 6Eh WORD number of current heads 70h WORD number of current sectors per track 72h DWORD current capacity in sectors 76h WORD reserved 78h 136 BYTEs not defined by ATA spec 2.6 100h 64 BYTEs vendor unique 140h 96 BYTEs reserved Note: the above description is as in the ATA (AT Attachment) Specification. SeeAlso: #P0516 Bitfields for general drive configuration: Bit(s) Description (Table 00268) 15 0 reserved for non-magnetic drives 14 format speed tolerance gap required 13 track offset option available 12 data strobe offset option available 11 rotational speed tolerance is > 0.5% 10 disk transfer rate > 10 Mbs 9 disk transfer rate > 5Mbs but <= 10Mbs 8 disk transfer rate <= 5Mbs 7 removable cartridge drive 6 fixed drive 5 spindle motor control option implemented 4 head switch time > 15 usec 3 not MFM encoded 2 soft sectored 1 hard sectored 0 reserved (0)Top
INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL AH = 25h BX = interval Return: AX = status (0000h successful) Desc: specify how often the cache should write dirty buffers to disk when buffered writes are enabled SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2EhTop
INT 13 U - QUICKCACHE II v4.20 - UNINSTALL AH = 26h Return: AX = status 0000h successful 0001h-00FFh interrupt vector which was hooked by another TSR SeeAlso: AH=27hTop
INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK AH = 27h BX = 0000h Return: AX = 0000h if installed BX nonzero if installed BH = major version BL = binary minor version Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and Associates, Inc. SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111hTop
INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT AH = 28h AL = new state (00h disabled, 01h enabled) Return: AX = status (0000h successful) SeeAlso: AH=20h"QUICKCACHE"Top
INT 13 U - QUICKCACHE II v4.20 - NOP AH = 29h Return: AX = 0000hTop
INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE AH = 2Ah AL = buffer size (1-30) Return: AX = status (0000h successful) Desc: specify the number of cache sector buffers to dedicate to buffered read and write operations SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3AhTop
INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS AH = 2Bh AL = new state (00h disabled, 01h enabled) Return: AX = status (0000h successful)Top
INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES AH = 2Ch AL = new state (00h disabled, 01h enabled) Return: AX = status (0000h successful) Desc: specify whether the cache should delay disk writes Note: this function enables or disables delayed writes for all drives; use AH=38h to change a single drive SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38hTop
INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ AH = 2Dh AL = new state (00h disabled, 01h enabled) Return: AX = status (0000h successful) Desc: specify whether the cache should attempt to read ahead of actual requests Note: this function enables or disables read-ahead for all drives; use AH=37h to change a single drive SeeAlso: AH=2Ch,AH=37hTop
INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT AH = 2Eh BX = flush count Return: AX = status (0000h successful) Desc: specify how many dirty sectors the cache should write after each flush interval (see AH=25h"QUICKCACHE") when buffered writes are enabled SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2ChTop
INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH AH = 2Fh Return: AX = status (0000h successful) Desc: immediately flush up to "flushcount" dirty sectors to disk as if the flush interval had expired SeeAlso: AH=21h"QUICKCACHE"Top
INT 13 u - QUICKCACHE II v4.20 - GET INFO AH = 30h AL = what to get 00h system info (see #00269) 01h drive info (see #00270) 02h access frequency (array of 30 words) 03h drive index (array of 32 bytes indicating BIOS drive for DOS drive) DS:DX -> buffer for info Return: AX = status (0000h successful, 8000h invalid info specifier) Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and Associates, Inc. Format of QUICKCACHE II system info: Offset Size Description (Table 00269) 00h BYTE flag: cache enabled 01h BYTE flag: buffered writes enabled 02h BYTE flag: buffered reads enabled 03h BYTE flag: sounds enabled 04h BYTE flag: autodismount enabled 05h BYTE ??? 06h BYTE flag: ??? 07h BYTE flag: ??? 08h BYTE flag: "em_assigned" 09h BYTE flag: emulated EMS 0Ah BYTE single sector bonus 0Bh BYTE "sticky_max" 0Ch BYTE write sector bonus 0Dh BYTE bonus threshold 0Eh WORD flush interval 10h WORD flush count 12h WORD reserve pool size 14h WORD remaining space in reserve pool 16h WORD required free memory 18h WORD total cache sectors 1Ah WORD dirty cache sectors 1Ch BYTE trace buffer size 1Dh BYTE reserved (padding) SeeAlso: #00270 Format of QUICKCACHE II drive info [16-element array, one element]: Offset Size Description (Table 00270) 00h BYTE DOS drive number 01h BYTE BIOS drive number 02h BYTE maximum sector number 03h BYTE maximum head number 04h BYTE read buffer size 05h BYTE write buffer size 06h BYTE last status 07h BYTE flag: enabled 08h BYTE flag: buffered write enabled 09h BYTE flag: buffered read enabled 0Ah BYTE flag: in use (drive info is valid) 0Bh BYTE flag: cylinder flush 0Ch BYTE reserved (padding) 0Dh BYTE sectors per track 0Eh WORD sector size 10h WORD sectors assigned 12h WORD dirty sectors 14h WORD reserved sectors 16h WORD number of read errors 18h WORD number of write errors 1Ah DWORD "rio_count" 1Eh DWORD number of cache misses 22h DWORD "wio_count" 26h DWORD "dio_count" SeeAlso: #00269Top
INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY AH = 31h BX = number of paragraphs of conventional memory to reserve for apps Return: AX = status (0000h successful)Top
INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE AH = 32h AL = drive number (00h=A:) Return: AX = status (0000h successful) SeeAlso: AH=22h"QUICKCACHE",AH=33hTop
INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE AH = 33h AL = drive number (00h=A:) Return: AX = status (0000h successful) SeeAlso: AH=22h"QUICKCACHE",AH=32hTop
INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING AH = 34h AL = function 00h end sector locking/unlocking 01h lock all accessed sectors into cache 02h unlock all accessed sectors and discard from cache Return: AX = status (0000h successful) SeeAlso: AH=20h"QUICKCACHE",AH=35hTop
INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE AH = 35h BX = number of sectors in lock pool Return: AX = status (0000h successful) Desc: specify the number of cache sector buffers which may be dedicated to data locked into the cache SeeAlso: AH=34hTop
INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE AH = 36h AL = new size of trace buffer Return: AX = status (0000h successful) Note: called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call SeeAlso: AH=24h"QUICKCACHE"Top
INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE AH = 37h AL = new state (00h disabled, else enabled) DL = drive number (00h = A:) Return: AX = status (0000h successful) SeeAlso: AH=2Dh,AH=38hTop
INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE AH = 38h AL = new state (00h disabled, else enabled) DL = drive number (00h = A:) Return: AX = status (0000h successful) SeeAlso: AH=2Ch,AH=37hTop
INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE AH = 39h AL = new size of read buffer DL = drive number (00h = A:) Return: AX = status (0000h successful) Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and Associates, Inc. SeeAlso: AH=2Ah,AH=3AhTop
INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE AH = 3Ah AL = new size of write buffer DL = drive number (00h = A:) Return: AX = status (0000h successful) SeeAlso: AH=2Ah,AH=39hTop
INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ??? AH = 3Bh AL = new state of ??? (01h enabled, else disabled) Return: AX = status (0000h successful) Note: is affected by the flag reported at offset 05h of the system info returned by AH=30h, and sets the flag at offset 06h SeeAlso: AH=3ChTop
INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ??? AH = 3Ch AL = new state of ??? (01h enabled, else disabled) Return: AX = status (0000h successful) Note: is affected by the flag reported at offset 05h of the system info returned by AH=30h, and sets the flag at offset 07h SeeAlso: AH=3BhTop
INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE AH = 3Dh AL = new state (01h enabled, else disabled) DL = drive number (00h = A:) Return: AX = status (0000h successful)Top
INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS AH = 3Eh AL = new value for bonus Return: AX = status (0000h successful) Desc: specify the bonus score to give to single-sector transfers in order to keep those sectors in the cache longerTop
INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD AH = 3Fh AL = new value for bonus threshold Return: AX = status (0000h successful)Top
INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max" AH = 40h AL = new value for "sticky_max" Return: AX = status (0000h successful) SeeAlso: AH=41h"QUICKCACHE"Top
INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK AH = 41h BX = 55AAh DL = drive (80h-FFh) Return: CF set on error (extensions not supported) AH = 01h (invalid function) CF clear if successful BX = AA55h if installed AH = major version of extensions 01h = 1.x 20h = 2.0 / EDD-1.0 21h = 2.1 / EDD-1.1 30h = EDD-3.0 AL = internal use CX = API subset support bitmap (see #00271) DH = extension version (v2.0+ ??? -- not present in 1.x) Note: the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of the INT 13 Extensions API SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext" Bitfields for IBM/MS INT 13 Extensions API support bitmap: Bit(s) Description (Table 00271) 0 extended disk access functions (AH=42h-44h,47h,48h) supported 1 removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h) supported 2 enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported extended drive parameter table is valid (see #00273,#00278) 3-15 reserved (0)Top
INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ??? AH = 41h AL = direction 01h save to file else restore from file ES:DI -> 1024-byte buffer for ??? Return: AX = status (0000h successful, 8000h failed) Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and Associates, Inc. SeeAlso: AH=40h"QUICKCACHE"Top
INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ AH = 42h DL = drive number DS:SI -> disk address packet (see #00272) Return: CF clear if successful AH = 00h CF set on error AH = error code (see #00234) disk address packet's block count field set to number of blocks successfully transferred SeeAlso: AH=02h,AH=41h"INT 13 Ext",AH=43h"INT 13 Ext" Format of disk address packet: Offset Size Description (Table 00272) 00h BYTE size of packet (10h or 18h) 01h BYTE reserved (0) 02h WORD number of blocks to transfer (max 007Fh for Phoenix EDD) 04h DWORD -> transfer buffer 08h QWORD starting absolute block number (for non-LBA devices, compute as (Cylinder*NumHeads + SelectedHead) * SectorPerTrack + SelectedSector - 1 10h QWORD (EDD-3.0, optional) 64-bit flat address of transfer buffer; used if DWORD at 04h is FFFFh:FFFFhTop
INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK AX = 4257h ("BW") DX = 1234h Return: BX = 414Ch if installed Program: BWLPD is the printer daemon from the BW-NFS package SeeAlso: INT 62/AH=00h"ETHDEV"Top
INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE AH = 43h AL = write flags ---v1.0,2.0--- bit 0: verify write bits 7-1 reserved (0) ---v2.1+ --- 00h,01h write without verify 02h write with verify DL = drive number DS:SI -> disk address packet (see #00272) Return: CF clear if successful AH = 00h CF set on error AH = error code (see #00234) disk address packet's block count field set to number of blocks successfully transferred Note: the BIOS returns CF set/AH=01h (invalid function) if verify is requested but not supported SeeAlso: AH=03h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44hTop
INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS AH = 44h DL = drive number DS:SI -> disk address packet (see #00272) Return: CF clear if successful AH = 00h CF set on error AH = error code (see #00234) disk address packet's block count field set to number of blocks successfully verified SeeAlso: AH=04h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47hTop
INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE AH = 45h AL = operation 00h lock media in drive 01h unlock media 02h check lock status DL = drive number Return: CF clear if successful AH = 00h AL = lock state (00h = unlocked) CF set on error AH = error code (see #00234) Notes: this function is required to be supported for any removable drives numbered 80h or higher a device may be locked even if no media is present in the drive up to 255 locks may be placed on a drive, and the media will not be physically unlocked until all locks have been removed SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions"Top
INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA AH = 46h AL = 00h (reserved) DL = drive number Return: CF clear if successful AH = 00h CF set on error AH = error code (see #00234) SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions"Top
INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK AH = 47h DL = drive number DS:SI -> disk address packet (see #00272) Return: CF clear if successful AH = 00h CF set on error AH = error code (see #00234) Note: this function initiates the seek, and may return before the seek actually completes SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"Top
INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS AH = 48h DL = drive (80h-FFh) DS:SI -> buffer for drive parameters (see #00273) Return: CF clear if successful AH = 00h DS:SI buffer filled CF set on error AH = error code (see #00234) BUGS: several different Compaq BIOSes incorrectly report high-numbered drives (such as 90h, B0h, D0h, and F0h) as present, giving them the same geometry as drive 80h; as a workaround, scan through disk numbers, stopping as soon as the number of valid drives encountered equals the value in 0040h:0075h Dell machines using PhoenixBIOS 4.0 Release 6.0 fail to correctly handle this function if the flag word at DS:[SI+2] is not 0000h on entry SeeAlso: AH=08h,AH=41h,AH=49h,MEM 0040h:0075h Format of IBM/MS INT 13 Extensions drive parameters: Offset Size Description (Table 00273) 00h WORD (call) size of buffer (001Ah for v1.x, 001Eh for v2.x, 42h for v3.0) (ret) size of returned data 02h WORD information flags (see #00274) 04h DWORD number of physical cylinders on drive 08h DWORD number of physical heads on drive 0Ch DWORD number of physical sectors per track 10h QWORD total number of sectors on drive 18h WORD bytes per sector ---v2.0+ --- 1Ah DWORD -> EDD configuration parameters (see #00278) FFFFh:FFFFh if not available ---v3.0 --- 1Eh WORD signature BEDDh to indicate presence of Device Path info 20h BYTE length of Device Path information, including signature and this byte (24h for v3.0) 21h 3 BYTEs reserved (0) 24h 4 BYTEs ASCIZ name of host bus ("ISA" or "PCI") 28h 8 BYTEs ASCIZ name of interface type "ATA" "ATAPI" "SCSI" "USB" "1394" IEEE 1394 (FireWire) "FIBRE" Fibre Channel 30h 8 BYTEs Interface Path (see #00275) 38h 8 BYTEs Device Path (see #00276) 40h BYTE reserved (0) 41h BYTE checksum of bytes 1Eh-40h (two's complement of sum, which makes the 8-bit sum of bytes 1Eh-41h equal 00h) Note: if the size is less than 30 on call, the final DWORD will not be returned by a v2.x implementation; similarly for the Device Path info SeeAlso: #00277,#03196 Bitfields for IBM/MS INT 13 Extensions information flags: Bit(s) Description (Table 00274) 0 DMA boundary errors handled transparently 1 cylinder/head/sectors-per-track information is valid 2 removable drive 3 write with verify supported 4 drive has change-line support (required if drive >= 80h is removable) 5 drive can be locked (required if drive >= 80h is removable) 6 CHS information set to maximum supported values, not current media 15-7 reserved (0) Note: bits 4-6 are only valid if bit 2 is set SeeAlso: #00273 Format of EDD v3.0 Interface Path: Offset Size Description (Table 00275) ---ISA--- 00h WORD 16-bit base address 02h 6 BYTEs reserved (0) ---PCI--- 00h BYTE PCI bus number 01h BYTE PCI device number 02h BYTE PCI function number 03h 5 BYTEs reserved (0) SeeAlso: #00273,#00276 Format of EDD v3.0 Device Path: Offset Size Description (Table 00276) ---ATA--- 00h BYTE flag: 00h = master, 01h = slave 01h 7 BYTEs reserved (0) ---ATAPI--- 00h BYTE flag: 00h = master, 01h = slave 01h BYTE logical unit number 02h 6 BYTEs reserved (0) ---SCSI--- 00h BYTE logical unit number 01h 7 BYTEs reserved (0) ---USB--- 00h BYTE to be determined 01h 7 BYTEs reserved (0) ---IEEE1394--- 00h QWORD 64-bit FireWire General Unique Identifier (GUID) ---FibreChannel--- 00h QWORD Word Wide Number (WWN) SeeAlso: #00273,#00275 Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table: Offset Size Description (Table 00277) 00h WORD number of cylinders 02h BYTE number of heads 03h BYTE A0h (signature indicating translated table) 04h BYTE number of physical sectors per track 05h WORD starting write precompensation cylinder number 07h BYTE reserved 08h BYTE control byte (see #03198 at INT 41"DISK 0") 09h WORD number of physical cylinders 0Bh BYTE number of physical heads 0Ch WORD cylinder number of landing zone 0Eh BYTE number of logical sectors per track 0Fh BYTE checksum Program: the Phoenix Enhanced Disk Drive Specification is an addition to the IBM/MS INT 13 extensions SeeAlso: #00278,#03196 Format of Phoenix Enhanced Disk Drive Spec Fixed Disk Parameter Table: Offset Size Description (Table 00278) 00h WORD physical I/O port base address 02h WORD disk-drive control port address 04h BYTE drive flags (see #00279) 05h BYTE proprietary information bits 7-4 reserved (0) bits 3-0: Phoenix proprietary (used by BIOS) 06h BYTE IRQ for drive (bits 3-0; bits 7-4 reserved and must be 0) 07h BYTE sector count for multi-sector transfers 08h BYTE DMA control bits 7-4: DMA type (0-2) as per ATA-2 specification bits 3-0: DMA channel 09h BYTE programmed I/O control bits 7-4: reserved (0) bits 3-0: PIO type (1-4) as per ATA-2 specification 0Ah WORD drive options (see #00280) 0Ch 2 BYTEs reserved (0) 0Eh BYTE extension revision level (high nybble=major, low nybble=minor) (currently 10h for v1.0 and 11h for v1.1-3.0) 0Fh BYTE 2's complement checksum of bytes 00h-0Eh 8-bit sum of all bytes 00h-0Fh should equal 00h Note: this structure is also called the Device Paramter Table Extension (DPTE) SeeAlso: #00277 Bitfields for Phoenix Enhanced Disk Drive Spec drive flags: Bit(s) Description (Table 00279) 7 reserved (1) 6 LBA enabled 5 reserved (1) 4 drive is slave 3-0 reserved (0) SeeAlso: #00278,#00280 Bitfields for Phoenix Enhanced Disk Drive Spec drive options: Bit(s) Description (Table 00280) 0 fast PIO enabled 1 fast DMA access enabled 2 block PIO (multi-sector transfers) enabled 3 CHS translation enabled 4 LBA translation enabled 5 removable media 6 ATAPI device (CD-ROM) 7 32-bit transfer mode ---v1.1+ --- 8 ATAPI device uses DRQ to signal readiness for packet command (must be 0 if bit 6 is 0) 10-9 translation type (must be 00 if bit 3 is 0) 00 Phoenix bit-shifting translation 01 LBA-assisted translation 10 reserved 11 proprietary translation ---v3.0--- 11 Ultra DMA access enabled 15-12 reserved (0) SeeAlso: #00278,#00279Top
INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE AH = 49h DL = drive number Return: CF clear if media has not changed AH = 00h CF set if media may have changed AH = 06h (see #00234) Note: unlike AH=16h, any drive number may be specified SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46hTop
INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AH = 4Ah AL = 00h DS:SI -> specification packet (see #00281) Return: CF clear if successful CF set on error (drive will not be in emulation mode) AX = return codes SeeAlso: AH=48h,AX=4B00h,AH=4Ch,AH=4Dh Format of Bootable CD-ROM Specification Packet: Offset Size Description (Table 00281) 00h BYTE size of packet in bytes (13h) 01h BYTE boot media type (see #00282) 02h BYTE drive number 00h floppy image 80h bootable hard disk 81h-FFh nonbootable or no emulation 03h BYTE CD-ROM controller number 04h DWORD Logical Block Address of disk image to emulate 08h WORD device specification (see also #00282) (IDE) bit 0: drive is slave instead of master (SCSI) bits 7-0: LUN and PUN bits 15-8: bus number 0Ah WORD segment of 3K buffer for caching CD-ROM reads 0Ch WORD load segment for initial boot image if 0000h, load at segment 07C0h 0Eh WORD number of 512-byte virtual sectors to load (only valid for AH=4Ch) 10h BYTE low byte of cylinder count (for INT 13/AH=08h) 11h BYTE sector count, high bits of cylinder count (for INT 13/AH=08h) 12h BYTE head count (for INT 13/AH=08h) SeeAlso: #00283,AH=08h Bitfields for Bootable CD-ROM boot media type: Bit(s) Description (Table 00282) 3-0 media type 0000 no emulation 0001 1.2M diskette 0010 1.44M diskette 0011 2.88M diskette 0100 hard disk (drive C:) other reserved 5-4 reserved (0) 6 image contains ATAPI driver 7 image contains SCSI driver(s) SeeAlso: #00281Top
INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION AX = 4B00h DL = drive number or 7Fh to terminate all emulations DS:SI -> empty specification packet (see #00281) Return: CF clear if successful CF set on error (drive will still be in emulation mode) AX = return codes DS:SI specification packet filled SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4DhTop
INT 13 - Bootable CD-ROM - GET STATUS AX = 4B01h DL = drive number DS:SI -> empty specification packet (see #00281) Return: CF clear if successful CF set on error AX = return codes DS:SI specification packet filled Note: same as AX=4B00h, but does not terminate emulation SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4DhTop
INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT AH = 4Ch AL = 00h DS:SI -> specification packet (see #00281) Return: never, if successful CF set (error while attempting to boot) AX = error codes SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4DhTop
INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG AX = 4D00h DS:SI -> command packet (see #00283) Return: CF clear if successful CF set on error AX = return codes SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch Format of Bootable CD-ROM "get boot catalog" command packet: Offset Size Description (Table 00283) 00h BYTE size of packet in bytes (08h) 01h BYTE number of sectors of boot catalog to read 02h DWORD -> buffer for boot catalog 06h WORD first sector in boot catalog to transfer SeeAlso: #00281Top
INT 13 - IBM/MS INT 13 Extensions v2.1+ - SET HARDWARE CONFIGURATION AH = 4Eh AL = function 00h enable prefetch 01h disable prefetch 02h set maximum PIO transfer mode 03h set PIO mode 0 04h set default PIO transfer mode 05h enable INT 13h DMA maximum mode 06h disable INT 13h DMA DL = drive number Return: CF clear if successful AH = 00h AL = status 00h command was safe (only affected specified drive) 01h other devices are affected CF set on error AH = error code (see #00234) Note: DMA and PIO modes are mutually exclusive, so selecting DMA disables PIO (for either the specified device or all devices on that controller), and selecting PIO disables DMA SeeAlso: AH=41h"INT 13 Extensions",AX=5001h"Enhanced Disk Drive"Top
INT 13 - Enhanced Disk Drive Spec v3.0 - SEND PACKET COMMAND AX = 5001h DL = drive number ES:BX -> command packet (see #00284) Return: CF clear if successful AH = 00h CF set on error AH = error code Desc: send data to and from a serial packet-oriented device, such as IEEE1394 and USB SeeAlso: AH=41h"INT 13 Extensions",AH=4Eh Format of Enhanced Disk Drive Spec v3.0 command packet: Offset Size Description (Table 00284) 00h WORD signature B055h 02h BYTE length of packet in bytes 03h BYTE reserved (0) 04h N BYTEs formatted packet dataTop
INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK AX = 5001h Return: AX = 0150h if resident SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56hTop
INT 13 - ScanBoot - INSTALLATION CHECK AX = 5342h ("SB") CX = 0001h DX = 0000h Return: CF clear if ScanBoot installed AX = 0000h CX = serial number ("SW" if shareware release) DX = version BX,SI,ES destroyed Program: ScanBoot is a virus-detection TSR by PanSoftTop
INT 13 - Seagate ST01/ST02 - Inquiry AX = 5501h DH = number of bytes to transfer DL = drive ID (80h, 81h, ...) ES:BX -> buffer for results Return: ES:BX buffer filled with the Inquiry results Notes: the ST01/ST02 BIOS does not return any success/failure indication, so all commands must be assumed to have been successful the ST01/ST02 BIOS always maps its drives after the previous BIOS drives without changing the BIOS drive count at 0040h:0075h this command is identical to the SCSI Inquiry commandTop
INT 13 - Seagate ST01/ST02 - RESERVED AX = 5502hTop
INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ) AX = 5503h DH = DTQ byte (see #00285) DL = drive ID (80h, 81h, ...) Return: nothing Bitfields for DTQ byte: Bit(s) Description (Table 00285) 7 reserved 6 SCSI drive attached 5 reserved 4 selected drive is ST225N/NP (Paired) 3 selected drive is ST225N 2 Host Adapter checks parity on the selected drive 1 selected drive has been installed 0 Seagate installation software presentTop
INT 13 U - Seagate - ??? - RETURN IDENTIFICATION AX = 5504h DX = drive (bit 7 set for hard disk) Return: CF clear if successful AX = 4321h if ST01/ST02h AX = 4322h if ??? Seagate controller CF set on error SeeAlso: AX=5505h,AX=5514hTop
INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION AX = 5504h DL = drive ID (80h, 81h, ...) Return: AX = 4321h BL = selected drive number (00h, 01h) BH = number of drives attached to Host Adapter (max. 2)Top
INT 13 - Seagate - ??? - PARK HEADS AX = 5505h DX = drive (bit 7 set for hard disk) Return: CF clear if successful CF set on error SeeAlso: AX=5504h,AX=5515hTop
INT 13 - Seagate ST01/ST02 - PARK HEADS AX = 5505h DL = drive ID (80h, 81h, ...) DH = subfunction 00h park heads (SCSI Stop command) 01h un-park heads (SCSI Start command) Return: nothingTop
INT 13 - Seagate ST01/ST02 - SCSI Bus Parity AX = 5506h DL = drive ID (80h, 81h, ...) DH = subfunction 00h disable parity check 01h enable parity check 02h return current parity setting Return: AL = status 00h parity checking disabled 01h parity checking enabledTop
INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS AX = 5507h to 550Dh Note: officially listed as "reserved"Top
INT 13 U - Seagate - ??? AX = 5514h DX = drive (bit 7 set for hard disk) Return: CF clear if successful CF set on error AX = return value (FEBEh,FEBFh,FEDAh,FEDBh) SeeAlso: AX=5504h,AX=5515hTop
INT 13 U - Seagate - PARK HEADS??? AX = 5515h DX = drive (bit 7 set for hard disk) Return: CF clear if successful CF set on error Note: appears to be identical to AX=5505h SeeAlso: AX=5504h,AX=5505hTop
INT 13 - SyQuest - Generic SCSI pass through AH = 59h CX = HOST_ID, 0-based DX = 80h ES:BX pointer to SCSI structure (see #00286) Return: CF clear AH = 95h SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest" Format of SyQuest SCSI structure: Offset Size Description (Table 00286) 00h WORD opcode (see #00287) 02h BYTE target's SCSI ID 03h BYTE target's logical unit number 04h BYTE data direction (00h no data xfer, 01h data in, FFh data out) 05h BYTE host status 00h successful 01h selection time out 02h data over-run or under-run 06h BYTE target status at command completion 00h successful 02h check status 08h busy 07h BYTE command data block length 08h DWORD request data length 0Ch DWORD result data length (actual length of data transferred) 10h DWORD -> CDB (see #03236,#03237,#03238) 14h DWORD -> data buffer Note: The handler does not perform a 'Request Sense' command if there was an error (Table 00287) Values for SCSI opcode: 00h verify interface clears carry flag and returns if function is available 01h returns the ID of the INT 13h Handler in a NULL terminated string of length less than 40 byte including the terminator. The string is stored in the buffer pointed by p_buf. 02h device mapping info. The caller provides a one byte buffer. The handler stores the Int 13h Device ID (80h or above) in the buffer. It stores 0 if that target does not exists. 03h execute SCSI command 04h device reset 05h SCSI bus reset SeeAlso: #00286Top
INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE??? AH = 70h ??? Return: ??? Note: Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level formatting program) make this call, presumably to EDVR.SYS (the partitioning driver) SeeAlso: AH=ADhTop
INT 13 - ??? AH = 75h ??? Return: AH = ??? ??? Note: intercepted by PC-Cache (v5.1 only)Top
INT 13 - ??? AH = 76h ??? Return: AH = ??? ??? Note: intercepted by PC-Cache (v5.1 only)Top
INT 13 - NOW! v3.05 - GET INFORMATION AX = 7B00h CX:DX -> 1F8h-byte buffer for information record (see #00288) Return: AX = 0000h BX = segment of main resident code ES = ??? Program: NOW! is a disk cache by Vertisoft Systems, Inc. SeeAlso: AX=7B02h,AH=EFh Format of NOW! information record: Offset Size Description (Table 00288) 00h 80 BYTEs name of directory from which NOW! was started 50h 424 BYTEs ??? 81h ? BYTEs array of bytes for ??? F7h 250 BYTEs array of 25 entries, one per drive??? Offset Size Description 00h 2 BYTEs ??? 02h WORD ??? 04h WORD ??? 06h 4 BYTEs ??? 1F1h 7 BYTEs ???Top
INT 13 - NOW! v3.05 - ??? AX = 7B01h Return: DX = segment of ??? SeeAlso: AX=7B00hTop
INT 13 - NOW! v3.05 - SET INFORMATION AX = 7B02h BX = segment of ??? (10h above a PSP) CX:DX -> 1F8h-byte information record (see #00288) Return: ??? Program: NOW! is a disk cache by Vertisoft Systems, Inc. Note: NOW! grabs the INT 24h value from the PSP reached via the segment in BX SeeAlso: AX=7B00hTop
INT 13 - NOW! v3.05 - ??? AX = 7B03h ??? Return: ??? SeeAlso: AX=7B00h,AX=7B04hTop
INT 13 - NOW! v3.05 - ??? AX = 7B04h ??? Return: ??? SeeAlso: AX=7B03hTop
INT 13 - NOW! v3.05 - GET DISK ACCESSES??? AX = 7B05h Return: BX:AX = number of physical accesses??? DX:CX = total disk accesses??? SeeAlso: AX=7B00h,AX=7B06hTop
INT 13 - NOW! v3.05 - GET ??? AX = 7B06h BX = ??? Return: AX = 0000h BX = ??? SeeAlso: AX=7B05h,AX=7B07hTop
INT 13 - NOW! v3.05 - GET ??? AX = 7B07h Return: AX = ??? BX = ??? CX = ??? DX = ??? SeeAlso: AX=7B06hTop
INT 13 - NOW! v3.05 - ??? AX = 7B08h CX = ??? (default 00h) Return: ??? SeeAlso: AX=7B00hTop
INT 13 - FAST! v4.02+ - API AH = 80h CX = 6572h DX = 1970h ES:BX -> request packet (see #00290) AL = function number (see #00289) Return: AH = status (except function 06h) 00h if successful 01h invalid function 05h not supported by the installed variant CF clear if successful CF set on error AL may be destroyed Program: FAST! is a disk cache by Future Computing Systems and marketed by BLOC Publishing Corp. SeeAlso: AX=8001h,AX=8006h,AX=8007h Index: hotkeys;FAST! (Table 00289) Values for FAST! function: 01h get cache information (see AX=8001h) 04h disable cache 05h enable cache and reset statistics 06h installation check (see AX=8006h) 07h unhook interrupts (see AX=8007h) 09h flush cache 0Ah (v4.02+) enable staged writes 0Bh (v4.02+) disable staged writes 0Ch (v4.02+) enable beep on flush 0Dh (v4.02+) disable beep on flush 0Eh ??? 0Fh ??? 10h (v4.12+) enable hotkeys 11h (v4.12+) disable hotkeys 12h (v4.13+) set idle delay 13h (v4.13+) set flush dirty percentage 14h (v5.00+) enable mouse checks 15h (v5.00+) disable mouse checks 16h (v5.00d+) reduce cache size to minimum 17h (v5.00d+) increase cache size to maximum Format of FAST! request packet: Offset Size Description (Table 00290) 00h DWORD pointer to 19-byte signature string (see #00291) 04h DWORD pointer to buffer for data (if needed by function) (Table 00291) Values for FAST! v4.04-v5.03 signature string: 13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15hTop
INT 13 - FAST! v4.02+ - GET CACHE INFORMATION AX = 8001h CX = 6572h DX = 1970h ES:BX -> request packet (see #00292) Return: AH = 00h if successful SeeAlso: AH=80h,AX=8006h Format of FAST! request packet: Offset Size Description (Table 00292) 00h DWORD -> 19-byte signature string (see #00291) 04h DWORD -> buffer for cache information (see #00293) Format of FAST! cache information (v5.00-5.03): Offset Size Description (Table 00293) 00h WORD binary version number of FAST! (v5.00 = 01F4h) 02h BYTE revision letter (61h = X.XXa, 62h = X.XXb, etc.) 03h BYTE FAST! variant (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS) 04h DWORD total number of read requests 08h DWORD number of physical disk reads 0Ch DWORD grabbed hash buckets 10h DWORD "st_386mem" 14h DWORD total number of writes (only counted when staging enabled) 18h DWORD number of physical disk writes (only when staging enabled) 1Ch DWORD number of write errors while flushing cache 20h WORD flags1 (see #00294) 22h WORD flags bit 0: ??? bit 1: staged writes enabled 24h WORD ??? 26h WORD maximum cache size in KB 28h WORD minimum cache size in KB 2Ah WORD segment of first cache buffer (FASTC) segment of EMS page frame (FASTE) XMS handle (FASTX XMS) 2Ch WORD number of hash buckets containing no entries 2Eh WORD number of hash buckets containing one entry 30h WORD number of hash buckets containing two entries 32h WORD number of hash buckets containing three entries 34h WORD number of hash buckets containing four entries 36h WORD number of hash buckets containing five entries 38h WORD maximum contiguous sectors 3Ah WORD hash factor 3Ch WORD number of paragraphs of memory used below 1M 3Eh WORD entries per hash bucket 40h WORD idle delay in seconds 42h 2 BYTEs ??? 44h WORD staged write threshold percentage 46h 2 BYTEs ??? 48h WORD number of dirty sectors 4Ah WORD number of staged write buffers 4Ch WORD current cache size in KB 4Eh WORD beep frequency in Hz 50h WORD ??? 52h WORD ??? Bitfields for FAST! flags1: Bit(s) Description (Table 00294) 0 beep on flush 3 hotkeys enabled 4 mouse idle check enabled 8 caching enabled 13 ???Top
INT 13 - FAST! v4.02+ - INSTALLATION CHECK AX = 8006h CX = 6572h DX = 1970h ES:BX -> request packet (see #00295) Return: AX = 1965h if installed SeeAlso: AH=80h,AX=8001h,AX=8007h Format of FAST! request packet: Offset Size Description (Table 00295) 00h DWORD -> 19-byte signature string (see #00291)Top
INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS AX = 8007h CX = 6572h DX = 1970h ES:BX -> request packet (see #00296) Return: AX = 1965h if installed SeeAlso: AH=80h,AX=8006h Index: uninstall;FAST! Format of FAST! request packet: Offset Size Description (Table 00296) 00h DWORD -> 19-byte signature string (see #00291)Top
INT 13 - Super PC-Kwik v3.20+ - ??? AH = 81h SI = 4358h ??? Return: ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27) returns immediately in PC-Cache v5.x Index: PC-Cache|Qualitas QcacheTop
INT 13 - Super PC-Kwik v3.20+ - ??? AH = 82h SI = 4358h ??? Return: AL = ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of Super PC-Kwik, and thus support this call SeeAlso: AH=84h Index: PC-Cache|Qualitas QcacheTop
INT 13 - Super PC-Kwik v3.20+ - ??? AH = 83h SI = 4358h AL = ??? ES:BX -> ??? ??? Return: ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of Super PC-Kwik, and thus support this call SeeAlso: AH=85h Index: PC-Cache|Qualitas QcacheTop
INT 13 - Super PC-Kwik v3.20+ - ??? AH = 84h SI = 4358h AL = ??? ??? Return: AL = ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of Super PC-Kwik, and thus support this call SeeAlso: AH=82h Index: PC-Cache|Qualitas QcacheTop
INT 13 - Super PC-Kwik v3.20+ - ??? AH = 85h SI = 4358h AL = ??? DL = ??? ??? Return: ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds to PC-Kwik v3.20) SeeAlso: AH=83h Index: PC-Cache|Qualitas QcacheTop
INT 13 - Super PC-Kwik v4.00+ - ??? AH = 86h SI = 4358h ??? Return: ??? Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and thus supports this call Index: Qualitas QcacheTop
INT 13 - Super PC-Kwik v4.00+ - ??? AH = 87h SI = 4358h ??? Return: AH = status??? (00h) CX = ??? DX = ??? (0000h) Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and thus supports this call Index: Qualitas QcacheTop
INT 13 - Super PC-Kwik v4.00+ - ??? AH = 88h SI = 4358h ??? Return: AH = status??? (00h) CX = ??? DX = ??? (0000h) Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and thus supports this call Index: Qualitas QcacheTop
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 89h SI = 4358h ??? Return: ???Top
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 8Ah SI = 4358h ??? Return: ???Top
INT 13 - HyperDisk v4.01+ - ??? AX = 8EEDh ??? Return: ??? Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross) SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AX=DF00hTop
INT 13 - HyperDisk v4.01+ - ??? AX = 8EEEh Return: CF set AX = CS of HyperDisk resident code ??? Note: identical to AX=8EEFh in HYPERDKX v4.21-4.30 SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEhTop
INT 13 - HyperDisk v4.01+ - ??? AX = 8EEFh Return: CF set AX = CS of HyperDisk resident code ??? Note: identical to AX=8EEEh in HYPERDKX v4.21-4.30 SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEhTop
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 92h SI = 4358h ??? Return: AH = status??? (00h) DL = ??? SeeAlso: AH=93hTop
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 93h SI = 4358h ??? Return: AH = status??? (00h) AL = ??? SeeAlso: AH=92hTop
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 94h SI = 4358h ??? Return: ???Top
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 95h SI = 4358h ??? Return: AH = status??? (00h) DX = ???Top
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 96h SI = 4358h AL = ??? (01h) BX = ??? (0790h) DL = ??? Return: AH = status??? (00h) DX = ???Top
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 97h SI = 4358h ??? Return: ???Top
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 98h SI = 4358h ??? Return: ???Top
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 99h SI = 4358h ??? Return: ???Top
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 9Ah SI = 4358h ??? Return: ???Top
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 9Bh SI = 4358h ??? Return: ???Top
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 9Ch SI = 4358h ??? Return: ??? Note: functions 9Ch and 9Dh are the only ones which are fully reentrant; all other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear if a previous call is still in progressTop
INT 13 - Super PC-Kwik v5.10+ - ??? AH = 9Dh SI = 4358h ??? Return: ???Top
INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT AH = A0h SI = 4358h Return: AX = segment of resident code Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of Super PC-Kwik, and thus support this call (note that PC-Cache v5.5 corresponds to PC-Kwik v3.27) SeeAlso: INT 16/AX=FFA5h/CX=1111h Index: PC-Cache|Qualitas QcacheTop
INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE AH = A1h SI = 4358h Return: CF clear AH = 00h (v5.10) Notes: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of Super PC-Kwik, and thus support this call (note that PC-Cache v5.1 corresponds to PC-Kwik v3.20) this function is one out of several cache flush calls issued by the PTS-DOS 6.51 and S/DOS 1.0 kernel before rebooting. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh Index: PC-Cache|Qualitas QcacheTop
INT 13 - Super PC-Kwik v3.20+ - ??? AH = A2h SI = 4358h ??? Return: ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of Super PC-Kwik, and thus support this call (note that PC-Cache v5.1 corresponds to PC-Kwik v3.20) Index: PC-Cache|Qualitas QcacheTop
INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE AH = A3h SI = 4358h Return: CF clear SeeAlso: AH=A4hTop
INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE AH = A4h SI = 4358h Return: CF clear SeeAlso: AH=A3hTop
INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION AH = A5h SI = 4358h Return: AX = ??? SI = ??? Notes: called and used internally by Super PC-Kwik when a program terminates via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch this call is not supported by Qualitas Qcache 4.00 Index: PC-Cache SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4ChTop
INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION AH = A6h SI = 4358h DS:DX -> ASCIZ program name ES:BX -> EXEC data block (see #01590 at INT 21/AH=4Bh) Return: ??? Note: called and used internally by Super PC-Kwik when a program is loaded with INT 21/AX=4B00h SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4BhTop
INT 13 CU - Super PC-Kwik 5.1 - ??? AH = A7h SI = 4358h Return: ??? Note: called and used internally by Super PC-Kwik on some INT 21 calls SeeAlso: AH=A5h,AH=A6h,AH=A8hTop
INT 13 U - Novell DOS 7 - SDRes v27.03 - ??? AX = A759h Return: AX = 59A7h if installed DX:BX -> ??? data Program: SDRes is the resident portion of the Search&Destroy antiviral by Fifth Generation Systems, as bundled with Novell DOS 7 SeeAlso: INT 21/AH=0Eh/DL=ADhTop
INT 13 CU - Super PC-Kwik 5.1 - ??? AH = A8h SI = 4358h Return: ??? Note: called and used internally by Super PC-Kwik on some INT 21 calls SeeAlso: AH=A5h,AH=A6h,AH=A7hTop
INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION AH = A9h SI = 4358h Return: ??? Note: called and used internally by Super PC-Kwik when an application issues INT 21/AH=4Dh SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4DhTop
INT 13 - Super PC-Kwik v4+ - ??? AH = AAh SI = 4358h ??? Return: ??? Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports this callTop
INT 13 - Super PC-Kwik v4+ - ??? AH = ABh SI = 4358h ??? Return: ??? Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports this callTop
INT 13 - Super PC-Kwik v4+ - ??? AH = ACh SI = 4358h ??? Return: ??? Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports this callTop
INT 13 - Priam HARD DISK CONTROLLER??? AH = ADh ??? Return: ??? Note: this call is made from Priam's EFMT.EXE (low-level formatter), probably to check the ROM type on the controller for their hard disk kits SeeAlso: AH=70hTop
INT 13 - Super PC-Kwik v4+ - ??? AH = ADh SI = 4358h ??? Return: ??? Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports this callTop
INT 13 - Super PC-Kwik v5.10+ - ??? AH = AEh SI = 4358h ??? Return: ???Top
INT 13 - Super PC-Kwik v3.20+ - ??? AH = B0h SI = 4358h ??? Return: ??? Note: PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus supports this call; Qualitas Qcache does not support it Index: PC-CacheTop
INT 13 - Mylex/Adaptec??? - ??? AX = BF00h BX = PCI address??? DI = 0000h ??? DL = drive number (80h = C:) Return: ??? Note: some poorly-commented code using this function notes that there had been a workaround for some Mylex BIOS bug by setting DL to 8FhTop
INT 13 - XBIOS - COMMAND AX = E000h CX = 0 DL = drive number (80h,81h,82h,83h) ES:BX = pointer to XBIOS Command Block (see #00297) Return: CF clear if successful CX = 1234h XBIOS Signature CF set on error Program: XBIOS is a driver in some versions of Disk Manager that is loaded from the disk MBR, replacing the ROM BIOS disk support e.g. adding LBA mode support, and read/write multiple. SeeAlso: AH=F9h"SWBIOS" Format of XBIOS Command Block: Offset Size Description (Table 00297) 00h BYTE function 0Eh Get XBIOS Configuration Information Return: buffer points to Ontrackr_Ref_Data structure (see #00298) 01h BYTE reserved (must be zero before function call) 02h DWORD buffer pointer - Input or output depending on opcode SeeAlso: #00298,#00299 Format of Ontrackr_Ref_Data structure: Offset Size Description (Table 00298) 00h WORD Size of structure (33h) 02h BYTE VxD Chain mode 03h 12 BYTEs Drive 1: Ontrackr_VxD_Data structure (see #00299) 0Fh 12 BYTEs Drive 2: Ontrackr_VxD_Data structure 1Bh 12 BYTEs Drive 3: Ontrackr_VxD_Data structure 27h 12 BYTEs Drive 4: Ontrackr_VxD_Data structure (see #00299) SeeAlso: #00297,#00299 Format of Ontrackr_VxD_Data structure: Offset Size Description (Table 00299) 00h BYTE INT 13h drive number 01h DWORD Delta skew value 05h BYTE Physical heads (Word 3 of Identify Data) 06h BYTE Physical sectors per track (Word 6 of Identify Data) 07h BYTE Multiple Block Size (Blocking factor) 08h BYTE Read/Write Multiple disable flags 00001000b drive supports r/w multiple 00000100b do not use read multiple 00000010b do not use write multiple 09h WORD Base port address (1F0/170) 0Bh BYTE Hardware interrupt channel (14/15) SeeAlso: #00298Top
INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK AX = EC00h Return: CF clear if installed SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920hTop
INT 13 - SWBIOS - SET 1024-CYLINDER FLAG AH = EEh DL = drive number (80h, 81h) Return: CF clear AH = 00h Program: SWBIOS is a TSR by Ontrack Computer Systems Desc: the following INT 13 call will add 1024 to the specified cylinder number to get the actual cylinder number desired Notes: the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh Disk Manager also supports these calls this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+, in order to allow caching of drives using SWBIOS to access more than 1024 cylinders for software which supports that call, this function is equivalent to calling AH=EFh with CX=0400h SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AX=DF00h Index: PC-Cache;huge disks|Disk ManagerTop
INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET AH = EFh CX = cylinder offset for next INT 13 call DL = drive number (80h, 81h) Return: CF clear AH = 00h Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for IDE drives supporting the read multiple and write multiple commands Desc: the following INT 13 call will add the number given by this call to the specified cylinder to get the actual cylinder number, then reset the offset to zero Note: this function is also supported by the NOW! disk cache, and presumably newer versions of SWBIOS and Disk Manager for software which supports this call, AH=EEh is equivalent to calling this function with CX=0400h the cylinder offset is reset to 0 by all INT 13 called except AH=EEh and AH=EFh SeeAlso: AX=7B00hTop
INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK AH = F2h Return: CF ??? if installed SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56hTop
INT 13 - SWBIOS - INSTALLATION CHECK AH = F9h DL = drive number (80h,81h) Return: CF clear DX = configuration word bit 15 set if other SWBIOS extensions available CF set on error Program: SWBIOS is a TSR by Ontrack Computer Systems XBIOS is a driver in some versions of Disk Manager that is loaded from the disk MBR, replacing the ROM BIOS disk support eg adding LBA mode support, and read/write multiple. Note: Disk Manager also supports these calls SeeAlso: AH=EEh,AX=E000h"XBIOS",AH=FFh"EZ-Drive" Index: Disk ManagerTop
INT 13 - PC Tools v8+ VSAFE, VWATCH - API AH = FAh DX = 5945h AL = function (00h-07h) Return: varies by function if not installed: CF set AH = 01h Note: this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh, so it is listed in its entirety under INT 16/AX=FA00h and following SeeAlso: INT 16/AX=FA00hTop
INT 13 - VIRUS - "Predator" - INSTALLATION CHECK AX = FD50h Return: AX = 50FDh if resident SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS"Top
INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT AH = FEh DL = drive number (80h, 81h) Return: CF clear DX = number of cylinders beyond 1024 on drive Program: SWBIOS is a TSR by Ontrack Computer Systems Notes: standard INT 13/AH=08h will return a cylinder count truncated to 1024 BIOS without this extension would return count modulo 1024 Disk Manager also supports these calls SeeAlso: AH=EEhTop
INT 13 - EZ-Drive - INSTALLATION CHECK AH = FFh DL = drive number (80h) Return: CF clear AX = AA55h ES:BX -> string "AERMH13Vxx", where xx is the version number of the EZ-Drive driver CF set on error Program: EZ-Drive is a driver by Micro House that is loaded from the hard disk MBR, replacing the ROM BIOS disk support, eg adding LBA mode support, and read/write multiple. Note: this function is called by the Windows95 Master Boot Record SeeAlso: AX=E000h"XBIOS",AH=F9h"SWBIOS"Top
INT 13 - IBM SurePath BIOS - Officially "Private" Function AH = FFhTop
INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE AX = FFFFh BH = AAh BL = subfunction 00h installation check Return: AX = 1234h if installed 01h turn on Turbo mode 02h turn off Turbo mode 03h set Turbo mode according to hardware switch 04h set disk access to Turbo mode 05h set disk access to Normal mode Return: nothing SeeAlso: INT 15/AH=DFh Index: installation check;UNIQUE UX Turbo UtilityTop