Outils pour utilisateurs

Outils du site


back2root:ibm-pc-ms-dos:interrupts:old:ms_interrupt_list-41-50

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
back2root:ibm-pc-ms-dos:interrupts:old:ms_interrupt_list-41-50 [2023/01/05 04:01] – supprimée - modification externe (Unknown date) 127.0.0.1back2root:ibm-pc-ms-dos:interrupts:old:ms_interrupt_list-41-50 [2023/01/05 04:01] (Version actuelle) – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== MSDOS - Interrupt List 41h-50h ======
  
 +===== INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE =====
 +
 +<WRAP round info>
 +the default parameter table array is located at F000h:E401h in 100% compatible BIOSes; the pointer may be overridden by the hard disk controller's BIOS to support drive formats unknown to the ROM BIOS 
 +
 +SeeAlso: INT 13/AH=09h,INT 1E,INT 46
 +</WRAP>
 +
 +Format of fixed disk parameters:
 +^Offset ^Size ^Description   ^
 +| 00h |WORD |number of cylinders|
 +| 02h |BYTE |number of heads|
 +| 03h |WORD |starting reduced write current cylinder (XT only, 0 for others)|
 +| 05h |WORD |starting write precompensation cylinder number|
 +| 07h |BYTE |maximum ECC burst length (XT only)|
 +| 08h |BYTE |control byte\\   * bits 0-2: drive option (XT only, 0 for others)\\  * bit 3:    set if more than 8 heads (AT and later only)\\  * bit 4:    always 0\\  * bit 5:    set if manufacturer's defect map on max cylinder+1 (AT and later only)\\  * bit 6:    disable ECC retries\\  * bit 7:    disable access retries|
 +| 09h |BYTE |standard timeout (XT only, 0 for others)|
 +| 0Ah |BYTE |formatting timeout (XT only, 0 for others)|
 +| 0Bh |BYTE |timeout for checking drive (XT only, 0 for others)|
 +| 0Ch |WORD |cylinder number of landing zone (AT and later only)|
 +| 0Eh |BYTE |number of sectors per track (AT and later only)|
 +| 0Fh |BYTE |reserved|
 +
 +===== INT 41 - Z100 - Master 8259 - Processor Swap =====
 +
 +SeeAlso: INT 40"Z100",INT 42"Z100"
 +----------4112-------------------------------
 +INT 41 P - MS Windows debugging kernel - "OutputDebugString"
 + AH = 12h
 + ???
 +Return: ???
 +SeeAlso: AH=50h
 +----------4150-------------------------------
 +INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
 + AH = 50h
 + ???
 +Return: ???
 +SeeAlso: AH=12h
 +----------42---------------------------------
 +INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
 +SeeAlso: INT 10
 +Note: not used by PS/2 built-in VGA or XGA
 +----------42---------------------------------
 +INT 42 - Z100 - Master 8259 - Timer
 +SeeAlso: INT 41"Z100",INT 43"Z100"
 +----------43---------------------------------
 +INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
 +   points at graphics data for characters 00h-7Fh of the current font
 +SeeAlso: INT 1F,INT 44"VIDEO"
 +----------43---------------------------------
 +INT 43 - Z100 - Master 8259 - Slave 8259 input
 +Note: slave runs in special fully nested mode
 +SeeAlso: INT 42"Z100",INT 44"Z100"
 +----------44---------------------------------
 +INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
 +   points at graphics data for current character font
 +SeeAlso: INT 1F,INT 43"VIDEO"
 +----------44---------------------------------
 +INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
 +----------44---------------------------------
 +INT 44 - IBM 3270-PC High Level Language API
 + DS:SI -> parameter control block
 +----------44---------------------------------
 +INT 44 - Z100 - Master 8259 - Serial A
 +SeeAlso: INT 43"Z100",INT 45"Z100"
 +----------45---------------------------------
 +INT 45 - Z100 - Master 8259 - Serial B
 +SeeAlso: INT 44"Z100",INT 46"Z100"
 +----------46---------------------------------
 +INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
 +SeeAlso: INT 13/AH=09h,INT 41
 +----------46---------------------------------
 +INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
 +SeeAlso: INT 45"Z100",INT 47"Z100"
 +----------47---------------------------------
 +INT 47 - Z100 - Master 8259 - Printer
 +SeeAlso: INT 46"Z100",INT 48"Z100"
 +----------478000-----------------------------
 +INT 47 - SQL Base - DATABASE ENGINE API
 + AX = 8000h
 + DS:BX -> parameter block, first word is function number
 +Note: SQL Base is a network-oriented database engine by Gupta Technologies
 +
 +Values for function number:
 + 01h "SQLFINI" initalialize application's use of the database
 + 02h "SQLFDON" application is done using the database
 + 03h "SQLFCON" connect to a cursor/database
 + 04h "SQLFDIS" disconnect from a cursor/database
 + 05h "SQLFCOM" compile a SQL command
 + 06h "SQLFEXE" execute a SQL command
 + 07h "SQLFCEX" compile and execute a SQL command
 + 08h "SQLFCMT" commit a transaction to the database
 + 09h "SQLFDES" describe the items of a SELECT statement
 + 0Ah "SQLFGFI" get fetch information
 + 0Bh "SQLFFBK" fetch previous result row from SELECT statement
 + 0Ch "SQLFFET" fetch next result row from SELECT statement
 + 0Dh "SQLFEFB" enable fetch backwards
 + 0Eh "SQLFPRS" position in result set
 + 0Fh "SQLFURS" undo result set
 + 10h "SQLFNBV" get number of bind variables
 + 11h "SQLFBND" bind data variables
 + 12h "SQLFBNN" bind numerics
 + 13h "SQLFBLN" bind long number
 + 14h "SQLFBLD" bind long data variables
 + 15h "SQLFSRS" start restriction set processing
 + 16h "SQLFRRS" restart restriction set processing
 + 17h "SQLFCRS" close restriction set
 + 18h "SQLFDRS" drop restriction set
 + 19h "SQLFARF" apply Roll Forward journal
 + 1Ah "SQLFERF" end Roll Forward journal
 + 1Bh "SQLFSRF" start Roll Forward journal
 + 1Ch "SQLFSTO" store a compiled SQL command
 + 1Dh "SQLFRET" retrieve a compiled SQL command
 + 1Eh "SQLFDST" drop a stored command
 + 1Fh "SQLFCTY" get command type
 + 20h "SQLFEPO" get error position
 + 21h "SQLFGNR" get number of rows
 + 22h "SQLFNSI" get number of select items
 + 23h "SQLFRBF" get Roll Back flag
 + 24h "SQLFRCD" get return code
 + 25h "SQLFROW" get number of ROWs
 + 26h "SQLFSCN" set cursor name
 + 27h "SQLFSIL" set isolation level
 + 28h "SQLFSLP" set log parameters
 + 29h "SQLFSSB" set select buffer
 + 2Ah "SQLFSSS" set sort space
 + 2Bh "SQLFRLO" read long
 + 2Ch "SQLFWLO" write long
 + 2Dh "SQLFLSK" long seek
 + 2Eh "SQLFGLS" get long size
 + 2Fh "SQLFELO" end long operation
 + 30h "SQLFRBK" roll back a transaction from the database
 + 31h "SQLFERR" error message
 + 32h "SQLFCPY" copy
 + 33h "SQLFR01" reserved
 + 34h "SQLFSYS" system
 + 35h "SQLFSTA" statistics
 + 36h "SQLFR02" reserved
 + 37h "SQLFXAD" extra add
 + 38h "SQLFXCN" extra character to number
 + 39h "SQLFXDA" extra date add
 + 3Ah "SQLFXDP" extra date picture
 + 3Bh "SQLFXDV" extra divide
 + 3Ch "SQLFXML" extra multiply
 + 3Dh "SQLFXNP" extra number picture
 + 3Eh "SQLFXPD" extra picture date
 + 3Fh "SQLFXSB" extra subtract
 + 40h "SQLFINS" install database
 + 41h "SQLFDIN" deinstall database
 + 42h "SQLFDIR" directory of databases
 + 43h "SQLFTIO" timeout
 + 44h "SQLFFQN" get fully qualified column name
 + 45h "SQLFEXP" explain execution plan
 + 46h "SQLFFER" get full error
 + 47h "SQLFBKP" begin online backup
 + 48h "SQLFRDC" read backup data chunk
 + 49h "SQLFEBK" end backup
 + 4Ah "SQLFRES" begin restore from backup
 + 4Bh "SQLFWDC" write backup data chunk for restore
 + 4Ch "SQLFRRD" recover restored database to consistent state
 + 4Dh "SQLFERS" end restore
 + 4Eh "SQLFNRR" return number of result set rows
 + 4Fh "SQLFSTR" start restriction mode
 + 50h "SQLFSPR" stop restriction mode
 + 51h "SQLFCNC" connect 2
 + 52h "SQLFCNR" connect with no recovery
 + 53h "SQLFOMS" set output message size
 + 54h "SQLFIMS" set input message size
 + 55h "SQLFSCP" set cache pages
 + 56h "SQLFDSC" describe items of a SELECT statement (external)
 + 57h "SQLFLAB" get label info for items in SELECT statement
 + 58h "SQLFCBV" clear bind variables
 + 59h "SQLFGET" get database information
 + 5Ah "SQLFSET" set database information
 + 5Bh "SQLFTEC" translate error code
 +----------478001-----------------------------
 +INT 47 - SQL Base - GET VERSION NUMBER
 + AX = 8001h
 +Return: ???
 +Note: SQL Base is a network-oriented database engine by Gupta Technologies
 +----------48---------------------------------
 +INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
 +SeeAlso: INT 49"PCjr"
 +----------48---------------------------------
 +INT 48 - Z100 - Slave 8259 - S100 vectored line 0
 +SeeAlso: INT 47"Z100",INT 49"Z100"
 +----------48---------------------------------
 +INT 48 - Watstar PC Network data pointer 1
 +SeeAlso: INT 49"Watstar"
 +----------49---------------------------------
 +INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
 +SeeAlso: INT 48"PCjr"
 +
 +Format of translation table:
 +Offset Size Description
 + 00h BYTE number of nonkeyboard scancodes in the table
 + 01h  N WORDs high byte 00h (NUL) byte scancode with low order byte
 + representing the scancode mapped values relative to their
 + input values within the range of 56h through 7Eh
 +----------49---------------------------------
 +INT 49 - Z100 - Slave 8259 - S100 vectored line 1
 +SeeAlso: INT 48"Z100",INT 4A"Z100"
 +----------49---------------------------------
 +INT 49 - Texas Instruments PC - VIDEO I/O???
 + apparently provides direct video display on the TI Professional PC
 +----------49---------------------------------
 +INT 49 - Watstar PC Network data pointer 2
 +SeeAlso: INT 49"Watstar"
 +----------490001-----------------------------
 +INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
 + AX = 0001h
 +Return: AX = status
 +     0000h cannot magnify current video mode
 +     0002h magnified (text mode)
 +     0003h magnified (graphics mode)
 +     FFFDh function works only in magnified mode
 +     FFFFh MAGic busy, retry later
 + BX,CX,DX destroyed
 +Notes: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
 +   providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
 + INT 49 is the default, but may be overridden on the commandline.  The
 +   actual interrupt in use may be found by searching for the signature
 +   "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
 +   the interrupt handler (this is also the installation check). MAGic
 +   uses CodeRunneR, which places the signature "RT" at offset 0000h in
 +   the interrupt handler's segment, followed by MAGic's TSR ID of
 +   "VMAG".
 +SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0008h
 +----------490002-----------------------------
 +INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
 + AX = 0002h
 +Return: AX = status (see AX=0001h)
 + BX,CX,DX destroyed
 +SeeAlso: AX=0001h
 +----------490003-----------------------------
 +INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
 + AX = 0003h
 + BX = vertical position (character row [text] or pixel row [graphics])
 + DX = horizontal position (char column [text] or 8-pixel units [gr])
 +Return: AX = status
 +     0000h successful
 +     FFFFh MAGic busy, retry later
 + BX,CX,DX destroyed
 +Note: window is not moved if the position is inside the current window
 +SeeAlso: AX=0001h,AX=0004h,AX=0005h
 +----------490004-----------------------------
 +INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
 + AX = 0004h
 + BX = vertical position of upper left corner
 + DX = horizontal position
 +Return: AX = status (see AX=0003h)
 + BX,CX,DX destroyed
 +SeeAlso: AX=0001h,AX=0003h,AX=0005h
 +----------490005-----------------------------
 +INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
 + AX = 0005h
 +Return: AX = status
 +     0000h successful
 + BX = vertical position (char row or pixel row)
 + DX = horizontal position (char column or 8-pixel units)
 +     FFFFh MAGic busy, retry later
 + BX,DX destroyed
 + CX destroyed
 +SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
 +----------490006-----------------------------
 +INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
 + AX = 0006h
 +Return: AX = status
 +     0000h successful
 + BX = vertical size (char rows or pixel rows)
 + DX = horizontal size (char cols or 8-pixel units)
 +     FFFFh MAGic busy, retry later
 + BX,DX destroyed
 + CX destroyed
 +SeeAlso: AX=0001h,AX=0005h,AX=0007h
 +----------490007-----------------------------
 +INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
 + AX = 0007h
 +Return: AX = status
 +     0000h successful
 + BX = vertical size (char rows or pixel rows)
 + DX = horizontal size (char cols or 8-pixel units)
 +     FFFEh invalid function
 +     FFFFh MAGic busy, retry later
 + BX,DX destroyed
 + CX destroyed
 +BUG: in v1.16 and v1.17, this function is not recognized as valid, but
 +   AX=0000h is accepted and will branch into hyperspace
 +SeeAlso: AX=0001h,AX=0006h
 +----------490008-----------------------------
 +INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
 + AX = 0008h
 + BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
 +Return: AX = status
 +     0000h successful
 +     FFFBh scaling factor only available in MAGic Deluxe
 +     FFFCh already in magnified state, can't set size
 +Notes: this call specifies the amount a subsequent call to AX=0001h should
 +   magnify the display
 + scaling factors greater than 2 are only available in MAGic Deluxe
 +SeeAlso: AX=0001h
 +----------4A---------------------------------
 +INT 4A - SYSTEM - USER ALARM HANDLER
 +   This interrupt is invoked by the BIOS when a real-time clock alarm occurs.
 +   An application may use it to perform an action at a predetermined time;
 +   however, this interrupt is called from within a hardware interrupt handler,
 +   so all usual precautions against reentering DOS must be taken.
 +SeeAlso: INT 1A/AH=06h
 +----------4A---------------------------------
 +INT 4A - Z100 - Slave 8259 - S100 vectored line 2
 +SeeAlso: INT 49"Z100",INT 4B"Z100"
 +----------4B---------------------------------
 +INT 4B - Z100 - Slave 8259 - S100 vectored line 3
 +SeeAlso: INT 4A"Z100",INT 4C"Z100"
 +----------4B---------------------------------
 +INT 4B - Common Access Method SCSI interface (draft revision 1.9)
 + ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
 +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 installation check for the driver is the string "SCSI_CAM" eight
 +   bytes past the INT 4Bh handler
 + it is not known whether any drivers actually implemented this
 +   interface on INT 4B instead of INT 4F
 +SeeAlso: INT 4F/AX=8100h
 +----------4B80-------------------------------
 +INT 4B - IBM SCSI interface
 + AH = 80h
 + details not yet available
 +----------4B8102DX0000-----------------------
 +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
 +         0000h for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
 +         0001h for Microsoft's EMM386.EXE
 + 4560h ("E`") for Qualitas' 386MAX
 +         4D43h ("MC") for V Communication's Memory Commander
 + 5145h ("QE") for Quarterdeck's QEMM-386
 +     CX = product revision number
 +         always 0000h for QMAPS and HPMM.SYS
 +         always 0001h for Microsoft's EMM386.EXE v4.20-4.41
 +     SI:DI = maximum DMA buffer size
 +     DX = flags
 + bit 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)
 + CF set on error
 +     AL = error code (see below)
 +Note: bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
 +   apparently not always the case
 +SeeAlso: INT 31
 +
 +Values for 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
 +
 +Format of DMA descriptor structure (DDS):
 +Offset Size Description
 + 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
 + 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
 + 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
 +----------4B8103-----------------------------
 +INT 4B - Virtual DMA Specification - LOCK DMA REGION
 + AX = 8103h
 + DX = flags
 +     bit 0: reserved (zero)
 + 1: data should be copied into buffer (ignored if bit 2 set)
 + 2: buffer should not be allocated if region noncontiguous or
 +    crosses physical alignment boundary specified by bits 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)
 + ES:DI -> DMA descriptor structure (see AX=8102h)
 +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 AX=8102h)
 +     DDS region size field filled wth maximum contiguous length in bytes
 +SeeAlso: AX=8104h,AX=8105h
 +----------4B8104-----------------------------
 +INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
 + AX = 8104h
 + DX = flags
 +     bit 0: reserved (zero)
 + 1: data should be copied out of buffer
 +      2-15: reserved (zero)
 + ES:DI -> DMA descriptor structure (see AX=8102h) 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 AX=8102h)
 +     DDS region size field filled wth maximum contiguous length in bytes
 +SeeAlso: AX=8103h,AX=8106h
 +----------4B8105-----------------------------
 +INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
 + AX = 8105h
 + DX = flags
 +     bits 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)
 + ES:DI -> Extended DMA descriptor structure (see AX=8102h)
 + 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 AX=8102h)
 +     EDDS region size field filled with max length in bytes that can be
 + locked and described in the EDDS table
 +SeeAlso: AX=8103h,AX=8106h
 +----------4B8106-----------------------------
 +INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
 + AX = 8106h
 + DX = flags
 +     bits 0-5: reserved (zero)
 +    6: EDDS contains page table entries
 +    7: EDDS may contain not-present pages (entry = 0000h)
 + 8-15: reserved (zero)
 + ES:DI -> Extended DMA descriptor structure (see AX=8102h) returned
 + by AX=8105h
 +Return: CF clear if successful
 + CF set on error
 +     AL = error code (see AX=8102h)
 +SeeAlso: AX=8104h,AX=8105h
 +----------4B8107-----------------------------
 +INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
 + AX = 8107h
 + DX = flags
 +     bit 0: reserved (zero)
 + 1: data should be copied into buffer
 +      2-15: reserved (zero)
 + ES:DI -> DMA descriptor structure (see AX=8102h) 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 AX=8102h)
 +SeeAlso: AX=8108h
 +----------4B8108-----------------------------
 +INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
 + AX = 8108h
 + DX = flags
 +     bit 0: reserved (zero)
 + 1: data should be copied out of buffer
 +      2-15: reserved (zero)
 + ES:DI -> DMA descriptor structure (see AX=8102h) 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 AX=8102h)
 +SeeAlso: AX=8107h
 +----------4B8109DX0000-----------------------
 +INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
 + AX = 8109h
 + DX = 0000h
 + ES:DI -> DMA descriptor structure (see AX=8102h) 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 AX=8102h)
 +SeeAlso: AX=810Ah
 +----------4B810ADX0000-----------------------
 +INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
 + AX = 810Ah
 + DX = 0000h
 + ES:DI -> DMA descriptor structure (see AX=8102h) 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 AX=8102h)
 +SeeAlso: AX=8109h
 +----------4B810B-----------------------------
 +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 AX=8102h)
 +SeeAlso: AX=810Ch
 +----------4B810C-----------------------------
 +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 AX=8102h)
 +SeeAlso: AX=810Bh
 +----------4B810D-----------------------------
 +INT 4B - QEMM-386 - BUG
 + AX = 810Dh
 +Note: the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
 +   call
 +----------4C---------------------------------
 +INT 4C - Z100 - Slave 8259 - S100 vectored line 4
 +SeeAlso: INT 4B"Z100",INT 4D"Z100"
 +----------4D---------------------------------
 +INT 4D - Z100 - Slave 8259 - S100 vectored line 5
 +SeeAlso: INT 4C"Z100",INT 4E"Z100"
 +----------4E---------------------------------
 +INT 4E - TI Professional PC - DISK I/O
 + used instead of INT 13 on the TI Professional PC
 +SeeAlso: INT 13
 +----------4E---------------------------------
 +INT 4E - Z100 - Slave 8259 - S100 vectored line 6
 +SeeAlso: INT 4D"Z100",INT 4F"Z100"
 +----------4F---------------------------------
 +INT 4F - Z100 - Slave 8259 - S100 vectored line 7
 +SeeAlso: INT 4E"Z100"
 +----------4F8100-----------------------------
 +INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
 + AX = 8100h
 + ES:BX -> CAM Control Block (CCB) (see below)
 +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 4B"Common Access Method"
 +
 +Format of CAM Control Block:
 +Offset Size Description
 + 00h DWORD physical address of this CCB
 + 04h WORD CAM control block length
 + 06h BYTE function code (see below)
 + 07h BYTE CAM status (see below)
 + 08h BYTE SCSI status
 + 09h BYTE path ID (FFh = XPT)
 + 0Ah BYTE target ID
 + 0Bh BYTE logical unit number
 + 0Ch BYTE CAM flags
 + bits 7-6: direction
 + 00 reserved
 + 01 in
 + 10 out
 + 11 no data transfer
 + bit 5: disable autosense
 +     4: scatter/gather
 +     3: disable callback on completion
 +     2: linked CDB
 +     1: tagged queue action enable
 +     0: CDB is a pointer
 + 0Dh BYTE CAM flags
 + bit 7: disable disconnect
 +     6: initiate synchronous transfers  \ mutually
 +     5: disable synchronous transfers   / exclusive
 +     4: SIM queue priority
 + 1 head insertion
 + 0 tail insertion (normal)
 + bit 3: SIM queue freeze
 +     2: engine synchronize
 + bits 1-0: reserved
 + 0Eh BYTE CAM address flags
 + bit 7: SG list/data (0 = host, 1 = engine)
 + bit 6: CDB pointer    (bits 6-1: 0=virtual addr, 1=phys addr)
 + bit 5: SG list/data
 + bit 4: sense buffer
 + bit 3: message buffer
 + bit 2: next CCB
 + bit 1: callback on completion
 + bit 0: reserved
 + 0Fh BYTE target-mode flags
 + bit 7: data buffer valid
 + bit 6: status valid
 + bit 5: message buffer valid
 + bit 4: reserved
 + bit 3: phase-cognizant mode
 + bit 2: target CCB available
 + bit 1: disable autodisconnect
 + bit 0: disable autosave/restore
 +---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
 + bit 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
 + 12h BYTE target mode support
 + bit 7: processor mode
 +     6: phase-cognizant mode
 +     5-0: reserved
 + 13h BYTE miscellaneous flags
 + bit 7: scanned high to low instead of low to high
 +     6: removables not included in scan
 +     5: inquiry data not kept by XPT
 +     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
 + bits 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
 + 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 (see CAM function 03h above)
 + 14h DWORD pointer to asynchronous callback routine
 + 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
 + 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
 + 30h  4 BYTEs reserved
 + 34h BYTE SCSI status
 + 35h  3 BYTEs reserved
 + 38h DWORD residual length
 + 40h 12 BYTEs Command Descriptor Block (CDB)
 + 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
 +
 +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
 +
 +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
 +
 +Completion callback function called with:
 + interrupts disabled
 + ES:BX -> completed CCB
 +
 +Asynchronous callback function 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
 +----------4F8200CX8765-----------------------
 +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"
 +----------50---------------------------------
 +INT 50 - TIL Xpert AIM (X.25)
 + AH = function
 +----------50---------------------------------
 +INT 50 - IRQ0 relocated by DESQview
 +Notes: this is the default location for older versions; DESQview v2.26+
 +   searches for unused ranges of interrupts and uses the lowest
 +   available range in its list for relocating these IRQs and the next
 +   lowest for relocating IRQ8-IRQ15
 + a range of eight interrupts starting at a multiple of 8 is considered
 +   available if all vectors are identical and it has not been excluded
 +   with an /XB:nn commandline switch
 + the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
 +   are available, F8h and then 50h are used anyway)
 + the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
 +   are available, F8h and then F0h are used anyway)
 +SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
 +----------50---------------------------------
 +INT 50 - IRQ0 relocated by IBM 3278 emulation control program
 +SeeAlso: INT 51"IBM 3278"
 +----------50---------------------------------
 +INT 50 - IRQ0 relocated by OS/2 v1.x
 +SeeAlso: INT 51"OS/2"
 +----------500000-----------------------------
 +INT 50 - Vanderaart TEXT WINDOWS - OPEN TEXT WINDOW
 + AX = 0000h
 + ES:BX -> name string or ES:0000h if none
 + CH,CL = row,column of upper left corner
 + DH,DL = row,column of lower right corner
 +Return: AX = window handle or
 +     0000h if not installed
 +     FFFFh on error
 +SeeAlso: AX=0001h,AX=0002h
 +----------500001-----------------------------
 +INT 50 - Vanderaart TEXT WINDOWS - CLOSE TEXT WINDOW
 + AX = 0001h
 + DI = window handle
 +SeeAlso: AX=0000h
 +----------500002-----------------------------
 +INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
 + AX = 0002h
 + BL = character
 + BH = attribute
 + DL = column
 + DH = row
 + DI = window handle
 +Return: AX = status
 +     0000h if successful
 +     FFFFh if outside window
 +SeeAlso: AX=0000h
 +----------500003-----------------------------
 +INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
 + AX = 0003h
 + ES:BX -> text string
 + CX = string length (0000h if ASCIZ string)
 + DL = position (FFh centered, else flush left)
 + DH = starting row
 + DI = window handle
 +Return: AX = status
 +     0000h successful
 +     FFFFh did not fit in window
 +----------500004-----------------------------
 +INT 50 - Vanderaart TEXT WINDOWS - GET KEY
 + AX = 0004h
 + CH = type
 +     00h any key
 +     01h 'J' or 'N' (Dutch for yes/no)
 +Return: AX = key
 +----------500005-----------------------------
 +INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
 + AX = 0005h
 + BL = new attribute
 + CH,CL = row,column of upper left corner
 + DH,DL = row,column of lower right corner
 + DI = window handle
 +----------500006-----------------------------
 +INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
 + AX = 0006h
 + ES:BX -> text string
 + CH = type
 +     00h everything
 +     01h uppercase only
 +     02h positive numbers
 +     03h Dutch postal code ("9999 AA")
 +     04h 'J' or 'N' (Dutch yes/no)
 +     05h telephone or FAX number
 +     06h positive or negative number
 +     07h date (dd/mm/yy)
 +     08h money
 +     09h '1' through '8'
 +     0Ah '1' through '4'
 +     0Bh uppercase filenames
 + DH,DL = row,column of upper left corner
 + DI = window handle
 +Return: AX = key which terminated entry
 +     0000h Enter
 +     0001h Esc
 +     0002h Down arrow
 +     0003h Up arrow
 +     0004h F10