Interrupt List Release 61 Last change 16jul00
Copyright (c) 1989-1999,2000 Ralf Brown
Index for category d - disk I/O enhancements,

Table of Contents by Order
11----SI6A6A - INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
11FF--SI6A6A - INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
12----CX1807 - INT 12 - PARKER v2.0+ - INSTALLATION CHECK
1305 - INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
13057FSI324D - INT 13 - 2M - FORMAT TRACK
1306 - INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
1306 - INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES
1306 - INT 13 - V10DISK.SYS - READ DELETED SECTORS
1307 - INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
1307 - INT 13 - V10DISK.SYS - WRITE DELETED SECTORS
1308 - INT 13 - V10DISK.SYS - SET FORMAT
1312 - INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
1312 - INT 13 - SyQuest - START/STOP SCSI DISK
1313 - INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+)
131700 - INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
1318 - INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
1318--CX5055 - INT 13 - PU_1700.COM - INSTALLATION CHECK
1318--CXD2C9 - INT 13 - XDF.COM - API
1319 - INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
131A - INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
131A - INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
131B - INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
131B - INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
131C - INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
131C - INT 13 U - ESDI FIXED DISK - ???
131C08 - INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
131C09 - INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
131C0A - INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
131C0B - INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
131C0C - INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
131C0D - INT 13 U - ESDI FIXED DISK - ???
131C0E - INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
131C0F - INT 13 U - ESDI FIXED DISK - ???
131C12 - INT 13 U - ESDI FIXED DISK - ???
131F - INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
1320 - INT 13 - DISK - ??? (Western Digital "Super BIOS")
1321 - INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
1322 - INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
1323 - INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
1324 - INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
1325 - INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
1341--BX55AA - INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
1342 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
1343 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
1344 - INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
1345 - INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
1346 - INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
1347 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
1348 - INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
1349 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
134A - INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION
134B00 - INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION
134B01 - INT 13 - Bootable CD-ROM - GET STATUS
134C - INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT
134D00 - INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG
134E - INT 13 - IBM/MS INT 13 Extensions v2.1+ - SET HARDWARE CONFIGURATION
135001 - INT 13 - Enhanced Disk Drive Spec v3.0 - SEND PACKET COMMAND
135501 - INT 13 - Seagate ST01/ST02 - Inquiry
135502 - INT 13 - Seagate ST01/ST02 - RESERVED
135503 - INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
135504 - INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
135504 - INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
135505 - INT 13 - Seagate - ??? - PARK HEADS
135505 - INT 13 - Seagate ST01/ST02 - PARK HEADS
135506 - INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
135507 - INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
135514 - INT 13 U - Seagate - ???
135515 - INT 13 U - Seagate - PARK HEADS???
1359 - INT 13 - SyQuest - Generic SCSI pass through
1370 - INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
13AD - INT 13 - Priam HARD DISK CONTROLLER???
13E000 - INT 13 - XBIOS - COMMAND
13EE - INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
13F9 - INT 13 - SWBIOS - INSTALLATION CHECK
13FE - INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
150F - INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
1552 - INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
16FF70BX0000 - INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK
16FF70BX0001 - INT 16 U - PC Tools v8+ DRIVEMAP - ???
16FF70BX0002 - INT 16 U - PC Tools v8+ DRIVEMAP - ???
16FFA3BXFFA3 - INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK
1AB001CX4D52 - INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
214402 - INT 21 - CD-ROM device driver - IOCTL INPUT
214402 - INT 21 - Advanced SCSI Programming Interface (ASPI) - INTERFACE
214402 - INT 21 - ATA Software Programming Interface (ATASPI) - INTERFACE
214403 - INT 21 - CD-ROM device driver - IOCTL OUTPUT
214403 - INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
214404 - INT 21 U - xDISK v3.31 - CONFIGURE
214404 - INT 21 - SFS v1.00 - GET CONFIGURATION INFORMATION
214405 - INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
214405 - INT 21 U - xDISK v3.31 - ???
214405 - INT 21 - COMBI-disk v1.13 - CONTROL COMBI-disk
214405 - INT 21 - SFS v1.00 - DRIVER CONTROL
21440C - INT 21 - Greg Shenaut ASPITAPE.SYS - INTERFACE
214410BXFFFF - INT 21 U - NewSpace - ENABLE DRIVER
214411BXFFFF - INT 21 U - NewSpace - DISABLE DRIVER
214412BXFFFF - INT 21 U - NewSpace - INSTALLATION CHECK???
214413BXFFFF - INT 21 U - NewSpace - GET ???
214414BXFFFF - INT 21 U - NewSpace - DEBUGGING DUMP
2144FFBXFFFF - INT 21 U - NewSpace - ???
2169FFDX0000 - INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
2169FFDXCFBF - INT 21 U - CUBIT v4.00 - UNINSTALL
21DC - INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
21FEDC - INT 21 - PCMag PCMANAGE/DCOMPRES - INSTALLATION CHECK
2D--10 - INT 2D - dLite 1.0+ - GET PARAMETER BLOCK ADDRESS
2D--11 - INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET ORIGINAL SIZE
2D--12 - INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET COMPRESSED SIZE
2F1001 - INT 2F U - DR DOS 6.0+ FDOS EXTENSIONS - INSTALL FDOS HOOK (SHARE / DELWATCH)
2F1010CX0000 - INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - SUPERSTOR - QUERY PHYS FREE SPACE
2F1100SFDADA - INT 2F - MSCDEX (MS CD-ROM Extensions) - INSTALLATION CHECK
2F1500BX0000 - INT 2F - CD-ROM - INSTALLATION CHECK
2F1501 - INT 2F - CD-ROM - GET DRIVE DEVICE LIST
2F1502 - INT 2F - CD-ROM - GET COPYRIGHT FILE NAME
2F1503 - INT 2F - CD-ROM - GET ABSTRACT FILE NAME
2F1504 - INT 2F - CD-ROM - GET BIBLIOGRAPHIC DOC FILE NAME
2F1505 - INT 2F - CD-ROM - READ VTOC
2F1506 - INT 2F - CD-ROM - TURN DEBUGGING ON
2F1507 - INT 2F - CD-ROM - TURN DEBUGGING OFF
2F1508 - INT 2F - CD-ROM - ABSOLUTE DISK READ
2F1509 - INT 2F - CD-ROM - ABSOLUTE DISK WRITE
2F150A - INT 2F - CD-ROM - RESERVED
2F150B - INT 2F - CD-ROM v2.00+ - DRIVE CHECK
2F150CBX0000 - INT 2F - CD-ROM v2.00+ - GET MSCDEX.EXE VERSION (GET VERSION)
2F150D - INT 2F - CD-ROM v2.00+ - GET CD-ROM DRIVE LETTERS
2F150E - INT 2F - CD-ROM v2.00+ - GET/SET VOLUME DESCRIPTOR PREFERENCE
2F150F - INT 2F - CD-ROM v2.00+ - GET DIRECTORY ENTRY
2F1510 - INT 2F - CD-ROM v2.10+ - SEND DEVICE DRIVER REQUEST
2F15FFBX0000 - INT 2F - CD-ROM - CORELCDX - INSTALLATION CHECK
2F5700 - INT 2F U - IOMEGA DRIVERS - INSTALLATION CHECK
2F5701 - INT 2F U - IOMEGA DRIVERS - SECONDARY INSTALLATION CHECK
2F5710 - INT 2F U - IOMEGA DRIVERS - GET DRIVER INFORMATION???
2F5711 - INT 2F U - IOMEGA DRIVERS - LOCK MEDIA IN DRIVE
2F5712 - INT 2F U - IOMEGA DRIVERS - UNLOCK MEDIA IN DRIVE / EJECT
2F7200 - INT 2F - SRDISK v1.30+ - INSTALLATION CHECK
2F7201 - INT 2F - SRDISK v2.02 - GET CODE/DATA SEGMENT
2F7F00 - INT 2F - Jim Harper's CD-ROM redirector SCSI driver - INSTALLATION CHECK
2F7F01 - INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO COMMAND
2F7F02 - INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO RESET
2F7F03 - INT 2F - Jim Harper's CD-ROM redirector SCSI driver - UNINSTALL
2FAFDE - INT 2F - Disk-Emu - INSTALLATION CHECK / GET VERSION
2FC300 - INT 2F - SETWPR.COM - INSTALLATION CHECK
2FC302 - INT 2F - SETWPR.COM - SET WRITE-PROTECTION STATE
2FC64CBX5553 - INT 2F U - Smart Prompt - INSTALLATION CHECK
2FD8C0 - INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
2FDD--BX7844 - INT 2F - xDISK v3.32+ - INSTALLATION CHECK
2FF700 - INT 2F - AUTOPARK.COM - INSTALLATION CHECK
2FF701 - INT 2F - AUTOPARK.COM - SET PARKING DELAY
2FF800CX4455 - INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
2FF801CX4455 - INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
4B - INT 4B - Common Access Method SCSI interface (draft revision 1.9)
4B80 - INT 4B - IBM SCSI interface
4B8102DX0000 - INT 4B - Virtual DMA Specification (VDS) - GET VERSION
4B8103 - INT 4B - Virtual DMA Specification - LOCK DMA REGION
4B8104 - INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
4B8105 - INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
4B8106 - INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
4B8107 - INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
4B8108 - INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
4B8109DX0000 - INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
4B810ADX0000 - INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
4B810B - INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
4B810C - INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
4F0081 - INT 4F - ATA Software Programming Interface (ATASPI) - SEND ATASPI REQUEST
4F0082CX8765 - INT 4F - ATA Software Programming Interface (ATASPI) - INSTALLATION CHECK
4F8100 - INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
4F8200CX8765 - INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
60 - INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
61 - INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
62 - INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
63 - INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
63 - INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
64 - INT 64 - Adaptec controllers - DRIVE 1 DATA
64 - INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
65 - INT 65 - Adaptec controllers - DRIVE 1 DATA
65 - INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
66 - INT 66 - Adaptec controllers - DRIVE 1 DATA
66 - INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
67 - INT 67 - Adaptec controllers - DRIVE 1 DATA
67 - INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
78 - INT 78 - ADP-60 IDE controller - ORIGINAL INT 13
7800 - INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
7801 - INT 78 - TARGA.DEV - GET I/O PORT
7802 - INT 78 - TARGA.DEV - SET DMA CHANNEL
7803 - INT 78 - TARGA.DEV - GET DMA CHANNEL
7804 - INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
7805 - INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
7806 - INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
7808 - INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
7809 - INT 78 - TARGA.DEV - RESET SCSI BUS
7810 - INT 78 - TARGA.DEV - SEND SCSI COMMAND
7811 - INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
7812 - INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
7813 - INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
7814 - INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
7815 - INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
79 - INT 79 U - ADP-60 IDE adapter - ???
80 - INT 80 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
81 - INT 81 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
C0 - INT C0 - AMI BIOS - DRIVE 0 DATA
C1 - INT C1 - AMI BIOS - DRIVE 0 DATA
C2 - INT C2 - AMI BIOS - DRIVE 0 DATA
C3 - INT C3 - AMI BIOS - DRIVE 0 DATA
C4 - INT C4 - AMI BIOS - DRIVE 1 DATA
C5 - INT C5 - AMI BIOS - DRIVE 1 DATA
C6 - INT C6 - AMI BIOS - DRIVE 1 DATA
C7 - INT C7 - AMI BIOS - DRIVE 1 DATA


