--------B-1300-------------------------------
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:003Eh
--------B-1301-------------------------------
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: #M0022
--------B-1302-------------------------------
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=02h
--------B-1303-------------------------------
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=03h
--------B-1304-------------------------------
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=06h
--------B-1305-------------------------------
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)
--------B-1305-------------------------------
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=1Ah
--------d-1305-------------------------------
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)
--------d-13057FSI324D-----------------------
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 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"
--------B-1306-------------------------------
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"
--------d-1306-------------------------------
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 index
--------d-1306-------------------------------
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=B102h
--------d-1306-------------------------------
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"
--------B-1307-------------------------------
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=1Ah
--------d-1307-------------------------------
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"
--------d-1307-------------------------------
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"
--------B-1308-------------------------------
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 Device
--------d-1308-------------------------------
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"
--------y-130800DLF0-------------------------
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.
--------B-1309-------------------------------
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"
--------B-130A-------------------------------
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:0074h
--------B-130B-------------------------------
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:0074h
--------B-130C-------------------------------
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=47h
--------B-130D-------------------------------
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=0Dh
--------B-130E-------------------------------
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=0Ah
--------B-130F-------------------------------
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=0Bh
--------B-1310-------------------------------
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=11h
--------B-1311-------------------------------
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:003Eh
--------B-1312-------------------------------
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=14h
--------d-1312-------------------------------
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)
--------d-1312-------------------------------
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"
--------B-1313-------------------------------
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"
--------d-1313-------------------------------
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"
--------B-1314-------------------------------
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=13h
--------B-1315-------------------------------
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:0075h
--------B-1316-------------------------------
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=49h
--------B-1317-------------------------------
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=18h
--------d-131700-----------------------------
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 supported
--------B-1318-------------------------------
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 1E
--------d-1318-------------------------------
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)
--------d-1318--CX5055-----------------------
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"
--------d-1318--CXD2C9-----------------------
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.
--------B-1319-------------------------------
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=11h
--------d-1319-------------------------------
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=8100h
--------d-131A-------------------------------
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 cylinder
--------d-131A-------------------------------
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"
--------d-131B-------------------------------
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 map
--------d-131B-------------------------------
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 present
--------d-131C-------------------------------
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"
--------d-131C-------------------------------
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"
--------d-131C08-----------------------------
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: #00257
--------d-131C09-----------------------------
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 codes
--------d-131C0A-----------------------------
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 track
--------d-131C0B-----------------------------
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)
--------d-131C0C-----------------------------
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)
--------d-131C0D-----------------------------
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"
--------d-131C0E-----------------------------
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"
--------d-131C0F-----------------------------
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"
--------d-131C12-----------------------------
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"
--------c-131D-------------------------------
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 error
--------d-131F-------------------------------
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"
--------d-1320-------------------------------
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 cases
--------b-1320-------------------------------
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 Device
--------c-1320-------------------------------
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=28h
--------d-1321-------------------------------
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"
--------c-1321-------------------------------
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=2Fh
--------d-1322-------------------------------
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"
--------c-1322-------------------------------
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=A4h
--------d-1323-------------------------------
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: #P0535
--------c-1323-------------------------------
INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
AH = 23h
Return: AX = status (0000h successful)
ES = segment of ??? data
--------d-1324-------------------------------
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"
--------c-1324-------------------------------
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=36h
--------d-1325-------------------------------
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)
--------c-1325-------------------------------
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=2Eh
--------c-1326-------------------------------
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=27h
--------c-1327--BX0000-----------------------
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=1111h
--------c-1328-------------------------------
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"
--------c-1329-------------------------------
INT 13 U - QUICKCACHE II v4.20 - NOP
AH = 29h
Return: AX = 0000h
--------c-132A-------------------------------
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=3Ah
--------c-132B-------------------------------
INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
AH = 2Bh
AL = new state (00h disabled, 01h enabled)
Return: AX = status (0000h successful)
--------c-132C-------------------------------
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=38h
--------c-132D-------------------------------
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=37h
--------c-132E-------------------------------
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=2Ch
--------c-132F-------------------------------
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"
--------c-1330-------------------------------
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: #00269
--------c-1331-------------------------------
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)
--------c-1332-------------------------------
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=33h
--------c-1333-------------------------------
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=32h
--------c-1334-------------------------------
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=35h
--------c-1335-------------------------------
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=34h
--------c-1336-------------------------------
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"
--------c-1337-------------------------------
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=38h
--------c-1338-------------------------------
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=37h
--------c-1339-------------------------------
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=3Ah
--------c-133A-------------------------------
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=39h
--------c-133B-------------------------------
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=3Ch
--------c-133C-------------------------------
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=3Bh
--------c-133D-------------------------------
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)
--------c-133E-------------------------------
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 longer
--------c-133F-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
AH = 3Fh
AL = new value for bonus threshold
Return: AX = status (0000h successful)
--------c-1340-------------------------------
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"
--------d-1341--BX55AA-----------------------
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)
--------c-1341-------------------------------
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"
--------d-1342-------------------------------
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:FFFFh
--------N-134257DX1234-----------------------
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"
--------d-1343-------------------------------
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=44h
--------d-1344-------------------------------
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=47h
--------d-1345-------------------------------
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"
--------d-1346-------------------------------
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"
--------d-1347-------------------------------
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"
--------d-1348-------------------------------
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,#00279
--------d-1349-------------------------------
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=46h
--------d-134A-------------------------------
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: #00281
--------d-134B00-----------------------------
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=4Dh
--------d-134B01-----------------------------
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=4Dh
--------d-134C-------------------------------
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=4Dh
--------d-134D00-----------------------------
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: #00281
--------d-134E-------------------------------
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"
--------d-135001-----------------------------
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 data
--------v-135001------------------------
INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK
AX = 5001h
Return: AX = 0150h if resident
SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h
--------v-135342CX0001-----------------------
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 PanSoft
--------d-135501-----------------------------
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 command
--------d-135502-----------------------------
INT 13 - Seagate ST01/ST02 - RESERVED
AX = 5502h
--------d-135503-----------------------------
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 present
--------d-135504-----------------------------
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=5514h
--------d-135504-----------------------------
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)
--------d-135505-----------------------------
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=5515h
--------d-135505-----------------------------
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: nothing
--------d-135506-----------------------------
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 enabled
--------d-135507-----------------------------
INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
AX = 5507h to 550Dh
Note: officially listed as "reserved"
--------d-135514-----------------------------
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=5515h
--------d-135515-----------------------------
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=5505h
--------d-1359-------------------------------
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: #00286
--------d-1370-------------------------------
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=ADh
----------1375-------------------------------
INT 13 - ???
AH = 75h
???
Return: AH = ???
???
Note: intercepted by PC-Cache (v5.1 only)
----------1376-------------------------------
INT 13 - ???
AH = 76h
???
Return: AH = ???
???
Note: intercepted by PC-Cache (v5.1 only)
--------c-137B00-----------------------------
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 ???
--------c-137B01-----------------------------
INT 13 - NOW! v3.05 - ???
AX = 7B01h
Return: DX = segment of ???
SeeAlso: AX=7B00h
--------c-137B02-----------------------------
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=7B00h
--------c-137B03-----------------------------
INT 13 - NOW! v3.05 - ???
AX = 7B03h
???
Return: ???
SeeAlso: AX=7B00h,AX=7B04h
--------c-137B04-----------------------------
INT 13 - NOW! v3.05 - ???
AX = 7B04h
???
Return: ???
SeeAlso: AX=7B03h
--------c-137B05-----------------------------
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=7B06h
--------c-137B06-----------------------------
INT 13 - NOW! v3.05 - GET ???
AX = 7B06h
BX = ???
Return: AX = 0000h
BX = ???
SeeAlso: AX=7B05h,AX=7B07h
--------c-137B07-----------------------------
INT 13 - NOW! v3.05 - GET ???
AX = 7B07h
Return: AX = ???
BX = ???
CX = ???
DX = ???
SeeAlso: AX=7B06h
--------c-137B08-----------------------------
INT 13 - NOW! v3.05 - ???
AX = 7B08h
CX = ??? (default 00h)
Return: ???
SeeAlso: AX=7B00h
--------c-1380--CX6572-----------------------
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 15h
--------c-138001CX6572-----------------------
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 ???
--------c-138006CX6572-----------------------
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)
--------c-138007CX6572-----------------------
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)
--------c-1381--SI4358-----------------------
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 Qcache
--------c-1382--SI4358-----------------------
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 Qcache
--------c-1383--SI4358-----------------------
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 Qcache
--------c-1384--SI4358-----------------------
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 Qcache
--------c-1385--SI4358-----------------------
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 Qcache
--------c-1386--SI4358-----------------------
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 Qcache
--------c-1387--SI4358-----------------------
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 Qcache
--------c-1388--SI4358-----------------------
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 Qcache
--------c-1389--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 89h
SI = 4358h
???
Return: ???
--------c-138A--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 8Ah
SI = 4358h
???
Return: ???
--------c-138EED-----------------------------
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=DF00h
--------c-138EEE-----------------------------
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=EEh
--------c-138EEF-----------------------------
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=EEh
--------c-1392--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 92h
SI = 4358h
???
Return: AH = status??? (00h)
DL = ???
SeeAlso: AH=93h
--------c-1393--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 93h
SI = 4358h
???
Return: AH = status??? (00h)
AL = ???
SeeAlso: AH=92h
--------c-1394--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 94h
SI = 4358h
???
Return: ???
--------c-1395--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 95h
SI = 4358h
???
Return: AH = status??? (00h)
DX = ???
--------c-1396--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 96h
SI = 4358h
AL = ??? (01h)
BX = ??? (0790h)
DL = ???
Return: AH = status??? (00h)
DX = ???
--------c-1397--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 97h
SI = 4358h
???
Return: ???
--------c-1398--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 98h
SI = 4358h
???
Return: ???
--------c-1399--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 99h
SI = 4358h
???
Return: ???
--------c-139A--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 9Ah
SI = 4358h
???
Return: ???
--------c-139B--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 9Bh
SI = 4358h
???
Return: ???
--------c-139C--SI4358-----------------------
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 progress
--------c-139D--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 9Dh
SI = 4358h
???
Return: ???
--------c-13A0--SI4358-----------------------
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 Qcache
--------c-13A1--SI4358-----------------------
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 Qcache
--------c-13A2--SI4358-----------------------
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 Qcache
--------c-13A3--SI4358-----------------------
INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
AH = A3h
SI = 4358h
Return: CF clear
SeeAlso: AH=A4h
--------c-13A4--SI4358-----------------------
INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
AH = A4h
SI = 4358h
Return: CF clear
SeeAlso: AH=A3h
--------c-13A5--SI4358-----------------------
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=4Ch
--------c-13A6--SI4358-----------------------
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=4Bh
--------c-13A7--SI4358-----------------------
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=A8h
--------v-13A759-----------------------------
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=ADh
--------c-13A8--SI4358-----------------------
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=A7h
--------c-13A9--SI4358-----------------------
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=4Dh
--------c-13AA--SI4358-----------------------
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 call
--------c-13AB--SI4358-----------------------
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 call
--------c-13AC--SI4358-----------------------
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 call
--------d-13AD-------------------------------
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=70h
--------c-13AD--SI4358-----------------------
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 call
--------c-13AE--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = AEh
SI = 4358h
???
Return: ???
--------c-13B0--SI4358-----------------------
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-Cache
----------13BF00-----------------------------
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 8Fh
--------d-13E000-----------------------------
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: #00298
--------v-13EC00-----------------------------
INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
AX = EC00h
Return: CF clear if installed
SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h
--------d-13EE-------------------------------
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 Manager
--------c-13EF-------------------------------
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=7B00h
--------v-13F2-------------------------------
INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
AH = F2h
Return: CF ??? if installed
SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h
--------d-13F9-------------------------------
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 Manager
--------v-13FA--DX5945-----------------------
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=FA00h
--------v-13FD50------------------------
INT 13 - VIRUS - "Predator" - INSTALLATION CHECK
AX = FD50h
Return: AX = 50FDh if resident
SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS"
--------d-13FE-------------------------------
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=EEh
----------13FF-------------------------------
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"
--------B-13FF-------------------------------
INT 13 - IBM SurePath BIOS - Officially "Private" Function
AH = FFh
--------U-13FFFFBHAA-------------------------
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 Utility