Table des matières

MSDOS - Interrupt List 41h-50h

INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE

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

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