11----SI6A6A - INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
	SI = 6A6Ah
	AH = command (see #00227)
	AL = SCSI Addressing (see #00228)
Return: CF clear if successful
	    DI = 6A6Ah if AH=01h on entry (maybe for all functions???)
	    AH = ??? for command 01h
	CF set on error
	    AL = error code
SeeAlso: INT 21/AX=4402h"ASPI"

(Table 00227)
Values for SDLP command:
 00h	SDLP initialization
 01h	SDLP System Identify
 02h	simple read sectors
 03h	simple write sectors
 04h	simple verify sectors/seek to sector
 05h	get device size/type
 06h	ready unit
 07h	format unit
 08h	diagnostics
 09h	rewind
 0Ah	erase
 0Bh	write filemarks
 0Ch	space
 0Dh	prevent/allow media removal
 0Eh	load/unload media
 0Fh	reserved - returns good status
 10h	set block size
 11h	write setmark
 12h	set error level
 13h	get address of Request Sense Buffer
 14h	get SDLP error via Request Sense
 F0h	Vendor Unique Function (WD7000-FASST2 only)
 FDh	reset current SCSI HAC
 FEh	get/set current SCSI HAC
 FFh	execute SCSI command

Bitfields for SDLP SCSI addressing:
Bit(s)	Description	(Table 00228)
 7-6	Host Adapter
 5-3	SCSI Target ID
 2-0	SCSI Target LUN (logical unit number)

Top
11FF--SI6A6A - INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
	AH = FFh
	SI = 6A6Ah
	AL = SCSI Addressing (see #00230)
	CX = bytes of data to be transmitted (max FFF0h)
	DH = 00h
	DL = length of SCSI Command Descriptor Block
	DS:DI -> SCSI Command Descriptor Block
	ES:BX -> data buffer
Return: CF set on error
	    AL = error code
	CF clear if successful
Note:	because of busmaster operations with WD7000FASST avoid accessing
	  video memory directly; check 386 memory manager for VDS support.
	  The WD7000XTAT works with programmed IO and does not have this
	  limitation.
SeeAlso: INT 21/AX=4402h"ASPI",INT 2F/AX=7F01h

Bitfields for SDLP SCSI addressing:
Bit(s)	Description	(Table 00230)
 2-0	SCSI Target LUN (logical unit number)
 5-3	SCSI Target ID
 7	write flag, set for write operations, clear otherwise

Top
12----CX1807 - INT 12 - PARKER v2.0+ - INSTALLATION CHECK
INT 12 - PARKER v2.0+ - INSTALLATION CHECK
	CX = 1807h
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
	CX = 1961h if installed
Program: PARKER is an optionally-resident hard disk parking program by Johan
	  Zwiekhorst

Top
1305 - INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
	AH = 05h
	DL = hard drive ID
	ES:BX -> mode select data (see #00236)
Return: CF set on error
	CF clear if successful
	AH = status code (see #00234)
Notes:	this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to
	  format a SCSI disk with the desired parameters
	the mode select data below is from the SCSI-1 specification
	the TMC-950 does not support any Future Domain BIOS calls; instead,
	  it provides a full CAM implementation (see INT 4F/AX=8100h)
SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h

Format of Future Domain SCSI mode select data:
Offset	Size	Description	(Table 00236)
 00h	BYTE	number of bytes of remaining data (12 + vendor unique length)
 01h	BYTE	reserved (0)
 02h	BYTE	medium type (0 for hard disk)
 03h	BYTE	reserved (0)
 04h	BYTE	block descriptor length (8)
 05h	BYTE	density code (0 for hard disk)
 06h  3 BYTEs	(big-endian) number of blocks (000000h for entire disk)
 09h	BYTE	reserved (0)
 0Ah  3 BYTEs	(big-endian) block length (512 standard, or 256)
 0Dh	???	vendor-specific parameter bytes (optional)

Top
13057FSI324D - INT 13 - 2M - FORMAT TRACK
INT 13 - 2M - FORMAT TRACK
	AX = 057Fh
	SI = 324Dh ("2M")
	CH = track number
	DH = head number
	DL = drive number
	ES:BX -> boot sector of future 2M diskette
Return: CF set on error
	CF clear if successful
	AH = status (see #00234)
Program: 2M is a TSR developed by Ciriaco GarcĀ”a de Celis to support
	  non standard diskettes with 820-902/1476-1558K (5.25 DD/HD)
	  and 984-1066/1804-1886K/3608-3772K (3.5 DD/HD/ED)
InstallCheck: must search for a "CiriSOFT:2M:1.3" or "CiriSOFT:2MX:3.0" or
	  similar (recomended ":2M:", ":2MX:", or ":2MB:" substrings) in the
	  CiriSOFT TSR interface
Notes:	it is not necessary to call AH=17h or AH=18h first (will be ignored)
	the diskette format must always begin on cylinder 0 head 0
	the boot sector can be obtained from an already-formatted 2M diskette
	  (by calling AH=02h with head number 00h in 2M v1.x and with head
	  number 80h for 2M v2+)
	since 2M v2.0, the BOOT sector is emulated using the first physical
	  sector of FAT2; the second-sixth physical sectors of FAT2 in HD or ED
	  diskettes store the SuperBOOT code. To skip the FAT2 emulation (using
	  FAT1) of 2M, in order to read the SuperBOOT code, head number must be
	  80h-81h instead 0-1 (bit 7 active) in standard read/write functions.
	  This lets diskcopy programs format 2M target diskettes copying
	  SuperBOOT code. If the target diskette is already 2MF formatted
	  (containing boot code) this trick it is not necessary.
	when using STV technology (offset 65 of boot sector equal to 1) it is
	  necessary to write the full track before formatting (except track 0
	  side 0) to complete the format and skip future CRC errors on read; in
	  track 0 side 1 the head used must be 81h instead 1. Diskcopy programs
	  may do a format-write-verify sequential phases to improve performance
SeeAlso: AH=05h"FLOPPY",AH=18h/CX=5055h,INT 2F"CiriSOFT"

Top
1306 - INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
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

Top
1306 - INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES
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

Top
1306 - INT 13 - V10DISK.SYS - READ DELETED SECTORS
INT 13 - V10DISK.SYS - READ DELETED SECTORS
	AH = 06h
	AL = number of sectors
	CH = cylinder number (bits 8,9 in high bits of CL)
	CL = sector number
	DH = head
	DL = drive
	ES:BX -> buffer
Return: AH = status code (see #00234)
Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
SeeAlso: AH=02h,AH=07h"V10DISK.SYS"

Top
1307 - INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
	AH = 07h
	AL = interleave (0 = default, 1 = consecutive sectors,
	       2 - 255 = vendor unique)
	DL = hard drive ID
Return: CF set on error
	CF clear if successful
	AH = status code (see #00234)
SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"

Top
1307 - INT 13 - V10DISK.SYS - WRITE DELETED SECTORS
INT 13 - V10DISK.SYS - WRITE DELETED SECTORS
	AH = 07h
	AL = number of sectors
	CH = cylinder number (bits 8,9 in high bits of CL)
	CL = sector number
	DH = head
	DL = drive
	ES:BX -> buffer
Return: AH = status code (see #00234)
Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
SeeAlso: AH=03h,AH=06h"V10DISK.SYS"

Top
1308 - INT 13 - V10DISK.SYS - SET FORMAT
INT 13 - V10DISK.SYS - SET FORMAT
	AH = 08h
	AL = number of sectors
	CH = cylinder number (bits 8,9 in high bits of CL)
	CL = sector number
	DH = head
	DL = drive
Return: AH = status code (see #00234)
Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
Note:	details not available
SeeAlso: AH=03h,AH=06h"V10DISK.SYS"

Top
1312 - INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
	AH = 12h
	DL = hard drive ID
Return: CF set on error
	CF clear if successful
	AH = status code (see #00234 at AH=01h)
Notes:	available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
	if the given drive is a SCSI device, the SCSI Stop Unit command is sent
	  and either "Disk prepared for shipping" or "Disk Stop command failed"
	  is displayed
	the TMC-950 does not support any Future Domain BIOS calls; instead,
	  it provides a full CAM implementation (see INT 4F/AX=8100h)

Top
1312 - INT 13 - SyQuest - START/STOP SCSI DISK
INT 13 - SyQuest - START/STOP SCSI DISK
	AH = 12h
	AL = subfunction
	    00h start disk
	    01h stop disk
	CX = wait flag
	    00h wait for ready
	    01h don't wait for ready
	DL = hard drive ID (bit 7 for hard disks must be set)
Return: CF set on error
	CF clear if successful
	AH = status
	    00h successful
	    01h invalid function request
	    80h timeout
SeeAlso: AH=12h"Future Domain",AH=13h"SyQuest"

Top
1313 - INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+)
INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+)
	AH = 13h
	DL = drive ID (bit 7 set for hard disks)
Return: CF set on error
	    AH = status (07h) (see #00234 at AH=01h)
	CF clear if successful
	    AH = 00h
	    BL = drive type (AT/PS2 floppies only) (see #00242)
	    CH = low eight bits of maximum cylinder number
	    CL = maximum sector number (bits 5-0)
		 high two bits of maximum cylinder number (bits 7-6)
	    DH = maximum head number
	    DL = number of drives
	    ES:DI -> drive parameter table (floppies only)
Notes:	the return values are identical to the standard INT 13/AH=08h, but the
	  number of drives is not limited to 2, so
	scanning all possible drive numbers with the Read DASD Type call
	  (AH=15h) should generally be preferred to determine the number of
	  drives attached to the system.
SeeAlso: AH=08h"PC",AH=12h"SyQuest",AH=15h,AH=59h"SyQuest"

Top
131700 - INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
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

Top
1318 - INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
	AH = 18h
	DL = hard drive ID
Return: CF set on error
	    AH = status code (see #00234 at AH=01h)
	CF clear if successful
	    AX = 4321h (magic number)
	    CX = controller family code (see #00249)
	    ---if family code=0200h
		DH = number of exclusively ROM-controlled SCSI devices
		DL = canonical SCSI device number for specified drive
	    ---if family code <> 0200h
		BH = number of exclusively ROM-controlled SCSI devices
		BL = canonical SCSI device number for specified drive
Notes:	also sets an internal flag (non-resettable) which prevents some
	  controller messages from being displayed, allows writes to
	  removable devices (use caution!), and enables the INT 13 interface
	  for more than one drive (i.e. DL >= 81h) in at least some ROM
	  versions
	the TMC-950 does not support any Future Domain BIOS calls; instead,
	  it provides a full CAM implementation (see INT 4F/AX=8100h)
SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h

(Table 00249)
Values for Future Domain SCSI controller family code:
 0200h	TMC-1680/? (ROM 3.0)
 0203h	TMC-1650/1660/1670/1680 (ROM 2.0)
 040Ah	TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
 050Dh	TMC-840/841/880/881 (ROM 5.2D)
 0700h	TMC-830/850/860/875/885 (ROM 7.0)

Top
1318--CX5055 - INT 13 - PU_1700.COM - INSTALLATION CHECK
INT 13 - PU_1700.COM - INSTALLATION CHECK
	AH = 18h
	CX = 5055h ('PU')
	DL = 00h
Return: AX = 7570h ('up') if PU_1700 is installed
Program: PU_1700 is a BIOS enhancer from PU Service Systems which permits
	  formatting diskettes at higher capacity (1.78M instead of 1.44M)
SeeAlso: AX=057Fh/SI=324Dh"2M"

Top
1318--CXD2C9 - INT 13 - XDF.COM - API
INT 13 - XDF.COM - API
	AH = 18h
	CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey)
	DX = 0000h
	BX = function
	    0000h installation check
		  Return: AH = 0Ch
			  CX = 7269h ("ri" = Roger Ivey)
			  ES = segment of driver
			  CF set
	    2F64h ("/d") disable the driver
		  Return: AH = 0Ch
			  ES:BX = pointer to activation flag (it is set to 0:
				  set it to 1 to enable the driver again)
			  CX = 7269h
			  CF set
	    2F75h ("/u") unload the driver (restore interrupts & free memory)
		  Return: AH = 0Ch
			  DL = 55h ("U") if successful
			     = 00h	   if fails
			  CX = 7269h
			  ES = segment of driver
			  CF set
			  AL, BX, DH, and DI destroyed
Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks,
	  developed by Roger D. Ivey
Note:	After disabling or enabling the driver, a disk change must be performed
	  or simulated to reset the driver.

Top
1319 - INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
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

Top
131A - INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
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

Top
131A - INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
	AH = 1Ah
	CH = track (bits 8,9 in high bits of CL)
	CL = sector (01h to number of sectors/track for drive)
	DH = head
	DL = hard drive ID
Return: CF set on error
	AH = status code (see #00234 at AH=01h)
	CX:DX = logical block number of last quickly-accessible block after
		given block
Notes:	sends SCSI Read Capacity command with the PMI bit set to obtain the
	  logical block address of the last block after which a substantial
	  delay in data transfer will be encountered (usually the last block
	  on the current cylinder).  No translation to 512 byte sectors is
	  performed on the result if data is stored on the disk in other than
	  512 byte sectors.
	the TMC-950 does not support any Future Domain BIOS calls; instead,
	  it provides a full CAM implementation (see INT 4F/AX=8100h)
SeeAlso: AH=15h,AH=19h"SCSI"

Top
131B - INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
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

Top
131B - INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
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

Top
131C - INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
	AH = 1Ch
	DL = hard drive ID (any valid SCSI hard disk)
Return: CF set on error
	    AH = status code (see #00234 at AH=01h)
	CF clear if successful
	    ES:BX -> first byte of free RAM on controller
Notes:	the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
	  to 1BFFh on-board the controller for storing drive information and
	  controller status; ES:BX points to the first byte available for other
	  uses
	ES contains the segment at which the controller resides; the
	  controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
SeeAlso: AH=1Bh"SCSI"

Top
131C - INT 13 U - ESDI FIXED DISK - ???
INT 13 U - ESDI FIXED DISK - ???
	AH = 1Ch
	AL = subfunction (01h-06h)
	DL = drive (80h,81h)
	???
Return: ???
Note:	these functions perform a controller command 0612h without DMA
SeeAlso: AX=1C08h,PORT 3510h"ESDI"

Top
131C08 - INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
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

Top
131C09 - INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
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

Top
131C0A - INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
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

Top
131C0B - INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
	AX = 1C0Bh
	ES:BX -> buffer for Controller Configuration Status Block (see #00261)
Return: CF set on error
	CF clear if successful
	AH = status (see #00234 at AH=01h)
SeeAlso: AX=1C0Ch

Format of ESDI Controller Configuration Status Block:
Offset	Size	Description	(Table 00261)
 00h	BYTE	E9h
 01h	BYTE	number of words in block (06h)
 02h	WORD	unused (0000h)
 04h	DWORD	controller microcode revision level
 08h  2 WORDs	unused (0000h)

Top
131C0C - INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
	AX = 1C0Ch
	ES:BX -> buffer for POS Information Status Block (see #00262)
Return: CF set on error
	CF clear if successful
	AH = status (see #00234 at AH=01h)
SeeAlso: AX=1C0Bh

Format of ESDI POS Information Status Block:
Offset	Size	Description	(Table 00262)
 00h	BYTE	EAh
 01h	BYTE	number of words in block (05h)
 02h	WORD	magic value FFDDh
 04h	BYTE	POS register 3
 05h	BYTE	POS register 2
 06h	BYTE	POS register 5 (unused, FFh)
 07h	BYTE	POS register 4 (unused, FFh)
 08h	BYTE	POS register 7 (unused, FFh)
 09h	BYTE	POS register 6 (unused, FFh)

Top
131C0D - INT 13 U - ESDI FIXED DISK - ???
INT 13 U - ESDI FIXED DISK - ???
	AX = 1C0Dh
	DL = drive (80h,81h)
	???
Return: ???
Note:	invokes controller command 0614h without DMA
SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"

Top
131C0E - INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
	AX = 1C0Eh
	CH = low 8 bits of cylinder number
	CL = sector number, high two bits of cylinder number in bits 6 and 7
	DH = head number
	DL = drive number (80h,81h)
	ES:BX -> ABA number
Return: CF set on error
	CF clear if successful
	AH = status (see #00234 at AH=01h)
Note:	ABA (absolute block address) format can be found in IBM ESDI Adapter
	  Technical Reference by using its Device Configuration Status Block
SeeAlso: AX=1C08h,AX=1C0Fh,PORT 3510h"ESDI"

Top
131C0F - INT 13 U - ESDI FIXED DISK - ???
INT 13 U - ESDI FIXED DISK - ???
	AX = 1C0Fh
	DL = drive (80h,81h)
	???
Return: ???
Note:	invokes controller command 0614h without DMA
SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT 3510h"ESDI"

Top
131C12 - INT 13 U - ESDI FIXED DISK - ???
INT 13 U - ESDI FIXED DISK - ???
	AX = 1C12h
	DL = drive (80h,81h)
	???
Return: ???
Note:	invokes controller command 0612h without DMA
SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"

Top
131F - INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
	AH = 1Fh
	AL = subfunction
	    00h allow media removal
	    01h prevent media removal (lock door)
	DL = drive ID (bit 7 set for hard disks)
Return: CF clear if successful
	    AH = 00h
	CF set on error
	    AH = error code
		00h successful
		01h invalid function request
		80h timeout
		DDh media change requested
SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"

Top
1320 - INT 13 - DISK - ??? (Western Digital "Super BIOS")
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

Top
1321 - INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
	AH = 21h
	AL = number of sectors to write
	CH = low byte of 12-bit cylinder number
	CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
	DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
	DL = drive number (80h,81h)
	ES:BX -> buffer for data to be read
Return: CF clear if successful
	    ES:BX buffer filled
	CF set on error
	AH = status (see #00234 at AH=01h)
Desc:	read from the disk using the Multiple Block mode available on newer
	  IDE drives and some hard disk controllers, which generates an
	  interrupt only after the end of transferring a group of sectors
	  rather than after each sector
Notes:	must call AH=24h"PS/1" before using this function
	input values in CL and DH are not range-checked
	the byte at address 0040h:0074h is set to the status of the operation
SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"

Top
1322 - INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
	AH = 22h
	AL = number of sectors to write
	CH = low byte of 12-bit cylinder number
	CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
	DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
	DL = drive number (80h,81h)
	ES:BX -> buffer containing data to be written
Return: CF clear if successful
	CF set on error
	AH = status (see #00234 at AH=01h)
Desc:	write to the disk using the Multiple Block mode available on newer
	  IDE drives and some hard disk controllers, which generates an
	  interrupt only after the end of transferring a group of sectors
	  rather than after each sector
Notes:	must call AH=24h"PS/1" before using this function
	input values in CL and DH are not range-checked
	the byte at address 0040h:0074h is set to the status of the operation
SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"

Top
1323 - INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
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

Top
1324 - INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
	AH = 24h
	AL = number of sectors per block (2,4,8,16)
	DL = drive number (80h,81h)
Return: CF clear if successful
	CF set onerror
	AH = status (see #00234 at AH=01h)
Desc:	specify how many sectors the controller should transfer as a group
	  between operation-complete interrupts when using the Read Multiple
	  and Write Multiple functions (AH=21h,AH=22h)
Notes:	set the number of sectors to 0 to disable multiple-transfer mode
	the maximum value for the block size depends on the fixed disk
	  drive type.  The value is stored in byte 15h of the fixed disk
	  drive parameter table that is created by POST.
	the byte at address 0040h:0074h is set to status of operation.
SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1"

Top
1325 - INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
	AH = 25h
	DL = drive number (80h,81h)
	ES:BX-> 512 byte buffer for reply packet
Return: CF clear if successful
	CF set on error
	AH = status (see #00234 at AH=01h)
	buffer filled with ATA/IDE-style drive information block (see #00267)
Desc:	retrieves the 256 words of drive data stored on an IDE hard disk
Notes:	the byte at address 0040h:0074h is set to the status of the operation
	IBM officially classifies this function as optional
SeeAlso: AH=23h"PS/1"

Format of drive information block:
Offset	Size	Description	(Table 00267)
 00h	WORD	general drive configuration (see #00268)
 02h	WORD	number of cylinders
 04h	WORD	reserved
 06h	WORD	number of heads
 08h	WORD	number of unformatted bytes per track
 0Ah	WORD	number of unformatted bytes per sector
 0Ch	WORD	number of sectors per track
 0Eh  6 BYTEs	vendor unique
 14h 20 BYTEs	serial number in ASCII, 0000h=not specified)
 28h	WORD	buffer type
 2Ah	WORD	buffer size in 512 byte increments (0000h=not specified)
 2Ch	WORD	number of ECC bytes passed on Read/Write Long cmds
		0000h = not specified
 2Eh  8 BYTEs	firmware revision in ASCII, 0000h=not specified
 36h 40 BYTEs	model number in ASCII, 0000h=not specified
 5Eh	WORD	bits 15-8  Vendor Unique
		bits 7-0  00h = Read/Write Multiple commands not implemented
			  xxh = Maximum number of sectors that can be
			  transferred per interrupt on Read and Write
			  Multiple commands
 60h	WORD	0000h = cannot perform doubleword I/O
		0001h = can perform doubleword I/O
 62h	WORD	capabilities
		bit 15-9  0=reserved
		bit 8  1=DMA Supported
		bit 7-0	 Vendor Unique
 64h	WORD	reserved
 66h	WORD	bits 15-8 PIO data transfer cycle timing mode
		bits 7-0  Vendor Unique
 68h	WORD	bits 15-8 DMA data transfer cycle timing mode
		bits 7-0  Vendor Unique
 6Ah	WORD	bits 15-1 reserved
		bit 0	1=the fields reported in tranlation mode are valid
			0=the fields reported in translation mode may be valid
 6Ch	WORD	number of current cylinders
 6Eh	WORD	number of current heads
 70h	WORD	number of current sectors per track
 72h	DWORD	current capacity in sectors
 76h	WORD	reserved
 78h 136 BYTEs	not defined by ATA spec 2.6
100h 64 BYTEs	vendor unique
140h 96 BYTEs	reserved
Note:	the above description is as in the ATA (AT Attachment) Specification.
SeeAlso: #P0516

Bitfields for general drive configuration:
Bit(s)	Description	(Table 00268)
 15	0   reserved for non-magnetic drives
 14	format speed tolerance gap required
 13	track offset option available
 12	data strobe offset option available
 11	rotational speed tolerance is > 0.5%
 10	disk transfer rate > 10 Mbs
 9	disk transfer rate > 5Mbs but <= 10Mbs
 8	disk transfer rate <= 5Mbs
 7	removable cartridge drive
 6	fixed drive
 5	spindle motor control option implemented
 4	head switch time > 15 usec
 3	not MFM encoded
 2	soft sectored
 1	hard sectored
 0	reserved (0)

Top
1341--BX55AA - INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
	AH = 41h
	BX = 55AAh
	DL = drive (80h-FFh)
Return: CF set on error (extensions not supported)
	    AH = 01h (invalid function)
	CF clear if successful
	    BX = AA55h if installed
	    AH = major version of extensions
		01h = 1.x
		20h = 2.0 / EDD-1.0
		21h = 2.1 / EDD-1.1
		30h = EDD-3.0
	    AL = internal use
	    CX = API subset support bitmap (see #00271)
	    DH = extension version (v2.0+ ??? -- not present in 1.x)
Note:	the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of
	  the INT 13 Extensions API
SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext"

Bitfields for IBM/MS INT 13 Extensions API support bitmap:
Bit(s)	Description	(Table 00271)
 0	extended disk access functions (AH=42h-44h,47h,48h) supported
 1	removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h)
	  supported
 2	enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported
	extended drive parameter table is valid (see #00273,#00278)
 3-15	reserved (0)

Top
1342 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
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

Top
1343 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
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

Top
1344 - INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
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

Top
1345 - INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
	AH = 45h
	AL = operation
	    00h lock media in drive
	    01h unlock media
	    02h check lock status
	DL = drive number
Return: CF clear if successful
	    AH = 00h
	    AL = lock state (00h = unlocked)
	CF set on error
	    AH = error code (see #00234)
Notes:	this function is required to be supported for any removable drives
	  numbered 80h or higher
	a device may be locked even if no media is present in the drive
	up to 255 locks may be placed on a drive, and the media will not
	  be physically unlocked until all locks have been removed
SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions"

Top
1346 - INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
	AH = 46h
	AL = 00h (reserved)
	DL = drive number
Return: CF clear if successful
	    AH = 00h
	CF set on error
	    AH = error code (see #00234)
SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions"

Top
1347 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
	AH = 47h
	DL = drive number
	DS:SI -> disk address packet (see #00272)
Return: CF clear if successful
	    AH = 00h
	CF set on error
	    AH = error code (see #00234)
Note:	this function initiates the seek, and may return before the seek
	  actually completes
SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"

Top
1348 - INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
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

Top
1349 - INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
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

Top
134A - INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION
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

Top
134B00 - INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION
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

Top
134B01 - INT 13 - Bootable CD-ROM - GET STATUS
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

Top
134C - INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT
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

Top
134D00 - INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG
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

Top
134E - INT 13 - IBM/MS INT 13 Extensions v2.1+ - SET HARDWARE CONFIGURATION
INT 13 - IBM/MS INT 13 Extensions v2.1+ - SET HARDWARE CONFIGURATION
	AH = 4Eh
	AL = function
	    00h enable prefetch
	    01h disable prefetch
	    02h set maximum PIO transfer mode
	    03h set PIO mode 0
	    04h set default PIO transfer mode
	    05h enable INT 13h DMA maximum mode
	    06h disable INT 13h DMA
	DL = drive number
Return: CF clear if successful
	    AH = 00h
	    AL = status
		00h command was safe (only affected specified drive)
		01h other devices are affected
	CF set on error
	    AH = error code (see #00234)
Note:	DMA and PIO modes are mutually exclusive, so selecting DMA disables
	  PIO (for either the specified device or all devices on that
	  controller), and selecting PIO disables DMA
SeeAlso: AH=41h"INT 13 Extensions",AX=5001h"Enhanced Disk Drive"

Top
135001 - INT 13 - Enhanced Disk Drive Spec v3.0 - SEND PACKET COMMAND
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

Top
135501 - INT 13 - Seagate ST01/ST02 - Inquiry
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

Top
135502 - INT 13 - Seagate ST01/ST02 - RESERVED
INT 13 - Seagate ST01/ST02 - RESERVED
	AX = 5502h

Top
135503 - INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
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

Top
135504 - INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
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

Top
135504 - INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
	AX = 5504h
	DL = drive ID (80h, 81h, ...)
Return: AX = 4321h
	BL = selected drive number (00h, 01h)
	BH = number of drives attached to Host Adapter (max. 2)

Top
135505 - INT 13 - Seagate - ??? - PARK HEADS
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

Top
135505 - INT 13 - Seagate ST01/ST02 - PARK HEADS
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

Top
135506 - INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
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

Top
135507 - INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
	AX = 5507h to 550Dh
Note:	officially listed as "reserved"

Top
135514 - INT 13 U - Seagate - ???
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

Top
135515 - INT 13 U - Seagate - PARK HEADS???
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

Top
1359 - INT 13 - SyQuest - Generic SCSI pass through
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

Top
1370 - INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
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

Top
13AD - INT 13 - Priam HARD DISK CONTROLLER???
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

Top
13E000 - INT 13 - XBIOS - COMMAND
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

Top
13EE - INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
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

Top
13F9 - INT 13 - SWBIOS - INSTALLATION CHECK
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

Top
13FE - INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
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

Top
150F - INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
	AH = 0Fh
	AL = phase code
	    00h reserved
	    01h surface analysis
	    02h formatting
Return: CF clear if formatting should continue
	CF set if formatting should terminate
Note:	called during ESDI drive formatting after each cylinder is completed
SeeAlso: INT 13/AH=1Ah

Top
1552 - INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
	AH = 52h
	DL = drive number
Return: CF clear if OK to eject media
	    AH = 00h
	CF set if ejection disallowed
	    AH = error code (B1h,B3h) (see #00234)
Note:	called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection
	  request is made
SeeAlso: INT 13/AH=46h"INT 13 Extensions"

Top
16FF70BX0000 - INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK
INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK
	AX = FF70h
	BX = 0000h
	CX = 4C69h ('Li')
	DX = 6E6Bh ('nk')
Return: AX = 0000h
	CX = 4350h ('CP')
	DH = major version
	DL = minor version
Program: DRIVEMAP is a redirector which allows drives on computers connected
	  over the parallel or serial ports to appear as local drives
SeeAlso: AX=FF70h/BX=0001h,AX=FF70h/BX=0002h

Top
16FF70BX0001 - INT 16 U - PC Tools v8+ DRIVEMAP - ???
INT 16 U - PC Tools v8+ DRIVEMAP - ???
	AX = FF70h
	BX = 0001h
	DL = ???
Return: AX = ???
	DH = ???
SeeAlso: AX=FF70h/BX=0000h,AX=FF70h/BX=0002h

Top
16FF70BX0002 - INT 16 U - PC Tools v8+ DRIVEMAP - ???
INT 16 U - PC Tools v8+ DRIVEMAP - ???
	AX = FF70h
	BX = 0002h
	CX = ???
	DX = ???
Return: AX = ??? or FFFEh/FFFFh on error
	DL = ???
BUG:	DRIVEMAP will branch to random locations for BX values other than
	  those listed above for v8.0-9.0 because a) the incorrect register is
	  range-tested, resulting in BX=0003h-5CD6h being accepted as valid
	  function numbers, and b) the conditional which branches on invalid
	  function numbers jumps to the following instruction, becoming a NOP
SeeAlso: INT 2F/AX=9203h"DRIVEMAP"
Index:	installation check;DRIVEMAP

Top
16FFA3BXFFA3 - INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK
INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK
	AX = FFA3h
	BX = FFA3h
	CX = FFA3h
Return: BX = CX = 5555h if installed
	    AX = resident code segment
Program: DSKLIGHT is a TSR included with PC Tools v9+ which displays a disk-
	  access indicator on the screen; in v7 and v8, this function was
	  provided by DATAMON
Note:	DSKLIGHT chains to the previous handler if BX or CX is not FFA3h

Top
1AB001CX4D52 - INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
	AX = B001h
	CX = 4D52h ("MR")
	DX = 4349h ("CI")
Return: CX = 4943h ("IC") if installed
	DX = 524Dh ("RM") if installed
	    ES:DI -> MRCINFO structure (see #00725)
Note:	this call is functionally identical to INT 2F/AX=4A12h, which should
	  be called first, as this call is used for the first, ROM-based
	  MRCI server, while the other call is used for RAM-based servers
	  which may be partially or entirely replacing a prior server
SeeAlso: INT 2F/AX=4A12h

Format of MRCINFO structure:
Offset	Size	Description	(Table 00725)
 00h  4 BYTEs	vendor signature
		"MSFT" Microsoft
 04h	WORD	server version (high=major)
 06h	WORD	MRCI specification version
 08h	DWORD	address of server entry point (see #00727)
 0Ch	WORD	bit flags: server capabilities (see #00726)
 0Eh	WORD	bit flags: hardware assisted capabilities (see #00726)
 10h	WORD	maximum block size supported by server (at least 8192 bytes)

Bitfields for MRCI capabilities:
Bit(s)	Description	(Table 00726)
 0	standard compress
 1	standard decompress
 2	update compress
 3	MaxCompress (not present in initial public release)
 4	reserved
 5	incremental decompress
 6	MRCI 2.0 standard compress
 7	MRCI 2.0 standard decompress
 8-14	reserved
 15	this structure is in ROM and can't be modified
	(server capabilities only)

(Table 00727)
Call MRCI entry point with:
	DS:SI -> MRCREQUEST structure (see #00728)
	CX = type of client (0000h application, 0001h file system)
	AX = operation
	    0001h perform standard compression
	    0002h perform standard decompression
	    0004h perform update compression
	    0008h perform MaxCompress
	    0020h perform incremental decompression
	    0040h perform MRCI 2.0 standard compression
	    0080h perform MRCI 2.0 standard decompression
	AX = FFFFh clear flags
	    BX = bitmask of flags to clear (set bits in BX are flags to clear)
Return: AX = status
	    0000h successful
	    0001h invalid function
	    0002h server busy, try again
	    0003h destination buffer too small
	    0004h incompressible data
	    0005h bad compressed data format
	BP destroyed (MS-DOS 6.2)
Note:	MRCI driver may chain to a previous driver

Format of MRCREQUEST structure:
Offset	Size	Description	(Table 00728)
 00h	DWORD	pointer to source buffer
 04h	WORD	size of source buffer (0000h = 64K)
 06h	WORD	(UpdateCompress only)
		(call) offset in source buffer of beginning of changed data
		(ret) offset in destination buffer of beginning of changed
			  compressed data
 08h	DWORD	pointer to destination buffer
		must contain original compressed data for UpdateCompress
 0Ch	WORD	size of destination buffer (0000h = 64K)
		any compression: size of buffer for compressed data
		standard decompression: number of bytes to be decompressed
		incremental decompression: number of byte to decompress now
		(ret) actual size of resulting data
 0Eh	WORD	client compressed data storage allocation size
 10h	DWORD	incremental decompression state data
		set to 00000000h before first incremental decompression call
Notes:	the source and destination buffers may not overlap
	the source and destination buffer sizes should normally be the same
	application should not update the contents of the MRCREQUEST structure
	  between incremental decompression calls

Top
214402 - INT 21 - CD-ROM device driver - IOCTL INPUT
INT 21 - CD-ROM device driver - IOCTL INPUT
	AX = 4402h
	BX = file handle referencing character device for CD-ROM driver
	CX = number of bytes to read
	DS:DX -> control block (see #01449)
Return: CF clear if successful
	    AX = number of bytes actually read
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	the data returned depends on the first byte of the control block
	  (two bytes for functions 01h/07h/0Bh, see #01449); the remainder of
	  the control block is filled by the driver
	some device drivers support several subunits (that is more than one
	  drive) but it is not possible to distinguish between them with this
	  function; use INT 2F/AX=1510h or INT 2F/AX=0802h instead
	under Windows95, the "mscd$$$$" device cannot be opened so you cannot
	  obtain the handle required by this function: use INT 2F/AX=1510h
	  or INT 2F/AX=0802h instead
SeeAlso: AX=4403h"CD-ROM",INT 2F/AX=0802h,INT 2F/AX=1510h

(Table 01448)
Values for CD-ROM data being requested:
 00h	device driver header address
 01h	drive head location
 02h	reserved
 03h	error statistics
 04h	audio channel info
 05h	raw drive bytes (uninterpreted and device-specific)
 06h	device status
 07h	sector size
 08h	volume size
 09h	media change status
 0Ah	audio disk info
 0Bh	audio track info
 0Ch	audio Q-Channel info
 0Dh	audio sub-channel info
 0Eh	UPC code
 0Fh	audio status info

Format of CD-ROM control block:
Offset	Size	Description	(Table 01449)
 00h	BYTE	data being requested (see #01448)
---function 00h---
 01h	DWORD	device driver header address (see also AH=52h,#01646)
---function 01h---
 01h	BYTE	(call) addressing mode
		00h HSG
		01h Red Book
 02h	DWORD	current location of drive's head
		logical sector number in HSG mode
		frame/second/minute/unused in Red Book mode
		(HSG sector = minute * 4500 + second * 75 + frame - 150)
---function 03h---
 01h  N BYTEs	undefined as of 5 Aug 88 specification
---function 04h---
 01h	BYTE	input channel (0-3) for output channel 0
 02h	BYTE	volume for output channel 0
 03h	BYTE	input channel (0-3) for output channel 1
 04h	BYTE	volume for output channel 1
 05h	BYTE	input channel (0-3) for output channel 2
 06h	BYTE	volume for output channel 2
 07h	BYTE	input channel (0-3) for output channel 3
 08h	BYTE	volume for output channel 3
Notes:	output channels 0 and 1 are left and right, 2 and 3 are left prime and
	  right prime; a volume of 00h is off
	the default setting is for each input channel to be assigned to the
	  same-numbered output channel at full (FFh) volume
---function 05h---
 01h	BYTE	number of bytes read
 02h 128 BYTEs	buffer for drive bytes
---function 06h---
 01h	DWORD	device parameters (see #01450)
---function 07h---
 01h	BYTE	(call) read mode
		00h cooked
		01h raw
 02h	WORD	(return) sector size in bytes
---function 08h---
 01h	DWORD	volume size in sectors
BUGS:	Aztech device driver v1.10 and v1.27 (at least) return the last sector
	  number, i.e. total number of sectors - 1
	Windows95 returns the total number of sectors + 150 (see the Red Book
	  to HSG conversion formula at function 01h to understand why this
	  happens)
---function 09h---
 01h	BYTE	media change status
		00h don't know
		01h media unchanged
		FFh media has been changed
---function 0Ah---
 01h	BYTE	lowest audio track number
 02h	BYTE	highest audio track number
 03h	DWORD	start address of lead-out track (Red Book format)
--function 0Bh---
 01h	BYTE	(call) track number
 02h	DWORD	starting point of track (Red Book format)
 06h	BYTE	track control info
		bits 15,14,12: track type (notice: bits not contiguous!)
			000 two audio channels, no pre-emphasis
			001 two audio channels with pre-emphasis
			010 data track
			100 four audio channels, no pre-emphasis
			101 four audio channels with pre-emphasis
			other reserved
		bit 13: digital copy permitted
---function 0Ch---
 01h	BYTE	CONTROL and ADR byte (as received from drive)
 02h	BYTE	track number
 03h	BYTE	point or index
 04h	BYTE	minute	\
 05h	BYTE	second	 > running time within track
 06h	BYTE	frame	/
 07h	BYTE	zero
 08h	BYTE	"AMIN" or "PMIN"     \
 09h	BYTE	"ASEC" or "PSEC"      > running time on disk
 0Ah	BYTE	"AFRAME" or "PFRAME" /
---function 0Dh---
 01h	DWORD	starting frame address (Red Book format)
 05h	DWORD	transfer address
 09h	DWORD	number of sectors to read
Note:	copies 96 bytes of sub-channel info per sector into buffer
---function 0Eh---
 01h	BYTE	CONTROL and ADR byte
 02h  7 BYTEs	UPC/EAN code (13 BCD digits,low-order nybble of last byte is 0)
 09h	BYTE	zero
 0Ah	BYTE	"AFRAME"
---function 0Fh---
 ??? documentation not yet available
 01h	WORD	pause status (0000h not paused, 0001h paused)
 03h	DWORD	audio play start address
 07h	DWORD	??? audio play length or end address

Bitfields for CD-ROM device parameters:
Bit(s)	Description	(Table 01450)
 0	door open
 1	door unlocked
 2	supports raw reading in addition to cooked
 3	writable
 4	can play audio/video tracks
 5	supports interleaving
 6	reserved
 7	supports prefetch requests
 8	supports audio channel control
 9	supports Red Book addressing in addition to HSG
 10	audio is playing
 11	no disk in drive
 12	supports R-W subchannels

Top
214402 - INT 21 - Advanced SCSI Programming Interface (ASPI) - INTERFACE
INT 21 - Advanced SCSI Programming Interface (ASPI) - INTERFACE
	AX = 4402h
	BX = file handle for device "SCSIMGR$"
	CX = 0004h or 0005h (refer to notes below)
	DS:DX -> buffer for result (see #01452), set to zeros before call
Return: CF clear if successful
	    AX = 0004h or 0005h (refer to notes below)
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	the variant of the call requesting five bytes is an UNDOCUMENTED
	  extension supported by Adaptec's ASPI2DOS.SYS, ASPI4DOS.SYS, and
	  ASPI7DOS.SYS; if made of a host manager which does not support the
	  variant, only four bytes will be returned.  If the variant is
	  supported, Adaptec's WINASPI.DLL assumes that the host manager is
	  an "advanced" one which operates in either real or protected mode
	  (and thus does not require a DPMI INT 31/AX=0301h call to be invoked
	  from protected mode).	 Support of the five-byte variant also appears
	  to imply that an advanced ASPI host manager uses no temporary
	  storage space except the SRB (see #01454) and the stack, and that it
	  is fully reentrant.
	if called with a standard request for four bytes, even Adaptec's
	  advanced drivers return only the requested four bytes containing the
	  ASPI entry point address
	the function address is called with the address of a SCSI Request
	  Block (see #01454) on the stack and the caller must clean up the
	  stack
SeeAlso: AX=440Ch"ASPITAPE",INT 11/AH=FFh"WD7000"

Format of ASPI IOCTL result:
Offset	Size	Description	(Table 01452)
 00h	DWORD	function address
 04h	BYTE	number of SCSI host adapters supported by host manager

(Table 01453)
Values for ASPI request number:
 00h	"HA_INQ"	host adapter inquiry / extended host adapter inquiry
 01h	"GET_TYPE"	get device type
 02h	"EXEC_SIO"	execute SCSI I/O
 03h	"ABORT_SRB"	abort SRB
 04h	"RESET_DEV"	reset SCSI device
 05h	"SET_HAPRMS"	set host adapter parameters
 06h	get disk drive information
 7Fh	(Adaptec) get ASPI manager info?
Note:	request 7Fh is supported by all the Adaptec's DOS ASPI managers:
	  ASPI2DOS.SYS (for AHA-152x), ASPI4DOS.SYS (for AHA-154x/164x),
	  ASPI7DOS.SYS (for AIC-77xx), and ASPI8DOS.SYS (for AIC-78xx)

Format of SCSI Request Block (64 bytes):
Offset	Size	Description	(Table 01454)
 00h	BYTE	request number (see #01453)
 01h	BYTE	request status (see #01455)
 02h	BYTE	host adapter ID
 03h	BYTE	request flags (see #01456)
 04h	DWORD	reserved (0)
---request 00h---
 08h	BYTE	(ret) number of host adapters
 09h	BYTE	(ret) target adapter ID
 0Ah 16 BYTEs	(ret) SCSI manager ID
 1Ah 16 BYTEs	(ret) host adapter ID
 2Ah 16 BYTEs	(ret) host adapter-unique parameters (see #90010,#90011)
---extended request 00h---
 04h  2 BYTEs	(call) extended request signature 55h AAh
		(ret) if extended request supported, reply AAh 55h
 06h	WORD	(call) length of extended buffer at offset 3Ah
		(ret) number of bytes returned in extended buffer
 08h	BYTE	(ret) number of host adapters
 09h	BYTE	(ret) target adapter ID
 0Ah 16 BYTEs	(ret) SCSI manager ID
 1Ah 16 BYTEs	(ret) host adapter ID
 2Ah 16 BYTEs	(ret) host adapter-unique parameters
 3Ah  N BYTEs	extended buffer
		3Ah	WORD	features (see #01457)
		3Ch	WORD	maximum scatter/gather list length
		3Eh	DWORD	maximum SCIS data transfer size (0 = unlimited)
---request 01h---
 08h	BYTE	target ID
 09h	BYTE	logical unit number
 0Ah	BYTE	(ret) device type (see #01460)
---request 02h---
 08h	BYTE	target ID
 09h	BYTE	logical unit number
 0Ah	DWORD	data allocation length
		(ret) residual byte length (if supported and requested)
 0Eh	BYTE	sense allocation length
 0Fh	DWORD	data buffer pointer
 13h	DWORD	next request pointer (for linking)
 17h	BYTE	CDB length
 18h	BYTE	(ret) host adapter status (see #01454)
 19h	BYTE	(ret) target status (see #01459)
 1Ah	DWORD	post routine address (see #01466)
 1Eh	WORD	real mode Post DS
 20h	DWORD	SRB pointer
 24h	WORD	reserved
 26h	DWORD	SRB physical address
 2Ah 22 BYTEs	SCSIMGR$ workspace
 40h  N BYTEs	CCB, including sense data (20-24 bytes)
---request 03h---
 08h	DWORD	address of SRB to abort
---request 04h---
 08h	BYTE	target ID
 09h	BYTE	logical unit number
 0Ah 14 BYTEs	reserved
 18h	BYTE	(ret) host adapter status (see #01458)
 19h	BYTE	(ret) target status (see #01459)
 1Ah	DWORD	post routine address
 1Eh 34 BYTEs	workspace
---request 05h---
 08h 16 BYTEs	host adapter-unique parameters
---request 06h---
 08h	BYTE	target ID
 09h	BYTE	logical unit number
 0Ah	BYTE	disk drive flags (see #01461)
 0Bh	BYTE	INT 13h drive number
 0Ch	BYTE	preferred head number translation
 0Dh	BYTE	preferred sector size translation
 0Eh 10 BYTEs	reserved
---request 7Fh---
 08h	WORD	base I/O port address
 0Ah	BYTE	number of I/O ports used
 0Bh	BYTE	??? (01h returned for AHA-152x)
 0Ch	BYTE	interrupt level
 0Dh	BYTE	DMA channel
 0Eh	BYTE	(ASPI7DOS.SYS) EISA slot  number
		(ASPI8DOS.SYS) PCI device number
 0Fh	BYTE	bits 7-1: reserved (0)
		bit 0: (AHA-152x) ???
 10h	DWORD	ASPI entry point address
 14h	DWORD	previous ASPI entry point address
 18h	WORD	offset to "ASPI request dispatcher" procedure
 1Ah	WORD	offset to "interrupt handler" procedure
 1Ch	WORD	offset to some procedure
 1Eh	WORD	offset to some procedure
 20h	WORD	offset to host adapter data
 22h	BYTE	??? (apparently always 02h)
 23h	BYTE	reserved??? (0)
 24h	BYTE	(ASPI8DOS.SYS) PCI bus number?
 25h  11 BYTEs	reserved??? (0)
SeeAlso: #01462

(Table 01455)
Values for ASPI request status:
 00h	not done yet
 01h	completed successfully
 02h	aborted by host
 04h	SCSI I/O error
 80h	invalid
 81h	no adapter
 82h	no device attached
 else	status
SeeAlso: #01454

Bitfields for ASPI request flags:
Bit(s)	Description	(Table 01456)
 0	posting enabled
 1	linking enabled
 2	residual byte length reported in Data Allocation Length field
 3	transfer from SCSI target to host
 4	transfer from host to SCSI target
 5	scatter/gather
 7-6	reserved
Note:	no data is transferred if both bits 3 and 4 are set; if neither is
	  set, the direction is determined by the SCSI command
SeeAlso: #01454

Bitfields for ASPI extended features:
Bit(s)	Description	(Table 01457)
 0	scatter/gather supported
 1	residual byte length reported
 2	Wide SCSI 16 host adapter
 3	Wide SCSI 32 host adapter
 15-4	reserved
SeeAlso: #01454

(Table 01458)
Values for host adapter status:
 00h	no error detected
 11h	select timeout
 12h	data overrun
 13h	bus error
 14h	bus failure

(Table 01459)
Values for target status:
 00h	no status
 02h	sense data stored in SRB
 08h	target busy
 18h	reservation error

(Table 01460)
Values for device type:
 00h	disk drive
 01h	tape drive (streamer)
 02h	printer
 03h	processor
 04h	WORM drive
 05h	CD-ROM drive
 06h	scanner
 07h	optical drive
 08h	autochanger
 09h	communications device

(Table 01461)
Values for disk drive flags:
 00h	no INT 13 access
 01h	INT 13 with DOS access
 02h	INT 13 without DOS access
 03h	invalid flags

Format of CCB:
Offset	Size	Description	(Table 01462)
 00h	BYTE	command code (see #01463)
 01h	BYTE	flags
		bits 4-0: vary by function
		bits 7-5: logical unit number
 02h	BYTE	"adr_1"
 03h	BYTE	"adr_0"
 04h	BYTE	length
 05h	BYTE	control
	...
 06h/0Ah 14 BYTEs buffer for sense data (see #01464)
SeeAlso: #01454

(Table 01463)
Values for CCB command code:
 00h	test unit ready
 01h	rewind
 03h	request sense data
 05h	get block size limits
 08h	Group 0 read
 0Ah	Group 0 write
 10h	write file marks
 11h	SCSI Space (set position?)
 12h	SCSI Inquire
 15h	set mode information
 16h	reserve SCSI device
 17h	release SCSI device
 19h	erase
 1Ah	request mode information
 1Bh	load/unload media
 1Dh	request target self-check
 24h	set window parameters
 25h	get window parameters
 28h	Group 1 read
 2Ah	Group 1 write
 31h	document feeder control
 34h	get scan data status
---vendor-specific commands---
 D3h	get document feeder status
 D4h	set document feeder mode

Format of sense data:
Offset	Size	Description	(Table 01464)
 00h	BYTE	error code (bit 7 set if valid)
 01h	BYTE	segment number
 02h	BYTE	sense key
		bit 6: EOM
		bit 5: ILI
		bits 0-3: sense key (see #01465)
 03h  4 BYTEs	information bytes
 07h	BYTE	additional sense length (0Ah)
 08h  4 BYTEs	command-specific information
 0Ch	BYTE	additional sense code
 0Dh	BYTE	additional sense code qualifier
 0Eh	BYTE	field replaceable unit code
 0Fh  3 BYTEs	sense key specific bytes

(Table 01465)
Values for sense key:
 00h	no sense data
 02h	SCSI unit not ready
 03h	media error
 04h	unrecoverable hardware error
 05h	illegal parameter in CDB
 06h	target has been reset
 0Bh	target aborted command

(Table 01466)
Values ASPI post function is called with:
	STACK:	DWORD -> SRB (see #01454) which completed
	interrupts disabled
Return: EBP, EBX, ESI, EDI must be preserved
	interrupts disabled
Note:	the post function may issue any ASPI function except an abort; it
	  should complete as quickly as possible

Format of ASPI2DOS.SYS v3.65 host adapter unique parameters:
Offset	Size	Description	(Table 90010)
 00h	WORD	reserved? (0)
 02h	WORD	reserved? (0)
 04h	WORD	base I/O port address
 06h	BYTE	interrupt level
 07h  9 BYTEs	reserved  (0)
SeeAlso: #90011,#01454

Format of ASPI4DOS.SYS v3.35 host adapter unique parameters:
Offset	Size	Description	(Table 90011)
 00h	WORD	offset to "ASPI request dispatcher" procedure
 02h	WORD	offset to "interrupt handler" procedure
 04h 12 BYTEs	reserved  (0)
SeeAlso: #90010,#01454

Top
214402 - INT 21 - ATA Software Programming Interface (ATASPI) - INTERFACE
INT 21 - ATA Software Programming Interface (ATASPI) - INTERFACE
	AX = 4402h
	BX = file handle for device "$ATAMGR$"
	CX = 0004h (size of buffer in bytes)
	DS:DX -> buffer for result (see #90000), set to zeros before call
Return: CF clear if successful
	    AX = 0004h
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	ATASPI is an API to control IDE, EIDE, and ATAPI devices, proposed by
	  Future Domain; there's at least one driver in existence which
	  conforms to this specification: ATASPI16.SYS by Future Domain
	(see #90002) on the stack and the caller must clean up the stack
	Future Domain ATASPI16.SYS v2.2 performs ATASPI calls using INT 4Fh
	  interface instead of this INT 21/4402h interface and itself supports
	  both interfaces
SeeAlso: AX=4402h"ASPI",INT 4F/AX=0081h,INT 4F/AX=0082h,PORT 01F0h-01F7h"HDC1"

Format of ATASPI IOCTL result:
Offset	Size	Description	(Table 90000)
 00h	DWORD	ATASPI entry point address

(Table 90001)
Call ATASPI entry point with:
	STACK:	DWORD -> ATA Request Block (ARB) (see #90003)
Notes:	caller must clean up the stack
	the large-model C declaration is
	  void (*entry)(ARB_Struct *);
SeeAlso: #90000

(Table 90002)
Values for ATASPI command code:
 00h	ATA controller inquiry
 01h	get ATA device type
 02h	execute ATA I/O
 03h	abort ATA request
 04h	reset ATA device
 05h	set ATA controller parameter
 06h	get ATA disk drive information
SeeAlso: #90003

Format of ATA Request Block (ARB):
Offset	Size	Description	(Table 90003)
 00h	BYTE	command code (see #90002)
 01h	BYTE	(ret) status (see #90004)
 02h	BYTE	ATA controller number
 03h	BYTE	request flags (see #90005)
 04h	DWORD	reserved (0)
---request 00h---
 08h	BYTE	(ret) total number of ATA controllers
		valid only if ATA controller number = 0FFh
 09h	BYTE	reserved (0)
 0Ah 16 BYTEs	(ret) ATA manager ID
 1Ah 16 BYTEs	(ret) ATA controller ID
 2Ah 16 BYTEs	(ret) controller unique parameters (see #90010)
---request 01h---
 08h	BYTE	device ID (00h = master, 01h = slave)
 09h	BYTE	reserved (0)
 0Ah	BYTE	(ret) peripheral device type (see #90007)
---request 02h---
 08h	BYTE	device ID
 09h	BYTE	reserved (0)
 0Ah	DWORD	data  transfer length
		(ret) residual byte length
 0Eh	BYTE	sense allocation length (N)
 0Fh	DWORD	data  buffer pointer
 13h	DWORD	reserved (0)
 17h	BYTE	ACB length (M)
		for Task File requests must be set to 07h, for ATAPI Packet
		  requests must match the number of bytes in the packet
 18h	BYTE	(ret) ATA controller status (see #90006)
 19h	BYTE	(ret) device status
		value of the error register, 00h if no error (see #P0512)
 1Ah	DWORD	post routine  address (see #90009)
 1Eh	WORD	data transfer block size (in bytes)
		number of data bytes to transfer per hardware interrupt for Task
		  File requests; number of data bytes host prefers to transfer
		  per hardware interrupt for ATAPI Packet commands
 20h 32 BYTEs	reserved for ATASPI workspace
 40h  M BYTEs	ATA/ATAPI command block (ACB)
		contains AT Task File Structure (see #90008) if bit 2 of the
		  request flags is set, ATAPI packet (see #03236,#03237,#03238)
		  if bit 2 is cleared
40h+M N BYTEs	sense allocation area
---request 03h---
 08h	DWORD	address of ARB to be aborted
---request 04h---
 08h	BYTE	device ID
 09h 15 BYTEs	reserved (0)
 18h	BYTE	(ret) ATA controller status (see #90006)
 19h	BYTE	(ret) device status
 1Ah	DWORD	post routine address (see #90009)
 1Eh 34 BYTEs	reserved for ATASPI workspace
---request 05h---
 08h 16 BYTEs	controller unique parameters (vendor unique)
---request 06h---
 08h	BYTE	device ID
 09h	BYTE	reserved (0)
 0Ah	BYTE	(ret) drive flags (see #01461)
 0Bh	BYTE	(ret) INT 13h drive
 0Ch	BYTE	(ret) preferred head   translation
 0Dh	BYTE	(ret) preferred sector translation
 0Eh 10 BYTEs	reserved (0)

(Table 90004)
Values for ATASPI request status:
 00h	request in progress
 01h	request completed without error
 02h	request aborted by host
 04h	request completed with error
 80h	invalid	request
 81h	invalid ATA controller number
 82h	ATA device not installed
 83h	ATA controller/device busy
Note:	if ATASPI ever returns 83h as the status, it is the responsibility of
	  the driver/applications to re-send the request at a later time
SeeAlso: #90003

Bitfields for request flags:
Bit(s)	Description	(Table 90005)
 7	reserved (0)
 6	"ByteXfer"
	=0 use word transfer mode
	=1 use byte transfer mode
 5	(ATAPI device) DSC unavailable action (DUA)
	=0 queue the request and service it when DSC bit is set
	=1 return with status 83h
 4-3	direction
	00 direction determined by device
	01 data in
	10 data out
	11 no data transfer
 2	request type
	=0 ATAPI Packet Command
	=1 AT Task File Structure
 1	reserved (0)
 0	"Post"
	=0 disable posting
	=1 enable  posting
SeeAlso: #90003

(Table 90006)
Values for ATA controller status:
 00h	no error
 11h	device not present
 12h	data overrun/underrun
SeeAlso: #90003

(Table 90007)
Values for peripheral device type:
 00h	direct-access device (e.g. magnetic disk)
 01h	tape device (QIC-121 SCSI Architectural Model)
 02h-04h reserved
 05h	CD-ROM device
 06h	reserved
 07h	optical memory device (e.g. some optical disks)
 08h-0Bh reserved
 0Ch	tape device (Cost Sensitive Architectural Model)
 0Dh-1Eh reserved
 1Fh	unknown or no device type
 80h	non-ATAPI device
SeeAlso: #90003

Format of AT Task File Structure:
Offset	Size	Description	(Table 90008)
 00h	features register
 01h	sector count register
 02h	cylinder LSB register
 04h	cylinder MSB register
 05h	device/head  register (see #P0513)
 06h	command register (see #P0515)
SeeAlso: #90005

(Table 90009)
Values ATASPI post function is called with:
	STACK:	DWORD -> ARB (see #90003) which completed
	interrupts disabled
Return: EBP, EBX, ESI, EDI must be preserved
	interrupts disabled
Notes:	the post function may issue any ATASPI function except an abort; it
	  should complete as quickly as possible
	the large-model C declaration is
	  void (*post)(ARB_Struct *);
SeeAlso: #90003

Format of Future Domain controller unique parameters:
Offset	Size	Description	(Table 90010)
 00h	WORD	controller features
 02h	WORD	controller main I/O port
 04h	WORD	controller alternate I/O port
 06h	BYTE	controller IRQ
 07h	BYTE	??? (00h or 01h)
 08h	BYTE	??? (00h or 01h)
 09h  7 BYTEs	reserved (0)
SeeAlso: #90003

Top
214403 - INT 21 - CD-ROM device driver - IOCTL OUTPUT
INT 21 - CD-ROM device driver - IOCTL OUTPUT
	AX = 4403h
	BX = file handle referencing character device for CD-ROM driver
	CX = number of bytes to write
	DS:DX -> control block (see #01524)
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	some device drivers support several subunits (that is more than one
	  drive) but it is not possible to distinguish between them with this
	  function; use INT 2F/AX=1510h or INT 2F/AX=0802h instead
	under Windows95, the "mscd$$$$" device cannot be opened so you cannot
	  obtain the handle required by this function: use INT 2F/AX=1510h
	  or INT 2F/AX=0802h instead
SeeAlso: AX=4402h"CD-ROM",INT 2F/AX=0802h,INT 2F/AX=1510h

Format of CR-ROM control block:
Offset	Size	Description	(Table 01524)
 00h	BYTE	function code
		00h eject disk
		01h lock/unlock door
		02h reset drive
		03h control audio channel
		04h write device control string
		05h close tray
---functions 00h,02h,05h---
 no further fields
---function 01h---
 01h	BYTE	lock function
		00h unlock door
		01h lock door
---function 03h---
 01h	BYTE	input channel (0-3) for output channel 0
 02h	BYTE	volume for output channel 0
 03h	BYTE	input channel (0-3) for output channel 1
 04h	BYTE	volume for output channel 1
 05h	BYTE	input channel (0-3) for output channel 2
 06h	BYTE	volume for output channel 2
 07h	BYTE	input channel (0-3) for output channel 3
 08h	BYTE	volume for output channel 3
Note:	output channels 0 and 1 are left and right, 2 and 3 are left prime and
	  right prime; a volume of 00h is off
---function 04h---
 01h  N BYTEs	bytes to send directly to the CD-ROM drive without
		  interpretation

Top
214403 - INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
	AX = 4403h
	BX = handle for device "SCSITAPE"
	CX = number of bytes to write
	DS:DX -> SCSITAPE control block (see #01525)
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4405h"ST-01",INT 78/AH=10h

Format of SCSITAPE control block:
Offset	Size	Description	(Table 01525)
 00h	WORD	command type
		'F' Format (argument 1 = interleave, argument 2 = format type)
		'E' Erase
		'R' Rewind
		'L' Load
		'N' No Load
		'S' Space (argument 1 = count, argument 2 = type)
		'M' File Mark (argument 1 = count)
		'A' Reassign
 02h	WORD	argument 1
 04h	WORD	argument 2
 06h	WORD	segment of command buffer
 08h	WORD	offset of command buffer
 0Ah	WORD	length of command buffer

Top
214404 - INT 21 U - xDISK v3.31 - CONFIGURE
INT 21 U - xDISK v3.31 - CONFIGURE
	AX = 4404h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = 0047h (length of version string)
	DS:DX -> 79-byte buffer for version string and ???
	DS:0081h = commandline containing new switches for driver
Return: CF clear if successful
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: xDISK is a shareware resizeable EMS RAMdisk by FM de Monasterio
SeeAlso: AX=4405h"xDISK",INT 2F/AH=DDh/BX=7844h"xDISK"

Top
214404 - INT 21 - SFS v1.00 - GET CONFIGURATION INFORMATION
INT 21 - SFS v1.00 - GET CONFIGURATION INFORMATION
	AX = 4404h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = 001Ah (length of data packet)
	DS:DX -> buffer for data packet (see #01536)
Return: CF clear if successful
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: SFS (Secure FileSystem) is a shareware encrypting disk driver by
	  Peter C. Gutmann
SeeAlso: AX=4405h"SFS"

Format of SFS data packet:
Offset	Size	Description	(Table 01536)
 00h  4 BYTEs	signature string "SFS1"
 04h	WORD	SFS unit number (0-based)
 06h	WORD	drive on which the SFS volume is mounted
 08h	DWORD	sector offset of logical volume from start of physical volume
		0 if logical volume = physical volume
 0Ch	WORD	flag: 00h = no disk mounted, 01h = disk mounted
 0Eh	WORD	flag: 00h read/write, 01h read-only
 10h	WORD	quick-unmount hotkey
		(high byte = shift state, low = scan code) (see #00006)
 12h	WORD	auto-unmount time in minutes, or 0000h if already expired, or
		FFFFh if not set
 14h	WORD	time in minutes remaining before auto-unmount
 16h	WORD	internal driver check code
		0000h no error
		0001h driver consistency check failed
		0002h unit consistency check failed
 18h	WORD	disk access mode
		0000h BIOS
		0001h IDE direct access
		0002h SCSI direct access

Top
214405 - INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
	AX = 4405h
	BX = drive number (00h = default, 01h = A:, etc)
	CX = number of bytes to write
	DS:DX -> SCSIDISK control block (see also #01525 at AX=4403h"ST-01")
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4403h"ST-01"

Top
214405 - INT 21 U - xDISK v3.31 - ???
INT 21 U - xDISK v3.31 - ???
	AX = 4405h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = number of bytes to write
	DS:DX -> buffer containing version string
	???
Return: CF clear if successful
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: xDISK is a shareware resizeable EMS RAMdisk by FM de Monasterio
SeeAlso: AX=4404h"xDISK",INT 2F/AH=DDh/BX=7844h"xDISK"

Top
214405 - INT 21 - COMBI-disk v1.13 - CONTROL COMBI-disk
INT 21 - COMBI-disk v1.13 - CONTROL COMBI-disk
	AX = 4405h
	BL = drive number (00h = default, 01h = A:, etc) for RAM disk
	CX = number of bytes to write
	DS:DX -> buffer containing command packet (see #01539)
Return: CF clear if successful
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4404h"COMBI"

(Table 01538)
Values for COMBI-disk command code:
 80h	flush cache
 81h	change options byte
 82h	shrink memory
 83h	expand memory
 84h	get dirty block information
 85h	reset write errors
 86h	reset counters

Format of COMBI-disk command packet:
Offset	Size	Description	(Table 01539)
 00h	WORD	version
 02h	BYTE	command code (see #01538)
---command code 80h---
 no additional fields
---command code 81h---
 03h	BYTE	new options byte (see #01540)
---command code 82h---
 03h	WORD	number of KB to release
---command code 83h---
 03h	WORD	number of KB to expand
---command code 84h---
 03h	DWORD	-> buffer for block info (see #01541)
---command code 85h---
 03h	DWORD	block ID
---command code 86h---
 03h	BYTE	which counters to reset
		bit 0: hard disk read counts
		bit 1: hard disk write counts
		bit 2: RAM disk read/write counts
Note:	multiple commands may be placed in a single packet by stringing
	  together as many command/argument pairs as desired

Bitfields for COMBI-disk options byte:
Bit(s)	Description	(Table 01540)
 0	cache off
 1	cache frozen
 2	write caching enabled
 3	delayed writing disabled
 5	fix memory allocation (no XMS lending)
 6	no 'sector not found' error

Format of COMBI-disk block info:
Offset	Size	Description	(Table 01541)
 00h	DWORD	block ID
 04h	BYTE	bitmask of valid sectors in block
 05h	BYTE	bitmask of dirty sectors in block
 06h	BYTE	last error returned by BIOS
 07h	BYTE	number of errors

Top
214405 - INT 21 - SFS v1.00 - DRIVER CONTROL
INT 21 - SFS v1.00 - DRIVER CONTROL
	AX = 4405h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = number of bytes to write
	DS:DX -> data to write (see #01543)
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: SFS (Secure FileSystem) is a shareware encrypting disk driver by
	  Peter C. Gutmann
SeeAlso: AX=4404h"SFS"

(Table 01542)
Values for SFS control function:
 00h	"PACKET_SET_DISKINFO"	 set disk parameters
 01h	"PACKET_SET_KEYINFO"	 set keying information
 02h	"PACKET_SET_READONLY"	 select read/write or read-only
 03h	"PACKET_SET_DRIVENO"	 set drive number to mount
 04h	"PACKET_SET_MOUNTSTATUS" set mount status
 05h	"PACKET_SET_UNMOUNT"	 set/clear quick-unmount hotkey
 06h	"PACKET_SET_TIMEOUT"	 set/clear auto-unmount timeout

Format of SFS control data packet:
Offset	Size	Description	(Table 01543)
 00h	WORD	signature 4330h ('C0')
 02h	WORD	function (see #01542)
---function 00h---
 04h	WORD	sector size in bytes
 06h	BYTE	sectors per cluster
 07h	WORD	number of boot sectors
 09h	BYTE	number of copies of FAT
 0Ah	WORD	size of root directory in entries
 0Ch	WORD	number of sectors on disk, 16-bit
 0Eh	BYTE	media descriptor byte
 0Fh	WORD	sectors per FAT
 11h	WORD	sectors per track
 13h	WORD	number of heads
 15h	DWORD	number of hidden sectors
 19h	DWORD	number of sectors on disk, 32-bit
---function 01h---
 04h 20 BYTEs	master IV for encrypted disk
 18h 64 BYTEs	NDC/SHS keying information
---function 02h---
 04h	WORD	read-only state: 00h read-only, 01h read/write
---function 03h---
 04h	WORD	drive number (see #01544)
 06h	DWORD	sector offset of logical volume from start of physical volume
		0 if logical volume = physical volume
---function 04h---
 04h	WORD	mount status (00h unmounted, 01h mounted)
---function 05h---
 04h	WORD	hotkey (high byte = shift state, low byte = scan code or 00h)
		(see #00006)
		0000h to disable hotkey
---function 06h---
 04h	WORD	timeout in minutes before automatic unmount
		0000h to disable auto-unmount
Notes:	the data for function 00h corresponds to a DOS BPB (see AH=53h)
	functions 00h, 01h, and 03h automatically unmount the encrypted drive
	unmounting a drive with function 04h also destroys the encryption
	  information in the driver and forces all dirty buffers to be flushed

Bitfields for SFS drive number:
Bit(s)	Description	(Table 01544)
 15-12	drive access mode
	0000 BIOS access
	0001 direct IDE access
	0010 direct SCSI access
---if BIOS access---
 11-8	unused (0)
 7-0	BIOS drive number
---if IDE access---
 11-8	unused (0)
 7-0	IDE drive number
---if SCSI access---
 11-8	SCSI host number
 7-4	SCSI target ID
 3-0	SCSI logical unit number

Top
21440C - INT 21 - Greg Shenaut ASPITAPE.SYS - INTERFACE
INT 21 - Greg Shenaut ASPITAPE.SYS - INTERFACE
	AX = 440Ch
	BX = device handle
	CH = category code
	    07h tape (ASPITAPE.SYS)
	CL = function
	    01h "mtop" - perform tape operation
	    02h "mtget" - get tape status
	    03h ignore end-of-tape errors
	    04h enable end-of-tape errors
	DS:DX -> parameter block (see #01554,#01555)
Return: CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    DS:DX -> data block
Notes:	This device driver is a simple DOS interface to the Adaptec Advanced
	  SCSI Programming Interface (ASPI).  It provides the following device
	  names as access to the SCSI tape, 'RMTx' (rewind on close) and
	  'NRMTx' (NO rewind on close) where x can go from 0 to 3.  There may
	  also be the following names 'MTx' and 'NMTx' which default to 1024
	  byte blocks.	The names may also have a '$' appended to try and make
	  them unique from file names of 'RMT0' etc.
	once opend these devices must be put into RAW mode
SeeAlso: AX=4402h"ASPI"

Format of ASPITAPE.SYS mtop parameter block:
Offset	Size	Description	(Table 01554)
 00h	WORD	operation code
		00h "MTWEOF" - write an end-of-file record
		01h "MTFSF" - forward space file
		02h "MTBSF" - backward space file
		03h "MTFSR" - forward space record
		04h "MTBSR" - backward space record
		05h "MTREW" - rewind
		06h "MTOFFL" - rewind and unload
		07h "MTNOP" - perform TEST UNIT READY
 02h	DWORD	repetition count

Format of ASPITAPE.SYS mtget parameter block:
Offset	Size	Description	(Table 01555)
 00h	BYTE	ASPI host ID
 01h	BYTE	SCSI target ID
 02h	BYTE	SCSI logical unit number
 03h	BYTE	device parameters
		bit 0: drive must use fixed-block read and write
		bit 7: drive is an ASPI device
 04h	BYTE	current device state (see #01556)
 05h	BYTE	unit number within driver
 06h	WORD	fixed block blocksize
 08h	BYTE	last SCSI status
 09h	BYTE	last SCSI sense key
 0Ah	WORD	last SCSI opcode (packed) (see #01557)
 0Ch	WORD	residual bytes from SCSI opcode

Bitfields for ASPITAPE.SYS current device state:
Bit(s)	Description	(Table 01556)
 0	device currently opened in buffered mode
 1	drive currently opened in nonbuffered mode
 2	rewind drive on last close
 3	drive has been written on
 4	drive has been read from
 5	next read will return 0 bytes
 6	EOM will resemble EOF
 7	drive may be busy rewinding

Bitfields for SCSI opcode:
Bit(s)	Description	(Table 01557)
 0-7	SCSI operation (SCSI packet byte 0)
 8-10	SCSI flags (SCSI packet byte 1)
 11-12	ASPI "Direction Bits" (ASPI SRB byte 3)

Top
214410BXFFFF - INT 21 U - NewSpace - ENABLE DRIVER
INT 21 U - NewSpace - ENABLE DRIVER
	AX = 4410h
	BX = FFFFh
Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
	  all files as they are written and decompresses them as they are read
Note:	compressed files are not accessible unless the driver is enabled
SeeAlso: AX=4411h/BX=FFFFh

Top
214411BXFFFF - INT 21 U - NewSpace - DISABLE DRIVER
INT 21 U - NewSpace - DISABLE DRIVER
	AX = 4411h
	BX = FFFFh
Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
	  all files as they are written and decompresses them as they are read
Note:	compressed files are not accessible unless the driver is enabled
SeeAlso: AX=4410h/BX=FFFFh

Top
214412BXFFFF - INT 21 U - NewSpace - INSTALLATION CHECK???
INT 21 U - NewSpace - INSTALLATION CHECK???
	AX = 4412h
	BX = FFFFh
Return: AX = PSP segment of NewRes (resident driver for NewSpace)
	BX:DX -> ???
	CX = ???
SeeAlso: AX=4411h/BX=FFFFh

Top
214413BXFFFF - INT 21 U - NewSpace - GET ???
INT 21 U - NewSpace - GET ???
	AX = 4413h
	BX = FFFFh
Return: AX = code segment of NewRes (resident driver for NewSpace)
	BX = offset of ???
SeeAlso: AX=4412h/BX=FFFFh

Top
214414BXFFFF - INT 21 U - NewSpace - DEBUGGING DUMP
INT 21 U - NewSpace - DEBUGGING DUMP
	AX = 4414h
	BX = FFFFh
Return: debugging dump written to X:\NEWSPACE.SMP
SeeAlso: AX=4413h/BX=FFFFh,AX=44FFh/BX=FFFFh

Top
2144FFBXFFFF - INT 21 U - NewSpace - ???
INT 21 U - NewSpace - ???
	AX = 44FFh
	BX = FFFFh
	DX = ???
Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
	  all files as they are written and decompresses them as they are read
SeeAlso: AX=4414h/BX=FFFFh

Top
2169FFDX0000 - INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
	AX = 69FFh
	DX = 0000h
	BX = CB00h (magic value)
Return: ES:BX -> CUBITR.EXE handler for INT 21
InstallCheck:	test that the first eight bytes at the returned interrupt
	  handler are EBh 07h "CUBITR" (a short jump around the signature
	  followed by the signature)
Note:	the byte following the signature (i.e. ES:[BX+8]) indicates whether
	  CUBITR is active (01h) or disabled (00h)
SeeAlso: AX=69FFh/DX=CFBFh
Index:	installation check;CUBIT

Top
2169FFDXCFBF - INT 21 U - CUBIT v4.00 - UNINSTALL
INT 21 U - CUBIT v4.00 - UNINSTALL
	AX = 69FFh
	DX = CFBFh
	CX = EFCFh
	BX = CB00h (magic value)
Return: ES:BX -> CUBITR.EXE handler for INT 21
	CX = status
	    2020h successful
	    2222h failed
Note:	if DX is neither 0000h nor CFBFh on entry, some other code is executed
SeeAlso: AX=69FFh/DX=0000h

Top
21DC - INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
	AH = DCh
	DX = state
	    0000h turn on
	    0001h turn off
SeeAlso: AX=FEDCh

Top
21FEDC - INT 21 - PCMag PCMANAGE/DCOMPRES - INSTALLATION CHECK
INT 21 - PCMag PCMANAGE/DCOMPRES - INSTALLATION CHECK
	AX = FEDCh
Return: AX = CDEFh if installed
Program: the PCMANAGE/DCOMPRES combination from PC Magazine permits
	  infrequently-used files to be compressed to save space and
	  transparently expanded when accessed
SeeAlso: AH=DCh,INT 2D/AL=10h"dLite"

Top
2D--10 - INT 2D - dLite 1.0+ - GET PARAMETER BLOCK ADDRESS
INT 2D - dLite 1.0+ - GET PARAMETER BLOCK ADDRESS
	AL = 10h
	AH = AMIS multiplex number for dLite
Return: CF clear if successful
	    ES:BX -> parameter block (see #02577)
	CF set on error
Program: dLite is a shareware TSR by Rainer Schuetze which transparently
	  expands compressed files when they are read
SeeAlso: AL=11h"dLite",AL=12h"dLite",INT 21/AX=FEDCh"PCMANAGE"

Format of dLite parameter block:
Offset	Size	Description	(Table 02577)
 00h	BYTE	TSR flags (see #02578)
 01h	WORD	maximum number of programs needing original filesize
 03h	WORD	current number of programs needing original filesize
 05h	WORD	maximum number of files that can be handled by dLite (should
		  be the same as FILES= in CONFIG.SYS)
 07h	WORD	offset (in the same segment as the parameter block) of the
		  table of programs needing the original filesize (8 bytes
		  each,	without path or extension, uppercase, and zero \
		  terminated if	shorter than 8 bytes)

Bitfields for dLite TSR flags:
Bit(s)	Description	(Table 02578)
 0	deny FCB access
 1	dLite sleeping rather than activated
 2	always indicate original filesize when reading directory entries,
	  rather than only for specified programs
 3-7	reserved
SeeAlso: #02577

Top
2D--11 - INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET ORIGINAL SIZE
INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET ORIGINAL SIZE
	AL = 11h
	AH = AMIS multiplex number for dLite
	BX = file handle
Return: CF clear if successful
	    DX:AX = size of uncompressed file
	CF set on error (not dPressed file)
SeeAlso: AL=10h"dLite",AL=12h"dLite"

Top
2D--12 - INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET COMPRESSED SIZE
INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET COMPRESSED SIZE
	AL = 12h
	AH = AMIS multiplex number for dLite
	BX = file handle
Return: CF clear if successful
	    DX:AX = size of compressed file
	CF set on error (not dPressed file)
SeeAlso: AL=10h"dLite",AL=11h"dLite"

Top
2F1001 - INT 2F U - DR DOS 6.0+ FDOS EXTENSIONS - INSTALL FDOS HOOK (SHARE / DELWATCH)
INT 2F U - DR DOS 6.0+ FDOS EXTENSIONS - INSTALL FDOS HOOK (SHARE / DELWATCH)
	AX = 1001h
	DX:BX -> new FDOS stub entry function
Return: nothing
Notes:	the default handler for the pointer set by this call under DELWATCH
	  simply returns with CF set
	In Digital Research terminology FDOS is the part of the BDOS kernel
	  (IBMDOS.COM) responsible for the file system and related tasks, and
	  its functionality is also used by the BDOS kernel itself. However,
	  for reasons of performance and code size, it uses direct calling.
	This interrupt allows external components like SHARE file locking or
	  DELWATCH delete tracking software to hook into the internal backdoor
	  INT 2F/AH=10h/AL<=09h chain in the kernel, so that they can actually
	  allows the kernel to ensure that several conditions are met when
	  passing control to these registered components including proper
	  maintaining A20, re-enterancy, or critical section mutexing
	  (e.g. getting the disk sub-system queue "MXdisk").
	The default handler in the BDOS just sets the carry flag and returns.
	Currently known clients to this shared interface are DR DOS 6.0
	  SHARE 1.xx, DR DOS 6.0+ DELWATCH 1.00+, which both chain onto
	  the same call far address, and the version of AddStor's SuperStor
	  which is bundled with DR DOS 6.0
	However, the DR PalmDOS, and Novell DOS 7 - DR-DOS 7.03 SHARE 2.00-2.05
	  do not use this function to hook into the system. Instead they fix up
	  the share stubs directly. DR PalmDOS SHARE 2.00 uses the stubs at
	  Table !!! INT 21/AH=52h, while Novell DOS 7 - DR-DOS 7.03
	  SHARE 2.01-2.05 use the private set of share stubs at Table !!! at
	  INT 21/AX=4458h).  Future releases may possibly again fix up the
	  share stubs at INT 21/AH=52h.
SeeAlso: AX=1000h,AX=F800h

Top
2F1010CX0000 - INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - SUPERSTOR - QUERY PHYS FREE SPACE
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - SUPERSTOR - QUERY PHYS FREE SPACE
	AX = 1010h
	CX = 0000h
Return: CX = free space
	    0000h if no physical space left on the drive
	    else there is still space available
Notes:	This private function is internally called by the FDOS part of the
	  OS kernel on "out of disk space" conditions.  It allows optimized
	  behaviour of DELWATCH delete tracking software in conjunction with
	  disk compression, and was implemented for SuperStor (but it would
	  also work with other disk compression if they hook this function).
	  If there truly is no physical space left on the drive, the FDOS asks
	  DELWATCH to purge files in its queue until enough space has been
	  freed, or there actually is no free disk space any more.
	By using the INT 2F/AX=1001h FDOS hook, the call can be intercepted by
	  external system components such as SuperStor, bundled with DR DOS
	  "Panther" and Novell DOS 7 BETAs.
	This function must under no circumstances be called by applications!
SeeAlso: INT 2F/AX=1001h,AX=10FEh

Top
2F1100SFDADA - INT 2F - MSCDEX (MS CD-ROM Extensions) - INSTALLATION CHECK
INT 2F - MSCDEX (MS CD-ROM Extensions) - INSTALLATION CHECK
	AX = 1100h subfn DADAh
	STACK: WORD DADAh
Return: AL = status
	    00h not installed, OK to install
		STACK unchanged
	    01h not installed, not OK to install
		STACK unchanged
	    FFh installed
		STACK: WORD	ADADh if MSCDEX installed
				DADBh if Lotus CD/Networker installed
Note:	although MSCDEX sets the stack word to ADADh on return, any value other
	  than DADAh is considered to mean that MSCDEX is already installed;
	  Lotus CD/Networker v4+ uses this feature to fool MSCDEX into
	  thinking it is already installed when it is in fact CD/Networker
	  that is installed
Index:	installation check;Lotus CD/Networker
Index:	Lotus CD/Networker;installation check

Top
2F1500BX0000 - INT 2F - CD-ROM - INSTALLATION CHECK
INT 2F - CD-ROM - INSTALLATION CHECK
	AX = 1500h
	BX = 0000h
Return: BX = number of CD-ROM drive letters used
	CX = starting drive letter (0=A:)
	AX = 15FFh (Novell DOS 7 NWCDEX only!)
Notes:	this installation check DOES NOT follow the format used by other
	  software
	this installation check conflicts with the DOS 4.00 GRAPHICS.COM
	  installation check
BUG:	this function may return an incorrect starting drive letter when
	  INTERLNK is installed
SeeAlso: AX=150Ch,AX=15FFh,INT 2F/AX=D000h"Lotus"

Top
2F1501 - INT 2F - CD-ROM - GET DRIVE DEVICE LIST
INT 2F - CD-ROM - GET DRIVE DEVICE LIST
	AX = 1501h
	ES:BX -> buffer to hold drive letter list (5 bytes per drive letter)
Return: buffer filled, for each drive letter
	  BYTE	subunit number in driver
	  DWORD address of device driver header (see #01646)
Note:	reportedly returns AX=0000h and an invalid address under Windows95;
	  other reports say it works fine
SeeAlso: AX=1510h

Top
2F1502 - INT 2F - CD-ROM - GET COPYRIGHT FILE NAME
INT 2F - CD-ROM - GET COPYRIGHT FILE NAME
	AX = 1502h
	ES:BX -> 38-byte buffer for name of copyright file
	CX = drive number (0=A:)
Return: CF set if drive is not a CD-ROM drive
	    AX = 000Fh (invalid drive)
	CF clear if successful
SeeAlso: AX=1503h

Top
2F1503 - INT 2F - CD-ROM - GET ABSTRACT FILE NAME
INT 2F - CD-ROM - GET ABSTRACT FILE NAME
	AX = 1503h
	ES:BX -> 38-byte buffer for name of abstract file
	CX = drive number (0=A:)
Return: CF set if drive is not a CD-ROM drive
	    AX = 000Fh (invalid drive)
	CF clear if successful
SeeAlso: AX=1502h,AX=1504h

Top
2F1504 - INT 2F - CD-ROM - GET BIBLIOGRAPHIC DOC FILE NAME
INT 2F - CD-ROM - GET BIBLIOGRAPHIC DOC FILE NAME
	AX = 1504h
	ES:BX -> 38-byte buffer for name of bibliographic documentation file
	CX = drive number (0=A:)
Return: CF set if drive is not a CD-ROM drive
	    AX = 000Fh (invalid drive)
	CF clear if successful
SeeAlso: AX=1502h,AX=1503h

Top
2F1505 - INT 2F - CD-ROM - READ VTOC
INT 2F - CD-ROM - READ VTOC
	AX = 1505h
	ES:BX -> 2048-byte buffer
	CX = drive number (0=A:)
	DX = sector index (0=first volume descriptor,1=second,...)
Return: CF set on error
	    AX = error code (15=invalid drive,21=not ready)
	CF clear if successful
	    AX = volume descriptor type (1=standard,FFh=terminator,0=other)
Note:	This function was not supported by Novell DOS 7 NWCDEX prior to the
	  08/16/94 update

Top
2F1506 - INT 2F - CD-ROM - TURN DEBUGGING ON
INT 2F - CD-ROM - TURN DEBUGGING ON
	AX = 1506h
	BX = debugging function to enable
Note:	reserved for development
SeeAlso: AX=1507h

Top
2F1507 - INT 2F - CD-ROM - TURN DEBUGGING OFF
INT 2F - CD-ROM - TURN DEBUGGING OFF
	AX = 1507h
	BX = debugging function to disable
Note:	reserved for development
SeeAlso: AX=1506h

Top
2F1508 - INT 2F - CD-ROM - ABSOLUTE DISK READ
INT 2F - CD-ROM - ABSOLUTE DISK READ
	AX = 1508h
	ES:BX -> buffer
	CX = drive number (0=A:)
	SI:DI = starting sector number
	DX = number of sectors to read
Return: CF set on error
	    AL = error code (0Fh invalid drive,15h not ready)
	CF clear if successful
Note:	returns error 15h (not ready) under Windows95 if the starting sector
	  number is less than 10h
SeeAlso: AX=1509h

Top
2F1509 - INT 2F - CD-ROM - ABSOLUTE DISK WRITE
INT 2F - CD-ROM - ABSOLUTE DISK WRITE
	AX = 1509h
	ES:BX -> buffer
	CX = drive number (0=A:)
	SI:DI = starting sector number
	DX = number of sectors to write
Note:	corresponds to INT 26h and is currently reserved and nonfunctional,
	  but could be implemented for CD-R and CD-RW drives
SeeAlso: AX=1508h

Top
2F150A - INT 2F - CD-ROM - RESERVED
INT 2F - CD-ROM - RESERVED
	AX = 150Ah

Top
2F150B - INT 2F - CD-ROM v2.00+ - DRIVE CHECK
INT 2F - CD-ROM v2.00+ - DRIVE CHECK
	AX = 150Bh
	CX = drive number (0=A:)
Return: BX = ADADh if MSCDEX.EXE installed
	    AX = support status
		0000h if drive not supported
		nonzero if supported
SeeAlso: AX=150Dh

Top
2F150CBX0000 - INT 2F - CD-ROM v2.00+ - GET MSCDEX.EXE VERSION (GET VERSION)
INT 2F - CD-ROM v2.00+ - GET MSCDEX.EXE VERSION (GET VERSION)
	AX = 150Ch
	BX = 0000h
Return: BH = major version
	BL = minor version
Notes:	MSCDEX.EXE versions prior to 2.00 leave BX unchanged, thus BX should
	  be 0000h on entry
	Corel's CORELCDX.COM v1.01d returns 2.20, v1.12a returns 2.21
	Meridian Data's CDNETEX.EXE returns its own version number, e.g. 4.70
	J.M.A. Hall's CDEMU2.COM returns 2.10 (it is an MSCDEX emulator for
	  networked CD-ROM drives)
	Windows95 returns v2.95
	Novell DOS 7 NWCDEX.EXE returns the same version number reported in
	  its startup message
SeeAlso: AX=1500h"CD-ROM",AX=15FFh"CORELCDX"

Top
2F150D - INT 2F - CD-ROM v2.00+ - GET CD-ROM DRIVE LETTERS
INT 2F - CD-ROM v2.00+ - GET CD-ROM DRIVE LETTERS
	AX = 150Dh
	ES:BX -> buffer for drive letter list (1 byte per drive)
Return: buffer filled with drive numbers (0=A:).  Each byte corresponds
	to the drive in the same position for function 1501h
SeeAlso: AX=150Bh

Top
2F150E - INT 2F - CD-ROM v2.00+ - GET/SET VOLUME DESCRIPTOR PREFERENCE
INT 2F - CD-ROM v2.00+ - GET/SET VOLUME DESCRIPTOR PREFERENCE
	AX = 150Eh
	BX = subfunction
	    00h get preference
		DX = 0000h
		Return: DX = preference settings
	    01h set preference
		DH = volume descriptor preference
		    01h = primary volume descriptor
		    02h = supplementary volume descriptor
		DL = supplementary volume descriptor preference
		    01h = shift-Kanji
	CX = drive number (0=A:)
Return: CF set on error
	    AX = error code (15=invalid drive,1=invalid function)
	CF clear if successful

Top
2F150F - INT 2F - CD-ROM v2.00+ - GET DIRECTORY ENTRY
INT 2F - CD-ROM v2.00+ - GET DIRECTORY ENTRY
	AX = 150Fh
	CL = drive number (0=A:)
	CH bit 0 = copy flag
		clear if direct copy
		set if copy to structure which removes ISO/High Sierra diffs
	ES:BX -> ASCIZ path name
	SI:DI -> buffer for directory entry (see #02628,#02629)
		must be 255 bytes for direct copy, 285 bytes for canonical
Return: CF set on error
	    AX = error code
	CF clear if successful
	    AX = disk format (0=High Sierra,1=ISO 9660)
Note:	this function was not supported by Novell DOS 7 NWCDEX prior to the
	  08/16/94 update

Format of CD-ROM directory entry (direct copy):
Offset	Size	Description	(Table 02628)
 00h	BYTE	length of directory entry
 01h	BYTE	length of XAR in Logical Block Numbers
 02h	DWORD	LBN of data, Intel (little-endian) format
 06h	DWORD	LBN of data, Motorola (big-endian) format
 0Ah	DWORD	length of file, Intel format
 0Eh	DWORD	length of file, Motorola format
---High Sierra---
 12h  6 BYTEs	date and time
 18h	BYTE	bit flags
 19h	BYTE	reserved
---ISO 9660---
 12h  7 BYTEs	date and time
		(seventh byte is offset from GMT in 15-minute increments)
 19h	BYTE	bit flags
---both formats---
 1Ah	BYTE	interleave size
 1Bh	BYTE	interleave skip factor
 1Ch	WORD	volume set sequence number, Intel format
 1Eh	WORD	volume set sequence number, Motorola format
 20h	BYTE	length of file name
 21h  N BYTEs	file name
	BYTE	(optional) padding if filename is odd length
      N BYTEs	system data
SeeAlso: #02629,#01352

Format of CD-ROM directory entry (canonicalized):
Offset	Size	Description	(Table 02629)
 00h	BYTE	length of XAR in Logical Block Numbers
 01h	DWORD	Logical Block Number of file start
 05h	WORD	size of disk in logical blocks
 07h	DWORD	file length in bytes
 0Bh  7 BYTEs	date and time
 12h	BYTE	bit flags
 13h	BYTE	interleave size
 14h	BYTE	interleave skip factor
 15h	WORD	volume set sequence number
 17h	BYTE	length of file name
 18h 38 BYTEs	ASCIZ filename
 3Eh	WORD	file version number
 40h	BYTE	number of bytes of system use data
 41h 220 BYTEs	system use data
SeeAlso: #02628

Top
2F1510 - INT 2F - CD-ROM v2.10+ - SEND DEVICE DRIVER REQUEST
INT 2F - CD-ROM v2.10+ - SEND DEVICE DRIVER REQUEST
	AX = 1510h
	CX = CD-ROM drive letter (0 = A, 1 = B, etc)
	ES:BX -> CD-ROM device driver request header (see #02597 at AX=0802h)
Return: CF clear if device driver has been called (check the request header's
	      status word to determine whether an error has occurred)
	    ES:BX request header updated
	CF set if device driver has not been called
	    AX = error code (000Fh = invalid drive, 0001h = invalid function)
	    ES:BX request header unchanged
Notes:	MSCDEX initializes the device driver request header's subunit field
	  based on the drive number specified in CX
	MSCDEX v2.21 through v2.25 (at least) return error code AX=0001h if
	  nested calls are attempted
BUGS:	Novell DOS 7 NWCDEX prior to the 12/13/94 update did not initialize
	  the subunit field
	Windows95 sets CF if CX isn't a CD-ROM drive but leaves CF unchanged
	  if the drive is in fact a CD-ROM
SeeAlso: AX=0802h

Top
2F15FFBX0000 - INT 2F - CD-ROM - CORELCDX - INSTALLATION CHECK
INT 2F - CD-ROM - CORELCDX - INSTALLATION CHECK
	AX = 15FFh
	BX = 0000h
Return: BX = ABCDh if CORELCDX loaded
Note:	Corel's CORELCDX.COM is a replacement for MSCDEX.EXE; it also supports
	  the standard MSCDEX installation check calls AX=1500h and AX=150Ch
SeeAlso: AX=1500h"CD-ROM",AX=150Ch

Top
2F5700 - INT 2F U - IOMEGA DRIVERS - INSTALLATION CHECK
INT 2F U - IOMEGA DRIVERS - INSTALLATION CHECK
	AX = 5700h
	BX = program ID??? (0201h used by GUEST.EXE)
	DX = 496Fh ('Io')
Return: AL = status
	    00h not installed
	    FFh installed
SeeAlso: AX=5701h,AX=5710h,AX=5711h,AX=5712h

Top
2F5701 - INT 2F U - IOMEGA DRIVERS - SECONDARY INSTALLATION CHECK
INT 2F U - IOMEGA DRIVERS - SECONDARY INSTALLATION CHECK
	AX = 5701h
	BX = program ID??? (0201h used by GUEST.EXE)
	DX = 496Fh ('Io')
Return: AX = 0001h if GUEST.EXE installed
SeeAlso: AX=5700h,AX=5710h,AX=5711h,AX=5712h

Top
2F5710 - INT 2F U - IOMEGA DRIVERS - GET DRIVER INFORMATION???
INT 2F U - IOMEGA DRIVERS - GET DRIVER INFORMATION???
	AX = 5710h
	BX = program ID??? (0201h used by GUEST.EXE)
	DX = 496Fh ('Io')
Return: AX = ??? (BX ORed with ???)
	BX = ??? (internal variable)
	CX = ??? (internal variable)
	DX = ??? (CX ORed with ???)
SeeAlso: AX=5700h,AX=5701h,AX=5711h,AX=5712h

Top
2F5711 - INT 2F U - IOMEGA DRIVERS - LOCK MEDIA IN DRIVE
INT 2F U - IOMEGA DRIVERS - LOCK MEDIA IN DRIVE
	AX = 5711h
	BX = program ID??? (0201h used by GUEST.EXE)
	DX = 496Fh ('Io')
Return: CF clear if successful (storage medium in drive)
	    AX = new lock count
	CF set on error (drive empty)
SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5712h

Top
2F5712 - INT 2F U - IOMEGA DRIVERS - UNLOCK MEDIA IN DRIVE / EJECT
INT 2F U - IOMEGA DRIVERS - UNLOCK MEDIA IN DRIVE / EJECT
	AX = 5712h
	BX = program ID??? (0201h used by GUEST.EXE)
	DX = 496Fh ('Io')
Return: AX = new lock count (00h = unlocked)
Note:	if the lock count was already zero, the storage medium is ejected
	  from the drive
SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5711h

Top
2F7200 - INT 2F - SRDISK v1.30+ - INSTALLATION CHECK
INT 2F - SRDISK v1.30+ - INSTALLATION CHECK
	AX = 7200h
Return: AL = FFh if installed
	    ES = segment of device driver header (see #02856)
Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
SeeAlso: AX=7201h

Format of SRDISK device driver header:
Offset	Size	Description	(Table 02856)
 00h 10 BYTEs	same as standard device driver header
		  (see #01646 at INT 21/AH=52h)
 0Ah	BYTE	number of subunits (drives) supported by driver
 0Bh  3 BYTEs	signature "SRD"
 0Eh  4 BYTEs	memory type string ("XMS "/"EMS ")
 12h  4 BYTEs	ASCII driver version string "N.NN"
 16h	BYTE	00h
 17h	BYTE	configuration format version (currently 00h or 01h)
 18h	WORD	offset of drive configuration data
SeeAlso: #01646

Top
2F7201 - INT 2F - SRDISK v2.02 - GET CODE/DATA SEGMENT
INT 2F - SRDISK v2.02 - GET CODE/DATA SEGMENT
	AX = 7201h
Return: AL = FFh if installed
	    ES = segment of device driver header (see #02856)
Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
SeeAlso: AX=7200h

Top
2F7F00 - INT 2F - Jim Harper's CD-ROM redirector SCSI driver - INSTALLATION CHECK
INT 2F - Jim Harper's CD-ROM redirector SCSI driver - INSTALLATION CHECK
	AX = 7F00h
Return: AL = FFh if installed
SeeAlso: AX=7F01h"Harper",AX=7F02h"Harper",AX=7F03h"Harper"

Top
2F7F01 - INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO COMMAND
INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO COMMAND
	AX = 7F01h
	DS:DX -> command record (see #02927)
Return: AL = status
	    00h successful
	    else error code
SeeAlso: AX=7F00h"Harper",AX=7F02h"Harper",INT 11/AH=FFh"SDLP"
SeeAlso: INT 21/AX=4402h"ASPI",INT 4F/AX=8100h

Format of CD-ROM redirector command record:
Offset	Size	Description	(Table 02927)
 00h	BYTE	ID
 01h 10 BYTEs	CDB (Command Descriptor Block) for operation (see #03236,#03237)
 0Bh	WORD	segment of buffer
 0Dh	WORD	offset of buffer
 0Fh	BYTE	status
 10h	BYTE	sense
 12h	WORD	count

Top
2F7F02 - INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO RESET
INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO RESET
	AX = 7F02h
SeeAlso: AX=7F00h,AX=7F01h

Top
2F7F03 - INT 2F - Jim Harper's CD-ROM redirector SCSI driver - UNINSTALL
INT 2F - Jim Harper's CD-ROM redirector SCSI driver - UNINSTALL
	AX = 7F03h
Return: AL = status
	    00h successful
	    01h unable to uninstall
SeeAlso: AX=7F00h

Top
2FAFDE - INT 2F - Disk-Emu - INSTALLATION CHECK / GET VERSION
INT 2F - Disk-Emu - INSTALLATION CHECK / GET VERSION
	AX = AFDEh
	ES:DI -> 14-byte buffer for data (see #02979)
Return: AX = CFDEh (Carlos Fernandez Disk-Emu) if installed
	    BX = version (BH = major, BL = minor)

Format of Disk-Emu information data:
Offset	Size	Description	(Table 02979)
 00h	BYTE	number of tracks
 01h	BYTE	sectors per track
 02h	WORD	bytes per sector
 04h	BYTE	number of heads
 05h	BYTE	flag: 00h inactive, 01h active
 06h	BYTE	write protection (00h none, 01h full, 02h pseudo)
 07h	BYTE	saved (00h some unsaved data, 01h all data saved)
 08h	BYTE	disk in memory (00h no, 01h yes)
 09h	WORD	EMS handle
 0Bh	WORD	XMS handle
 0Dh	BYTE	memory type used for disk (00h XMS, 01h EMS)

Top
2FC300 - INT 2F - SETWPR.COM - INSTALLATION CHECK
INT 2F - SETWPR.COM - INSTALLATION CHECK
	AX = C300h
Return: AL = FFh if installed
Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
SeeAlso: AX=C302h"SETWPR"

Top
2FC302 - INT 2F - SETWPR.COM - SET WRITE-PROTECTION STATE
INT 2F - SETWPR.COM - SET WRITE-PROTECTION STATE
	AX = C302h
	BL = new state
	    00h disk may be written
	    01h disk write-protected
Return: AL = FFh if installed
Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
SeeAlso: AX=C300h"SETWPR"

Top
2FC64CBX5553 - INT 2F U - Smart Prompt - INSTALLATION CHECK
INT 2F U - Smart Prompt - INSTALLATION CHECK
	AX = C64Ch
	BX = 5553h
Return: AX = 4CC6h if installed
	BX = 5355h if installed
Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which
	  forces an immediate flush of SmartDrive's (and compatible caches')
	  buffers on returning to the DOS prompt

Top
2FD8C0 - INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
	AX = D8C0h
Return: AL = FFh if installed
	    CL = memory type (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
	    DH = major version (01h for v1.1)
	    DL = minor version (01h for v1.1)
	    ES:DI -> private API entry point (see #03091)
Program: NWCACHE is the disk cache included with Personal NetWare,
	    Novell DOS 7, Caldera OpenDOS 7.01, DR-OpenDOS 7.02, DR-DOS 7.02,
	    and Caldera Thin Clients/Lineo DR-DOS 7.03.
Note:	This function is called by the NetWare Lite and Personal NetWare
	  SERVER.  It may also be called by future (post DR-DOS 7.03)
	  COMMAND.COM before it returns to the prompt.
BUG:	Some pre-BETA 17 (1993/09/28) versions of NWCACHE returned -1,0,1
	  instead of 1,2,3 for the memory type in CL.
SeeAlso: AX=D800h,AX=D880h

(Table 03091)
Call NLCACHE/NWCACHE "sideband function" API entry point with:
	BX = function
	    0000h flush request from server
		Return: CF clear if successful at flushing deferred writes
			    AX = 0000h
			CF set on error
			    AX = error code
	    0001h (NWCACHE only) get cache statistics
		ES:DI -> buffer for statistics (see #04122)
		Return: CF clear if successful
			AX = 0000h
			ES:DI buffer filled
	    other
		Return: CF set
			AX = 0001h (invalid function)

Format of NWCACHE cache statistics:
Offset	Size	Description	(Table 04122)
 00h	WORD	version
 02h	BYTE	memory type
 03h	WORD	initial cache size in KB
 05h	WORD	current cache size in KB
 07h	DWORD	number of read requests
 0Bh	DWORD	number of physical reads performed
 0Fh	DWORD	number of write requests
 13h	DWORD	number of physical writes performed
 17h	BYTE	delay ticks for deferred write (0 if no deferral)
 18h	WORD	maximum number of sectors in lookahead buffer
 1Ah	WORD	number of disk errors
 1Ch	WORD	number of cache memory errors
SeeAlso: #03091

Top
2FDD--BX7844 - INT 2F - xDISK v3.32+ - INSTALLATION CHECK
INT 2F - xDISK v3.32+ - INSTALLATION CHECK
	AH = DDh
	BX = 7844h ('xD')
	CX = 4953h ('IS')
	DX = 4B3Fh ('K?')
	AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
	ES:DI -> 25-byte data buffer (see #03099)
Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
	   BX = 87BBh
	   DX = B4C0h
	   ES:DI buffer filled
	CX,CF destroyed
SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"

Format of xDISK data buffer:
Offset	Size	Description	(Table 03099)
 00h	DWORD	pointer to ASCIZ driver signature "xDISK unit: X"
 04h	BYTE	flag: 01h if disk linked to DOS, 00h if unlinked
 05h	BYTE	flag: 01h if write protected, 00h if not
 06h	BYTE	flag: 01h if root directory full, 00h if not
 07h	BYTE	flag: 01h if free space uncompacted, 00h if compacted
 08h	BYTE	resizing state: 00h not resizable, 01h resized, 80h resizable
 09h	BYTE	flag: 01h inelastic resizable disk, 00h elastic
 0Ah  2 BYTEs	reserved
 0Ch	BYTE	flag: 01h collapsed disk, 00h not collapsed
 0Dh	BYTE	flag: 01h using all EMS, 00h some EMS free
 0Eh	BYTE	flag: 01h password enabled, 00h disabled
 0Fh	BYTE	flag: 01h password audio feedback, 00h no feedback
 10h	BYTE	flag: 01h password video feedback, 00h no feedback
 11h	BYTE	flag: 01h confirm changes, 00h no confirmation
 12h	BYTE	flag: 01h terse display, 00h verbose display
 13h	BYTE	flag: 01h click speaker on disk access, 00h no click
 14h	BYTE	flag: 01h flash icon on disk access, 00h no icon flash
 15h	BYTE	FAT entry size: 00h 12-bit, FFh 16-bit
 16h	WORD	count of open files in RAM disk
 18h	BYTE	unused

Top
2FF700 - INT 2F - AUTOPARK.COM - INSTALLATION CHECK
INT 2F - AUTOPARK.COM - INSTALLATION CHECK
	AX = F700h
Return: AL = state
	    00h not installed
	    FFh installed
Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones

Top
2FF701 - INT 2F - AUTOPARK.COM - SET PARKING DELAY
INT 2F - AUTOPARK.COM - SET PARKING DELAY
	AX = F701h
	BX:CX = 32-bit count of 55ms timer ticks

Top
2FF800CX4455 - INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
	AX = F800h
	CX = 4455h ("DU")
	DL = 45h ("E")
Return: AL = FFh if installed
	    ES:BX -> ASCII signature "Universal Data Exchange"
Program: SuperStor is a disk-compression program by Addstor.
Note:	returns AX=0001h if AL is not 00h or 01h
SeeAlso: AX=1001h,AX=F801h

Top
2FF801CX4455 - INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
	AX = F801h
	CX = 4455h ("DU")
	DL = 45h ("E")
	ES:BX = return address if successful
Return: at specified address if successfully removed from memory
	else
	    AL = error code
	    ???
Program: SuperStor is a disk-compression program by Addstor.
Note:	returns AX=0001h if AL is not 00h or 01h
SeeAlso: AX=1001h,AX=F800h

Top
4B - INT 4B - Common Access Method SCSI interface (draft revision 1.9)
INT 4B - Common Access Method SCSI interface (draft revision 1.9)
	ES:DI -> CAM Control Block (see #03229 at INT 4F/AX=8100h)
InstallCheck:	test for the string "SCSI_CAM" eight bytes past the INT 4Bh
	  handler
Notes:	the CAM committee moved the interface to INT 4F after revision 1.9
	  to avoid conflicting with the IBM SCSI interface and the Virtual
	  DMA specification
	the only driver to date reported to use the CAM interface on INT 4B
	  instead of INT 4F is from Future Domain (which has drivers for CAM
	  on either interrupt)
SeeAlso: INT 4F/AX=8100h
Index:	installation check;Common Access Method SCSI interface

Top
4B80 - INT 4B - IBM SCSI interface
INT 4B - IBM SCSI interface
	AH = 80h
	AL = 00h-10h (Corel PowerSCSI INT4BCAM.SYS)
	further details not yet available

Top
4B8102DX0000 - INT 4B - Virtual DMA Specification (VDS) - GET VERSION
INT 4B - Virtual DMA Specification (VDS) - GET VERSION
	AX = 8102h
	DX = 0000h
Return: CF clear if successful
	    AH = major version number
	    AL = minor version number
	    BX = product number (see #03217)
	    CX = product revision number
		always 0000h for QMAPS and HPMM.SYS
		always 0001h for Microsoft's EMM386.EXE v4.20-4.41
	    DX = flags (see #03219)
	    SI:DI = maximum DMA buffer size
	CF set on error
	    AL = error code (see #03218)
Note:	bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
	  apparently not always the case
SeeAlso: INT 2C/AX=002Bh,INT 31/AX=0400h,MEM 0040h:007Bh"4Bh"
Index:	installation check;Virtual DMA Specification

(Table 03217)
Values for VDS product number:
 0000h	for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
 0001h	for Microsoft's EMM386.EXE
 0003h	for Windows 3.x WIN386.EXE
 0300h	OS/2 (all versions to date)
 0EDCh	for DR DOS 6.0 EMM386.SYS
 4560h	("E`") for Qualitas' 386MAX
 4D43h	("MC") for V Communications' Memory Commander
 5145h	("QE") for Quarterdeck's QEMM-386
 524Dh	("RM") for Helix's Netroom RM386

(Table 03218)
Values for VDS error code:
 01h	region not in contiguous memory
 02h	region crossed a physical alignment boundary
 03h	unable to lock pages
 04h	no buffer available
 05h	region too large for buffer
 06h	buffer currently in use
 07h	invalid memory region
 08h	region was not locked
 09h	number of physical pages greater than table length
 0Ah	invalid buffer ID
 0Bh	copy out of buffer range
 0Ch	invalid DMA channel number
 0Dh	disable count overflow
 0Eh	disable count underflow
 0Fh	function not supported
 10h	reserved flag bits set in DX

Bitfields for VDS flags:
Bit(s)	Description	(Table 03219)
 0	PC/XT bus (DMA in first megabyte only)
 1	physical buffer/remap region in first megabyte
 2	automatic remap enabled
 3	all memory is physically contiguous
 4-15	reserved (zero)

Top
4B8103 - INT 4B - Virtual DMA Specification - LOCK DMA REGION
INT 4B - Virtual DMA Specification - LOCK DMA REGION
	AX = 8103h
	DX = flags (see #03220)
	ES:DI -> DMA descriptor structure (see #03221,#03222,#03223)
Return: CF clear if successful
	    DDS physical address field filled in
	    DDS buffer ID field filled (0000h if no buffer allocated)
	CF set on error
	    AL = error code (see #03218)
	    DDS region size field filled wth maximum contiguous length in bytes
BUGS:	Windows 3.0 does not correctly support automatic remapping or copying
	  in enhanced mode
	Windows 3.0 in enhanced mode does not return a correct code on error
SeeAlso: AX=8104h,AX=8105h

Bitfields for VDS flags:
Bit(s)	Description	(Table 03220)
 0	reserved (zero)
 1	data should be copied into buffer (ignored if 2 set)
 2	buffer should not be allocated if region noncontiguous or crosses
	  physical alignment boundary specified by 4-5
 3	don't attempt automatic remap
 4	region must not cross 64K physical alignment boundary
 5	region must not cross 128K physical alignment boundary
 6-15	reserved (zero)

Format of DMA descriptor structure (DDS):
Offset	Size	Description	(Table 03221)
 00h	DWORD	region size
 04h	DWORD	offset
 08h	WORD	segment/selector
 0Ah	WORD	buffer ID
 0Ch	DWORD	physical address

Format of Extended DMA descriptor structure (EDDS):
Offset	Size	Description	(Table 03222)
 00h	DWORD	region size
 04h	DWORD	offset
 08h	WORD	segment/selector
 0Ah	WORD	reserved
 0Ch	WORD	number available
 0Eh	WORD	number used
 10h	DWORD	region 0 physical address
 14h	DWORD	region 0 size in bytes
 18h	DWORD	region 1 physical address
 1Ch	DWORD	region 1 size in bytes
	...

Format of Extended DMA descriptor structure (EDDS) with page table entries:
Offset	Size	Description	(Table 03223)
 00h	DWORD	region size
 04h	DWORD	offset
 08h	WORD	segment/selector
 0Ah	WORD	reserved
 0Ch	WORD	number available
 0Eh	WORD	number used
 10h	DWORD	page table entry 0 (same as 80386 page table entry)
 14h	DWORD	page table entry 1
	...
Note:	bits 1-11 of the page table entries should be zero; bit 0 set if page
	  is present and locked

Top
4B8104 - INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
	AX = 8104h
	DX = flags
	    bit 0: reserved (zero)
	    bit 1: data should be copied out of buffer
	    bits 2-15 reserved (zero)
	ES:DI -> DMA descriptor structure (see #03221,#03222) with region size,
		  physical address, and buffer ID fields set
Return: CF clear if successful
	    DDS physical address field set
	    DDS buffer ID field set (0000h if no buffer allocated)
	CF set on error
	    AL = error code (see #03218)
	    DDS region size field filled wth maximum contiguous length in bytes
Note:	Windows 3.0 does not check whether the region extends beyond the end of
	  a segment
BUG:	Windows 3.0 in enhanced mode does not return a correct code on error
SeeAlso: AX=8103h,AX=8106h

Top
4B8105 - INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
	AX = 8105h
	DX = flags (see #03224)
	ES:DI -> Extended DMA descriptor structure (see #03222,#03223)
		  region size, linear segment, linear offset, and number avail
		  fields set
Return: CF clear if successful
	    EDDS number used field set
	    if DX bit 6 set, lower 12 bits of BX = offset in first page
	CF set on error
	    AL = error code (see #03218)
	    EDDS region size field filled with max length in bytes that can be
		  locked and described in the EDDS table
BUG:	Windows 3.0 in enhanced mode may return zero instead of the physical
	  page address for pages which were originally not present
SeeAlso: AX=8103h,AX=8106h

Bitfields for VDS flags:
Bit(s)	Description	(Table 03224)
 0-5	reserved (zero)
 6	EDDS should be returned with page table entries
 7	only present pages should be locked (not-present pages receive entry
	  of 0000h)
 8-15	reserved (zero)

Top
4B8106 - INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
	AX = 8106h
	DX = flags (see #03225)
	ES:DI -> Extended DMA descriptor structure (see #03222,#03223) returned
		  by AX=8105h
Return: CF clear if successful
	CF set on error
	    AL = error code (see #03218)
Note:	according to the Microsoft version of the VDS specification, the
	  actual scatter/gather list is ignored, while according to the IBM
	  version of the specification, "the result of a LOCK operation"
	  must be provided to this function
SeeAlso: AX=8104h,AX=8105h

Bitfields for VDS flags:
Bit(s)	Description	(Table 03225)
 0-5	reserved (zero)
 6	EDDS contains page table entries
 7	EDDS may contain not-present pages (entry = 0000h)
 8-15	reserved (zero)

Top
4B8107 - INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
	AX = 8107h
	DX = flags
	    bit 0: reserved (zero)
	    bit 1: data should be copied into buffer
	    bits  2-15 reserved (zero)
	ES:DI -> DMA descriptor structure (see #03221) with region size set
		  (also region offset and region segment if DX bit 1 set)
Return: CF clear if successful
	    DDS physical address and buffer ID set
	    DDS region size filled with length of buffer
	CF set on error
	    AL = error code (see #03218)
SeeAlso: AX=8108h

Top
4B8108 - INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
	AX = 8108h
	DX = flags
	    bit 0: reserved (zero)
	    bit 1: data should be copied out of buffer
	    bits 2-15 reserved (zero)
	ES:DI -> DMA descriptor structure (see #03221,#03222) with buffer ID set
		  (also region size/region offset/segment if DX bit 1 set)
Return: CF clear if successful
	CF set on error
	    AL = error code (see #03218)
BUG:	under Windows 3.0 Enhanced mode, you must specify that data be copied
	  for this function to work correctly
SeeAlso: AX=8107h

Top
4B8109DX0000 - INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
	AX = 8109h
	DX = 0000h
	ES:DI -> DMA descriptor structure (see #03221,#03222) with buffer ID,
		  region segment/offset, and region size fields set
	BX:CX = starting offset into DMA buffer
Return: CF clear if successful
	CF set on error
	    AL = error code (see #03218)
BUG:	Windows 3.0 Enhanced mode does not correctly interpret the copy count
SeeAlso: AX=810Ah

Top
4B810ADX0000 - INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
	AX = 810Ah
	DX = 0000h
	ES:DI -> DMA descriptor structure (see #03221,#03223) with buffer ID,
		  region segment/offset, and region size fields set
	BX:CX = starting offset into DMA buffer
Return: CF clear if successful
	CF set on error
	    AL = error code (see #03218)
BUG:	Windows 3.0 Enhanced mode does not correctly interpret the copy count
SeeAlso: AX=8109h

Top
4B810B - INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
	AX = 810Bh
	BX = DMA channel number
	DX = 0000h
Return: CF clear if successful
	CF set on error
	    AL = error code (see #03218)
SeeAlso: AX=810Ch

Top
4B810C - INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
	AX = 810Ch
	BX = DMA channel number
	DX = 0000h
Return: CF clear if successful
	    ZF set if disable count decremented to zero
	CF set on error
	    AL = error code (see #03218)
SeeAlso: AX=810Bh

Top
4F0081 - INT 4F - ATA Software Programming Interface (ATASPI) - SEND ATASPI REQUEST
INT 4F - ATA Software Programming Interface (ATASPI) - SEND ATASPI REQUEST
	AX = 0081h
	ES:BX -> ATA Request Block (see #90002)
Return:	AH = 00h always???
Note:	this interface has probably appeared in some later revisions of ATASPI
	  than 0.72
SeeAlso: INT 21/AX=4402h"ATASPI",INT 4F/AX=0082h

Top
4F0082CX8765 - INT 4F - ATA Software Programming Interface (ATASPI) - INSTALLATION CHECK
INT 4F - ATA Software Programming Interface (ATASPI) - INSTALLATION CHECK
	AX = 0082h
	CX = 8765h
	DX = CBA9h
Return: AH = 00h if installed
	    CX = 9ABCh
	    DX = 5678h
	    ES:DI -> "$ATAMGR$"
Note:	this interface has probably appeared in some later revisions of ATASPI
	  than 0.72
SeeAlso: INT 21/AX=4402h"ATASPI",INT 4F/AX=0081h

Top
4F8100 - INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
	AX = 8100h
	ES:BX -> CAM Control Block (CCB) (see #03229)
Return: AH = status
	    00h successful
	    01h invalid CCB address (0000h:0000h)
Note:	the SCSI Interface Module (SIM) may complete the requested function
	  and invoke the completion callback function before this call returns
SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"

(Table 03228)
Values for CAM function code:
 00h	NOP
 01h	execute SCSI I/O
 02h	get device type
 03h	path inquiry
 04h	release SIM queue
 05h	set async callback
 06h	set device type
 07h-0Fh reserved
 10h	abort SCSI command
 11h	reset SCSI bus
 12h	reset SCSI device
 13h	terminate I/O process
 14h-1Fh reserved
 20h	engine inquiry
 21h	execute engine request
 22h-2Fh reserved
 30h	enable logical unit number
 31h	execute target I/O
 32h-7Fh reserved
 80h-FFh vendor-specific functions

Format of CAM Control Block:
Offset	Size	Description	(Table 03229)
 00h	DWORD	physical address of this CCB
 04h	WORD	CAM control block length
 06h	BYTE	function code (see #03228)
 07h	BYTE	CAM status (see #03232)
 08h	BYTE	SCSI status
 09h	BYTE	path ID (FFh = XPT)
 0Ah	BYTE	target ID
 0Bh	BYTE	logical unit number
 0Ch	WORD	CAM flags (see #03230)
 0Eh	BYTE	CAM address flags (see #03231)
 0Fh	BYTE	target-mode flags (see #03233)
---function 02h---
 10h	DWORD	pointer to 36-byte buffer for inquiry data or 0000h:0000h
 14h	BYTE	peripheral device type of target logical unit number
---function 03h---
 10h	BYTE	version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
		09h-FFh = rev no, i.e. 23h = rev 2.3)
 11h	BYTE	SCSI capabilities (see #03234)
 12h	BYTE	target mode support
		bit 7: processor mode
		bit 6: phase-cognizant mode
		bit 5-0: reserved
 13h	BYTE	miscellaneous flags
		bit 7: scanned high to low instead of low to high
		bit 6: removables not included in scan
		bit 5: inquiry data not kept by XPT
		bits 4-0: reserved
 14h	WORD	engine count
 16h 14 BYTEs	vendor-specific data
 24h	DWORD	size of private data area
 28h	DWORD	asynchronous event capabilities (see #03235)
 2Ch	BYTE	highest path ID assigned
 2Dh	BYTE	SCSI device ID of initiator
 2Eh  2 BYTEs	reserved
 30h 16 BYTEs	SIM vendor ID
 40h 16 BYTEs	HBA (host bus adaptor) vendor ID
 50h  4 BYTEs	operating-system dependant usage
---functions 00h,04h,11h,12h---
 no additional fields
---function 05h---
 10h	DWORD	asynchronous event enables (refer to function 03h above)
 14h	DWORD	pointer to asynchronous callback routine (see #03241)
 18h	DWORD	pointer to peripheral driver buffer
 1Ch	BYTE	size of peripheral buffer
---function 06h---
 10h	BYTE	peripheral device type of target
---functions 10h,13h---
 10h	DWORD	pointer to CCB to be aborted
---function 20h---
 10h	WORD	engine number
 12h	BYTE	engine type
		00h buffer memory
		01h lossless compression
		02h lossy compression
		03h encryption
 13h	BYTE	engine algorithm ID
		00h vendor-unique
		01h LZ1 variation 1 (STAC)
		02h LZ2 variation 1 (HP DCZL)
		03h LZ2 variation 2 (Infochip)
 14h	DWORD	engine memory size
---function 21h---
 10h	DWORD	pointer to peripheral driver
 14h  4 BYTEs	reserved
 18h	DWORD	OS-dependent request-mapping info
 1Ch	DWORD	address of completion callback routine
 20h	DWORD	pointer to scatter/gather list or data buffer
 24h	DWORD	length of data transfer
 28h	DWORD	pointer to engine buffer data
 2Ch  2 BYTEs	reserved
 2Eh	WORD	number of scatter/gather entries
 30h	DWORD	maximum destination data length
 34h	DWORD	length of destination data
 38h	DWORD	source residual length
 3Ch 12 BYTEs	reserved
 48h	DWORD	OS-dependent timeout value
 4Ch  4 BYTEs	reserved
 50h	WORD	engine number
 52h	WORD	vendor-unique flags
 54h  4 BYTEs	reserved
 58h  N BYTEs	private data area for SIM
---function 30h---
 10h	WORD	group 6 vendor-unique CDB length
 12h	WORD	group 7 vendor-unique CDB length
 14h	DWORD	pointer to target CCB list
 18h	WORD	number of target CCBs
---other functions---
 10h	DWORD	pointer to peripheral driver
 14h	DWORD	pointer to next CCB
 18h	DWORD	OS-dependent request mapping information
 1Ch	DWORD	address of completion callback routine (see #03240)
 20h	DWORD	pointer to scatter/gather list or data buffer
 24h	DWORD	length of data transfer
 28h	DWORD	pointer to sense info buffer
 2Ch	BYTE	length of sense info buffer
 2Dh	BYTE	CDB length
 2Eh	WORD	number of scatter/gather entries
		scatter/gather list is array of 2N DWORDs, each pair specifying
		  the address and length of a data block
 30h  4 BYTEs	vendor-specific data
 34h	BYTE	(ret) SCSI status
 35h	BYTE	(ret) auto-sense residual length
 36h  2 BYTEs	reserved
 38h	DWORD	(ret) residual length
 40h 12 BYTEs	Command Descriptor Block (CDB) (see #03236,#03237,#03238)
 44h	DWORD	OS-dependent timeout value
 48h	DWORD	pointer to message buffer
 4Ch	WORD	length of message buffer
 4Eh	WORD	vendor-unique flags
 50h	BYTE	tag queue action
 51h  3 BYTEs	reserved
 54h  N BYTEs	private data area for SIM

Bitfields for CAM flags:
Bit(s)	Description	(Table 03230)
 0	CDB is a pointer
 1	tagged queue action enable
 2	linked CDB
 3	disable callback on completion
 4	scatter/gather
 5	disable autosense
 7-6	direction (00 reserved, 01 in, 10 out, 11 no data transfer)
 9-8	reserved
 10	engine synchronize
 11	SIM queue freeze
 12	SIM queue priority
	1 head insertion
	0 tail insertion (normal)
 13	disable synchronous transfers	\ mutually
 14	initiate synchronous transfers	/ exclusive
 15	disable disconnect

Bitfields for CAM address flags:
Bit(s)	Description	(Table 03231)
 7	SG list/data (0 = host, 1 = engine)
 6	CDB pointer    (6-1: 0=virtual addr, 1=phys addr)
 5	SG list/data
 4	sense buffer
 3	message buffer
 2	next CCB
 1	callback on completion
 0	reserved

(Table 03232)
Values for CAM status:
 00h	request in progress
 01h	request successful
 02h	host aborted request
 03h	unable to abort request
 04h	request completed with error
 05h	CAM is busy
 06h	invalid request
 07h	invalid path ID
 08h	no such SCSI device
 09h	unable to terminate I/O process
 0Ah	timeout on target selection
 0Bh	timeout on command
 0Dh	receive message rejection
 0Eh	sent/received SCSI bus reset
 0Fh	detected uncorrectable parity error
 10h	Autosense request failed
 11h	no HBA detected
 12h	data over/underrun
 13h	bus freed unexpectedly
 14h	target bus phase sequence failure
 15h	CCB too small
 16h	requested capability not available
 17h	sent bus device reset
 18h	terminate I/O process
 38h	invalid LUN
 39h	invalid target ID
 3Ah	unimplemented function
 3Bh	nexus not established
 3Ch	invalid initiator ID
 3Dh	received SCSI Command Descriptor Block
 3Eh	LUN already enabled
 3Fh	SCSI bus busy
Note:	bit 6 set to indicate frozen SIM queue
	bit 7 set to indicate valid autosense

Bitfields for CAM target-mode flags:
Bit(s)	Description	(Table 03233)
 7	data buffer valid
 6	status valid
 5	message buffer valid
 4	reserved
 3	phase-cognizant mode
 2	target CCB available
 1	disable autodisconnect
 0	disable autosave/restore

Bitfields for SCSI capabilities:
Bit(s)	Description	(Table 03234)
 7	modify data pointers
 6	wide bus (32 bits)
 5	wide bus (16 bits)
 4	synchronous transfers
 3	linked commands
 2	reserved
 1	tagged queueing
 0	soft reset

Bitfields for CAM asynchronous event capabilities:
Bit(s)	Description	(Table 03235)
 31-24	vendor-specific
 23-8	reserved
 7	new devices found during rescan
 6	SIM module deregistered
 5	SIM module registered
 4	sent bus device reset to target
 3	SCSI AEN
 2	reserved
 1	unsolicited reselection
 0	unsolicited SCSI bus reset

Format of Six-Byte SCSI Command Descriptor Block (CDB):
Offset	Size	Description	(Table 03236)
 00h	BYTE	operation code (see #03239)
 01h	BYTE	logical unit number (bits 7-5), SCSI-1/SCSI-2
		MSB of logical block address (bits 4-0)
 02h	WORD	logical block address (low word)
 04h	BYTE	transfer length
 05h	BYTE	control byte
SeeAlso: #03237,#03238

Format of Ten-Byte SCSI Command Descriptor Block (CDB):
Offset	Size	Description	(Table 03237)
 00h	BYTE	operation code (see #03239)
 01h	BYTE	logical unit number (bits 7-5), SCSI-1/SCSI-2
		reserved in SCSI-3
 02h	DWORD	logical block address (low word)
 06h	BYTE	reserved
 07h	WORD	transfer length
 09h	BYTE	control byte
SeeAlso: #03236,#03238

Format of Twelve-Byte SCSI Command Descriptor Block (CDB):
Offset	Size	Description	(Table 03238)
 00h	BYTE	operation code (see #03239)
 01h	BYTE	logical unit number (bits 7-5), SCSI-1/SCSI-2
		reserved in SCSI-3
 02h	DWORD	logical block address (low word)
 06h	DWORD	transfer length
 0Ah	BYTE	reserved
 0Bh	BYTE	control byte
SeeAlso: #03236,#03237

(Table 03239)
Values for SCSI CDB operation code for direct-access devices:
 00h	Test Unit Ready
 01h	Rezero Unit
 03h	Request Sense
 04h	Format Unit
 07h	Reassign Blocks
 08h	Read (6-byte CDB)
 0Ah	Write (6-byte CDB)
 0Bh	Seek (6-byte CDB)
 12h	Inquiry
 15h	Mode Select (6-byte CDB)
 16h	Reserve
 17h	Release
 18h	Copy
 1Ah	Mode Sense (6-byte CDB)
 1Bh	Start/Stop Unit
 1Ch	Receive Diagnostic Results
 1Dh	Send Diagnostic
 1Eh	Prevent/Allow Medium Removal
 25h	Read Capacity
 28h	Read (10-byte CDB)
 2Ah	Write (10-byte CDB)
 2Bh	Seek (10-byte CDB)
 2Eh	Write and Verify
 2Fh	Verify
 30h	Search Data High
 31h	Search Data Equal
 32h	Search Data Low
 33h	Set Limits
 34h	Prefetch
 35h	Synchronize Cache
 36h	Lock/Unlock Cache
 37h	Read Defect Data
 39h	Compare
 3Ah	Copy and Verify
 3Bh	Write Buffer
 3Ch	Read Buffer
 3Eh	Read Long
 3Fh	Write Long
 40h	Change Definition
 41h	Write Same
 4Ch	Log Select
 4Dh	Log Sense
 55h	Mode Select (10-byte CDB)
 5Ah	Mode Sense (10-byte CDB)
SeeAlso: #03236,#03237,#03238

(Table 03240)
Values completion callback function is called with:
	interrupts disabled
	ES:BX -> completed CCB

(Table 03241)
Values asynchronous callback function is called with:
	AH = opcode
	AL = path ID generating callback
	DH = target ID causing event
	DL = LUN causing event
	CX = data byte count (if applicable)
	ES:BX -> data buffer (if applicable)
Return: all registers preserved

Top
4F8200CX8765 - INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
	AX = 8200h
	CX = 8765h
	DX = CBA9h
Return: AH = 00h if installed
	    CX = 9ABCh
	    DX = 5678h
	    ES:DI -> "SCSI_CAM"
SeeAlso: AX=8100h,INT 4B"Common Access Method"

Top
60 - INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
SeeAlso: INT 41"HARD DISK 0",INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
SeeAlso: INT 64"Adaptec",INT C0"AMI",#00732 at INT 1A/AX=B102h
Notes:	this vector stores the first four bytes of the parameter table for
	  hard disk 0
	these vectors are used by the following Adaptec controllers:
	    ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
	these vectors are NOT used by the following Adaptec controllers:
	    ACB 2310, ACB 2312, ACB 2320D, ACB 2322D

Top
61 - INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
Desc:	this vector stores the second four bytes of the parameter table for
	  hard disk 0
SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"

Top
62 - INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
Notes:	this vector stores the third four bytes of the parameter table for
	  hard disk 0
SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"

Top
63 - INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
Desc:	this vector stores the last four bytes of the parameter table for
	  hard disk 0
SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"

Top
63 - INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
Desc:	the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if
	  INT 13 has been moved there) and places the old value here

Top
64 - INT 64 - Adaptec controllers - DRIVE 1 DATA
INT 64 - Adaptec controllers - DRIVE 1 DATA
Desc:	this vector stores the first four bytes of the parameter table for
	  hard disk 1
Notes:	these vectors are used by the following Adaptec controllers:
	    ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
	these vectors are NOT used by the following Adaptec controllers:
	    ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"

Top
64 - INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
Note:	This vector is overwritten by Pdisk to install custom harddrive types.
	  It can either destroy 4 vectors and take no memory or TSR and take
	  up some memory.
SeeAlso: INT 65"Pdisk"

Top
65 - INT 65 - Adaptec controllers - DRIVE 1 DATA
INT 65 - Adaptec controllers - DRIVE 1 DATA
Desc:	this vector stores the second four bytes of the parameter table for
	  hard disk 1
SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"

Top
65 - INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 66"Pdisk"

Top
66 - INT 66 - Adaptec controllers - DRIVE 1 DATA
INT 66 - Adaptec controllers - DRIVE 1 DATA
Desc:	this vector stores the third four bytes of the parameter table for
	  hard disk 1
SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"

Top
66 - INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 67"Pdisk"

Top
67 - INT 67 - Adaptec controllers - DRIVE 1 DATA
INT 67 - Adaptec controllers - DRIVE 1 DATA
Desc:	this vector stores the last four bytes of the parameter table for
	  hard disk 1
SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"

Top
67 - INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 66"Pdisk"

Top
78 - INT 78 - ADP-60 IDE controller - ORIGINAL INT 13
INT 78 - ADP-60 IDE controller - ORIGINAL INT 13
SeeAlso: INT 79"ADP-60"

Top
7800 - INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
	AH = 00h
	DX = interface board I/O port
Return: CF set on error
	    AL = error code (see #03786)
InstallCheck:	(used by TARGA.DEV) test for the string "SCSI" at offset 03h
	  into the interrupt handler
Note:	if this routine is not called, the port is the driver's default
	  (usually 0280h or 0300h)
SeeAlso: AH=01h,AH=02h
Index:	installation check;TARGA.DEV

(Table 03786)
Values for TARGA.DEV error code:
 00h	illegal command given to SCSI code
 01h	invalid I/O port specified (must be from 100H to 3F8H, and must be on
	  an 8-port boundary)
 02h	invalid DMA channel specified (must be from 1 to 3)
 03h	invalid SCSI board number specified (must be from 0 to 7)
 04h	error from data register test during self-test
 05h	SCSI input signals not all 0 when SCSI RST activated
 06h	SCSI input signals not all 0 before selecting a SCSI device
 07h	BSY signal is active; SCSI bus is busy
 08h	SCSI board not selected, BSY signal did not come on in response to
	  raising SEL
 09h	time-out waiting for status state, signifying end of DMA transfer

Top
7801 - INT 78 - TARGA.DEV - GET I/O PORT
INT 78 - TARGA.DEV - GET I/O PORT
	AH = 01h
Return: DX = current interface board I/O port
SeeAlso: AH=00h,AH=03h"TARGA"

Top
7802 - INT 78 - TARGA.DEV - SET DMA CHANNEL
INT 78 - TARGA.DEV - SET DMA CHANNEL
	AH = 02h
	AL = interface board DMA channel
Return: CF set on error
	AL = error code (see #03786)
Note:	if this routine is not called, the DMA channel is the driver's default
	  (usually 3)
SeeAlso: AH=00h,AH=03h"TARGA"

Top
7803 - INT 78 - TARGA.DEV - GET DMA CHANNEL
INT 78 - TARGA.DEV - GET DMA CHANNEL
	AH = 03h
Return: AL = current interface board DMA channel
SeeAlso: AH=01h,AH=02h

Top
7804 - INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
	AH = 04h
	AL = SCSI device number
Return: CF set on error
	AL = error code (see #03786)
Note:	if this routine is not called, the device number used is the driver's
	  default (usually 0)
SeeAlso: AH=02h,AH=05h

Top
7805 - INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
	AH = 05h
Return: AL = current SCSI device number
SeeAlso: AH=03h"TARGA",AH=04h

Top
7806 - INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
	AH = 06h
	AL = new state
	    00h clear early return mode
	    01h set early return mode
Note:	if early return mode is set then SCSI will return with no errors
	  when the last DMA transfer is started in a call with AH=13h or AH=14h
	if this routine is not called, early return mode is cleared
SeeAlso: AH=13h,AH=14h,AH=15h

Top
7808 - INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
	AH = 08h
Return: CF set on error
	AL = error code (see #03786)
Note:	the SCSI bus is also reset
SeeAlso: AH=09h

Top
7809 - INT 78 - TARGA.DEV - RESET SCSI BUS
INT 78 - TARGA.DEV - RESET SCSI BUS
	AH = 09h
Return: AL = error code if carry set (see #03786)
SeeAlso: AH=08h

Top
7810 - INT 78 - TARGA.DEV - SEND SCSI COMMAND
INT 78 - TARGA.DEV - SEND SCSI COMMAND
	AH = 10h
	DS:SI -> command bytes (see #03804)
Return: AH = SCSI status byte
	CF clear if successful
	    AL = SCSI message byte
	CF set on error
	    AL = error code (see #03786)
SeeAlso: AH=11h,INT 21/AX=4403h"ST-01"

Format of SCSI Command:
Offset	Size	Description	(Table 03804)
 00h	BYTE	length of command
 01h	???	command bytes

Top
7811 - INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
	AH = 11h
	DS:SI -> command bytes (see #03805)
	ES:BX -> data storage area
	CX = number of data bytes to transfer
Return: AH = SCSI status byte
	CF clear if successful
	    AL = SCSI message byte
	CF set on error
	    AL = error code (see #03786)
Note:	this command receives data internally one byte at a time
SeeAlso: AH=10h,AH=13h

Format of TARGA.DEV SCSI Command:
Offset	Size	Description	(Table 03805)
 00h	BYTE	length of command
 01h	???	command bytes

Top
7812 - INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
	AH = 12h
	DS:SI -> command bytes (see #03806)
	ES:BX -> data storage area
	CX = number of data bytes to transfer
Return: AH = SCSI status byte
	CF clear if successful
	    AL = SCSI message byte
	CF set on error
	    AL = error code (see #03786)
Note:	this command sends data internally one byte at a time
SeeAlso: AH=14h

Format of TARGA.DEV SCSI Command:
Offset	Size	Description	(Table 03806)
 00h	BYTE	length of command
 01h	???	command bytes

Top
7813 - INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
	AH = 13h
	DS:SI -> command bytes (see #03807)
	ES:BX -> data storage area
	DX:CX = number of data bytes to transfer
Return: AH = SCSI status byte (if early return mode is clear)
	CF clear if successful
	    AL = SCSI message byte (if early return mode is clear)
	CF set on error
	    AL = error code (see #03786)
Note:	this command receives data using DMA
SeeAlso: AH=11h,AH=12h

Format of TARGA.DEV SCSI Command:
Offset	Size	Description	(Table 03807)
 00h	BYTE	length of command
 01h	???	command bytes

Top
7814 - INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
	AH = 14h
	DS:SI -> command bytes (see #03808)
	ES:BX -> data storage area
	DX:CX = number of data bytes to transfer
Return: AH = SCSI status byte (if early return mode is clear)
	CF clear if successful
	    AL = SCSI message byte (if early return mode is clear)
	CF set on error
	    AL = error code (see #03786)
Note:	this command sends data using DMA
SeeAlso: AH=12h,AH=13h

Format of TARGA.DEV SCSI Command:
Offset	Size	Description	(Table 03808)
 00h	BYTE	length of command
 01h	???	command bytes

Top
7815 - INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
	AH = 15h
Return: AH = SCSI status byte
	CF clear if successful
	    AL = SCSI message byte
	CF set on error
	    AL = error code (see #03786)
Note:	if AH=06h was previously called to set the early return mode, this
	  function finishes a command AH=13h or AH=14h which returned before
	  the last DMA transfer was finished
SeeAlso: AH=06h,AH=13h,AH=14h

Top
79 - INT 79 U - ADP-60 IDE adapter - ???
INT 79 U - ADP-60 IDE adapter - ???
SeeAlso: INT 78"ADP-60"

Top
80 - INT 80 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
INT 80 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
Note:	the factory-default location for the eight bytes of scratchpad RAM
	  needed by the SCSI adapter is 0000h:0200h, which is interrupt
	  vectors 80h and 81h
SeeAlso: INT 81"BusLogic"

Top
81 - INT 81 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
INT 81 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
Note:	the factory-default location for the eight bytes of scratchpad RAM
	  needed by the SCSI adapter is 0000h:0200h, which is interrupt
	  vectors 80h and 81h
SeeAlso: INT 80"BusLogic"

Top
C0 - INT C0 - AMI BIOS - DRIVE 0 DATA
INT C0 - AMI BIOS - DRIVE 0 DATA
Note:	this vector is used by some AMI BIOSes to store the first four bytes
	  of the hard disk parameter table
SeeAlso: INT 41"HARD DISK 0",INT 60"Adaptec",INT C1"AMI",INT C2"AMI"
SeeAlso: INT C3"AMI",INT C4"AMI"

Top
C1 - INT C1 - AMI BIOS - DRIVE 0 DATA
INT C1 - AMI BIOS - DRIVE 0 DATA
Note:	this vector is used by some AMI BIOSes to store the second four bytes
	  of the hard disk parameter table
SeeAlso: INT 41"HARD DISK 0",INT 60"Adaptec",INT C0"AMI",INT C2"AMI"
SeeAlso: INT C3"AMI"

Top
C2 - INT C2 - AMI BIOS - DRIVE 0 DATA
INT C2 - AMI BIOS - DRIVE 0 DATA
Note:	this vector is used by some AMI BIOSes to store the third four bytes
	  of the hard disk parameter table
SeeAlso: INT 41"DISK 0",INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C3"AMI"

Top
C3 - INT C3 - AMI BIOS - DRIVE 0 DATA
INT C3 - AMI BIOS - DRIVE 0 DATA
Note:	this vector is used by some AMI BIOSes to store the final four bytes
	  of the hard disk parameter table
SeeAlso: INT 41"DISK 0",INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C2"AMI"

Top
C4 - INT C4 - AMI BIOS - DRIVE 1 DATA
INT C4 - AMI BIOS - DRIVE 1 DATA
Note:	this vector is used by some AMI BIOSes to store the first four bytes
	  of the second hard disk's parameter table
SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C5"AMI"
SeeAlso: INT C6"AMI",INT C7"AMI"

Top
C5 - INT C5 - AMI BIOS - DRIVE 1 DATA
INT C5 - AMI BIOS - DRIVE 1 DATA
Note:	this vector is used by some AMI BIOSes to store the second four bytes
	  of the second hard disk's parameter table
SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
SeeAlso: INT C6"AMI",INT C7"AMI"

Top
C6 - INT C6 - AMI BIOS - DRIVE 1 DATA
INT C6 - AMI BIOS - DRIVE 1 DATA
Note:	this vector is used by some AMI BIOSes to store the third four bytes
	  of the second hard disk's parameter table
SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
SeeAlso: INT C5"AMI",INT C7"AMI"

Top
C7 - INT C7 - AMI BIOS - DRIVE 1 DATA
INT C7 - AMI BIOS - DRIVE 1 DATA
Note:	this vector is used by some AMI BIOSes to store the final four bytes
	  of the second hard disk's parameter table
SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
SeeAlso: INT C5"AMI",INT C6"AMI"

Top
Home Interrupt Index: by Category by ID TOC: by Order Top