home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / TEXT / INFO / INTER30B.ZIP / INTERRUP.F < prev    next >
Encoding:
Text File  |  1992-04-26  |  251.4 KB  |  7,367 lines

  1. Interrupt List, part 6 of 7
  2. This compilation is Copyright (c) 1989,1990,1991,1992 Ralf Brown
  3. ----------40---------------------------------
  4. INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
  5. SeeAlso: INT 13,INT 63
  6. ----------40---------------------------------
  7. INT 40 - Z100 - Master 8259 - Parity error or S100 error
  8. SeeAlso: INT 41"Z100",INT FF"Z100"
  9. ----------41---------------------------------
  10. INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
  11. Note:    the default parameter table array is located at F000h:E401h in 100%
  12.       compatible BIOSes; the pointer may be overridden by the hard disk
  13.       controller's BIOS to support drive formats unknown to the ROM BIOS
  14. SeeAlso: INT 13/AH=09h,INT 1E,INT 46
  15.  
  16. Format of fixed disk parameters:
  17. Offset    Size    Description
  18.  00h    WORD    number of cylinders
  19.  02h    BYTE    number of heads
  20.  03h    WORD    starting reduced write current cylinder (XT only, 0 for others)
  21.  05h    WORD    starting write precompensation cylinder number
  22.  07h    BYTE    maximum ECC burst length (XT only)
  23.  08h    BYTE    control byte
  24.            bits 0-2: drive option (XT only, 0 for others)
  25.            bit 3:    set if more than 8 heads (AT and later only)
  26.            bit 4:    always 0
  27.            bit 5:    set if manufacturer's defect map on max cylinder+1
  28.                  (AT and later only)
  29.            bit 6:    disable ECC retries
  30.            bit 7:    disable access retries
  31.  09h    BYTE    standard timeout (XT only, 0 for others)
  32.  0Ah    BYTE    formatting timeout (XT only, 0 for others)
  33.  0Bh    BYTE    timeout for checking drive (XT only, 0 for others)
  34.  0Ch    WORD    cylinder number of landing zone (AT and later only)
  35.  0Eh    BYTE    number of sectors per track (AT and later only)
  36.  0Fh    BYTE    reserved
  37. ----------41---------------------------------
  38. INT 41 - Z100 - Master 8259 - Processor Swap
  39. SeeAlso: INT 40"Z100",INT 42"Z100"
  40. ----------4112-------------------------------
  41. INT 41 P - MS Windows debugging kernel - "OutputDebugString"
  42.     AH = 12h
  43.     ???
  44. Return: ???
  45. SeeAlso: AH=50h
  46. ----------4150-------------------------------
  47. INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
  48.     AH = 50h
  49.     ???
  50. Return: ???
  51. SeeAlso: AH=12h
  52. ----------42---------------------------------
  53. INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
  54. SeeAlso: INT 10
  55. Note:    not used by PS/2 built-in VGA or XGA
  56. ----------42---------------------------------
  57. INT 42 - Z100 - Master 8259 - Timer
  58. SeeAlso: INT 41"Z100",INT 43"Z100"
  59. ----------43---------------------------------
  60. INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
  61.    points at graphics data for characters 00h-7Fh of the current font
  62. SeeAlso: INT 1F,INT 44"VIDEO"
  63. ----------43---------------------------------
  64. INT 43 - Z100 - Master 8259 - Slave 8259 input
  65. Note:    slave runs in special fully nested mode
  66. SeeAlso: INT 42"Z100",INT 44"Z100"
  67. ----------44---------------------------------
  68. INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
  69.    points at graphics data for current character font
  70. SeeAlso: INT 1F,INT 43"VIDEO"
  71. ----------44---------------------------------
  72. INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
  73. ----------44---------------------------------
  74. INT 44 - IBM 3270-PC High Level Language API
  75.     DS:SI -> parameter control block
  76. ----------44---------------------------------
  77. INT 44 - Z100 - Master 8259 - Serial A
  78. SeeAlso: INT 43"Z100",INT 45"Z100"
  79. ----------45---------------------------------
  80. INT 45 - Z100 - Master 8259 - Serial B
  81. SeeAlso: INT 44"Z100",INT 46"Z100"
  82. ----------46---------------------------------
  83. INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
  84. SeeAlso: INT 13/AH=09h,INT 41
  85. ----------46---------------------------------
  86. INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
  87. SeeAlso: INT 45"Z100",INT 47"Z100"
  88. ----------47---------------------------------
  89. INT 47 - Z100 - Master 8259 - Printer
  90. SeeAlso: INT 46"Z100",INT 48"Z100"
  91. ----------478000-----------------------------
  92. INT 47 - SQL Base - DATABASE ENGINE API
  93.     AX = 8000h
  94.     DS:BX -> parameter block, first word is function number
  95. Note:    SQL Base is a network-oriented database engine by Gupta Technologies
  96.  
  97. Values for function number:
  98.  01h    "SQLFINI" initalialize application's use of the database
  99.  02h    "SQLFDON" application is done using the database
  100.  03h    "SQLFCON" connect to a cursor/database
  101.  04h    "SQLFDIS" disconnect from a cursor/database
  102.  05h    "SQLFCOM" compile a SQL command
  103.  06h    "SQLFEXE" execute a SQL command
  104.  07h    "SQLFCEX" compile and execute a SQL command
  105.  08h    "SQLFCMT" commit a transaction to the database
  106.  09h    "SQLFDES" describe the items of a SELECT statement
  107.  0Ah    "SQLFGFI" get fetch information
  108.  0Bh    "SQLFFBK" fetch previous result row from SELECT statement
  109.  0Ch    "SQLFFET" fetch next result row from SELECT statement
  110.  0Dh    "SQLFEFB" enable fetch backwards
  111.  0Eh    "SQLFPRS" position in result set
  112.  0Fh    "SQLFURS" undo result set
  113.  10h    "SQLFNBV" get number of bind variables
  114.  11h    "SQLFBND" bind data variables
  115.  12h    "SQLFBNN" bind numerics
  116.  13h    "SQLFBLN" bind long number
  117.  14h    "SQLFBLD" bind long data variables
  118.  15h    "SQLFSRS" start restriction set processing
  119.  16h    "SQLFRRS" restart restriction set processing
  120.  17h    "SQLFCRS" close restriction set
  121.  18h    "SQLFDRS" drop restriction set
  122.  19h    "SQLFARF" apply Roll Forward journal
  123.  1Ah    "SQLFERF" end Roll Forward journal
  124.  1Bh    "SQLFSRF" start Roll Forward journal
  125.  1Ch    "SQLFSTO" store a compiled SQL command
  126.  1Dh    "SQLFRET" retrieve a compiled SQL command
  127.  1Eh    "SQLFDST" drop a stored command
  128.  1Fh    "SQLFCTY" get command type
  129.  20h    "SQLFEPO" get error position
  130.  21h    "SQLFGNR" get number of rows
  131.  22h    "SQLFNSI" get number of select items
  132.  23h    "SQLFRBF" get Roll Back flag
  133.  24h    "SQLFRCD" get return code
  134.  25h    "SQLFROW" get number of ROWs
  135.  26h    "SQLFSCN" set cursor name
  136.  27h    "SQLFSIL" set isolation level
  137.  28h    "SQLFSLP" set log parameters
  138.  29h    "SQLFSSB" set select buffer
  139.  2Ah    "SQLFSSS" set sort space
  140.  2Bh    "SQLFRLO" read long
  141.  2Ch    "SQLFWLO" write long
  142.  2Dh    "SQLFLSK" long seek
  143.  2Eh    "SQLFGLS" get long size
  144.  2Fh    "SQLFELO" end long operation
  145.  30h    "SQLFRBK" roll back a transaction from the database
  146.  31h    "SQLFERR" error message
  147.  32h    "SQLFCPY" copy
  148.  33h    "SQLFR01" reserved
  149.  34h    "SQLFSYS" system
  150.  35h    "SQLFSTA" statistics
  151.  36h    "SQLFR02" reserved
  152.  37h    "SQLFXAD" extra add
  153.  38h    "SQLFXCN" extra character to number
  154.  39h    "SQLFXDA" extra date add
  155.  3Ah    "SQLFXDP" extra date picture
  156.  3Bh    "SQLFXDV" extra divide
  157.  3Ch    "SQLFXML" extra multiply
  158.  3Dh    "SQLFXNP" extra number picture
  159.  3Eh    "SQLFXPD" extra picture date
  160.  3Fh    "SQLFXSB" extra subtract
  161.  40h    "SQLFINS" install database
  162.  41h    "SQLFDIN" deinstall database
  163.  42h    "SQLFDIR" directory of databases
  164.  43h    "SQLFTIO" timeout
  165.  44h    "SQLFFQN" get fully qualified column name
  166.  45h    "SQLFEXP" explain execution plan
  167.  46h    "SQLFFER" get full error
  168.  47h    "SQLFBKP" begin online backup
  169.  48h    "SQLFRDC" read backup data chunk
  170.  49h    "SQLFEBK" end backup
  171.  4Ah    "SQLFRES" begin restore from backup
  172.  4Bh    "SQLFWDC" write backup data chunk for restore
  173.  4Ch    "SQLFRRD" recover restored database to consistent state
  174.  4Dh    "SQLFERS" end restore
  175.  4Eh    "SQLFNRR" return number of result set rows
  176.  4Fh    "SQLFSTR" start restriction mode
  177.  50h    "SQLFSPR" stop restriction mode
  178.  51h    "SQLFCNC" connect 2
  179.  52h    "SQLFCNR" connect with no recovery
  180.  53h    "SQLFOMS" set output message size
  181.  54h    "SQLFIMS" set input message size
  182.  55h    "SQLFSCP" set cache pages
  183.  56h    "SQLFDSC" describe items of a SELECT statement (external)
  184.  57h    "SQLFLAB" get label info for items in SELECT statement
  185.  58h    "SQLFCBV" clear bind variables
  186.  59h    "SQLFGET" get database information
  187.  5Ah    "SQLFSET" set database information
  188.  5Bh    "SQLFTEC" translate error code
  189. ----------478001-----------------------------
  190. INT 47 - SQL Base - GET VERSION NUMBER
  191.     AX = 8001h
  192. Return: ???
  193. Note:    SQL Base is a network-oriented database engine by Gupta Technologies
  194. ----------48---------------------------------
  195. INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
  196. SeeAlso: INT 49"PCjr"
  197. ----------48---------------------------------
  198. INT 48 - Z100 - Slave 8259 - S100 vectored line 0
  199. SeeAlso: INT 47"Z100",INT 49"Z100"
  200. ----------48---------------------------------
  201. INT 48 - Watstar PC Network data pointer 1
  202. SeeAlso: INT 49"Watstar"
  203. ----------49---------------------------------
  204. INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
  205. SeeAlso: INT 48"PCjr"
  206.  
  207. Format of translation table:
  208. Offset    Size    Description
  209.  00h    BYTE    number of nonkeyboard scancodes in the table
  210.  01h  N WORDs    high byte 00h (NUL) byte scancode with low order byte
  211.         representing the scancode mapped values relative to their
  212.         input values within the range of 56h through 7Eh
  213. ----------49---------------------------------
  214. INT 49 - Z100 - Slave 8259 - S100 vectored line 1
  215. SeeAlso: INT 48"Z100",INT 4A"Z100"
  216. ----------49---------------------------------
  217. INT 49 - Texas Instruments PC - VIDEO I/O???
  218.     apparently provides direct video display on the TI Professional PC
  219. ----------49---------------------------------
  220. INT 49 - Watstar PC Network data pointer 2
  221. SeeAlso: INT 49"Watstar"
  222. ----------490001-----------------------------
  223. INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
  224.     AX = 0001h
  225. Return: AX = status
  226.         0000h cannot magnify current video mode
  227.         0002h magnified (text mode)
  228.         0003h magnified (graphics mode)
  229.         FFFDh function works only in magnified mode
  230.         FFFFh MAGic busy, retry later
  231.     BX,CX,DX destroyed
  232. Notes:    MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
  233.       providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
  234.     INT 49 is the default, but may be overridden on the commandline.  The
  235.       actual interrupt in use may be found by searching for the signature
  236.       "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
  237.       the interrupt handler (this is also the installation check).    MAGic
  238.       uses CodeRunneR, which places the signature "RT" at offset 0000h in
  239.       the interrupt handler's segment, followed by MAGic's TSR ID of
  240.       "VMAG".
  241. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0008h
  242. ----------490002-----------------------------
  243. INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
  244.     AX = 0002h
  245. Return: AX = status (see AX=0001h)
  246.     BX,CX,DX destroyed
  247. SeeAlso: AX=0001h
  248. ----------490003-----------------------------
  249. INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
  250.     AX = 0003h
  251.     BX = vertical position (character row [text] or pixel row [graphics])
  252.     DX = horizontal position (char column [text] or 8-pixel units [gr])
  253. Return: AX = status
  254.         0000h successful
  255.         FFFFh MAGic busy, retry later
  256.     BX,CX,DX destroyed
  257. Note:    window is not moved if the position is inside the current window
  258. SeeAlso: AX=0001h,AX=0004h,AX=0005h
  259. ----------490004-----------------------------
  260. INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
  261.     AX = 0004h
  262.     BX = vertical position of upper left corner
  263.     DX = horizontal position
  264. Return: AX = status (see AX=0003h)
  265.     BX,CX,DX destroyed
  266. SeeAlso: AX=0001h,AX=0003h,AX=0005h
  267. ----------490005-----------------------------
  268. INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
  269.     AX = 0005h
  270. Return: AX = status
  271.         0000h successful
  272.         BX = vertical position (char row or pixel row)
  273.         DX = horizontal position (char column or 8-pixel units)
  274.         FFFFh MAGic busy, retry later
  275.         BX,DX destroyed
  276.     CX destroyed
  277. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
  278. ----------490006-----------------------------
  279. INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
  280.     AX = 0006h
  281. Return: AX = status
  282.         0000h successful
  283.         BX = vertical size (char rows or pixel rows)
  284.         DX = horizontal size (char cols or 8-pixel units)
  285.         FFFFh MAGic busy, retry later
  286.         BX,DX destroyed
  287.     CX destroyed
  288. SeeAlso: AX=0001h,AX=0005h,AX=0007h
  289. ----------490007-----------------------------
  290. INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
  291.     AX = 0007h
  292. Return: AX = status
  293.         0000h successful
  294.         BX = vertical size (char rows or pixel rows)
  295.         DX = horizontal size (char cols or 8-pixel units)
  296.         FFFEh invalid function
  297.         FFFFh MAGic busy, retry later
  298.         BX,DX destroyed
  299.     CX destroyed
  300. BUG:    in v1.16 and v1.17, this function is not recognized as valid, but
  301.       AX=0000h is accepted and will branch into hyperspace
  302. SeeAlso: AX=0001h,AX=0006h
  303. ----------490008-----------------------------
  304. INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
  305.     AX = 0008h
  306.     BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
  307. Return: AX = status
  308.         0000h successful
  309.         FFFBh scaling factor only available in MAGic Deluxe
  310.         FFFCh already in magnified state, can't set size
  311. Notes:    this call specifies the amount a subsequent call to AX=0001h should
  312.       magnify the display
  313.     scaling factors greater than 2 are only available in MAGic Deluxe
  314. SeeAlso: AX=0001h
  315. ----------4A---------------------------------
  316. INT 4A - SYSTEM - USER ALARM HANDLER
  317.    This interrupt is invoked by the BIOS when a real-time clock alarm occurs.
  318.    An application may use it to perform an action at a predetermined time;
  319.    however, this interrupt is called from within a hardware interrupt handler,
  320.    so all usual precautions against reentering DOS must be taken.
  321. SeeAlso: INT 1A/AH=06h
  322. ----------4A---------------------------------
  323. INT 4A - Z100 - Slave 8259 - S100 vectored line 2
  324. SeeAlso: INT 49"Z100",INT 4B"Z100"
  325. ----------4B---------------------------------
  326. INT 4B - Z100 - Slave 8259 - S100 vectored line 3
  327. SeeAlso: INT 4A"Z100",INT 4C"Z100"
  328. ----------4B---------------------------------
  329. INT 4B - Common Access Method SCSI interface (draft revision 1.9)
  330.     ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
  331. Notes:    the CAM committee moved the interface to INT 4F after revision 1.9
  332.       to avoid conflicting with the IBM SCSI interface and the Virtual
  333.       DMA specification
  334.     the installation check for the driver is the string "SCSI_CAM" eight
  335.       bytes past the INT 4Bh handler
  336.     it is not known whether any drivers actually implemented this
  337.       interface on INT 4B instead of INT 4F
  338. SeeAlso: INT 4F/AX=8100h
  339. ----------4B80-------------------------------
  340. INT 4B - IBM SCSI interface
  341.     AH = 80h
  342.     details not yet available
  343. ----------4B8102DX0000-----------------------
  344. INT 4B - Virtual DMA Specification (VDS) - GET VERSION
  345.     AX = 8102h
  346.     DX = 0000h
  347. Return: CF clear if successful
  348.         AH = major version number
  349.         AL = minor version number
  350.         BX = product number
  351.             0000h for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
  352.             0001h for Microsoft's EMM386.EXE
  353.         4560h ("E`") for Qualitas' 386MAX
  354.             4D43h ("MC") for V Communication's Memory Commander
  355.         5145h ("QE") for Quarterdeck's QEMM-386
  356.         CX = product revision number
  357.             always 0000h for QMAPS and HPMM.SYS
  358.             always 0001h for Microsoft's EMM386.EXE v4.20-4.41
  359.         SI:DI = maximum DMA buffer size
  360.         DX = flags
  361.         bit 0: PC/XT bus (DMA in first megabyte only)
  362.             1: physical buffer/remap region in first megabyte
  363.             2: automatic remap enabled
  364.             3: all memory is physically contiguous
  365.          4-15: reserved (zero)
  366.     CF set on error
  367.         AL = error code (see below)
  368. Note:    bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
  369.       apparently not always the case
  370. SeeAlso: INT 31
  371.  
  372. Values for error code:
  373.  01h    region not in contiguous memory
  374.  02h    region crossed a physical alignment boundary
  375.  03h    unable to lock pages
  376.  04h    no buffer available
  377.  05h    region too large for buffer
  378.  06h    buffer currently in use
  379.  07h    invalid memory region
  380.  08h    region was not locked
  381.  09h    number of physical pages greater than table length
  382.  0Ah    invalid buffer ID
  383.  0Bh    copy out of buffer range
  384.  0Ch    invalid DMA channel number
  385.  0Dh    disable count overflow
  386.  0Eh    disable count underflow
  387.  0Fh    function not supported
  388.  10h    reserved flag bits set in DX
  389.  
  390. Format of DMA descriptor structure (DDS):
  391. Offset    Size    Description
  392.  00h    DWORD    region size
  393.  04h    DWORD    offset
  394.  08h    WORD    segment/selector
  395.  0Ah    WORD    buffer ID
  396.  0Ch    DWORD    physical address
  397.  
  398. Format of Extended DMA descriptor structure (EDDS):
  399. Offset    Size    Description
  400.  00h    DWORD    region size
  401.  04h    DWORD    offset
  402.  08h    WORD    segment/selector
  403.  0Ah    WORD    reserved
  404.  0Ch    WORD    number available
  405.  0Eh    WORD    number used
  406.  10h    DWORD    region 0 physical address
  407.  14h    DWORD    region 0 size in bytes
  408.  18h    DWORD    region 1 physical address
  409.  1Ch    DWORD    region 1 size in bytes
  410.     ...
  411.  
  412. Format of Extended DMA descriptor structure (EDDS) with page table entries:
  413. Offset    Size    Description
  414.  00h    DWORD    region size
  415.  04h    DWORD    offset
  416.  08h    WORD    segment/selector
  417.  0Ah    WORD    reserved
  418.  0Ch    WORD    number available
  419.  0Eh    WORD    number used
  420.  10h    DWORD    page table entry 0 (same as 80386 page table entry)
  421.  14h    DWORD    page table entry 1
  422.     ...
  423. Note:    bits 1-11 of the page table entries should be zero; bit 0 set if page
  424.       is present and locked
  425. ----------4B8103-----------------------------
  426. INT 4B - Virtual DMA Specification - LOCK DMA REGION
  427.     AX = 8103h
  428.     DX = flags
  429.         bit 0: reserved (zero)
  430.         1: data should be copied into buffer (ignored if bit 2 set)
  431.         2: buffer should not be allocated if region noncontiguous or
  432.            crosses physical alignment boundary specified by bits 4-5
  433.         3: don't attempt automatic remap
  434.         4: region must not cross 64K physical alignment boundary
  435.         5: region must not cross 128K physical alignment boundary
  436.          6-15: reserved (zero)
  437.     ES:DI -> DMA descriptor structure (see AX=8102h)
  438. Return:    CF clear if successful
  439.         DDS physical address field filled in
  440.         DDS buffer ID field filled (0000h if no buffer allocated)
  441.     CF set on error
  442.         AL = error code (see AX=8102h)
  443.         DDS region size field filled wth maximum contiguous length in bytes
  444. SeeAlso: AX=8104h,AX=8105h
  445. ----------4B8104-----------------------------
  446. INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
  447.     AX = 8104h
  448.     DX = flags
  449.         bit 0: reserved (zero)
  450.         1: data should be copied out of buffer
  451.          2-15: reserved (zero)
  452.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size,
  453.         physical address, and buffer ID fields set
  454. Return: CF clear if successful
  455.         DDS physical address field set
  456.         DDS buffer ID field set (0000h if no buffer allocated)
  457.     CF set on error
  458.         AL = error code (see AX=8102h)
  459.         DDS region size field filled wth maximum contiguous length in bytes
  460. SeeAlso: AX=8103h,AX=8106h
  461. ----------4B8105-----------------------------
  462. INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
  463.     AX = 8105h
  464.     DX = flags
  465.         bits 0-5: reserved (zero)
  466.            6: EDDS should be returned with page table entries
  467.            7: only present pages should be locked (not-present pages
  468.             receive entry of 0000h)
  469.         8-15: reserved (zero)
  470.     ES:DI -> Extended DMA descriptor structure (see AX=8102h)
  471.         region size, linear segment, linear offset, and number avail
  472.         fields set
  473. Return: CF clear if successful
  474.         EDDS number used field set
  475.         if DX bit 6 set, lower 12 bits of BX = offset in first page
  476.     CF set on error
  477.         AL = error code (see AX=8102h)
  478.         EDDS region size field filled with max length in bytes that can be
  479.         locked and described in the EDDS table
  480. SeeAlso: AX=8103h,AX=8106h
  481. ----------4B8106-----------------------------
  482. INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
  483.     AX = 8106h
  484.     DX = flags
  485.         bits 0-5: reserved (zero)
  486.            6: EDDS contains page table entries
  487.            7: EDDS may contain not-present pages (entry = 0000h)
  488.         8-15: reserved (zero)
  489.     ES:DI -> Extended DMA descriptor structure (see AX=8102h) returned
  490.         by AX=8105h    
  491. Return: CF clear if successful
  492.     CF set on error
  493.         AL = error code (see AX=8102h)
  494. SeeAlso: AX=8104h,AX=8105h
  495. ----------4B8107-----------------------------
  496. INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
  497.     AX = 8107h
  498.     DX = flags
  499.         bit 0: reserved (zero)
  500.         1: data should be copied into buffer
  501.          2-15: reserved (zero)
  502.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size set
  503.         (also region offset and region segment if DX bit 1 set)
  504. Return: CF clear if successful
  505.         DDS physical address and buffer ID set
  506.         DDS region size filled with length of buffer
  507.     CF set on error
  508.         AL = error code (see AX=8102h)
  509. SeeAlso: AX=8108h
  510. ----------4B8108-----------------------------
  511. INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
  512.     AX = 8108h
  513.     DX = flags
  514.         bit 0: reserved (zero)
  515.         1: data should be copied out of buffer
  516.          2-15: reserved (zero)
  517.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID set
  518.         (also region size/region offset/segment if DX bit 1 set)
  519. Return: CF clear if successful
  520.     CF set on error
  521.         AL = error code (see AX=8102h)
  522. SeeAlso: AX=8107h
  523. ----------4B8109DX0000-----------------------
  524. INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
  525.     AX = 8109h
  526.     DX = 0000h
  527.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  528.         region segment/offset, and region size fields set
  529.     BX:CX = starting offset into DMA buffer
  530. Return: CF clear if successful
  531.     CF set on error
  532.         AL = error code (see AX=8102h)
  533. SeeAlso: AX=810Ah
  534. ----------4B810ADX0000-----------------------
  535. INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
  536.     AX = 810Ah
  537.     DX = 0000h
  538.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  539.         region segment/offset, and region size fields set
  540.     BX:CX = starting offset into DMA buffer
  541. Return: CF clear if successful
  542.     CF set on error
  543.         AL = error code (see AX=8102h)
  544. SeeAlso: AX=8109h
  545. ----------4B810B-----------------------------
  546. INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
  547.     AX = 810Bh
  548.     BX = DMA channel number
  549.     DX = 0000h
  550. Return: CF clear if successful
  551.     CF set on error
  552.         AL = error code (see AX=8102h)
  553. SeeAlso: AX=810Ch
  554. ----------4B810C-----------------------------
  555. INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
  556.     AX = 810Ch
  557.     BX = DMA channel number
  558.     DX = 0000h
  559. Return: CF clear if successful
  560.         ZF set if disable count decremented to zero
  561.     CF set on error
  562.         AL = error code (see AX=8102h)
  563. SeeAlso: AX=810Bh
  564. ----------4B810D-----------------------------
  565. INT 4B - QEMM-386 - BUG
  566.     AX = 810Dh
  567. Note:    the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
  568.       call
  569. ----------4C---------------------------------
  570. INT 4C - Z100 - Slave 8259 - S100 vectored line 4
  571. SeeAlso: INT 4B"Z100",INT 4D"Z100"
  572. ----------4D---------------------------------
  573. INT 4D - Z100 - Slave 8259 - S100 vectored line 5
  574. SeeAlso: INT 4C"Z100",INT 4E"Z100"
  575. ----------4E---------------------------------
  576. INT 4E - TI Professional PC - DISK I/O
  577.     used instead of INT 13 on the TI Professional PC
  578. SeeAlso: INT 13
  579. ----------4E---------------------------------
  580. INT 4E - Z100 - Slave 8259 - S100 vectored line 6
  581. SeeAlso: INT 4D"Z100",INT 4F"Z100"
  582. ----------4F---------------------------------
  583. INT 4F - Z100 - Slave 8259 - S100 vectored line 7
  584. SeeAlso: INT 4E"Z100"
  585. ----------4F8100-----------------------------
  586. INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
  587.     AX = 8100h
  588.     ES:BX -> CAM Control Block (CCB) (see below)
  589. Return: AH = status
  590.         00h successful
  591.         01h invalid CCB address (0000h:0000h)
  592. Note:    the SCSI Interface Module (SIM) may complete the requested function
  593.       and invoke the completion callback function before this call returns
  594. SeeAlso: AX=8200h,INT 4B"Common Access Method"
  595.  
  596. Format of CAM Control Block:
  597. Offset    Size    Description
  598.  00h    DWORD    physical address of this CCB
  599.  04h    WORD    CAM control block length
  600.  06h    BYTE    function code (see below)
  601.  07h    BYTE    CAM status (see below)
  602.  08h    BYTE    SCSI status
  603.  09h    BYTE    path ID (FFh = XPT)
  604.  0Ah    BYTE    target ID
  605.  0Bh    BYTE    logical unit number
  606.  0Ch    BYTE    CAM flags
  607.         bits 7-6: direction
  608.             00 reserved
  609.             01 in
  610.             10 out
  611.             11 no data transfer
  612.         bit 5: disable autosense
  613.             4: scatter/gather
  614.             3: disable callback on completion
  615.             2: linked CDB
  616.             1: tagged queue action enable
  617.             0: CDB is a pointer
  618.  0Dh    BYTE    CAM flags
  619.         bit 7: disable disconnect
  620.             6: initiate synchronous transfers  \ mutually
  621.             5: disable synchronous transfers   / exclusive
  622.             4: SIM queue priority
  623.             1 head insertion
  624.             0 tail insertion (normal)
  625.         bit 3: SIM queue freeze
  626.             2: engine synchronize
  627.         bits 1-0: reserved
  628.  0Eh    BYTE    CAM address flags
  629.         bit 7: SG list/data (0 = host, 1 = engine)
  630.         bit 6: CDB pointer    (bits 6-1: 0=virtual addr, 1=phys addr)
  631.         bit 5: SG list/data
  632.         bit 4: sense buffer
  633.         bit 3: message buffer
  634.         bit 2: next CCB
  635.         bit 1: callback on completion
  636.         bit 0: reserved
  637.  0Fh    BYTE    target-mode flags
  638.         bit 7: data buffer valid
  639.         bit 6: status valid
  640.         bit 5: message buffer valid
  641.         bit 4: reserved
  642.         bit 3: phase-cognizant mode
  643.         bit 2: target CCB available
  644.         bit 1: disable autodisconnect
  645.         bit 0: disable autosave/restore
  646. ---function 02h---
  647.  10h    DWORD    pointer to 36-byte buffer for inquiry data or 0000h:0000h
  648.  14h    BYTE    peripheral device type of target logical unit number
  649. ---function 03h---
  650.  10h    BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
  651.         09h-FFh = rev no, i.e. 23h = rev 2.3)
  652.  11h    BYTE    SCSI capabilities
  653.         bit 7: modify data pointers
  654.             6: wide bus (32 bits)
  655.             5: wide bus (16 bits)
  656.             4: synchronous transfers
  657.             3: linked commands
  658.             2: reserved
  659.             1: tagged queueing
  660.             0: soft reset
  661.  12h    BYTE    target mode support
  662.         bit 7: processor mode
  663.             6: phase-cognizant mode
  664.             5-0: reserved
  665.  13h    BYTE    miscellaneous flags
  666.         bit 7: scanned high to low instead of low to high
  667.             6: removables not included in scan
  668.             5: inquiry data not kept by XPT
  669.             4-0: reserved
  670.  14h    WORD    engine count
  671.  16h 14 BYTEs    vendor-specific data
  672.  24h    DWORD    size of private data area
  673.  28h    DWORD    asynchronous event capabilities
  674.         bits 31-24: vendor-specific
  675.              23-8: reserved
  676.             7: new devices found during rescan
  677.             6: SIM module deregistered
  678.             5: SIM module registered
  679.             4: sent bus device reset to target
  680.             3: SCSI AEN
  681.             2: reserved
  682.             1: unsolicited reselection
  683.             0: unsolicited SCSI bus reset
  684.  2Ch    BYTE    highest path ID assigned
  685.  2Dh    BYTE    SCSI device ID of initiator
  686.  2Eh  2 BYTEs    reserved
  687.  30h 16 BYTEs    SIM vendor ID
  688.  40h 16 BYTEs    HBA (host bus adaptor) vendor ID
  689.  50h  4 BYTEs    operating-system dependant usage
  690. ---functions 00h,04h,11h,12h---
  691.  no additional fields
  692. ---function 05h---
  693.  10h    DWORD    asynchronous event enables (see CAM function 03h above)
  694.  14h    DWORD    pointer to asynchronous callback routine
  695.  18h    DWORD    pointer to peripheral driver buffer
  696.  1Ch    BYTE    size of peripheral buffer
  697. ---function 06h---
  698.  10h    BYTE    peripheral device type of target
  699. ---functions 10h,13h---
  700.  10h    DWORD    pointer to CCB to be aborted
  701. ---function 20h---
  702.  10h    WORD    engine number
  703.  12h    BYTE    engine type
  704.         00h buffer memory
  705.         01h lossless compression
  706.         02h lossy compression
  707.         03h encryption
  708.  13h    BYTE    engine algorithm ID
  709.         00h vendor-unique
  710.         01h LZ1 variation 1 (STAC)
  711.         02h LZ2 variation 1 (HP DCZL)
  712.         03h LZ2 variation 2 (Infochip)
  713.  14h    DWORD    engine memory size
  714. ---function 21h---
  715.  10h    DWORD    pointer to peripheral driver
  716.  14h  4 BYTEs    reserved
  717.  18h    DWORD    OS-dependent request-mapping info
  718.  1Ch    DWORD    address of completion callback routine
  719.  20h    DWORD    pointer to scatter/gather list or data buffer
  720.  24h    DWORD    length of data transfer
  721.  28h    DWORD    pointer to engine buffer data
  722.  2Ch  2 BYTEs    reserved
  723.  2Eh    WORD    number of scatter/gather entries
  724.  30h    DWORD    maximum destination data length
  725.  34h    DWORD    length of destination data
  726.  38h    DWORD    source residual length
  727.  3Ch 12 BYTEs    reserved
  728.  48h    DWORD    OS-dependent timeout value
  729.  4Ch  4 BYTEs    reserved
  730.  50h    WORD    engine number
  731.  52h    WORD    vendor-unique flags
  732.  54h  4 BYTEs    reserved
  733.  58h  N BYTEs    private data area for SIM
  734. ---function 30h---
  735.  10h    WORD    group 6 vendor-unique CDB length
  736.  12h    WORD    group 7 vendor-unique CDB length
  737.  14h    DWORD    pointer to target CCB list
  738.  18h    WORD    number of target CCBs
  739. ---other functions---
  740.  10h    DWORD    pointer to peripheral driver
  741.  14h    DWORD    pointer to next CCB
  742.  18h    DWORD    OS-dependent request mapping information
  743.  1Ch    DWORD    address of completion callback routine
  744.  20h    DWORD    pointer to scatter/gather list or data buffer
  745.  24h    DWORD    length of data transfer
  746.  28h    DWORD    pointer to sense info buffer
  747.  2Ch    BYTE    length of sense info buffer
  748.  2Dh    BYTE    CDB length
  749.  2Eh    WORD    number of scatter/gather entries
  750.  30h  4 BYTEs    reserved
  751.  34h    BYTE    SCSI status
  752.  35h  3 BYTEs    reserved
  753.  38h    DWORD    residual length
  754.  40h 12 BYTEs    Command Descriptor Block (CDB)
  755.  44h    DWORD    OS-dependent timeout value
  756.  48h    DWORD    pointer to message buffer
  757.  4Ch    WORD    length of message buffer
  758.  4Eh    WORD    vendor-unique flags
  759.  50h    BYTE    tag queue action
  760.  51h  3 BYTEs    reserved
  761.  54h  N BYTEs    private data area for SIM
  762.  
  763. Values for CAM function code:
  764.  00h NOP
  765.  01h execute SCSI I/O
  766.  02h get device type
  767.  03h path inquiry
  768.  04h release SIM queue
  769.  05h set async callback
  770.  06h set device type
  771.  07h-0Fh reserved
  772.  10h abort SCSI command
  773.  11h reset SCSI bus
  774.  12h reset SCSI device
  775.  13h terminate I/O process
  776.  14h-1Fh reserved
  777.  20h engine inquiry
  778.  21h execute engine request
  779.  22h-2Fh reserved
  780.  30h enable logical unit number
  781.  31h execute target I/O
  782.  32h-7Fh reserved
  783.  80h-FFh vendor-specific functions
  784.  
  785. Values for CAM status:
  786.  00h request in progress
  787.  01h request successful
  788.  02h host aborted request
  789.  03h unable to abort request
  790.  04h request completed with error
  791.  05h CAM is busy
  792.  06h invalid request
  793.  07h invalid path ID
  794.  08h no such SCSI device
  795.  09h unable to terminate I/O process
  796.  0Ah timeout on target selection
  797.  0Bh timeout on command
  798.  0Dh receive message rejection
  799.  0Eh sent/received SCSI bus reset
  800.  0Fh detected uncorrectable parity error
  801.  10h Autosense request failed
  802.  11h no HBA detected
  803.  12h data over/underrun
  804.  13h bus freed unexpectedly
  805.  14h target bus phase sequence failure
  806.  15h CCB too small
  807.  16h requested capability not available
  808.  17h sent bus device reset
  809.  18h terminate I/O process
  810.  38h invalid LUN
  811.  39h invalid target ID
  812.  3Ah unimplemented function
  813.  3Bh nexus not established
  814.  3Ch invalid initiator ID
  815.  3Dh received SCSI Command Descriptor Block
  816.  3Eh LUN already enabled
  817.  3Fh SCSI bus busy
  818. Note:    bit 6 set to indicate frozen SIM queue
  819.     bit 7 set to indicate valid autosense
  820.  
  821. Completion callback function called with:
  822.     interrupts disabled
  823.     ES:BX -> completed CCB
  824.  
  825. Asynchronous callback function called with:
  826.     AH = opcode
  827.     AL = path ID generating callback
  828.     DH = target ID causing event
  829.     DL = LUN causing event
  830.     CX = data byte count (if applicable)
  831.     ES:BX -> data buffer (if applicable)
  832. Return: all registers preserved
  833. ----------4F8200CX8765-----------------------
  834. INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
  835.     AX = 8200h
  836.     CX = 8765h
  837.     DX = CBA9h
  838. Return: AH = 00h if installed
  839.         CX = 9ABCh
  840.         DX = 5678h
  841.         ES:DI -> "SCSI_CAM"
  842. SeeAlso: AX=8100h,INT 4B"Common Access Method"
  843. ----------50---------------------------------
  844. INT 50 - TIL Xpert AIM (X.25)
  845.     AH = function
  846. ----------50---------------------------------
  847. INT 50 - IRQ0 relocated by DESQview
  848. Notes:    this is the default location for older versions; DESQview v2.26+
  849.       searches for unused ranges of interrupts and uses the lowest
  850.       available range in its list for relocating these IRQs and the next
  851.       lowest for relocating IRQ8-IRQ15
  852.     a range of eight interrupts starting at a multiple of 8 is considered
  853.       available if all vectors are identical and it has not been excluded
  854.       with an /XB:nn commandline switch
  855.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  856.       are available, F8h and then 50h are used anyway)
  857.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  858.       are available, F8h and then F0h are used anyway)
  859. SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
  860. ----------50---------------------------------
  861. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  862. SeeAlso: INT 51"IBM 3278"
  863. ----------50---------------------------------
  864. INT 50 - IRQ0 relocated by OS/2 v1.x
  865. SeeAlso: INT 51"OS/2"
  866. ----------500000-----------------------------
  867. INT 50 - Vanderaart TEXT WINDOWS - OPEN TEXT WINDOW
  868.     AX = 0000h
  869.     ES:BX -> name string or ES:0000h if none
  870.     CH,CL = row,column of upper left corner
  871.     DH,DL = row,column of lower right corner
  872. Return: AX = window handle or
  873.         0000h if not installed
  874.         FFFFh on error
  875. SeeAlso: AX=0001h,AX=0002h
  876. ----------500001-----------------------------
  877. INT 50 - Vanderaart TEXT WINDOWS - CLOSE TEXT WINDOW
  878.     AX = 0001h
  879.     DI = window handle
  880. SeeAlso: AX=0000h
  881. ----------500002-----------------------------
  882. INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
  883.     AX = 0002h
  884.     BL = character
  885.     BH = attribute
  886.     DL = column
  887.     DH = row
  888.     DI = window handle
  889. Return: AX = status
  890.         0000h if successful
  891.         FFFFh if outside window
  892. SeeAlso: AX=0000h
  893. ----------500003-----------------------------
  894. INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
  895.     AX = 0003h
  896.     ES:BX -> text string
  897.     CX = string length (0000h if ASCIZ string)
  898.     DL = position (FFh centered, else flush left)
  899.     DH = starting row
  900.     DI = window handle
  901. Return: AX = status
  902.         0000h successful
  903.         FFFFh did not fit in window
  904. ----------500004-----------------------------
  905. INT 50 - Vanderaart TEXT WINDOWS - GET KEY
  906.     AX = 0004h
  907.     CH = type
  908.         00h any key
  909.         01h 'J' or 'N' (Dutch for yes/no)
  910. Return: AX = key
  911. ----------500005-----------------------------
  912. INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
  913.     AX = 0005h
  914.     BL = new attribute
  915.     CH,CL = row,column of upper left corner
  916.     DH,DL = row,column of lower right corner
  917.     DI = window handle
  918. ----------500006-----------------------------
  919. INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
  920.     AX = 0006h
  921.     ES:BX -> text string
  922.     CH = type
  923.         00h everything
  924.         01h uppercase only
  925.         02h positive numbers
  926.         03h Dutch postal code ("9999 AA")
  927.         04h 'J' or 'N' (Dutch yes/no)
  928.         05h telephone or FAX number
  929.         06h positive or negative number
  930.         07h date (dd/mm/yy)
  931.         08h money
  932.         09h '1' through '8'
  933.         0Ah '1' through '4'
  934.         0Bh uppercase filenames
  935.     DH,DL = row,column of upper left corner
  936.     DI = window handle
  937. Return: AX = key which terminated entry
  938.         0000h Enter
  939.         0001h Esc
  940.         0002h Down arrow
  941.         0003h Up arrow
  942.         0004h F10
  943. ----------51---------------------------------
  944. INT 51 - through 53 - IRQ1-IRQ3 relocated by DESQview
  945. Note:    this is the default location for older versions; see INT 50"DESQview"
  946.       for details of interrupt relocation
  947. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  948. ----------51---------------------------------
  949. INT 51 - through 53 - IRQ1-IRQ3 relocated by IBM 3278 emulation control program
  950. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  951. ----------51---------------------------------
  952. INT 51 - through 53 - IRQ1-IRQ3 relocated by OS/2 v1.x
  953. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  954. ----------53---------------------------------
  955. INT 53 - ??? - API
  956.     BX = function
  957.         0000h ???
  958.             AX = ???
  959.         Return: AX = ???
  960.         0004h ???
  961.         0009h ???
  962.         0015h
  963.             AX = ???
  964.         DX = ???
  965.         0017h
  966. Return: ???
  967. Notes:    the installation check consists of looking for the signature "WEBCO"
  968.       immediately prior to the interrupt handler
  969.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  970. ----------54---------------------------------
  971. INT 54 - through 57 - IRQ4-IRQ7 relocated by DESQview
  972. Note:    this is the default location for older versions; see INT 50"DESQview"
  973.       for details of interrupt relocation
  974. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  975. ----------54---------------------------------
  976. INT 54 - through 57 - IRQ4-IRQ7 relocated by IBM 3278 emulation control program
  977. SeeAlso: INT 51"IBM 3278"
  978. ----------54---------------------------------
  979. INT 54 - through 57 - IRQ4-IRQ7 relocated by OS/2 v1.x
  980. SeeAlso: INT 51"OS/2"
  981. ----------58---------------------------------
  982. INT 58 - IRQ8 relocated by DESQview 2.26+
  983. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  984. SeeAlso: INT 50"DESQview",INT 70
  985. ----------58---------------------------------
  986. INT 58 - IRQ0 relocated by DoubleDOS
  987. SeeAlso: INT 08
  988. ----------59---------------------------------
  989. INT 59 - IRQ9 relocated by DESQview 2.26+
  990. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  991. SeeAlso: INT 50"DESQview",INT 71
  992. ----------59---------------------------------
  993. INT 59 - IRQ1 relocated by DoubleDOS
  994. SeeAlso: INT 09
  995. ----------59---------------------------------
  996. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  997.     DS:DX -> block of 5 array pointers
  998. Return:    CF set on error
  999.         AX = error code
  1000.     CF clear if successful
  1001.         AX = return code
  1002. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  1003.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  1004.     also used by the IBM Graphic Development Toolkit
  1005. ----------5A---------------------------------
  1006. INT 5A - IRQ10 relocated by DESQview 2.26+
  1007. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  1008. SeeAlso: INT 50"DESQview",INT 72
  1009. ----------5A---------------------------------
  1010. INT 5A - IRQ2 relocated by DoubleDOS
  1011. SeeAlso: INT 0A
  1012. ----------5A---------------------------------
  1013. INT 5A - Cluster adapter BIOS entry address
  1014.     ???
  1015. ----------5B---------------------------------
  1016. INT 5B - IRQ11 relocated by DESQview 2.26+
  1017. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  1018. SeeAlso: INT50"DESQview",INT 73
  1019. ----------5B---------------------------------
  1020. INT 5B - IRQ3 relocated by DoubleDOS
  1021. SeeAlso: INT 0B
  1022. ----------5B---------------------------------
  1023. INT 5B - Used by cluster adapter
  1024. ----------5B---------------------------------
  1025. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  1026.     ES:BX -> Network Control Block (see below)
  1027. Return: AL = status (see INT 5C)
  1028. SeeAlso: INT 5C
  1029.  
  1030. Format of Network Control Block
  1031. Offset    Size    Description
  1032.  00h    BYTE    ncb_command (see below)
  1033.  01h    BYTE    ncb_retcode
  1034.  02h    BYTE    ncb_lsn
  1035.  03h    BYTE    ncb_num
  1036.  04h    DWORD    -> ncb_buffer
  1037.  08h    WORD    ncb_length
  1038.  0Ah 16 BYTEs    ncb_callname
  1039.  1Ah 16 BYTEs    ncb_name
  1040.  2Ah    BYTE    ncb_rto
  1041.  2Bh    BYTE    ncb_sto
  1042.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  1043.  30h    BYTE    ncb_lana_num
  1044.  31h    BYTE    ncb_cmd_cplt
  1045.  32h    DWORD    -> ncb_vname
  1046.  36h    BYTE    ncb_vnamelen
  1047.  37h  9 BYTEs    ncb_reserve
  1048. Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
  1049.  
  1050. Values for ncb_command field same as for INT 5C, except
  1051.     70h    send net Break
  1052. ----------5B---------------------------------
  1053. INT 5B - Microsoft Network Transport Layer Interface
  1054. Note:    used by MS-NET for executing network commands
  1055. SeeAlso: INT 5C"NetBIOS"
  1056. ----------5B---------------------------------
  1057. INT 5B - used by Alloy NTNX
  1058. ----------5B---------------------------------
  1059. INT 5B - ISOLAN Multi Protocol Software
  1060.     ES:BX -> Transfer Control Block
  1061. Return: AL - status
  1062. Note:    this software interface allows multiple protocols/software packages
  1063.       to access a BICC 411x network card
  1064.  
  1065. Format of Transfer Control Block:
  1066. Offset    Type    Description
  1067.  00h    BYTE    command code
  1068.         B3h Status
  1069.         F2h Activate
  1070.         F3h Deactivate
  1071.         F4h Send Data
  1072.  01h    BYTE    command identity
  1073.  02h    BYTE    virtual circuit ID
  1074.  03h    WORD    buffer length
  1075.  05h    DWORD    buffer pointer
  1076.  09h    BYTE    expedited data flag
  1077.  0Ah    BYTE    cancelable flag
  1078.  0Bh 16 BYTEs    local network address
  1079.  1Bh 16 BYTEs    remote network address
  1080.  2Bh    DWORD    asynchronous notification routine
  1081.  30h    DWORD    local network number
  1082.  34h    DWORD    remote network number
  1083.  38h    BYTE    call timeout
  1084.  39h    BYTE    not used
  1085.  3Ah  8 BYTEs    reserved
  1086.  42h    BYTE    command code extension
  1087.  43h    WORD    Blue Book MAC type
  1088. ----------5C---------------------------------
  1089. INT 5C - IRQ12 relocated by DESQview 2.26+
  1090. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  1091. SeeAlso: INT 50"DESQview",INT 74
  1092. ----------5C---------------------------------
  1093. INT 5C - IRQ4 relocated by DoubleDOS
  1094. SeeAlso: INT 0C
  1095. ----------5C---------------------------------
  1096. INT 5C - NetBIOS INTERFACE
  1097.     ES:BX -> network control block (NCB) (see below)
  1098. Return: AL = status
  1099.         00h successful
  1100.         01h bad buffer size
  1101.         03h invalid NETBIOS command
  1102.         05h timeout
  1103.         06h receive buffer too small
  1104.         07h No-ACK command failed
  1105.         08h bad session number
  1106.         09h LAN card out of memory
  1107.         0Ah session closed
  1108.         0Bh command has been cancelled
  1109.         0Dh name already exists
  1110.         0Eh local name table full
  1111.         0Fh name still in use, can't delete
  1112.         11h local session table full
  1113.         12h remote PC not listening
  1114.         13h bad NCB_NUM field
  1115.         14h no answer to CALL or no such remote
  1116.         15h name not in local name table
  1117.         16h duplicate name
  1118.         17h bad delete
  1119.         18h abnormal end
  1120.         19h name error, multiple identical names in use
  1121.         1Ah bad packet
  1122.         21h network card busy
  1123.         22h too many commands queued
  1124.         23h bad LAN card number
  1125.         24h command finished while cancelling
  1126.         26h command can't be cancelled
  1127.         30h name defined by another process (OS/2)
  1128.         34h NetBIOS environment not defined, must issue reset (OS/2)
  1129.         35h required operating system resources exhausted (OS/2)
  1130.         36h maximum applications exceeded (OS/2)
  1131.         37h no SAPs available for NetBIOS (OS/2)
  1132.         38h requested resources not available (OS/2)
  1133.         40h Lana System Error
  1134.         41h Lana Remote Hot Carrier
  1135.         42h Lana Local Hot Carrier
  1136.         43h Lana No Carrier Detected
  1137.         44h unusual network condition
  1138.         45h-4Fh hardware error
  1139.         50h adapter malfunction
  1140.         FFh NetBIOS busy (command pending)
  1141. Note:    Sytek PCnet card uses DMA 3.
  1142. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  1143.  
  1144. Format of Network Control Block:
  1145. Offset    Size    Description
  1146.  00h    BYTE    command code (see below)
  1147.  01h    BYTE    return code
  1148.  02h    BYTE    local session number (LSN)
  1149.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  1150.  04h    DWORD    -> I/O buffer
  1151.  08h    WORD    length of data in buffer
  1152.  0Ah 16 BYTEs    remote system to call
  1153.  1Ah 16 BYTEs    network name of local machine
  1154.  2Ah    BYTE    receive timeout in 1/2 seconds
  1155.  2Bh    BYTE    send timeout in 1/2 seconds
  1156.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  1157.  30h    BYTE    network adapter number on which to execute command
  1158.         00h-03h IBM NetBIOS specs
  1159.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  1160.  31h    BYTE    command completion code (see returned status above)
  1161.  32h 14 BYTEs    reserved for network card
  1162.  
  1163. Values for command code field in NCB (or with 80h for non-waiting call):
  1164.     10h start session with NCB_NAME name (call)
  1165.     11h listen for call
  1166.     12h end session with NCB_NAME name (hangup)
  1167.     14h send data via NCB_LSN
  1168.     15h receive data from a session
  1169.     16h receive data from any session
  1170.     17h send multiple data buffers
  1171.     20h send unACKed message (datagram)
  1172.     21h receive datagram
  1173.     22h send broadcast datagram
  1174.     23h receive broadcast datagram
  1175.     30h add name to name table
  1176.     31h delete name from name table
  1177.     32h reset adapter card and tables
  1178.     33h get adapter status (see structure "astatus" below)
  1179.     34h status of all sessions for name (see structure "sstatus" below)
  1180.     35h cancel
  1181.     36h add group name to name table
  1182.     48h send data and receive data (LAN Manager NETBEUI.DOS)
  1183.     70h unlink from IBM remote program (no F0h function)
  1184.     71h send data without ACK
  1185.     72h send multiple buffers without ACK
  1186.     72h UngermannBass Register (conflicts with above function)
  1187.     73h UngermannBass SendNmc
  1188.     74h UngermannBass Callniu
  1189.     75h UngermannBass Calladdr
  1190.     76h UngermannBass Listenaddr
  1191.     77h UngermannBass SendPkt
  1192.     78h find name
  1193.     78h UngermannBass RcvPkt (conflicts with above function)
  1194.     79h token-ring protocol trace
  1195.     79h UngermannBass SendAttn (conflicts with above function)
  1196.     7Ah UngermannBass RcvAttn
  1197.     7Bh UngermannBass Listenniu
  1198.     7Ch UngermannBass RcvRaw
  1199.     7Dh UngermannBass SendNmc2
  1200.  
  1201. Format of structure "name":
  1202. Offset    Size    Description
  1203.  00h 16 BYTEs "nm_name" symbolic name
  1204.  10h    BYTE  "nm_num" number associated with name
  1205.  11h    BYTE  nm_status
  1206.  
  1207. Format of structure "astatus":
  1208. Offset    Size    Description
  1209.  00h  6 BYTEs as_id
  1210.  06h    BYTE  as_jumpers
  1211.  07h    BYTE  as_post
  1212.  08h    BYTE  as_major
  1213.  09h    BYTE  as_minor
  1214.  0Ah    WORD  as_interval
  1215.  0Ch    WORD  as_crcerr
  1216.  0Eh    WORD  as_algerr
  1217.  10h    WORD  as_colerr
  1218.  12h    WORD  as_abterr
  1219.  14h    DWORD as_tcount
  1220.  18h    DWORD as_rcount
  1221.  1Ch    WORD  as_retran
  1222.  1Eh    WORD  as_xresrc
  1223.  20h  8 BYTEs as_res0
  1224.  28h    WORD  as_ncbfree
  1225.  2Ah    WORD  as_ncbmax
  1226.  2Ch    WORD  as_ncbx
  1227.  2Eh  4 BYTEs as_res1
  1228.  32h    WORD  as_sespend
  1229.  34h    WORD  as_msp
  1230.  36h    WORD  as_sesmax
  1231.  38h    WORD  as_bufsize
  1232.  3Ah    WORD  as_names
  1233.  3Ch 16 name structures     as_name
  1234.  
  1235. Format of structure "sstatus":
  1236. Offset    Size    Description
  1237.  00h    BYTE    number of sessions being reported
  1238.  01h    BYTE    number of sessions with this name
  1239.  02h    BYTE    number of outstanding receive datagrams
  1240.  03h    BYTE    number of outstanding ReceiveAnys
  1241.  04h    var    session structures (see below)
  1242.  
  1243. Format of structure "session":
  1244. Offset    Size    Description
  1245.  00h    BYTE    local session number
  1246.  01h    BYTE    state
  1247.         01h listen pending
  1248.         02h call pending
  1249.         03h session established
  1250.         04h hangup pending
  1251.         05h hangup done
  1252.         06h session aborted
  1253.  02h 16 BYTEs    local name
  1254.  12h 16 BYTEs    remote name
  1255.  22h    BYTE    number of outstanding receives
  1256.  23h    BYTE    number of outstanding sends/chainsends
  1257. ----------5C---------------------------------
  1258. INT 5C - TOPS INTERFACE
  1259.     ES:BX -> Network Control Block
  1260. Note:    TOPS card uses DMA 1, 3 or none.
  1261. ----------5C---------------------------------
  1262. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  1263.     DX:BX -> control block (see below)
  1264. Return: none
  1265. Notes:    this driver can use any interrupt from 5Ch to 70h
  1266.     the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  1267.       handler; this serves as the installation check
  1268.  
  1269. Format of AppleTalk control block:
  1270. Offset    Size    Description
  1271.  00h    WORD    command code
  1272.         01h "AT_INIT"        initialize the driver
  1273.         02h "AT_KILL"
  1274.         03h "AT_GETNETINFO" get current network info incl init status
  1275.         04h "AT_GETCLOCKTICKS"
  1276.         05h "AT_STARTTIMER"
  1277.         06h "AT_RESETTIMER"
  1278.         07h "AT_CANCELTIMER"
  1279.         10h "LAP_INSTALL"
  1280.         11h "LAP_REMOVE"
  1281.         12h "LAP_WRITE"
  1282.         13h "LAP_READ"
  1283.         14h "LAP_CANCEL"
  1284.         20h "DDP_OPENSOCKET"
  1285.         21h "DDP_CLOSESOCKET"
  1286.         22h "DDP_WRITE"
  1287.         23h "DDP_READ"
  1288.         24h "DDP_CANCEL"
  1289.         30h "NBP_REGISTER"
  1290.         31h "NBP_REMOVE"
  1291.         32h "NBP_LOOKUP"
  1292.         33h "NBP_CONFIRM"
  1293.         34h "NBP_CANCEL"
  1294.         35h "ZIP_GETZONELIST"
  1295.         36h "ZIP_GETMYZONE"
  1296.         37h "ZIP_TAKEDOWN"
  1297.         38h "ZIP_BRINGUP"
  1298.         40h "ATP_OPENSOCKET"
  1299.         41h "ATP_CLOSESOCKET"
  1300.         42h "ATP_SENDREQUEST"
  1301.         43h "ATP_GETREQUEST"
  1302.         44h "ATP_SENDRESPONSE"
  1303.         45h "ATP_ADDRESPONSE"
  1304.         46h "ATP_CANCELTRANS"
  1305.         47h "ATP_CANCELRESPONSE"
  1306.         48h "ATP_CANCELREQUEST"
  1307.         50h "ASP_GETPARMS"
  1308.         51h "ASP_CLOSESESSION"
  1309.         52h "ASP_CANCEL"
  1310.         53h "ASP_INIT"
  1311.         54h "ASP_KILL"
  1312.         55h "ASP_GETSESSION"
  1313.         56h "ASP_GETREQUEST"
  1314.         57h "ASP_CMDREPLY"
  1315.         58h "ASP_WRTCONTINUE"
  1316.         59h "ASP_WRTREPLY"
  1317.         5Ah "ASP_CLOSEREPLY"
  1318.         5Bh "ASP_NEWSTATUS"
  1319.         5Ch "ASP_ATTENTION"
  1320.         5Dh "ASP_GETSTATUS"
  1321.         5Eh "ASP_OPENSESSION"
  1322.         5Fh "ASP_COMMAND"
  1323.         60h "ASP_WRITE"
  1324.         61h "ASP_GETATTENTION"
  1325.         70h "PAP_OPEN"
  1326.         71h "PAP_CLOSE"
  1327.         72h "PAP_READ"
  1328.         73h "PAP_WRITE"
  1329.         74h "PAP_STATUS"
  1330.         75h "PAP_REGNAME"
  1331.         76h "PAP_REMNAME"
  1332.         77h "PAP_INIT"
  1333.         78h "PAP_NEWSTATUS"
  1334.         79h "PAP_GETNEXTJOB"
  1335.         7Ah "PAP_KILL"
  1336.         7Bh "PAP_CANCEL"
  1337.         
  1338.         or with the following flags
  1339.         8000h start command then return
  1340.         4000h wait for interrupt service to complete
  1341.  02h    WORD    returned status
  1342.         0000h success (already initialized if func 01h)
  1343.  04h    DWORD    pointer to completion function
  1344.  08h    WORD    network number
  1345.  0Ah    BYTE    node ID
  1346. ---if general func (01h,03h), control block continues:
  1347.  0Bh    BYTE    "inf_abridge"
  1348.  0Ch    WORD    "inf_config"
  1349.  0Eh    DWORD    pointer to buffer
  1350.  12h    WORD    buffer size
  1351. ---if DDP function (20h-24h), control block continues:
  1352.  0Bh    BYTE    "ddp_addr_socket"
  1353.  0Ch    BYTE    "ddp_socket"
  1354.  0Dh    BYTE    "ddp_type"
  1355.  0Eh    DWORD    pointer to buffer
  1356.  12h    WORD    buffer size
  1357.  14h    BYTE    "ddp_chksum"
  1358. ---if Name Binding Protocol (30h-34h), control block continues:
  1359.  0Bh    BYTE    "nbp_addr_socket"
  1360.  0Ch    WORD    "nbp_toget"
  1361.  0Eh    DWORD    pointer to buffer
  1362.  12h    WORD    buffer size
  1363.  14h    BYTE    "nbp_interval"
  1364.  15h    BYTE    "nbp_retry"
  1365.  16h    DWORD    "nbp_entptr"
  1366. ---if AppleTalk Transaction Protocol (42h), control block continues:
  1367.  0Bh    BYTE    "atp_addr_socket"
  1368.  0Ch    WORD    "atp_socket"
  1369.  0Eh    DWORD    pointer to buffer
  1370.  12h    WORD    buffer size
  1371.  14h    BYTE    "atp_interval"
  1372.  15h    BYTE    "atp_retry"
  1373.  16h    BYTE    ATP flags
  1374.         bit 5: exactly one transaction
  1375.  17h    BYTE    "atp_seqbit"
  1376.  18h    BYTE    transaction ID
  1377.  19h  4 BYTEs    ATP user bytes
  1378.  1Dh    BYTE    number of BDS buffers
  1379.  1Eh    BYTE    number of BDS responses
  1380.  1Fh    DWORD    pointer to BDS buffers (see below)
  1381.  
  1382. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  1383. Offset    Size    Description
  1384.  00h    WORD    "tup_address_network"
  1385.  02h    BYTE    "tup_address_notid"
  1386.  03h    BYTE    "tup_address_socket"
  1387.  04h    BYTE    "tup_enum"
  1388.  05h 99 BYTEs    name
  1389.  
  1390. Format of BDS entries:
  1391. Offset    Size    Description
  1392.  00h    DWORD    pointer to buffer
  1393.  04h    WORD    size of buffer
  1394.  06h    WORD    BDS data size
  1395.  08h  4 BYTEs    "bds_userbytes"
  1396. ----------5C---------------------------------
  1397. INT 5C - IBM 802.2 INTERFACE (LLC)
  1398.     ES:BX -> CCB
  1399. Return: none
  1400.  
  1401. Format of CCB:
  1402. Offset    Size    Description
  1403.  00h    BYTE    adapter
  1404.  01h    BYTE    command code
  1405.  02h    BYTE    return code
  1406.  03h    BYTE    work
  1407.  04h    DWORD    pointer to ???
  1408.  08h    DWORD    pointer to completion function???
  1409.  0Ch    DWORD    pointer to parameters???
  1410. ----------5C---------------------------------
  1411. INT 5C - $25 LAN - INSTALLATION CHECK
  1412. Notes:    current versions only check whether the vector is 0000h:0000h or not
  1413.     future versions are supposed to have the signature "NET" in the three
  1414.       bytes preceding the INT 5C handler
  1415. ----------5C04-------------------------------
  1416. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  1417.     AH = 04h
  1418.     AL = COM port (0 = default)
  1419.     CX = wait count in character times (should be at least 100)
  1420. Return: ZF set if link alive
  1421. ----------5D---------------------------------
  1422. INT 5D - IRQ13 relocated by DESQview 2.26+
  1423. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  1424. SeeAlso: INT 50"DESQview",INT 75
  1425. ----------5D---------------------------------
  1426. INT 5D - IRQ5 relocated by DoubleDOS
  1427. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  1428. ----------5E---------------------------------
  1429. INT 5E - IRQ14 relocated by DESQview 2.26+
  1430. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  1431. SeeAlso: INT 50"DESQview",INT 76
  1432. ----------5E---------------------------------
  1433. INT 5E - IRQ6 relocated by DoubleDOS
  1434. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  1435. ----------5F---------------------------------
  1436. INT 5F - IRQ15 relocated by DESQview 2.26+
  1437. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  1438. SeeAlso: INT 50"DESQview",INT 77
  1439. ----------5F---------------------------------
  1440. INT 5F - IRQ7 relocated by DoubleDOS
  1441. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  1442. ----------5F00-------------------------------
  1443. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  1444.     AH = 00h
  1445.     AL = video mode
  1446.         07h text, system manager compliant
  1447.         20h 240x128 mono graphics, system manager compliant
  1448.         87h text, not system manager compliant
  1449.         A0h 240x128 mono graphics, not system manager compliant
  1450. Note:    the defaults after setting the mode to graphics are (0,0) logical
  1451.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  1452.       pixel replacement FORCE, line type and fill mask all bits set
  1453. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  1454. ----------5F01-------------------------------
  1455. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
  1456.     AH = 01h
  1457.     ES:DI -> 8-byte fill mask
  1458. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  1459.       when drawing filled rectangles; it is always aligned with the byte
  1460.       boundaries of video memory, regardless of the actual boundaries of
  1461.       the rectangle
  1462. SeeAlso: AH=02h
  1463. ----------5F02-------------------------------
  1464. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
  1465.     AH = 02h
  1466.     ES:DI -> graphics info record (see below)
  1467. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  1468. Format of graphics info record:
  1469. Offset    Size    Description
  1470.  00h    BYTE    current video mode
  1471.  01h    BYTE    default video mode
  1472.  02h    WORD    display width in pixels
  1473.  04h    WORD    display height in pixels
  1474.  06h    WORD    current pen column
  1475.  08h    WORD    current pen row
  1476.  0Ah    WORD    current line type
  1477.  0Ch    WORD    current replacement rule
  1478.  0Eh    WORD    current pen color
  1479.  10h    WORD    current leftmost column of clip region
  1480.  12h    WORD    current rightmost column of clip region
  1481.  14h    WORD    current topmost row of clip region
  1482.  16h    WORD    current bottommost row of clip region
  1483.  18h    WORD    current column of logical origin
  1484.  1Ah    WORD    current row of logical origin
  1485.  1Ch  8 BYTEs    current fill mask
  1486. ----------5F03-------------------------------
  1487. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  1488.     AH = 03h
  1489.     CX = column
  1490.     DX = row
  1491. SeeAlso: AH=04h
  1492. ----------5F04-------------------------------
  1493. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
  1494.     AH = 04h
  1495.     CX = left-most column
  1496.     DX = top-most row
  1497.     SI = right-most column
  1498.     DI = bottom-most row
  1499. SeeAlso: AH=03h
  1500. ----------5F05-------------------------------
  1501. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  1502.     AH = 05h
  1503.     AL = fill type
  1504.         00h outline, using current line type and color
  1505.         01h solid, using current color
  1506.         02h pattern, using current fill mask and color
  1507.     DX,CX = row,column of other corner of rectangle
  1508. Note:    the rectangle is drawn starting at the current pen position
  1509. SeeAlso: AH=01h,AH=06h,AH=07h
  1510. ----------5F06-------------------------------
  1511. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
  1512.     AH = 06h
  1513.     DX,CX = row,column of end point
  1514. Note:    the line is drawn starting at the current pen position
  1515. SeeAlso: AH=05h,AH=07h
  1516. ----------5F07-------------------------------
  1517. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
  1518.     AH = 07h
  1519.     DX,CX = row,column of point
  1520. Note:    also sets pen position to the specified point
  1521. SeeAlso: AH=06h,AH=08h,AH=0Ch
  1522. ----------5F08-------------------------------
  1523. INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
  1524.     AH = 08h
  1525.     DX,CX = row,column of new pen position
  1526. SeeAlso: AH=07h,AH=09h
  1527. ----------5F09-------------------------------
  1528. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
  1529.     AH = 09h
  1530.     AL = new color (00h = white, 01h = black)
  1531. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  1532. ----------5F0A-------------------------------
  1533. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  1534.     AH = 0Ah
  1535.     AL = new replacement rule
  1536.         00h force
  1537.         01h AND
  1538.         02h OR
  1539.         03h XOR
  1540. SeeAlso: AH=01h,AH=09h,AH=0Bh
  1541. ----------5F0B-------------------------------
  1542. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
  1543.     AH = 0Bh
  1544.     CX = new line type
  1545. Note:    the line type specifies 16 bits which are repeated over and over while
  1546.       drawing the pixels of a line
  1547. SeeAlso: AH=09h,AH=0Ah
  1548. ----------5F0C-------------------------------
  1549. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
  1550.     AH = 0Ch
  1551.     DX,CX = row,column of pixel to read
  1552. Return: AX = pixel color
  1553. SeeAlso: AH=07h
  1554. ----------5F0D-------------------------------
  1555. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
  1556.     AH = 0Dh
  1557.     DX,CX = row,column of first corner
  1558.     BP,SI = row,column of second corner
  1559.     ES:DI -> image buffer (see below)
  1560. Note:    the specified corners are included in the saved image
  1561. SeeAlso: AH=0Eh
  1562.  
  1563. Format of image buffer:
  1564. Offset    Size    Description
  1565.  00h    WORD    number of planes (always 01h on HP 95LX)
  1566.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  1567.  04h    WORD    image width in pixels
  1568.  06h    WORD    image height in pixels
  1569.  08h  N BYTEs    image data
  1570.         requires (WIDTH+7)/8 * HEIGHT bytes
  1571. ----------5F0E-------------------------------
  1572. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
  1573.     AH = 0Eh
  1574.     AL = replacement rule
  1575.         bit 2: invert image before applying rule
  1576.         bits 1-0:  00 force
  1577.                01 AND
  1578.                10 OR
  1579.                11 XOR
  1580.     DX,CX = row,column of top left corner
  1581.     ES:DI -> image buffer (see AH=0Dh)
  1582. Note:    if the specified image does not fit completely on the screen, this call
  1583.       does nothing
  1584. SeeAlso: AH=0Dh
  1585. ----------5F0F-------------------------------
  1586. INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
  1587.     AH = 0Fh
  1588.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  1589.     DX,CX = row,column of first character's top left corner
  1590.     ES:DI -> ASCIZ text
  1591. ----------60---------------------------------
  1592. INT 60 - reserved for user interrupt
  1593. ----------60---------------------------------
  1594. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  1595.    The "Zero Bug" virus hooks this vector.  It considers itself installed if
  1596.    offset 103h of the handler's segment contains the bytes "ZE"
  1597. SeeAlso: INT 32,INT 61"SEMTEX"
  1598. ----------60---------------------------------
  1599. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  1600. SeeAlso: INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  1601. Notes:    this vector stores the first four bytes of the parameter table for
  1602.       hard disk 0
  1603.     these vectors are used by the following Adaptec controllers:
  1604.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  1605.     these vectors are NOT used by the following Adaptec controllers:
  1606.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  1607. ----------60---------------------------------
  1608. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  1609.    supplies a number of subfunctions which perform such functions as drawing
  1610.    boxes and menus, and provide input line editing
  1611. SeeAlso: INT 61"Atari"
  1612. ----------60---------------------------------
  1613. INT 60 - PC-IPC API
  1614.     STACK:    DWORD    pointer to parameter block (see below)
  1615. Return: STACK:    unchanged
  1616. Notes:    PC-IPC is a shareware TSR by Donnelly Software Engineering which allows
  1617.       communication between independent programs
  1618.     INT 60 is the default, any interrupt vector may be used by specifying
  1619.       the vector on the commandline
  1620.  
  1621. Format of parameter block:
  1622. Offset    Size    Description
  1623.  00h    WORD    caller's ID
  1624.  02h    WORD    to ID
  1625.  04h    WORD    command code (see below)
  1626.  06h    WORD    returned status
  1627.         bit 0: unused
  1628.         bit 1: IPC enabled
  1629.         bit 2: IPC installed
  1630.         bit 3: error
  1631.         bit 4: message(s) available
  1632.  08h    WORD    returned error code (see below)
  1633.  0Ah    WORD    size of data
  1634.  0Ch    DWORD    pointer to data buffer
  1635.  
  1636. Values of command code:
  1637.  01h "IPC_CMND_INQUIRE"     inquire current status
  1638.         set status field, writes WORD to data buffer containing free
  1639.           message space in bytes, and sets the "size" field to the
  1640.           number of messages waiting
  1641.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  1642.         ignored unless called with the same ID that disabled PC-IPC
  1643.  03h "IPC_CMND_DISABLE" disable PC-IPC
  1644.  04h "IPC_CMND_INSTALL" reset PC-IPC
  1645.  06h "IPC_CMND_RDATA"    read data
  1646.         returns first message in data buffer, sets "size" to message
  1647.           length and "to ID" field to sender's ID
  1648.         if no messages available, bit 4 of status is cleared and "size"
  1649.           is set to zero
  1650.  07h "IPC_CMND_SDATA"    send data
  1651.  08h "IPC_CMND_REQID"    require user ID
  1652.         create a new recognized ID and return in "caller's ID" field
  1653.  09h "IPC_CMND_DELID"    cancel user ID
  1654.         delete caller's ID from pool of recognized IDs
  1655.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  1656.  0Bh "IPC_CMND_VERS"    get PC-IPC version 
  1657.         string representing version returned in data buffer, "size"
  1658.           field set to length of string
  1659.  
  1660. Values for error code:
  1661.  00h    no error
  1662.  01h    invalid command or parameter
  1663.  02h    only process 0 can install/reset IPC
  1664.  03h    process can not install/reset IPC
  1665.  04h    IPC is not enabled
  1666.  05h    process can not disable IPC
  1667.  06h    invalid destination process ID
  1668.  07h    invalid sending process ID
  1669.  08h    invalid data destination
  1670.  09h    no more process IDs available
  1671.  0Ah    can not relinquish that process ID
  1672.  0Bh    message space is full
  1673.  0Ch    IPC is not installed
  1674. ----------60---------------------------------
  1675. INT 60 - Tangram Arbiter - API
  1676. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  1677.     identified by string "@ARB_API" immediately following a short jump at
  1678.       the interrupt handler address
  1679.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  1680.       IBM mainframe
  1681. ----------60---------------------------------
  1682. INT 60 U - INTRSPY/CMDSPY API
  1683. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  1684.     The installation check is to 
  1685.       a) determine that the handler is an IRET instruction
  1686.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  1687.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  1688.       its entry point.
  1689.     INTRSPY is a script-driven debugger included with the book
  1690.       _Undocumented_DOS_.
  1691.  
  1692. Call INTRSPY entry point with:
  1693.     AH = function
  1694.         00h ???
  1695.         01h set current directory (for use in reporting)
  1696.         ES:DI -> counted string containing directory name (max 79 char)
  1697.         02h set name of script file
  1698.         ES:DI -> counted string containing file name (max 79 chars)
  1699.         03h set script arguments
  1700.         ES:DI -> counted string containing arguments (max 79 chars)
  1701.         04h get directory set with function 01h
  1702.         ES:DI -> 80-byte buffer for directory name
  1703.         05h get name of script file
  1704.         ES:DI -> 80-byte buffer for script filename
  1705.         06h get script arguments
  1706.         ES:DI -> 80-byte buffer for script arguments
  1707.         07h get ???
  1708.         CL = 00h-15h specifies what to get
  1709.         ES:DI -> WORD to be set with desired value on return
  1710.         08h get ???
  1711.         ES:DI -> WORD to be set with returned value
  1712.         09h get ???
  1713.         ES:DI -> WORD to be set with returned value
  1714.         0Bh store code for interrupt handler???
  1715.         ES:DI -> data
  1716.         CX = number of bytes
  1717.         0Ch ???
  1718.         ES:DI -> ???
  1719.         0Dh get ???
  1720.         ES:DI -> BYTE to be set with returned value
  1721.         0Eh set ??? flag
  1722.         0Fh clear ??? flag
  1723.         10h ???
  1724.         Return: AL = 04h or 05h if failed
  1725.         11h ???
  1726.         Return: AL = 05h if failed
  1727.         12h get ???
  1728.         ES:DI -> buffer
  1729.         Return: CX = number of bytes returned in buffer
  1730.         13h ???
  1731. Return: AH = 00h
  1732.     AL = status
  1733.         00h successful
  1734.         01h invalid function
  1735.         02h ???
  1736.         03h ???
  1737.         04h ???
  1738.         05h ???
  1739. ----------60---------------------------------
  1740. INT 60 U - PC/370 v4.2 - ???
  1741.     ???
  1742. Return: ???
  1743. Notes:    PC/370 is an IBM 370 emulator by Donald S. Higgins
  1744.     this is the default interrupt, however the documentation includes
  1745.       instructions for patching the system for another interrupt
  1746. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  1747. ----------60---------------------------------
  1748. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  1749. SeeAlso: INT 61"JPI"
  1750. ----------60---------------------------------
  1751. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  1752.    The handler for the interrupt will start with a 3-byte jump instruction, 
  1753.    followed by the ASCIZ string "PKT DRVR".  To find the interrupt being used
  1754.    by the driver, an application should scan through interrupt vectors 60h to
  1755.    80h (20h through FFh for v1.10+ of the specification) until it finds one
  1756.    with the "PKT DRVR" string.    AH values of 80h to FFh have been reserved
  1757.    for user-defined additions.
  1758. ----------60----DI0100-----------------------
  1759. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  1760.     DI = 0100h
  1761.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1762.         DWORD    pointer to event record (see below)
  1763. Return: event record filled
  1764.     STACK unchanged
  1765. Note:    this call will timeout after about 500ms
  1766. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  1767.  
  1768. Format of event record:
  1769. Offset    Size    Description
  1770.  00h    WORD    event type
  1771.          00h no events
  1772.         01h keystroke available
  1773.         02h Ctrl-Break
  1774.         03h reactivation (always follows deactivation event)
  1775.         04h about to deactivate (sleep)
  1776.             next get-event call will not return until reactivated
  1777.         05h forced application termination
  1778.         06h 1-2-3 bridge service request (only given to  1-2-3)
  1779.         07h request to grow
  1780.         08h request to shrink
  1781.         09h application's alarm expired
  1782.         0Ah daily chance to set an alarm
  1783.         0Bh system date or time has been changed
  1784.  02h    WORD    ASCII code page 850 translation of keystroke
  1785.          or grow/shrink amount in paragraphs or 0000h if error
  1786.          or alarm expiration data
  1787.  04h    BYTE    scan code from BIOS
  1788.  05h    BYTE    shift key states at time keystroke is retrieved
  1789.  06h    WORD    LICS translation of keystroke
  1790.  08h    BYTE    function key number (1-2-3 only)
  1791.  09h    DWORD    pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
  1792.          or pointer to time change structure (see below)
  1793. Note:    if the System Manager is waiting the conclusion of a bridge service
  1794.       or grow/shrink call and the event type field is set to FFFFh on
  1795.       entry, the SysMgr will resume
  1796.  
  1797. Format of time change structure:
  1798. Offset    Size    Description
  1799.  00h    WORD    old year
  1800.  02h    BYTE    old month
  1801.  03h    BYTE    old date
  1802.  04h    BYTE    old day
  1803.  05h    BYTE    old hour
  1804.  06h    BYTE    old minute
  1805.  07h    BYTE    old second
  1806.  08h    BYTE    old hundredth of a second
  1807.  09h  9 BYTEs    new time in same format as old time
  1808. ----------60----DI0101-----------------------
  1809. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  1810.     DI = 0101h
  1811.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1812.         DWORD pointer to event record (INT 60/DI=0100h)
  1813. Return: event record filled
  1814.     STACK unchanged
  1815. Note:    this call returns immediately if no event is available
  1816. SeeAlso: INT 60/DI=0100h
  1817. ----------60----DI0102-----------------------
  1818. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  1819.     DI = 0102h
  1820.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1821. Return: ???
  1822.     STACK unchanged
  1823. ----------60----DI0104-----------------------
  1824. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  1825.     DI = 0104h
  1826.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1827.         DWORD pointer to bridge record (see below)
  1828. Return: ???
  1829.     STACK unchanged
  1830.  
  1831. Format of bridge record:
  1832. Offset    Size    Description
  1833.  00h    WORD    function code
  1834.          00h test
  1835.         01h get range
  1836.         02h "GETRANGE_ADDR"
  1837.         03h "SETRANGE_ADDR"
  1838.         04h "GETRANGE_DATA"
  1839.         05h "SETRANGE_DATA"
  1840.         06h recalculate
  1841.         07h get cursor
  1842.         08h set cursor
  1843.         09h redisplay
  1844.         0Ah cell type
  1845.         0Bh "CALCTYPE"
  1846.  02h    WORD    return code from 1-2-3
  1847.  04h 16 BYTEs    ASCII range name
  1848.  14h    WORD    start column of range
  1849.  16h    WORD    start row of range
  1850.  18h    WORD    end column of range
  1851.  1Ah    WORD    end row of range
  1852.  1Ch    WORD    order in which data is placed in buffer
  1853.  1Eh    WORD    buffer size
  1854.  20h    WORD    offset within bridge record's segment of buffer for cell data
  1855. ----------60----DI0105-----------------------
  1856. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  1857.     DI = 0105h
  1858.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1859. Return: ???
  1860.     STACK unchanged
  1861. ----------60----DI0106-----------------------
  1862. INT 60 u - HP 95LX System Manager - YIELD CPU
  1863.     DI = 0106h
  1864.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1865.         DWORD pointer to ???
  1866. Return: ???
  1867.     STACK unchanged
  1868. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  1869. ----------60----DI0107-----------------------
  1870. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  1871.     DI = 0107h
  1872.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1873.         DWORD pointer to ???
  1874. Return: ???
  1875.     STACK unchanged
  1876. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1877. ----------60----DI0200-----------------------
  1878. INT 60 u - HP 95LX System Manager - SETUP MENU
  1879.     DI = 0200h
  1880.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1881.         DWORD    pointer to menu data (see below)
  1882.         DWORD    pointer to ???
  1883.         WORD    number of items on menu???
  1884.         WORD    ???
  1885.         DWORD    pointer to ???
  1886.         WORD    ???
  1887.         DWORD    pointer to ???
  1888. Return: ???
  1889.     STACK unchanged
  1890. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  1891.  
  1892. Format of menu data:
  1893. Offset    Size    Description
  1894.  00h 80 BYTEs    first line of menu text
  1895.  50h 80 BYTEs    second line of menu text
  1896.  A0h 80 BYTEs    third line of menu text
  1897.  F0h    WORD    number of keywords
  1898.  F2h    WORD    index of currently highlighted keyword or FFFFh
  1899.  F4h    WORD    single prompt on top line if nonzero
  1900.  F6h 20 BYTEs    which line each of 20 keywords is located on
  1901. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  1902. 11Eh 20 BYTEs    length of each of 20 keywords
  1903. 132h 20 BYTEs    first letter of each of 20 keywords
  1904. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  1905. ----------60----DI0201-----------------------
  1906. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  1907.     DI = 0201h
  1908.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1909.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1910. Return: ???
  1911.     STACK unchanged
  1912. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  1913. ----------60----DI0202-----------------------
  1914. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  1915.     DI = 0202h
  1916.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1917.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1918. Return: ???
  1919.     STACK unchanged
  1920. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  1921. ----------60----DI0203-----------------------
  1922. INT 60 u - HP 95LX System Manager - REMOVE MENU
  1923.     DI = 0203h
  1924.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1925.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1926. Return: ???
  1927.     STACK unchanged
  1928. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  1929. ----------60----DI0204-----------------------
  1930. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  1931.     DI = 0204h
  1932.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1933.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1934.         WORD    keystroke
  1935.         DWORD    pointer to WORD to receive selection number
  1936. Return: buffer for selection number filled with index of selected menu item or
  1937.       FFFFh if no final selection yet
  1938.     STACK unchanged
  1939. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  1940. ----------60----DI0205-----------------------
  1941. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  1942.     DI = 0205h
  1943.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1944.         DWORD    pointer to file menu structure (see below)
  1945.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1946.         DWORD    pointer to wildcard filespec for initial file list
  1947.         WORD    row???
  1948.         WORD    column???
  1949. Return: ???
  1950.     STACK unchanged
  1951. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  1952.  
  1953. Format of file menu structure:
  1954. Offset    Size    Description
  1955.  00h    DWORD    pointer to ASCIZ base directory name
  1956.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  1957.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see below)
  1958.  0Ch    WORD    size of file list workspace in bytes
  1959.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  1960.  10h    WORD    starting column
  1961.  12h    WORD    number of lines
  1962.  14h    WORD    number of columns
  1963.  16h    WORD    number of files displayed on each line
  1964. ---the remaining fields are initialized by the System Manager---
  1965.  18h    WORD    0000h if first edit character, else multiline
  1966.  1Ah    WORD    number of files in file list
  1967.  1Ch    WORD    max files workspace has room for
  1968.  1Eh    WORD    file at top of list
  1969.  20h    WORD    index of file to highlight
  1970.  22h    WORD    index of file to unhighlight
  1971.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  1972.  
  1973. Format of file list workspace entry:
  1974. Offset    Size    Description
  1975.  00h    BYTE    file attributes
  1976.  01h    WORD    file time (see INT 21/AX=5700h)
  1977.  03h    WORD    file date (see INT 21/AX=5700h)
  1978.  05h    DWORD    file size
  1979.  09h 13 BYTEs    ASCIZ filename
  1980. ----------60----DI0206-----------------------
  1981. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  1982.     DI = 0206h
  1983.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1984.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  1985.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1986. Return: ???
  1987.     STACK unchanged
  1988. SeeAlso: INT 60/DI=0205h
  1989. ----------60----DI0207-----------------------
  1990. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  1991.     DI = 0207h
  1992.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1993.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  1994.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1995.         WORD    keystroke
  1996. Return: AX = status
  1997.         0000h keystroke processed, call INT 60/DI=0206h to refresh menu
  1998.         0001h redisplay application area before refreshing menu
  1999.         0002h user confirmed selection, filename is in edit record's buffer
  2000.         0003h user aborted menu
  2001.         FFFBh bad filename
  2002.         FFFCh bad directory
  2003.         FFFDh bad drive
  2004.         FFFEh unknown keystroke
  2005.         FFFFh keystroke known but invalid in current context
  2006.     STACK unchanged
  2007. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  2008. ----------60----DI0208-----------------------
  2009. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  2010.     DI = 0208h
  2011.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2012.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  2013.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  2014. Return: ???
  2015.     STACK unchanged
  2016. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  2017. ----------60----DI0300-----------------------
  2018. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  2019.     DI = 0300h
  2020.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2021.         WORD    starting row (-3 is topmost, 0 is first user line)
  2022.         WORD    starting column
  2023.         DWORD    pointer to string
  2024.         WORD    length of string
  2025.         WORD    display style: 0000h normal, 0001h reverse video
  2026.         WORD    "OSTYLE"
  2027. Return: ???
  2028.     STACK unchanged
  2029. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  2030. ----------60----DI0301-----------------------
  2031. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  2032.     DI = 0301h
  2033.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2034.         WORD    starting row (-3 is topmost, 0 is first user line)
  2035.         WORD    starting column
  2036.         WORD    number of rows
  2037.         WORD    number of columns
  2038. Return: ???
  2039.     STACK unchanged
  2040. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  2041. ----------60----DI0302-----------------------
  2042. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  2043.     DI = 0302h
  2044.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2045.         WORD    starting row???
  2046.         WORD    starting column???
  2047.         WORD    height of scroll region???
  2048.         WORD    width of scroll region???
  2049.         WORD    number of lines to scroll region???
  2050. Return: ???
  2051.     STACK unchanged
  2052. SeeAlso: INT 60/DI=0301h
  2053. ----------60----DI0303-----------------------
  2054. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  2055.     DI = 0303h
  2056.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2057.         WORD    ???
  2058.         WORD    ???
  2059.         WORD    ???
  2060.         WORD    ???
  2061.         DWORD    pointer to ???
  2062. Return: ???
  2063.     STACK unchanged
  2064. ----------60----DI0304-----------------------
  2065. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  2066.     DI = 0304h
  2067.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2068.         DWORD    pointer to ???
  2069.         WORD    ???
  2070. Return: ???
  2071.     STACK unchanged
  2072. ----------60----DI0305-----------------------
  2073. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  2074.     DI = 0305h
  2075.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2076.         WORD    ???
  2077.         WORD    ???
  2078.         DWORD    pointer to ???
  2079.         WORD    ???
  2080. Return: ???
  2081.     STACK unchanged
  2082. ----------60----DI0307-----------------------
  2083. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  2084.     DI = 0307h
  2085.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2086.         WORD    ???
  2087.         WORD    ???
  2088.         WORD    ???
  2089. Return: ???
  2090.     STACK unchanged
  2091. ----------60----DI0308-----------------------
  2092. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  2093.     DI = 0308h
  2094.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2095. Return: ???
  2096.     STACK unchanged
  2097. ----------60----DI0309-----------------------
  2098. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  2099.     DI = 0309h
  2100.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2101.         WORD    new mode
  2102. Return: ???
  2103.     STACK unchanged
  2104. ----------60----DI030A-----------------------
  2105. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  2106.     DI = 030Ah
  2107.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2108. Return: ???
  2109.     STACK unchanged
  2110. ----------60----DI030B-----------------------
  2111. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  2112.     DI = 030Bh
  2113.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2114.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  2115.         WORD    column
  2116. Return: ???
  2117.     STACK unchanged
  2118. Note:    cursor is hidden if the specified position is not on the physical
  2119.       display
  2120. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2121. ----------60----DI0400-----------------------
  2122. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  2123.     DI = 0400h
  2124.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2125.         DWORD    pointer to edit record (see below)
  2126.         DWORD    pointer to string to be edited
  2127.         WORD    initial length of string being edited
  2128.         WORD    maximum length of edited string
  2129.         WORD    row of edit field
  2130.         WORD    leftmost column of edit field
  2131. Return: ???
  2132.     STACK unchanged
  2133.  
  2134. Format of edit record:
  2135. Offset    Size    Description
  2136.  00h    WORD    current length of edit buffer
  2137.  02h    BYTE    flag for special processing on first character
  2138.  03h    BYTE    flags
  2139.          bit 0: tab handling
  2140.  04h    WORD    editing in prompt window?
  2141.  06h    DWORD    pointer to top line of prompt window message
  2142.  0Ah    WORD    length of top line of prompt
  2143.  0Ch    DWORD    pointer to second line of prompt window message
  2144.  10h    WORD    length of second line of prompt
  2145.  12h 80 BYTEs    workspace for editing
  2146.  62h  2 WORDs    line array needed for multi-line editing
  2147.  66h 36 BYTEs    multi-line edit record (see below)
  2148.  8Ah    WORD    displayable columns
  2149.  
  2150. Format of multi-line edit record:
  2151. Offset    Size    Description
  2152.  00h    DWORD    pointer to user-supplied edit buffer
  2153.  04h    WORD    length of edit buffer
  2154.  06h    WORD    current cursor position
  2155.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  2156.  0Ah    WORD    starting column of edit area
  2157.  0Ch    WORD    height of edit area
  2158.  0Eh    WORD    width of edit area
  2159.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  2160.  12h    WORD    number of rows displayable
  2161.  14h    BYTE    cursor column
  2162.  15h    BYTE    01h if buffer has been modified
  2163.  16h    BYTE    first displayable column (ticker fields only)
  2164.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  2165.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  2166.            area is high)
  2167.  1Ch    BYTE    currently marking?
  2168.  1Dh    BYTE    flag
  2169.  1Eh    WORD    offset of mark start
  2170.  20h    WORD    offset of mark end (inclusive)
  2171.  22h    WORD    displayable columns
  2172. ----------60----DI0401-----------------------
  2173. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  2174.     DI = 0401h
  2175.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2176.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  2177.         DWORD    pointer to string to edit
  2178.         WORD    initial length of string being edited
  2179.         WORD    maximum length of edited string
  2180.         DWORD    pointer to first line of prompt
  2181.         WORD    length of first line
  2182.         DWORD    pointer to second line of prompt
  2183.         WORD    length of second line
  2184. Return: ???
  2185.     STACK unchanged
  2186. ----------60----DI0402-----------------------
  2187. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  2188.     DI = 0402h
  2189.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2190.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  2191. Return: ???
  2192.     STACK unchanged
  2193. ----------60----DI0403-----------------------
  2194. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  2195.     DI = 0403h
  2196.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2197.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  2198.         WORD    keystroke
  2199.         DWORD    pointer to WORD buffer for result code
  2200. Return: result code buffer filled with 0001h if editing complete
  2201.     STACK unchanged
  2202. ----------60----DI0404-----------------------
  2203. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  2204.     DI = 0404h
  2205.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2206.         DWORD    pointer to ???
  2207.         WORD    ???
  2208.         WORD    ???
  2209.         WORD    ???
  2210.         WORD    ???
  2211.         DWORD    pointer to ???
  2212.         WORD    ???
  2213.         WORD    ???
  2214.         WORD    ???
  2215.         DWORD    pointer to ???
  2216. Return: ???
  2217.     STACK unchanged
  2218. ----------60----DI0405-----------------------
  2219. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  2220.     DI = 0405h
  2221.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2222.         DWORD    pointer to ???
  2223. Return: ???
  2224.     STACK unchanged
  2225. ----------60----DI0406-----------------------
  2226. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  2227.     DI = 0406h
  2228.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2229.         DWORD    pointer to ???
  2230.         WORD    ???
  2231. Return: ???
  2232.     STACK unchanged
  2233. ----------60----DI0407-----------------------
  2234. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  2235.     DI = 0407h
  2236.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2237.         DWORD    pointer to ???
  2238.         DWORD    pointer to ???
  2239. Return: ???
  2240.     STACK unchanged
  2241. ----------60----DI0408-----------------------
  2242. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  2243.     DI = 0408h
  2244.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2245.         DWORD    pointer to ???
  2246. Return: ???
  2247.     STACK unchanged
  2248. ----------60----DI0409-----------------------
  2249. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  2250.     DI = 0409h
  2251.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2252.         DWORD    pointer to ???
  2253. Return: ???
  2254.     STACK unchanged
  2255. ----------60----DI040A-----------------------
  2256. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  2257.     DI = 040Ah
  2258.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2259.         DWORD    pointer to ???
  2260. Return: ???
  2261.     STACK unchanged
  2262. ----------60----DI040B-----------------------
  2263. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  2264.     DI = 040Bh
  2265.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2266.         DWORD    pointer to ???
  2267.         DWORD    pointer to ???
  2268.         WORD    ???
  2269. Return: ???
  2270.     STACK unchanged
  2271. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2272. ----------60----DI0500-----------------------
  2273. INT 60 u - HP 95LX System Manager - OPEN FILE
  2274.     DI = 0500h
  2275.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2276.         DWORD    pointer to file state record (see below)
  2277.         DWORD    pointer to filename
  2278.         WORD    length of filename
  2279.         WORD    ???
  2280.         WORD    suppress buffering if nonzero
  2281. Return: AX = status
  2282.     STACK unchanged
  2283. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  2284.  
  2285. Format of file state record:
  2286. Offset    Size    Description
  2287.  00h    WORD    DOS file handle
  2288.  02h    WORD    flags
  2289.          bit 0: buffer contents valid
  2290.         bit 1: buffer is dirty and must be written
  2291.         bit 2: unbuffered I/O
  2292.         bit 3: file is a character device
  2293.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  2294.  08h    DWORD    DOS file offset of start of buffer
  2295.  0Ch    DWORD    effective file offset as seen by caller
  2296.  10h    WORD    number of bytes in file buffer
  2297. ---buffered I/O only---
  2298.  12h 512 BYTEs    file buffer
  2299. ----------60----DI0501-----------------------
  2300. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  2301.     DI = 0501h
  2302.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2303.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  2304.         DWORD    pointer to filename
  2305.         WORD    length of filename
  2306.         WORD    ???
  2307.         WORD    suppress buffering if nonzero
  2308. Return: AX = status
  2309.     STACK unchanged
  2310. SeeAlso: INT 60/DI=0500h
  2311. ----------60----DI0502-----------------------
  2312. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  2313.     DI = 0502h
  2314.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2315.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  2316.         DWORD    pointer to filename
  2317.         WORD    length of filename
  2318.         WORD    ???
  2319.         WORD    suppress buffering if nonzero
  2320. Return: AX = status
  2321.     STACK unchanged
  2322. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  2323. ----------60----DI0503-----------------------
  2324. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  2325.     DI = 0503h
  2326.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2327.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  2328.         DWORD    pointer to filename
  2329.         WORD    length of filename
  2330.         WORD    ???
  2331.         WORD    suppress buffering if nonzero
  2332. Return: AX = status
  2333.     STACK unchanged
  2334. SeeAlso: INT 60/DI=0502h
  2335. ----------60----DI0504-----------------------
  2336. INT 60 u - HP 95LX System Manager - READ FROM FILE
  2337.     DI = 0504h
  2338.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2339.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  2340.         DWORD    pointer to data buffer
  2341.         WORD    number of bytes to read
  2342.         DWORD    pointer to WORD in which to return actual bytes read
  2343. Return: ???
  2344.     STACK unchanged
  2345. SeeAlso: INT 60/DI=0505h
  2346. ----------60----DI0505-----------------------
  2347. INT 60 - HP 95LX System Manager - WRITE TO FILE
  2348.     DI = 0505h
  2349.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2350.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  2351.         DWORD    pointer to data
  2352.         WORD    length of data
  2353. Return: AX = status
  2354.     STACK unchanged
  2355. SeeAlso: INT 60/DI=0504h
  2356. ----------60----DI0506-----------------------
  2357. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  2358.     DI = 0506h
  2359.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2360.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  2361.         WORD    ???
  2362.         WORD    ???
  2363. Return: ???
  2364.     STACK unchanged
  2365. SeeAlso: INT 60/DI=0507h
  2366. ----------60----DI0507-----------------------
  2367. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  2368.     DI = 0507h "M_TELL"
  2369.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2370.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  2371.         DWORD    pointer to DWORD buffer for file position???
  2372. Return: ???
  2373.     STACK unchanged
  2374. SeeAlso: INT 60/DI=0506h
  2375. ----------60----DI0508-----------------------
  2376. INT 60 u - HP 95LX System Manager - CLOSE FILE
  2377.     DI = 0508h
  2378.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2379.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  2380. Return: ???
  2381.     STACK unchanged
  2382. SeeAlso: INT 60/DI=0500h
  2383. ----------60----DI0509-----------------------
  2384. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  2385.     DI = 0509h
  2386.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2387.         DWORD    pointer to ???
  2388.         DWORD    pointer to ???
  2389.         WORD    ???
  2390.         WORD    ???
  2391. Return: ???
  2392.     STACK unchanged
  2393. ----------60----DI050A-----------------------
  2394. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  2395.     DI = 050Ah
  2396.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2397.         DWORD    pointer to ???
  2398.         DWORD    pointer to ???
  2399. Return: ???
  2400.     STACK unchanged
  2401.  
  2402. Format of pattern match control block:
  2403. Offset    Size    Description
  2404.  00h 43 BYTEs    FindFirst data block (see INT 21/AH=4Eh)
  2405.  2Bh 80 BYTEs    full path name
  2406.  7Bh    BYTE    offset of last component of filename
  2407.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  2408. ----------60----DI050B-----------------------
  2409. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  2410.     DI = 050Bh
  2411.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2412.         DWORD    pointer to ???
  2413.         WORD    ???
  2414.         WORD    ???
  2415.         DWORD    pointer to ???
  2416. Return: ???
  2417.     STACK unchanged
  2418.  
  2419. Values returned:
  2420.  0000h nonexistent
  2421.  0001h file
  2422.  0002h directory
  2423.  0003h character device
  2424. ----------60----DI050C-----------------------
  2425. INT 60 u - HP 95LX System Manager - DELETE FILE
  2426.     DI = 050Ch "M_DELETE"
  2427.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2428.         DWORD    pointer to ???
  2429.         WORD    ???
  2430.         WORD    ???
  2431. Return: ???
  2432.     STACK unchanged
  2433. ----------60----DI050D-----------------------
  2434. INT 60 u - HP 95LX System Manager - RENAME FILE
  2435.     DI = 050Dh
  2436.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2437.         DWORD    pointer to ???
  2438.         WORD    ???
  2439.         WORD    ???
  2440.         DWORD    pointer to ???
  2441.         WORD    ???
  2442.         WORD    ???
  2443. Return: ???
  2444.     STACK unchanged
  2445. ----------60----DI050E-----------------------
  2446. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  2447.     DI = 050Eh
  2448.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2449.         WORD    ???
  2450.         DWORD    pointer to ???
  2451.         DWORD    pointer to ???
  2452. Return: ???
  2453.     STACK unchanged
  2454. ----------60----DI050F-----------------------
  2455. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  2456.     DI = 050Fh
  2457.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2458.         DWORD    pointer to ???
  2459.         WORD    ???
  2460. Return: ???
  2461.     STACK unchanged
  2462. ----------60----DI0510-----------------------
  2463. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  2464.     DI = 0510h
  2465.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2466.         DWORD    pointer to ???
  2467.         DWORD    pointer to ???
  2468. Return: ???
  2469.     STACK unchanged
  2470. ----------60----DI0511-----------------------
  2471. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  2472.     DI = 0511h
  2473.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2474.         DWORD    pointer to ???
  2475.         WORD    ???
  2476.         WORD    ???
  2477. Return: ???
  2478.     STACK unchanged
  2479. ----------60----DI0512-----------------------
  2480. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  2481.     DI = 0512h
  2482.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2483.         DWORD    pointer to ???
  2484.         WORD    ???
  2485.         WORD    ???
  2486. Return: ???
  2487.     STACK unchanged
  2488. ----------60----DI0513-----------------------
  2489. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  2490.     DI = 0513h
  2491.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2492.         DWORD    pointer to ??? buffer for current drive
  2493. Return: ???
  2494.     STACK unchanged
  2495. ----------60----DI0514-----------------------
  2496. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  2497.     DI = 0514h
  2498.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2499.         WORD    new drive
  2500. Return: ???
  2501.     STACK unchanged
  2502. ----------60----DI0515-----------------------
  2503. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  2504.     DI = 0515h
  2505.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2506.         DWORD    pointer to ???
  2507.         DWORD    pointer to ???
  2508. Return: ???
  2509.     STACK unchanged
  2510. ----------60----DI0516-----------------------
  2511. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  2512.     DI = 0516h
  2513.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2514.         DWORD    pointer to ???
  2515. Return: ???
  2516.     STACK unchanged
  2517. ----------60----DI0517-----------------------
  2518. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  2519.     DI = 0517h
  2520.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2521.         DWORD    pointer to ???
  2522.         WORD    ???
  2523.         WORD    ???
  2524.         DWORD    pointer to ??? buffer for file's attributes???
  2525. Return: ???
  2526.     STACK unchanged
  2527. ----------60----DI0518-----------------------
  2528. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  2529.     DI = 0518h
  2530.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2531.         DWORD    pointer to ???
  2532.         WORD    ???
  2533.         WORD    ???
  2534.         WORD    new attributes???
  2535. Return: ???
  2536.     STACK unchanged
  2537. ----------60----DI0519-----------------------
  2538. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  2539.     DI = 0519h
  2540.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2541.         DWORD    pointer to ???
  2542.         DWORD    pointer to ???
  2543.         WORD    ???
  2544.         WORD    ???
  2545.         WORD    ???
  2546.         WORD    ???
  2547.         WORD    ???
  2548. Return: ???
  2549.     STACK unchanged
  2550. ----------60----DI051A-----------------------
  2551. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  2552.     DI = 051Ah
  2553.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2554.         DWORD    pointer to ???
  2555.         DWORD    pointer to ???
  2556. Return: ???
  2557.     STACK unchanged
  2558. ----------60----DI051B-----------------------
  2559. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  2560.     DI = 051Bh
  2561.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2562.         DWORD    pointer to ???
  2563.         DWORD    pointer to ???
  2564. Return: ???
  2565.     STACK unchanged
  2566. ----------60----DI051C-----------------------
  2567. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  2568.     DI = 051Ch
  2569.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2570.         DWORD    pointer to ???
  2571.         WORD    ???
  2572. Return: ???
  2573.     STACK unchanged
  2574. ----------60----DI0600-----------------------
  2575. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  2576.     DI = 0600h
  2577.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2578. Return: ???
  2579.     STACK unchanged
  2580. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  2581. ----------60----DI0601-----------------------
  2582. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  2583.     DI = 0601h
  2584.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2585. Return: never
  2586.     STACK unchanged
  2587. SeeAlso: INT 21/AH=4Ch,INT 60/DI=0600h
  2588. ----------60----DI0602-----------------------
  2589. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  2590.     DI = 0602h
  2591.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2592. Return: ???
  2593.     STACK unchanged
  2594. SeeAlso: INT 15/AX=101Bh,INT 60/DI=0603h
  2595. ----------60----DI0603-----------------------
  2596. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  2597.     DI = 0603h
  2598.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2599. Return: ???
  2600.     STACK unchanged
  2601. SeeAlso: INT 15/AX=101Ch,INT 60/DI=0602h
  2602. ----------60----DI0604-----------------------
  2603. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  2604.     DI = 0604h
  2605.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2606.         DWORD    pointer to ???
  2607.         WORD    ???
  2608.         WORD    ???
  2609.         DWORD    pointer to ???
  2610. Return: ???
  2611.     STACK unchanged
  2612. ----------60----DI0605-----------------------
  2613. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  2614.     DI = 0605h
  2615.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2616. Return: ???
  2617.     STACK unchanged
  2618. ----------60----DI0606-----------------------
  2619. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  2620.     DI = 0606h
  2621.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2622. Return: ???
  2623.     STACK unchanged
  2624. ----------60----DI0607-----------------------
  2625. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  2626.     DI = 0607h
  2627.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2628.         DWORD    pointer to ???
  2629.         WORD    ???
  2630.         DWORD    pointer to ???
  2631.         WORD    ???
  2632. Return: ???
  2633.     STACK unchanged
  2634. ----------60----DI0608-----------------------
  2635. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  2636.     DI = 0608h
  2637.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2638.         DWORD    pointer to ???
  2639. Return: ???
  2640.     STACK unchanged
  2641. ----------60----DI0609-----------------------
  2642. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  2643.     DI = 0609h
  2644.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2645.         DWORD    pointer to ???
  2646. Return: DX:AX -> ???
  2647.     STACK unchanged
  2648. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2649. ----------60----DI0700-----------------------
  2650. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  2651.     DI = 0700h
  2652.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2653. Return: ???
  2654.     STACK unchanged
  2655. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  2656.  
  2657. Values for error code:
  2658.  0000h    successful
  2659.  FFF8h transfer request out of bounds
  2660.  FFF9h no such representation
  2661.  FFFAh no representation open
  2662.  FFFBh a representation is already open
  2663.  FFFCh representation already exists
  2664.  FFFDh heap allocation failure
  2665.  FFFEh clipboard not open
  2666.  FFFFh clipboard access denied
  2667. ----------60----DI0701-----------------------
  2668. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  2669.     DI = 0701h
  2670.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2671. Return: ???
  2672.     STACK unchanged
  2673. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  2674. ----------60----DI0702-----------------------
  2675. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  2676.     DI = 0702h
  2677.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2678.         DWORD    pointer to ???
  2679. Return: ???
  2680.     STACK unchanged
  2681. SeeAlso: INT 60/DI=0700h
  2682. ----------60----DI0704-----------------------
  2683. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  2684.     DI = 0704h
  2685.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2686.         DWORD    pointer to ???
  2687. Return: ???
  2688.     STACK unchanged
  2689. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  2690. ----------60----DI0705-----------------------
  2691. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  2692.     DI = 0705h
  2693.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2694. Return: ???
  2695.     STACK unchanged
  2696. SeeAlso: INT 60/DI=0704h
  2697. ----------60----DI0706-----------------------
  2698. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  2699.     DI = 0706h
  2700.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2701.         WORD    ???
  2702.         DWORD    pointer to ???
  2703.         DWORD    pointer to ???
  2704. Return: ???
  2705.     STACK unchanged
  2706. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  2707. ----------60----DI0707-----------------------
  2708. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  2709.     DI = 0707h
  2710.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2711.         DWORD    pointer to ???
  2712.         DWORD    pointer to ???
  2713.         DWORD    pointer to ???
  2714. Return: ???
  2715.     STACK unchanged
  2716. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  2717. ----------60----DI0708-----------------------
  2718. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  2719.     DI = 0708h
  2720.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2721.         DWORD    pointer to data to be written???
  2722.         WORD    length of data???
  2723. Return: ???
  2724.     STACK unchanged
  2725. SeeAlso: INT 60/DI=0709h
  2726. ----------60----DI0709-----------------------
  2727. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  2728.     DI = 0709h
  2729.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2730.         WORD    ???
  2731.         WORD    ???
  2732.         DWORD    pointer to buffer for data???
  2733.         WORD    length of buffer???
  2734. Return: ???
  2735.     STACK unchanged
  2736. SeeAlso: INT 60/DI=0708h
  2737. ----------60----DI0800-----------------------
  2738. INT 60 u - HP 95LX System Manager - BEEP
  2739.     DI = 0800h
  2740.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2741. Return: ???
  2742.     STACK unchanged
  2743. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  2744. ----------60----DI0801-----------------------
  2745. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  2746.     DI = 0801h
  2747.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2748. Return: ???
  2749.     STACK unchanged
  2750. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  2751. ----------60----DI0802-----------------------
  2752. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  2753.     DI = 0802h
  2754.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2755.         WORD    pattern number (00h-06h)
  2756. Return: ???
  2757.     STACK unchanged
  2758. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  2759. ----------60----DI0803-----------------------
  2760. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  2761.     DI = 0803h
  2762.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2763. Return: ???
  2764.     STACK unchanged
  2765. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  2766. ----------60----DI0900-----------------------
  2767. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  2768.     DI = 0900h
  2769.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2770.         WORD    size of block in bytes
  2771. Return: AX -> memory block
  2772.     STACK unchanged
  2773. Note:    System Manager-compliant applications are always small-model (64K code,
  2774.       64K data)
  2775. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  2776. ----------60----DI0902-----------------------
  2777. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  2778.     DI = 0902h
  2779.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2780.         WORD    offset of memory block???
  2781. Return: ???
  2782.     STACK unchanged
  2783. Note:    System Manager-compliant applications are always small-model (64K code,
  2784.       64K data)
  2785. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  2786. ----------60----DI0903-----------------------
  2787. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  2788.     DI = 0903h
  2789.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2790.         WORD    size of block in bytes???
  2791. Return: AX -> memory block???
  2792.     STACK unchanged
  2793. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  2794. ----------60----DI0904-----------------------
  2795. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  2796.     DI = 0904h
  2797.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2798.         WORD    segment of memory block???
  2799. Return: AX -> ???
  2800.     STACK unchanged
  2801. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  2802. ----------60----DI0B00-----------------------
  2803. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  2804.     DI = 0B00h
  2805.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2806.         DWORD    pointer to ???
  2807. Return: ???
  2808.     STACK unchanged
  2809. ----------60----DI0B01-----------------------
  2810. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  2811.     DI = 0B01h
  2812.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2813.         DWORD    pointer to ???
  2814. Return: ???
  2815.     STACK unchanged
  2816. ----------60----DI0B02-----------------------
  2817. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  2818.     DI = 0B02h
  2819.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2820.         DWORD    pointer to ???
  2821. Return: ???
  2822.     STACK unchanged
  2823. ----------60----DI0B03-----------------------
  2824. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  2825.     DI = 0B03h
  2826.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2827.         WORD    ???
  2828. Return: ???
  2829.     STACK unchanged
  2830. ----------60----DI0B04-----------------------
  2831. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  2832.     DI = 0B04h
  2833.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2834.         DWORD    pointer to alarm record???
  2835.         WORD    ???
  2836. Return: ???
  2837.     STACK unchanged
  2838.  
  2839. Format of alarm record:
  2840. Offset    Size    Description
  2841.  00h    BYTE    hour
  2842.  01h    BYTE    minute
  2843.  02h    BYTE    second
  2844.  03h    BYTE    unused padding
  2845.  04h    WORD    rescheduling interval, in seconds
  2846.  06h    BYTE    are seconds significant?
  2847.  07h    BYTE    alarm sound
  2848.  08h 40 BYTEs    message displayed when alarm activates
  2849.  30h    BYTE    task ID of owner
  2850.  31h    BYTE    application's own use for sub-class
  2851.  32h  4 BYTEs    application's own use for private data
  2852. ----------60----DI0B05-----------------------
  2853. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  2854.     DI = 0B05h
  2855.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2856.         DWORD    pointer to ???
  2857. Return: ???
  2858.     STACK unchanged
  2859. ----------60----DI0B06-----------------------
  2860. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  2861.     DI = 0B06h
  2862.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2863.         DWORD    pointer to ???
  2864.         DWORD    pointer to ???
  2865.         DWORD    pointer to ???
  2866. Return: ???
  2867.     STACK unchanged
  2868. ----------60----DI0B07-----------------------
  2869. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  2870.     DI = 0B07h
  2871.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2872.         DWORD    pointer to ???
  2873. Return: ???
  2874.     STACK unchanged
  2875. ----------60----DI0B08-----------------------
  2876. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  2877.     DI = 0B08h
  2878.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2879.         WORD    timestamp format
  2880.             bits 1-0:
  2881.                 00 date only
  2882.                 01 time only
  2883.                 10 date and time
  2884.                 11 day and date
  2885.             bit 4: supply am/pm
  2886.             bit 5: supply seconds
  2887.             bit 6: show year
  2888.             bit 7: four-digit year
  2889.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  2890.         WORD    column
  2891. Return: ???
  2892.     STACK unchanged
  2893. ----------60----DI0B09-----------------------
  2894. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  2895.     DI = 0B09h
  2896.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2897.         DWORD    pointer to ???
  2898.         DWORD    pointer to ???
  2899. Return: ???
  2900.     STACK unchanged
  2901. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  2902.  
  2903. Format of system settings:
  2904. Offset    Size    Description
  2905.  00h    WORD    country code
  2906.  02h    WORD    speaker volume (00h-03h or FFh for off)
  2907.  04h    WORD    contrast level (00h-0Fh)
  2908.  06h    WORD    week start (00h Sunday, 01h Monday)
  2909.  08h    WORD    punctuation format
  2910.          code    decimal    arg    thousands
  2911.         00h    .    ,    ,
  2912.         01h    ,    .    .
  2913.         02h    .    ;    ;
  2914.         03h    ,    ;    .
  2915.         04h    .    ,    " "
  2916.         05h    ,    .    " "
  2917.         06h    .    ;    " "
  2918.         07h    ,    ;    " "
  2919.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  2920.  0Ch    WORD    current date format
  2921.          00h dd-mmm-yy
  2922.         01h dd-mmm
  2923.         02h mmm-yy
  2924.         03h mm/dd/yy
  2925.         04h dd/mm/yy
  2926.         05h dd.mm.yy
  2927.         06h yy-mm-dd
  2928.         07h mm/dd
  2929.         08h dd/mm
  2930.         09h dd.mm
  2931.         0Ah mm-dd
  2932.  0Eh    WORD    current time format
  2933.          00h HH:MM:SS am/pm
  2934.         01h HH:MM am/pm
  2935.         02h HH:MM:SS
  2936.         03h HH.MM.SS
  2937.         04h HH,MM,SS
  2938.         05h HHhMMmSSs
  2939.         06h HH:MM
  2940.         07h HH.MM
  2941.         08h HH,MM
  2942.         09h HHhMMm
  2943.  10h    WORD    collating sequence
  2944.          00h numbers first, 01h letters first, 02h ASCII
  2945.  12h 80 BYTEs    name of picture file
  2946.  62h 30 BYTEs    name
  2947.  80h 30 BYTEs    title
  2948.  9Eh 28 BYTEs    company name
  2949.  BAh    WORD    number of languages
  2950.  BCh  6 BYTEs    available languages
  2951.  C2h 66 BYTEs    language menu
  2952. 104h  2 BYTEs    ASCIZ date separator
  2953. 106h  2 BYTEs    ASCIZ time separator
  2954. 108h    BYTE    date order
  2955. 109h    BYTE    use 24 hour time?
  2956. 10Ah 16 BYTEs    currency string
  2957. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  2958. 11Ch    WORD    keyboard (see below)
  2959. 11Eh    WORD    printer baud rate
  2960.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  2961. 120h    WORD    printer driver code
  2962.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  2963. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  2964. 124h    WORD    system manager interrupt (60h by default)
  2965. 126h    WORD    code page (01h CP850, 02h CP437)
  2966. 128h    WORD    active exit key
  2967. 12Ah    WORD    active menu key
  2968. 12Ch    WORD    active CHAR key toggle
  2969. 12Eh  6 BYTEs    alarm
  2970.  
  2971. Values for keyboard:
  2972.     0001h Belgium
  2973.     0002h French Canadian
  2974.     0004h Denmark
  2975.     0008h Finland
  2976.     0010h French
  2977.     0020h Finland
  2978.     0040h Italy
  2979.     0080h Netherlands
  2980.     0100h Norway
  2981.     0200h Portugal
  2982.     0400h Spain
  2983.     0800h Sweden
  2984.     1000h Swiss French
  2985.     2000h Swiss German
  2986.     4000h United Kingdom
  2987.     8000h USA
  2988. ----------60----DI0B0A-----------------------
  2989. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  2990.     DI = 0B0Ah
  2991.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2992.         DWORD    pointer to ???
  2993.         DWORD    pointer to ???
  2994. Return: ???
  2995.     STACK unchanged
  2996. SeeAlso: INT 60/DI=0B09h
  2997. ----------60----DI0B0B-----------------------
  2998. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  2999.     DI = 0B0Bh
  3000.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3001.         DWORD    pointer to ???
  3002. Return: ???
  3003.     STACK unchanged
  3004. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  3005. ----------60----DI0B0C-----------------------
  3006. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  3007.     DI = 0B0Ch
  3008.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3009.         DWORD    pointer to ???
  3010. Return: ???
  3011.     STACK unchanged
  3012. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  3013. ----------60----DI0B0D-----------------------
  3014. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  3015.     DI = 0B0Dh
  3016.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3017.         DWORD    pointer to ???
  3018.         DWORD    pointer to ???
  3019.         DWORD    pointer to ???
  3020. Return: ???
  3021.     STACK unchanged
  3022. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  3023. ----------60----DI0B0E-----------------------
  3024. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  3025.     DI = 0B0Eh
  3026.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3027.         WORD    ???
  3028.         WORD    ???
  3029.         WORD    ???
  3030.         DWORD    pointer to ???
  3031.         DWORD    pointer to ???
  3032. Return: DX:AX -> ???
  3033.     STACK unchanged
  3034. ----------60----DI0B0F-----------------------
  3035. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  3036.     DI = 0B0Fh
  3037.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3038. Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
  3039.     STACK unchanged
  3040. SeeAlso: INT 60/DI=0B09h
  3041. ----------60----DI0B10-----------------------
  3042. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  3043.     DI = 0B10h
  3044.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3045.         WORD    ???
  3046.         DWORD    pointer to ???
  3047.         DWORD    pointer to ???
  3048. Return: ???
  3049.     STACK unchanged
  3050. ----------60----DI0B11-----------------------
  3051. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  3052.     DI = 0B11h
  3053.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3054.         WORD    ???
  3055.         DWORD    pointer to ???
  3056.         DWORD    pointer to ???
  3057. Return: ???
  3058.     STACK unchanged
  3059. ----------60----DI0B12-----------------------
  3060. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  3061.     DI = 0B12h
  3062.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3063.         WORD    new parsing rule
  3064.             01h day-month-year
  3065.             02h month-day-year
  3066.             03h year-month-day
  3067.             04h "DMYO"
  3068.             05h "MDYO"
  3069.             OR with 08h to get any year
  3070. Return: ???
  3071.     STACK unchanged
  3072. SeeAlso: INT 60/DI=0B13h
  3073. ----------60----DI0B13-----------------------
  3074. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  3075.     DI = 0B13h
  3076.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3077.         WORD    new parsing rule
  3078.             01h HH:MM:SS (am/pm)
  3079.             02h HH:MM:SS (24hr)
  3080.             03h HHMM:SS (24hr)
  3081.             04h HH:MM:SS.hh (24hr)
  3082.             05h HH:MM (am/pm)
  3083.             06h HH:MM (24hr)
  3084.             07h HHMM (24hr)
  3085. Return: ???
  3086.     STACK unchanged
  3087. SeeAlso: INT 60/DI=0B12h
  3088. ----------60----DI0B14-----------------------
  3089. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  3090.     DI = 0B14h
  3091.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3092. Return: ???
  3093.     STACK unchanged
  3094. ----------60----DI0B15-----------------------
  3095. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  3096.     DI = 0B15h
  3097.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3098.         WORD    ???
  3099. Return: ???
  3100.     STACK unchanged
  3101. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3102. ----------60----DI0C00-----------------------
  3103. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  3104.     DI = 0C00h
  3105.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3106. Return: ???
  3107.     STACK unchanged
  3108. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  3109. ----------60----DI0C01-----------------------
  3110. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  3111.     DI = 0C01h
  3112.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3113. Return: ???
  3114.     STACK unchanged
  3115. Note:    relinquishes control of printer
  3116. SeeAlso: INT 60/DI=0C00h
  3117. ----------60----DI0C02-----------------------
  3118. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  3119.     DI = 0C02h
  3120.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3121.         DWORD    pointer to data to be written
  3122.         WORD    length of data
  3123. Return: ???
  3124.     STACK unchanged
  3125. SeeAlso: INT 60/DI=0C00h
  3126. ----------60----DI0C03-----------------------
  3127. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  3128.     DI = 0C03h
  3129.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3130. Return: ???
  3131.     STACK unchanged
  3132. SeeAlso: INT 60/DI=0C00h
  3133. ----------60----DI0C04-----------------------
  3134. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  3135.     DI = 0C04h
  3136.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3137.         WORD    ???
  3138.         DWORD    pointer to ???
  3139. Return: ???
  3140.     STACK unchanged
  3141. ----------60----DI0C05-----------------------
  3142. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  3143.     DI = 0C05h
  3144.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3145.         WORD    ???
  3146.         DWORD    pointer to ???
  3147. Return: ???
  3148.     STACK unchanged
  3149. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3150. ----------60----DI0E00-----------------------
  3151. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  3152.     DI = 0E00h
  3153.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3154.         DWORD    pointer to ???
  3155. Return: ???
  3156.     STACK unchanged
  3157. SeeAlso: INT 60/DI=0E01h,INT 60/DI=0E02h
  3158.  
  3159. Values for error code:
  3160.  0000h    successful
  3161.  FFF1h "E_BUSY"
  3162.  FFF2h timeout
  3163.  FFF3h framing error
  3164.  FFF4h parity error
  3165.  FFF5h overrun error
  3166.  FFF6h "E_EMPTY"
  3167.  FFF7h "E_CONECT"
  3168.  FFF8h not open
  3169.  FFF9h out of memory
  3170.  FFFAh buffer overflow
  3171.  FFFBh "E_NOFIT"
  3172.  FFFCh unsupported
  3173.  FFFDh "E_IVOPR"
  3174.  FFFEh "E_IVCHN"
  3175.  FFFFh "E_REOPEN"
  3176. ----------60----DI0E01-----------------------
  3177. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  3178.     DI = 0E01h
  3179.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3180.         DWORD    pointer to WORD buffer for comm channel handle
  3181.         WORD    communications line number (01h-04h)
  3182. Return: ???
  3183.     STACK unchanged
  3184. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  3185. ----------60----DI0E02-----------------------
  3186. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  3187.     DI = 0E02h
  3188.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3189.         WORD    comm channel handle
  3190. Return: ???
  3191.     STACK unchanged
  3192. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  3193. ----------60----DI0E03-----------------------
  3194. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  3195.     DI = 0E03h
  3196.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3197.         WORD    ???
  3198. Return: ???
  3199.     STACK unchanged
  3200. ----------60----DI0E04-----------------------
  3201. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  3202.     DI = 0E04h
  3203.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3204.         WORD    ???
  3205.         WORD    ???
  3206. Return: ???
  3207.     STACK unchanged
  3208. ----------60----DI0E05-----------------------
  3209. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  3210.     DI = 0E05h
  3211.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3212.         WORD    ???
  3213.         DWORD    pointer to ???
  3214. Return: ???
  3215.     STACK unchanged
  3216. ----------60----DI0E06-----------------------
  3217. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  3218.     DI = 0E06h
  3219.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3220.         WORD    comm channel handle
  3221.         WORD    reset options
  3222.             bit 0: reset line
  3223.             bit 1: flush transmit buffer
  3224.             bit 2: flush receive buffer
  3225.             bit 3: reset modem
  3226.             bit 4: reset receiver's ^S state
  3227.             bit 5: reset transmitter's ^S state
  3228. Return: ???
  3229.     STACK unchanged
  3230. ----------60----DI0E07-----------------------
  3231. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  3232.     DI = 0E07h
  3233.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3234.         WORD    ???
  3235. Return: ???
  3236.     STACK unchanged
  3237. ----------60----DI0E08-----------------------
  3238. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  3239.     DI = 0E08h
  3240.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3241.         WORD    comm channel handle
  3242.         DWORD    pointer to data to be sent
  3243.         WORD    option flags
  3244.             bit 0: send partial buffer
  3245.             bit 1: turn on receiver after sending
  3246.         DWORD    pointer to WORD containing length of data to be sent
  3247. Return: length WORD updated to contain number of bytes actually sent???
  3248.     STACK unchanged
  3249. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  3250. ----------60----DI0E09-----------------------
  3251. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  3252.     DI = 0E09h
  3253.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3254.         WORD    ???
  3255.         DWORD    pointer to ??? WORD
  3256.         DWORD    pointer to ??? WORD
  3257. Return: ???
  3258.     STACK unchanged
  3259. SeeAlso: INT 60/DI=0E0Ah
  3260. ----------60----DI0E0A-----------------------
  3261. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  3262.     DI = 0E0Ah
  3263.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3264.         WORD    comm channel handle
  3265.         DWORD    pointer to WORD to get receive buffer size
  3266.         DWORD    pointer to WORD to get free bytes in receive buffer
  3267. Return: ???
  3268.     STACK unchanged
  3269. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  3270. ----------60----DI0E0B-----------------------
  3271. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  3272.     DI = 0E0Bh
  3273.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3274.         WORD    comm channel handle
  3275.         DWORD    pointer to data buffer
  3276.         DWORD    pointer to WORD (input) length of data buffer
  3277.                     (output) number of bytes received
  3278. Return: ???
  3279.     STACK unchanged
  3280. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  3281. ----------60----DI0E0C-----------------------
  3282. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  3283.     DI = 0E0Ch
  3284.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3285.         WORD    ???
  3286.         DWORD    pointer to ???
  3287.         WORD    ???
  3288. Return: ???
  3289.     STACK unchanged
  3290. ----------60----DI0E0D-----------------------
  3291. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  3292.     DI = 0E0Dh
  3293.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3294.         WORD    ???
  3295.         DWORD    pointer to ???
  3296.         WORD    ???
  3297. Return: ???
  3298.     STACK unchanged
  3299. ----------60----DI0E0E-----------------------
  3300. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  3301.     DI = 0E0Eh
  3302.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3303.         WORD    ???
  3304.         WORD    ???
  3305. Return: ???
  3306.     STACK unchanged
  3307. ----------60----DI0E0F-----------------------
  3308. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  3309.     DI = 0E0Fh
  3310.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3311.         WORD    ???
  3312. Return: ???
  3313.     STACK unchanged
  3314. ----------60----DI0E10-----------------------
  3315. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  3316.     DI = 0E10h
  3317.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3318.         WORD    ???
  3319. Return: ???
  3320.     STACK unchanged
  3321. ----------60----DI0E11-----------------------
  3322. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  3323.     DI = 0E11h
  3324.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3325.         WORD    ???
  3326.         WORD    ???
  3327. Return: ???
  3328.     STACK unchanged
  3329. ----------60----DI0E12-----------------------
  3330. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  3331.     DI = 0E12h
  3332.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3333.         WORD    ???
  3334. Return: ???
  3335.     STACK unchanged
  3336. ----------60----DI0E13-----------------------
  3337. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  3338.     DI = 0E13h
  3339.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3340.         WORD    ???
  3341. Return: ???
  3342.     STACK unchanged
  3343. ----------60----DI0E14-----------------------
  3344. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  3345.     DI = 0E14h
  3346.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3347.         WORD    comm channel handle
  3348.         DWORD    pointer to comm settings (see below)
  3349. Return: ???
  3350.     STACK unchanged
  3351. SeeAlso: INT 60/DI=0E15h
  3352.  
  3353. Format of comm settings:
  3354. Offset    Size    Description
  3355.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  3356.  01h    WORD    baud rate divisor (115200/baud_rate)
  3357.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  3358.  04h    BYTE    stop bits (00h one, 04h two)
  3359.  05h    BYTE    data bits - 5
  3360.  06h    BYTE    software handshake
  3361.          01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  3362.  07h    BYTE    infrared (01h off, 02h on)
  3363.  08h    BYTE    duplex (01h half, 02h full)
  3364.  09h    BYTE    echo (01h echo, 02h no echo)
  3365. ----------60----DI0E15-----------------------
  3366. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  3367.     DI = 0E15h
  3368.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3369.         WORD    ???
  3370.         DWORD    pointer to buffer for settings (see INT 60/DI=0E14h)
  3371. Return: ???
  3372.     STACK unchanged
  3373. SeeAlso: INT 60/DI=0E14h
  3374. ----------60----DI0E16-----------------------
  3375. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  3376.     DI = 0E16h
  3377.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3378.         WORD    ???
  3379.         WORD    ???
  3380.         WORD    ???
  3381.         WORD    ???
  3382.         WORD    ???
  3383. Return: ???
  3384.     STACK unchanged
  3385. ----------60----DI0E17-----------------------
  3386. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  3387.     DI = 0E17h
  3388.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3389.         WORD    ???
  3390. Return: ???
  3391.     STACK unchanged
  3392. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3393. ----------60----DI0F00-----------------------
  3394. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  3395.     DI = 0F00h
  3396.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3397.         WORD    ???
  3398.         DWORD    pointer to ???
  3399.         WORD    ???
  3400.         DWORD    pointer to ???
  3401. Return: ???
  3402.     STACK unchanged
  3403. ----------60----DI0F01-----------------------
  3404. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  3405.     DI = 0F01h
  3406.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3407.         DWORD    pointer to ASCIZ title string
  3408. Return: ???
  3409.     STACK unchanged
  3410. ----------60----DI0F02-----------------------
  3411. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  3412.     DI = 0F02h
  3413.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3414.         DWORD    pointer to ???
  3415. Return: ???
  3416.     STACK unchanged
  3417. ----------60----DI0F03-----------------------
  3418. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  3419.     DI = 0F03h
  3420.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3421.         DWORD    pointer to first line of message
  3422.         WORD    length of first line
  3423.         DWORD    pointer to second line of message
  3424.         WORD    length of second line
  3425. Return: ???
  3426.     STACK unchanged
  3427. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  3428. ----------60----DI0F04-----------------------
  3429. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  3430.     DI = 0F04h
  3431.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3432. Return: ???
  3433.     STACK unchanged
  3434. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  3435. ----------60----DI0F05-----------------------
  3436. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  3437.     DI = 0F05h
  3438.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3439. Return: DX:AX -> ???
  3440.     STACK unchanged
  3441. ----------60----DI0F06-----------------------
  3442. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  3443.     DI = 0F06h
  3444.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3445. Return: DX:AX -> ???
  3446.     STACK unchanged
  3447. ----------60----DI0F07-----------------------
  3448. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  3449.     DI = 0F07h
  3450.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3451. Return: DX:AX -> ???
  3452.     STACK unchanged
  3453. ----------60----DI0F08-----------------------
  3454. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  3455.     DI = 0F08h
  3456.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3457.         ???
  3458. Return: ???
  3459.     STACK unchanged
  3460. ----------60----DI0F09-----------------------
  3461. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  3462.     DI = 0F09h
  3463.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3464.         DWORD    pointer to first line of message
  3465.         WORD    length of first line
  3466.         DWORD    pointer to second line of message
  3467.         WORD    length of second line
  3468.         DWORD    pointer to third line of message
  3469.         WORD    length of third line
  3470. Return: ???
  3471.     STACK unchanged
  3472. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  3473. ----------60----DI0F0A-----------------------
  3474. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  3475.     DI = 0F0Ah
  3476.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3477. Return: ???
  3478.     STACK unchanged
  3479. SeeAlso: INT 60/DI=0F0Bh
  3480. ----------60----DI0F0B-----------------------
  3481. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  3482.     DI = 0F0Bh
  3483.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3484. Return: ???
  3485.     STACK unchanged
  3486. SeeAlso: INT 60/DI=0F0Ah
  3487. ----------60----DI0F0C-----------------------
  3488. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  3489.     DI = 0F0Ch
  3490.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3491.         ???
  3492. Return: ???
  3493.     STACK unchanged
  3494. ----------60----DI0F0D-----------------------
  3495. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  3496.     DI = 0F0Dh
  3497.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3498.         DWORD    pointer to ???
  3499. Return: DX:AX -> ???
  3500.     STACK unchanged
  3501. ----------60----DI0F0E-----------------------
  3502. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  3503.     DI = 0F0Eh
  3504.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3505.         DWORD    pointer to ???
  3506. Return: DX:AX -> ???
  3507.     STACK unchanged
  3508. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3509. ----------60----DI1005-----------------------
  3510. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  3511.     DI = 1005h
  3512.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3513. Return: ???
  3514.     STACK unchanged
  3515. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  3516. ----------60----DI1200-----------------------
  3517. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  3518.     DI = 1200h
  3519.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3520.         DWORD    pointer to ???
  3521. Return: ???
  3522.     STACK unchanged
  3523. ----------60----DI1201-----------------------
  3524. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  3525.     DI = 1201h
  3526.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3527.         WORD    ???
  3528. Return: DX:AX -> ???
  3529.     STACK unchanged
  3530. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3531. ----------60----DI1202-----------------------
  3532. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  3533.     DI = 1202h
  3534.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3535. Return: DX:AX -> ???
  3536.     STACK unchanged
  3537. ----------60----DI1203-----------------------
  3538. INT 60 u - HP 95LX System Manager - "INIT_SYSGMR_RSRCS"
  3539.     DI = 1203h
  3540.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3541. Return: ???
  3542.     STACK unchanged
  3543. ----------60----DI1300-----------------------
  3544. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  3545.     DI = 1300h
  3546.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3547.         DWORD    pointer to ???
  3548.         DWORD    pointer to ???
  3549.         WORD    ???
  3550. Return: ???
  3551.     STACK unchanged
  3552. ----------60----DI1301-----------------------
  3553. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  3554.     DI = 1301h
  3555.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3556.         DWORD    pointer to ???
  3557. Return: ???
  3558.     STACK unchanged
  3559. ----------60----DI1302-----------------------
  3560. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  3561.     DI = 1302h
  3562.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3563.         DWORD    pointer to ???
  3564.         WORD    ???
  3565. Return: ???
  3566.     STACK unchanged
  3567. ----------60----DI1303-----------------------
  3568. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  3569.     DI = 1303h
  3570.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3571.         DWORD    pointer to ???
  3572. Return: ???
  3573.     STACK unchanged
  3574. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3575. ----------60----DI1400-----------------------
  3576. INT 60 u - HP 95LX System Manager - "M_ColInit"
  3577.     DI = 1400h
  3578.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3579. Return: AX = ???
  3580.     STACK unchanged
  3581. ----------60----DI1401-----------------------
  3582. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  3583.     DI = 1401h
  3584.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3585.         DWORD    pointer to ???
  3586.         WORD    ???
  3587.         DWORD    pointer to ???
  3588.         WORD    ???
  3589. Return: ???
  3590.     STACK unchanged
  3591. ----------60----DI1402-----------------------
  3592. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  3593.     DI = 1402h
  3594.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3595.         ???
  3596. Return: ???
  3597.     STACK unchanged
  3598. ----------60----DI1403-----------------------
  3599. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  3600.     DI = 1403h
  3601.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3602.         ???
  3603. Return: ???
  3604.     STACK unchanged
  3605. ----------60----DI1404-----------------------
  3606. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  3607.     DI = 1404h
  3608.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3609.         DWORD    pointer to ???
  3610.         WORD    ???
  3611. Return: ???
  3612.     STACK unchanged
  3613. ----------60----DI1405-----------------------
  3614. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  3615.     DI = 1405h
  3616.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3617.         DWORD    pointer to ???
  3618.         WORD    ???
  3619.         DWORD    pointer to ???
  3620.         WORD    ???
  3621.         WORD    ???
  3622. Return: ???
  3623.     STACK unchanged
  3624. ----------60----DI1406-----------------------
  3625. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  3626.     DI = 1406h
  3627.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3628.         DWORD    pointer to ???
  3629.         WORD    ???
  3630. Return: ???
  3631.     STACK unchanged
  3632. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3633. ----------60----DI1500-----------------------
  3634. INT 60 u - HP 95LX System Manager - "GrDispInit"
  3635.     DI = 1500h
  3636.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3637.         ???
  3638. Return: ???
  3639.     STACK unchanged
  3640. ----------60----DI1501-----------------------
  3641. INT 60 u - HP 95LX System Manager - "GrDispClear"
  3642.     DI = 1501h
  3643.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3644.         ???
  3645. Return: ???
  3646.     STACK unchanged
  3647. ----------60----DI1502-----------------------
  3648. INT 60 u - HP 95LX System Manager - "GrDispDot"
  3649.     DI = 1502h
  3650.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3651.         ???
  3652. Return: ???
  3653.     STACK unchanged
  3654. ----------60----DI1503-----------------------
  3655. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  3656.     DI = 1503h
  3657.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3658.         ???
  3659. Return: ???
  3660.     STACK unchanged
  3661. ----------60----DI1504-----------------------
  3662. INT 60 u - HP 95LX System Manager - "GrDispFill"
  3663.     DI = 1504h
  3664.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3665.         ???
  3666. Return: ???
  3667.     STACK unchanged
  3668. ----------60----DI1505-----------------------
  3669. INT 60 u - HP 95LX System Manager - "GrDispRead"
  3670.     DI = 1505h
  3671.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3672.         ???
  3673. Return: ???
  3674.     STACK unchanged
  3675. ----------60----DI1506-----------------------
  3676. INT 60 u - HP 95LX System Manager - "GrDispString"
  3677.     DI = 1506h
  3678.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3679.         ???
  3680. Return: ???
  3681.     STACK unchanged
  3682. ----------60----DI1507-----------------------
  3683. INT 60 u - HP 95LX System Manager - "GrDispPan"
  3684.     DI = 1507h
  3685.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3686.         ???
  3687. Return: ???
  3688.     STACK unchanged
  3689. ----------60----DI1508-----------------------
  3690. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  3691.     DI = 1508h
  3692.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3693.         ???
  3694. Return: ???
  3695.     STACK unchanged
  3696. ----------60----DI1509-----------------------
  3697. INT 60 u - HP 95LX System Manager - "GrDispSave"
  3698.     DI = 1509h
  3699.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3700.         ???
  3701. Return: ???
  3702.     STACK unchanged
  3703. ----------60----DI150A-----------------------
  3704. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  3705.     DI = 150Ah
  3706.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3707.         ???
  3708. Return: ???
  3709.     STACK unchanged
  3710. ----------60----DI150B-----------------------
  3711. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  3712.     DI = 150Bh
  3713.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3714.         ???
  3715. Return: ???
  3716.     STACK unchanged
  3717. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3718. ----------60----DI1604-----------------------
  3719. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  3720.     DI = 1604h
  3721.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3722.         ???
  3723. Return: ???
  3724.     STACK unchanged
  3725. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3726. ----------6000-------------------------------
  3727. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  3728.     AH = 00h
  3729. Return: AX = 0000h    profiling is off
  3730.         otherwise profiling is on
  3731. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3732. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  3733. ----------6000-------------------------------
  3734. INT 60 - MDEBUG - GET STATUS
  3735.     AH = 00h
  3736.     DS:SI -> password or a null byte
  3737. Return: AX = return code
  3738.         FFFEh password is invalid
  3739.         FFFDh display mode is invalid
  3740.        else successful
  3741.         ES = value of the monitor register SE
  3742.         DI = value of the monitor register OF
  3743.         CH = monitor color
  3744.         CL = interpreter color
  3745.         BH = monitor start line
  3746.         BL = interpreter start line
  3747.         AH = makecode of the hotkey
  3748.         AL = ASCII code of the hotkey
  3749.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  3750.             hotkey (coded as for the keyboard flag at 0040h:0017h)
  3751.         DH = basic process number for the communication with drivers
  3752.             process number for the display driver, DH+1 = process
  3753.             number for the command driver(s)
  3754.     DS:SI -> MDEBUG identification table
  3755. Notes:    MDEBUG is a shareware memory-resident debugging tool by Bernd Schemmer,
  3756.       including a memory monitor, an interpreter, and a disassembler
  3757.     MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  3758.       through INT 67; the interrupt handler is preceded by the signature
  3759.       "USERINT" and is not chained
  3760.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  3761.       passwords are active; enough stack space must be provided for an
  3762.       INT 10h call (which MDEBUG uses while prompting for the password)
  3763. SeeAlso: AH=02h"MDEBUG"
  3764.  
  3765. Format of MDEBUG identification table:
  3766. Offset    Size    Description
  3767.  -2    WORD    entry offset
  3768.  00h    WORD    CS of MDEBUG
  3769.  02h    DWORD    old INT 08h vector
  3770.  06h    DWORD    old INT 09h vector
  3771.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  3772.  0Eh    BYTE    length of version string
  3773.  0Fh  N BYTEs    version string
  3774. ----------6001-------------------------------
  3775. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  3776.     AH = 01h
  3777.     DS:SI -> password or a null byte
  3778. Return: AX = return code
  3779.         FFFEh password is invalid
  3780.         FFFDh display mode is invalid
  3781.        else successful
  3782.         ES:DI point to the help registers of MDEBUG
  3783.            ES:DI-02h  -> R0 (WORD)
  3784.            ES:DI      -> R1 (WORD)
  3785.            ES:DI+02h  -> R2 (WORD)
  3786.            ES:DI+04h  -> R3 (WORD)
  3787.            ...
  3788.            ES:DI+0Eh  -> R8 (WORD)
  3789. ----------6001-------------------------------
  3790. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  3791.     AH = 01h
  3792. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3793. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  3794. ----------6001FF-----------------------------
  3795. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  3796.     AX = 01FFh
  3797.     BX = handle returned by function 02h
  3798. Return: CF set on error
  3799.         DH = error code (see below)
  3800.     CF clear if successful
  3801.         BX = version
  3802.         CH = network interface class (see below)
  3803.         DX = interface type (see below)
  3804.         CL = number
  3805.         DS:SI -> name
  3806.         AL = driver functions supported
  3807.         01h basic
  3808.         02h basic and extended
  3809.         05h basic and high-performance
  3810.         06h basic, high-performance, and extended
  3811.         FFh not installed
  3812. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  3813.       the packet driver specification
  3814.  
  3815. Values for error code:
  3816.  01h "BAD_HANDLE"    invalid handle number 
  3817.  02h "NO_CLASS"        no interfaces of the specified class found
  3818.  03h "NO_TYPE"        no interfaces of the specified type found
  3819.  04h "NO_NUMBER"    no interfaces of the specified number found
  3820.  05h "BAD_TYPE"        bad packet type
  3821.  06h "NO_MULTICAST"    interface does not support multicast messages
  3822.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  3823.  08h "BAD_MODE"        invalid receiver mode
  3824.  09h "NO_SPACE"        insufficient space
  3825.  0Ah "TYPE_INUSE"    type accessed but never released
  3826.  0Bh "BAD_COMMAND"    bad command
  3827.  0Ch "CANT_SEND"    packet could not be sent
  3828.  0Dh "CANT_SET"        hardware address could not be changed
  3829.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  3830.  0Fh "CANT_RESET"    could not reset interface
  3831.  
  3832. Values for Network Interface classes/types:
  3833.     Class 01h  Ethernet/IEEE 802.3     
  3834.     01h 3COM 3C500/3C501
  3835.     02h 3COM 3C505
  3836.     03h MICOM-Interlan NI5010
  3837.     04h BICC Data Networks 4110
  3838.     05h BICC Data Networks 4117
  3839.     06h MICOM-Interlan NP600
  3840.     08h Ungermann-Bass PC-NIC
  3841.     09h Univation NC-516
  3842.     0Ah TRW PC-2000    
  3843.     0Bh MICOM-Interlan NI5210
  3844.     0Ch 3COM 3C503
  3845.     0Dh 3COM 3C523
  3846.     0Eh Western Digital WD8003
  3847.     0Fh Spider Systems S4
  3848.     10h Torus Frame Level
  3849.     11h 10Net Communications
  3850.     12h Gateway PC-bus
  3851.     13h Gateway AT-bus
  3852.     14h Gateway MCA-bus
  3853.     15h IMC PCnic
  3854.     16h IMC PCnic II
  3855.     17h IMC PCnic 8-bit
  3856.     18h Tigan Communications
  3857.     19h Micromatic Research
  3858.     1Ah Clarkson "Multiplexor"
  3859.     1Bh D-Link 8-bit
  3860.     1Ch D-Link 16-bit
  3861.     1Dh D-Link PS/2
  3862.     1Eh Research Machines 8
  3863.     1Fh Research Machines 16
  3864.     20h Research Machines MCA
  3865.     21h Radix Microsystems EXM1 16-bit
  3866.     22h Interlan Ni9210
  3867.     23h Interlan Ni6510
  3868.     24h Vestra LANMASTER 16-bit
  3869.     25h Vestra LANMASTER 8-bit
  3870.     26h Allied Telesis PC/XT/AT
  3871.     27h Allied Telesis NEC PC-98
  3872.     28h Allied Telesis Fujitsu FMR
  3873.     29h Ungermann-Bass NIC/PS2
  3874.     2Ah Tiara LANCard/E AT
  3875.     2Bh Tiara LANCard/E MC
  3876.     2Ch Tiara LANCard/E TP
  3877.     2Dh Spider Communications SpiderComm 8
  3878.     2Eh Spider Communications SpiderComm 16
  3879.     2Fh AT&T Starlan NAU
  3880.     30h AT&T Starlan-10 NAU
  3881.     31h AT&T Ethernet NAU
  3882.     32h Intel smart card
  3883.     33h Xircom Packet Adapter
  3884.     34h Aquila Ethernet
  3885.     35h Novell NE1000
  3886.     36h Novell NE2000
  3887.     37h SMC PC-510
  3888.     38h AT&T Fiber NAU
  3889.     39h NDIS to Packet Driver adapter
  3890.     3Ah Racal-InterLan ES3210
  3891.     3Bh General Systems ISDN simulated Ethernet
  3892.     3Ch Hewlett-Packard
  3893.     3Dh IMC EtherNic-8
  3894.     3Eh IMC EtherNic-16
  3895.     3Fh IMC EtherNic-MCA
  3896.     40h NetWorth EtherNext
  3897.     41h Dataco Scanet
  3898.     42h DEC DEPCA
  3899.     43h C-Net
  3900.     44h Gandalf LANLine
  3901.     45h Apricot built-in
  3902.     46h David Systems Ether-T
  3903.     47h ODI to Packet Driver adapter
  3904.     48h AMD Am21110-16
  3905.     49h Intel ICD Network controller family
  3906.     4Ah Intel ICD PCL2
  3907.     4Bh Intel ICD PCL2A
  3908.     4Ch AT&T LANPacer
  3909.     4Dh AT&T LANPacer+
  3910.     4Eh AT&T EVB
  3911.     4Fh AT&T StarStation
  3912.     50h SLIP simulated ethernet
  3913.     51h Racal-Interlan NIA310
  3914.     52h Racal-Interlan NISE
  3915.     53h Racal-Interlan NISE30
  3916.     54h Racal-Interlan NI6610
  3917.     55h Ethernet over IP/UDP
  3918.     Class 02h  ProNET-10
  3919.     01h Proteon p1300
  3920.     02h Proteon p1800
  3921.     Class 03h  IEEE 802.5/ProNet-4
  3922.     01h IBM Token-Ring Adapter
  3923.     02h Proteon p1340
  3924.     03h Proteon p1344
  3925.     04h Gateway PC-bus
  3926.     05h Gateway AT-bus
  3927.     06h Gateway MCA-bus
  3928.     39h NDIS to Packet Driver adapter
  3929.     47h ODI to Packet Driver adapter
  3930.     Class 04h  Omninet
  3931.     Class 05h  Appletalk
  3932.     01h ATALK.SYS adapter
  3933.     Class 06h  Serial Line
  3934.     01h Clarkson 8250-SLIP
  3935.     02h Clarkson "Multiplexor"
  3936.     Class 07h  StarLAN (subsumed by Ethernet class)
  3937.     Class 08h  ARCnet
  3938.     01h Datapoint RIM
  3939.     Class 09h  AX.25
  3940.     01h Ottawa PI card
  3941.     Class 0Ah  KISS
  3942.     Class 0Bh  IEEE 802.3 with 802.2 headers
  3943.     types same as for class 01h
  3944.     Class 0Ch  FDDI with 802.2 headers
  3945.     01h Western Digital
  3946.     02h Frontier Technology
  3947.     Class 0Dh  Internet X.25
  3948.     01h Western Digital
  3949.     02h Frontier Technology
  3950.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  3951.     01h NT LANSTAR/8
  3952.     02h NT LANSTAR/MC
  3953.     Class 0Fh  SLFP (MIT serial specification)
  3954.     01h MERIT
  3955.     Class 10h  PPP (Point-to-Point Protocol)
  3956.  
  3957. Note: class and type numbers are cleared through FTP Software
  3958. ----------6002-------------------------------
  3959. INT 60 - MDEBUG - SET STATUS
  3960.     AH = 02h
  3961.     DS:SI -> password or a null byte
  3962.     ES = new value for the register SE
  3963.     DI = new value for the register OF
  3964.     CH = new monitor color if nonzero
  3965.     CL = new interpreter color if nonzero
  3966.     BH = new monitor start line if nonzero
  3967.     BL = new interpreter start line if nonzero
  3968.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  3969.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  3970.         if nonzero
  3971.     DH = if nonzero, new basic process number for communication with the
  3972.         drivers (DH = multiplex number for the display driver,
  3973.         DH+1 = multiplex number for the command driver or drivers)
  3974. Return: AX = return code
  3975.         FFFFh call not allowed
  3976.         FFFEh password is invalid
  3977.         FFFDh display mode is invalid
  3978.         0000h successful, status changed
  3979.        else AL = error code
  3980.             bit 0 invalid monitor start line
  3981.             1 invalid interpreter start line
  3982.             2 invalid hotkey
  3983.             3 invalid process number
  3984.               4-7 reserved
  3985. Note:    the values of the registers SE and OF are always changed, the other
  3986.       values are only changed if they are valid
  3987. SeeAlso: AH=00h"MDEBUG"
  3988. ----------6002-------------------------------
  3989. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  3990.     AH = 02h
  3991.     AL = interface class
  3992.     BX = interface type
  3993.     DL = interface number
  3994.     DS:SI -> type
  3995.     CX = length of type (0000h for all packets)
  3996.     ES:DI -> receiver
  3997. Return: CF set on error
  3998.         DH = error code (see AX=01FFh)
  3999.     CF clear if successful
  4000.         AX = handle        
  4001. SeeAlso: AH=03h"FTP"
  4002.  
  4003. Receiver is called with:
  4004.     AX = subfunction
  4005.         00h get packet buffer
  4006.         DX = lookahead length (v1.10+)
  4007.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  4008.         DI = error flags (class dependent) (v1.10+)
  4009.         Return: ES:DI -> packet buffer
  4010.                 0000h:0000h means throw away packet
  4011.             CX = size of buffer (v1.10+), may be smaller than
  4012.                 incoming data
  4013.         01h copy completed
  4014.         DS:SI -> buffer
  4015.         CX = bytes actually copied (v1.10+)
  4016.     BX = handle
  4017.     CX = buffer length
  4018. when a packet is received
  4019. ----------6002-------------------------------
  4020. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  4021.     AH = 02h
  4022. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  4023. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  4024. ----------6003-------------------------------
  4025. INT 60 - MDEBUG - POP UP
  4026.     AH = 03h
  4027.     DS:SI -> password or a null byte
  4028.     ES -> new value for the register SE
  4029.     DI -> new value for the register OF
  4030. Return: AX = return code
  4031.         FFFFh call not allowed
  4032.         FFFEh password is invalid
  4033.         FFFDh display mode is invalid
  4034.        else successful
  4035. SeeAlso: AH=04h"MDEBUG"
  4036. ----------6003-------------------------------
  4037. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  4038.     AH = 03h
  4039.     BX = handle
  4040. Return: CF set on error
  4041.        DH = error code (see AX=01FFh)
  4042.     CF clear if successful    
  4043. SeeAlso: AH=02h"FTP"
  4044. ----------6003-------------------------------
  4045. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  4046.     AH = 03h
  4047. Return: ES:BX -> profiling table
  4048. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  4049. SeeAlso: AH=04h"SYS_PROF"
  4050. ----------6004-------------------------------
  4051. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  4052.     AH = 04h
  4053.     DS:SI -> buffer
  4054.     CX = length
  4055. Return: CF set on error
  4056.         DH = error code (see AX=01FFh)
  4057.     CF clear if successful
  4058. Note:    the buffer may be modified immediately upon return from this call
  4059. SeeAlso: AH=0Bh
  4060. ----------6004-------------------------------
  4061. INT 60 - MDEBUG - POP UP
  4062.     AH = 04h
  4063.     DS:SI -> password or a null byte
  4064. Return: AX = return code
  4065.         FFFFh call not allowed
  4066.         FFFEh password is invalid
  4067.         FFFDh display mode is invalid
  4068.        else successful
  4069. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  4070. ----------6004-------------------------------
  4071. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  4072.     AH = 04h
  4073. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  4074. SeeAlso: AH=03h"SYS_PROF"
  4075. ----------6005-------------------------------
  4076. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  4077.     AH = 05h
  4078.     BX = handle (optional for v1.10+)
  4079. Return: CF set on error
  4080.        DH = error code (see AX=01FFh)
  4081.     CF clear if successful
  4082. ----------6005-------------------------------
  4083. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  4084.     AH = 05h
  4085.     DS:SI -> password or a null byte
  4086.     BL = new value for the semaphor of MDEBUG
  4087.          00h  enable popup of MDEBUG
  4088.          else disable popup of MDEBUG
  4089. Return: AX = return code
  4090.         FFFEh password is invalid
  4091.         FFFDh display mode is invalid
  4092.        else successful
  4093.         BL = old value of the semapor of MDEBUG
  4094.         BH = old value of the INT 08h semaphor
  4095.             (this semaphor is always reset after this function)
  4096. ----------6006-------------------------------
  4097. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  4098.     AH = 06h
  4099.     BX = handle (optional for v1.10+)
  4100.     ES:DI -> buffer
  4101.     CX = length
  4102. Return: CF set on error
  4103.         DH = error code (see AX=01FFh)
  4104.     CF clear if successful
  4105.         CX = length    
  4106. Note:    copies the local net address associated with the handle into the buffer
  4107. ----------6006-------------------------------
  4108. INT 60 - MDEBUG - GET PASSWORD STATUS
  4109.     AH = 06h
  4110. Return: AL = status
  4111.         00h password inactive
  4112.         01h password active
  4113. ----------6007-------------------------------
  4114. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  4115.     AH = 07h
  4116.     BX = handle (optional for v1.10+)
  4117. Return: CF set on error
  4118.         DH = error code (see AX=01FFh)
  4119.     CF clear if successful
  4120. ----------6007-------------------------------
  4121. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  4122.     AH = 07h
  4123. Return: AL = active part for the next popup session of MDEBUG:
  4124.         bit 0: the next popup session will start in the interpreter rather
  4125.                  than in the monitor
  4126.         bit 1: the next popup session will sart in the online-help
  4127. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  4128. ----------6008-------------------------------
  4129. INT 60 - MDEBUG - UNUSED
  4130.     AH = 08h-FFh
  4131. Return: AX = FFFCh
  4132. ----------600A-------------------------------
  4133. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  4134.     AH = 0Ah
  4135. Return: CF set on error
  4136.         DH = error code (0Bh) (see AX=01FFh)
  4137.     CF clear if successful
  4138.         ES:DI -> parameter table (see below)
  4139.  
  4140. Format of parameter table:
  4141. Offset    Size    Description
  4142.  00h    BYTE    major revision of packet driver spec driver conforms to
  4143.  01h    BYTE    minor revision of packet driver spec
  4144.  02h    BYTE    length of this structure in bytes
  4145.  03h    BYTE    length of a MAC-layer address
  4146.  04h    WORD    maximum transfer unit, including MAC headers
  4147.  06h    WORD    buffer size for multicast addr
  4148.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  4149.  0Ah    WORD    number of transmit buffers
  4150.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  4151. ----------600B-------------------------------
  4152. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  4153.     AH = 0Bh
  4154.     DS:SI -> buffer
  4155.     CX = length of buffer
  4156.     ES:DI -> FAR function to call when buffer becomes available
  4157. Return: CF set on error
  4158.         DH = error code (0Bh,0Ch) (see AX=01FFh)
  4159.     CF clear if successful
  4160. Notes:    unlike function 04h, the buffer is not available for modification as
  4161.       soon as the call returns; the buffer may be queued by the driver and
  4162.       not processed until later
  4163.     this function has been dropped from v1.10+ of the specification and
  4164.       replaced by function 0Ch
  4165. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  4166.  
  4167. Completion function called with:
  4168.     AX = result
  4169.         00h copy OK
  4170.         nonzero error
  4171.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  4172. ----------600C-------------------------------
  4173. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  4174.     AH = 0Ch
  4175.     ES:DI -> pointer to IOCB
  4176. Return: CF set on error
  4177.         DH = error code (see AX=01FFh)
  4178.     CF clear if successful
  4179. SeeAlso: AH=04h"Packet Driver",AH=09h"Packet Driver"
  4180.  
  4181. Format of IOCB:
  4182. Offset    Size    Description
  4183.  00h    DWORD    pointer to buffer
  4184.  04h    WORD    length of buffer
  4185.  06h    BYTE    flags
  4186.         bit 0: packet driver is finished with IOCB
  4187.         bit 1: application requests upcall when driver completes
  4188.  07h    DWORD    function address for upcall
  4189.  0Bh  4 BYTEs    future gather write
  4190.  0Fh    BYTE    ???
  4191.  10h  8 BYTEs    private driver workspace
  4192.  
  4193. Completion function called with:
  4194.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  4195. ----------600C-------------------------------
  4196. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  4197.     AH = 0Ch
  4198. Return: AL = status
  4199.         00h successful
  4200.         ES:SI -> 6-byte station address
  4201.         02h semaphore service is unavailable
  4202. ----------600D-------------------------------
  4203. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  4204.     AH = 0Dh
  4205.     ES:DI -> IOCB
  4206. Return: CF set on error
  4207.         DH = error code (see AX=01FFh)
  4208.     CF clear if successful
  4209. SeeAlso: AH=0Ch"Packet Driver"
  4210. ----------6011-------------------------------
  4211. INT 60 - 3com, 10-NET, Banyan VINES - LOCK AND WAIT
  4212.     AH = 11h
  4213.     AL = drive number or 0
  4214.     DX = number of seconds to wait
  4215.     ES:SI = Ethernet address or 0
  4216.     DS:BX -> 31-byte ASCIZ semaphore name
  4217. Return: AL = status
  4218.         00h successful
  4219.         01h timeout
  4220.         02h server not responding
  4221.         03h invalid semaphore name
  4222.         04h semaphore list is full
  4223.         05h invalid drive ID
  4224.         06h invalid Ethernet address
  4225.         07h not logged in
  4226.         08h write to network failed
  4227.         09h semaphore already logged for this CPU
  4228. SeeAlso: AH=12h,AH=13h
  4229. ----------6012-------------------------------
  4230. INT 60 - 3com, 10-NET, Banyan VINES - LOCK
  4231.     AH = 12h
  4232.     AL = drive number or 00h
  4233.     ES:SI = Ethernet address or 0000h:0000h
  4234.     DS:BX -> 31-byte ASCIZ semaphore name
  4235. Return: AL = status (see also AH=11h)
  4236.         01h semaphore currently locked by another PC
  4237. Note:    unlike function 11h, this function returns immediately
  4238. SeeAlso: AH=11h,AH=13h
  4239. ----------6013-------------------------------
  4240. INT 60 - 3com, 10-NET, Banyan VINES - UNLOCK
  4241.     AH = 13h
  4242.     AL = drive number or 00h
  4243.     ES:SI = Ethernet address or 0000h:0000h
  4244.     DS:BX -> 31-byte ASCIZ semaphore name
  4245. Return: AL = status (see also AH=11h)
  4246.         1 semaphore not locked
  4247. SeeAlso: AH=11h,AH=12h
  4248. ----------6014-------------------------------
  4249. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  4250.     AH = 14h
  4251.     BX = handle (optional for v1.10+)
  4252.     CX = mode
  4253.         01h turn off receiver
  4254.         02h receive only packets sent to this interface
  4255.         03h mode 2 plus broadcast packets
  4256.         04h mode 3 plus limited multicast packets
  4257.         05h mode 3 plus all multicast packets
  4258.         06h all packets
  4259.         07h raw mode for serial line only (v1.10+)
  4260. Return: CF set on error
  4261.        DH = error code (01h,08h) (see AX=01FFh)
  4262.     CF clear if successful
  4263. SeeAlso: AH=15h
  4264. ----------6015-------------------------------
  4265. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  4266.     AH = 15h
  4267.     BX = handle (optional for v1.10+)
  4268. Return: CF set on error
  4269.         DH = error code (01h) (see AX=01FFh)
  4270.     CF clear if successful
  4271.         AX = mode    
  4272. SeeAlso: AH=14h
  4273. ----------6016-------------------------------
  4274. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  4275.     AH = 16h
  4276.     ES:DI -> multicast list
  4277.     CX = length of list in bytes
  4278. Return: CF set on error
  4279.         DH = error code (06h,09h,0Eh) (see AX=01FFh)
  4280.     CF clear if successful
  4281. SeeAlso: AH=17h
  4282. ----------6017-------------------------------
  4283. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  4284.     AH = 17h
  4285. Return: CF set on error
  4286.         DH = error code (06h,09h) (see AX=01FFh)
  4287.     CF clear if successful
  4288.         ES:DI -> multicast addresses (do not modify)
  4289.         CX = bytes of multicast addresses currently in use
  4290. SeeAlso: AH=16h
  4291. ----------6018-------------------------------
  4292. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  4293.     AH = 18h
  4294.     BX = handle (optional for v1.10+)
  4295. Return: CF set on error
  4296.         DH = error code (01h) (see AX=01FFh)
  4297.     CF clear if successful
  4298.         DS:SI -> statistics (see below)
  4299.  
  4300. Format of statistics:
  4301. Offset    Size    Description
  4302.  00h    DWORD    packets in
  4303.  04h    DWORD    packets out
  4304.  08h    DWORD    bytes in
  4305.  0Ch    DWORD    bytes out
  4306.  10h    DWORD    errors in
  4307.  14h    DWORD    errors out
  4308.  18h    DWORD    packets dropped
  4309. ----------6019-------------------------------
  4310. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  4311.     AH = 19h
  4312.     ES:DI -> address
  4313.     CX = length of address
  4314. Return: CF set on error
  4315.         DH = error code (0Dh,0Eh) (see AX=01FFh)
  4316.     CF clear if successful
  4317.         CX = length
  4318. ----------601A-------------------------------
  4319. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  4320.     AH = 1Ah
  4321.     DS:SI -> buffer
  4322.     CX = length of buffer
  4323. Return: CF set on error
  4324.         DH = error code (see AX=01FFh)
  4325.     CF clear if successful
  4326. SeeAlso: AH=1Ch
  4327. ----------601B-------------------------------
  4328. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  4329.     AH = 1Bh
  4330. Return: CF set on error
  4331.         DH = error code (see AX=01FFh)
  4332.     CF clear if successful
  4333. SeeAlso: AH=1Ch
  4334. ----------601C-------------------------------
  4335. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  4336.     AH = 1Ch
  4337.     DS:SI -> buffer
  4338.     CX = length of buffer
  4339.     DX = timeout in clock ticks
  4340. Return: CF set on error
  4341.         DH = error code (see AX=01FFh)
  4342.     CF clear if successful
  4343.         CX = number of bytes transferred to buffer
  4344. SeeAlso: AH=1Ah,AH=1Bh
  4345. ----------60AD-------------------------------
  4346. INT 60 - AccessDOS - API
  4347.     AH = ADh
  4348.     AL = function
  4349.         E1h ???
  4350.         Return: AX = ???
  4351.         E2h get configuration
  4352.         Return: BX:AX -> configuration data
  4353. Notes:    AccessDOS is a public domain TSR developed at The Trace Research and
  4354.       Development Center which provides extensions for keyboard, mouse,
  4355.       and sound access by the visually, hearing, or motor-control
  4356.       impaired.
  4357.     INT 60 is the default vector; AccessDOS will use the first 0000h:0000h
  4358.       vector in the range 60h through 66h.
  4359. ----------61---------------------------------
  4360. INT 61 - reserved for user interrupt
  4361. ----------61---------------------------------
  4362. INT 61 - Atari Portfolio - EXTENDED BIOS
  4363.    provides subfunctions such as turning off the machine, accessing internal
  4364.    variables, and mapping memory cards
  4365. SeeAlso: INT 60"Atari"
  4366. ----------61---------------------------------
  4367. INT 61 - HP 95LX System Manager - LOAD DS
  4368. SeeAlso: INT 0F"HP 95LX",INT 60"HP 95LX"
  4369. ----------61---------------------------------
  4370. INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
  4371. SeeAlso: INT 61"JPI"
  4372. ----------61---------------------------------
  4373. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  4374.     AH = system call number
  4375. Return: AL = basic error
  4376.     AH = suberror number
  4377. ----------61---------------------------------
  4378. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  4379. Note:    this vector stores the second four bytes of the parameter table for
  4380.       hard disk 0
  4381. SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
  4382. ----------61---------------------------------
  4383. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  4384.     BX:DX -> control block
  4385. SeeAlso: INT 67"Sangoma"
  4386. ----------61---------------------------------
  4387. INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
  4388. Note:    the virus copies the original INT 21h vector into INT 61h
  4389. SeeAlso: INT 21h,INT 60"VIRUS",INT 6B"VIRUS"
  4390. ----------610000-----------------------------
  4391. INT 61 - OPTIMA 1024 VGA-Sync - ZOOM DISPLAY
  4392.     AX = 0000h
  4393.     BX = zoom factor (0-7)
  4394. Notes:    zooms the display based on the given zoom factor
  4395.     INT 61h is the default interrupt; the actual interrupt number can be
  4396.       obtained by calling INT 16/AH=FFh
  4397. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0001h"OPTIMA",INT 61/AX=0002h"OPTIMA"
  4398. SeeAlso: INT 61/AX=0005h"OPTIMA"
  4399. ----------610001-----------------------------
  4400. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  4401.     AX = 0001h
  4402.     DS:DX -> communications control block (function 0001h)
  4403. Return: AX = status
  4404.         0000h  successful
  4405.         0001h  service not installed
  4406.         0002h  invalid service ID
  4407.         0098h  resource already in use
  4408.         009Eh  address family does not exist
  4409.         009Fh  socket type does not exist
  4410.         00A0h  protocol does not exist
  4411.         00A1h  no more sockets available
  4412.         00A2h  no more buffer space available
  4413. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4414.       interrupt handler is identified by the string "BANV" in the four
  4415.       bytes immediately preceding the interrupt handler
  4416.  
  4417. Format of control block:
  4418. Offset    Size    Description
  4419.  00h    WORD    0001h
  4420.  02h    WORD    pointer to argument block
  4421.  04h    WORD    error return code
  4422.  06h  4 BYTEs    reserved
  4423.  
  4424. Format of argument block:
  4425. Offset    Size    Description
  4426.  00h    WORD    pointer to 2-byte buffer for socket identifier
  4427.  02h    WORD    address family
  4428.         0003h Banyan
  4429.  04h    WORD    socket type
  4430.         in address family 0003h
  4431.             0001h IPC socket
  4432.             0002h SPP socket
  4433.  06h    WORD    protocol number
  4434.         FFFFh default
  4435.  08h    WORD    pointer to 16-byte buffer for socket address
  4436.  0Ah    WORD    local port number
  4437.         0000h if service should assign transient port number
  4438.         0001h to 01FFh well-known port number (assigned by Banyan)
  4439.  
  4440. Format of IPC port:
  4441. Offset    Size    Description
  4442.  00h    WORD    address family (always 0003h for Banyan ports)
  4443.  04h  4 BYTEs    network number (server's serial number)
  4444.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  4445.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  4446.  0Ah    BYTE    hop count
  4447.  0Bh  5 BYTEs    filler
  4448. ----------610001-----------------------------
  4449. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  4450.     AX = 0001h
  4451.     DS:DX -> communications control block (function 0002h)
  4452. Return: AX = status
  4453.         0000h  successful
  4454.         0001h  service not installed
  4455.         0002h  invalid service ID
  4456.         0003h-000Ah reserved for BANV interface errors
  4457.         0097h  invalid socket identifier
  4458.         009Bh  destination node unreachable
  4459.         009Ch  message overflow
  4460.         009Dh  destination socket nonexistent
  4461.         00A2h  no more buffer space
  4462.         00A3h  timeout
  4463.         00B1h  resource disconnect
  4464. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4465.       interrupt handler is identified by the string "BANV" in the four
  4466.       bytes immediately preceding the interrupt handler
  4467.  
  4468. Format of control block:
  4469. Offset    Size    Description
  4470.  00h    WORD    0002h
  4471.  02h    WORD    pointer to argument block (see below)
  4472.  04h    WORD    error return code
  4473.         0000h successful
  4474.         0097h invalid socket ID
  4475.         00A2h no more buffer space
  4476.         00A3h timeout event
  4477.         00A5h resource not available
  4478.         00A6h internal communication failure
  4479.         00B1h resource disconnect
  4480.  06h  4 BYTEs    reserved
  4481.  
  4482. Format of argument block:
  4483. Offset    Size    Description
  4484.  00h    WORD    routine metric
  4485.  02h    WORD    error return code
  4486.  04h    WORD    socket identifier
  4487.  06h    WORD    pointer to send buffer
  4488.  08h    WORD    length of send buffer
  4489.  0Ah    WORD    flags
  4490.         bit 0: async request
  4491.             1: reliable message
  4492.             3: end of user message received
  4493.             4: vectored request (if set, send buffer contains buffer
  4494.             descriptors)
  4495.             5: connection-specific receive
  4496.             6: change to connection-specific receive mode
  4497.  0Ch 16 BYTEs    socket address (see below)
  4498.  1Ch    WORD    timeout value in multiples of 200ms
  4499.  1Eh    WORD    connection identifier
  4500.  20h    WORD    type of request
  4501.         0001h send message
  4502.         0002h establish a virtual connection
  4503.         0003h terminate a virtual connection
  4504.  
  4505. Format of buffer descriptor:
  4506. Offset    Size    Description
  4507.  00h    WORD    data segment
  4508.  02h    WORD    buffer pointer
  4509.  04h    WORD    buffer length
  4510.  06h    WORD    character count
  4511.  
  4512. Format of socket address for unreliable datagrams:
  4513. Offset    Size    Description
  4514.  00h    WORD    0003h      address family
  4515.  02h    DWORD    FFFFFFFFh network number
  4516.  06h    WORD    FFFFh      subnet number
  4517.  08h    WORD          local port number
  4518.  0Ah    BYTE    00h-0Fh      hop count
  4519.  0Bh  5 BYTEs    0000h      filler
  4520. ----------610001-----------------------------
  4521. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  4522.     AX = 0001h
  4523.     DS:DX -> communications control block (function 0003h)
  4524. Return: AX = status
  4525.         0000h  successful
  4526.         0001h  service not installed
  4527.         0002h  invalid service ID
  4528.         0003h-000Ah reserved for BANV interface errors
  4529.         0097h  invalid socket identifier
  4530.         00A2h  no more buffer space
  4531.         00A3h  timeout
  4532. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4533.       interrupt handler is identified by the string "BANV" in the four
  4534.       bytes immediately preceding the interrupt handler
  4535.  
  4536. Format of control block:
  4537. Offset    Size    Description
  4538.  00h    WORD    0003h
  4539.  02h    WORD    pointer to argument block (see below)
  4540.  04h    WORD    error return code
  4541.         0000h successful
  4542.         0097h invalid socket ID
  4543.         00A2h no more buffer space
  4544.         00A3h timeout event
  4545.         00A5h resource not available
  4546.         00A6h internal communication failure
  4547.         00B1h resource disconnect
  4548.  06h  4 BYTEs    reserved
  4549.  
  4550. Format of argument block:
  4551. Offset    Size    Description
  4552.  00h    WORD    character count
  4553.  02h    WORD    error return code
  4554.  04h    WORD    socket identifier
  4555.  06h    WORD    pointer to receive buffer
  4556.  08h    WORD    length of receive buffer
  4557.  0Ah    WORD    flags
  4558.         bit 0: async request
  4559.             2: flush receive buffer on overflow
  4560.             3: end of user message received
  4561.             4: vectored request (if set, receive buffer contains buffer
  4562.             descriptors)
  4563.             5: connection-specific receive
  4564.             6: change to connection-specific receive mode
  4565.  0Ch 16 BYTEs    socket address
  4566.  1Ch    WORD    timeout value in multiples of 200ms
  4567.  1Eh    WORD    connection identifier
  4568.  20h    WORD    type of response
  4569.         0001h message received
  4570.         0002h virtual connection established
  4571.         0003h virtual connection terminated
  4572.  
  4573. Format of buffer descriptor:
  4574. Offset    Size    Description
  4575.  00h    WORD    data segment
  4576.  02h    WORD    buffer pointer
  4577.  04h    WORD    buffer length
  4578.  06h    WORD    character count
  4579. ----------610001-----------------------------
  4580. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  4581.     AX = 0001h
  4582.     DS:DX -> communications control block (function 0004h)
  4583. Return: AX = status
  4584.         0000h  successful
  4585.         0001h  service not installed
  4586.         0002h  invalid service ID
  4587.         0003h-000Ah reserved for BANV interface errors
  4588.         0097h  invalid socket identifier
  4589. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4590.       interrupt handler is identified by the string "BANV" in the four
  4591.       bytes immediately preceding the interrupt handler
  4592.  
  4593. Format of control block:
  4594. Offset    Size    Description
  4595.  00h    WORD    0004h
  4596.  02h    WORD    pointer to argument block (see below)
  4597.  04h    WORD    error return code
  4598.  06h  4 BYTEs    reserved
  4599.  
  4600. Format of argument block:
  4601. Offset    Size    Description
  4602.  00h    WORD    socket identifier
  4603. ----------610001-----------------------------
  4604. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  4605.     AX = 0001h
  4606.     DS:DX -> communications control block (function 0005h)
  4607. Return: AX = status
  4608.         0000h  successful
  4609.         0001h  service not installed
  4610.         0002h  invalid service ID
  4611.         0003h-000Ah reserved for BANV interface errors
  4612.         00A2h  no more buffer space available
  4613.         00A3h  timeout event
  4614. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4615.       interrupt handler is identified by the string "BANV" in the four
  4616.       bytes immediately preceding the interrupt handler
  4617.     returns results for all asynchronous operations invoked from the
  4618.       data segment used for this call
  4619.  
  4620. Format of control block:
  4621. Offset    Size    Description
  4622.  00h    WORD    0005h
  4623.  02h    WORD    pointer to argument block (see below)
  4624.  04h    WORD    error return code
  4625.  06h  4 BYTEs    reserved
  4626.  
  4627. Format of argument block:
  4628. Offset    Size    Description
  4629.  00h    WORD    pointer to WORD event pointer
  4630.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  4631. ----------610001-----------------------------
  4632. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  4633.     AX = 0001h
  4634.     DS:DX -> communications control block (function 0008h)
  4635. Return: AX = status
  4636.         0000h  successful
  4637.         00A2h  no more buffer space available
  4638. Note:    BANYAN can use any interrupt from 60h through 66h (default 61h).  The
  4639.       Banyan interrupt handler is identified by the string "BANV" in the
  4640.       four bytes immediately preceding the interrupt handler
  4641.  
  4642. Format of control block:
  4643. Offset    Size    Description
  4644.  00h    WORD    0008h
  4645.  02h    WORD    process type
  4646.         0001h transient process
  4647.         0002h resident process
  4648.  04h    WORD    error return code
  4649.  06h  4 BYTEs    reserved
  4650. ----------610001-----------------------------
  4651. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  4652.     AX = 0001h
  4653.     DS:DX -> communications control block (function 000Bh)
  4654. Return: AX = status
  4655.         0000h  successful
  4656.         0001h  service not installed
  4657.         0002h  invalid service ID
  4658.         0003h-000Ah reserved for BANV interface errors
  4659.         00A2h  no more buffer space available
  4660. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4661.       interrupt handler is identified by the string "BANV" in the four
  4662.       bytes immediately preceding the interrupt handler
  4663.     FAR user function is invoked with SS,DS, and ES set to segment of
  4664.       control block, and with the stack containing
  4665.         DWORD    return address
  4666.         WORD    argument pointer (sosend or sorec argument block)
  4667.         WORD    error return code
  4668.             0000h argument pointer is valid
  4669.             00A3h timeout
  4670.  
  4671. Format of control block:
  4672. Offset    Size    Description
  4673.  00h    WORD    000Bh
  4674.  02h    WORD    pointer to argument block (see below)
  4675.  04h    WORD    error return code
  4676.  06h  2 BYTEs    reserved
  4677.  08h    WORD    user CS register
  4678.  
  4679. Format of argument block:
  4680. Offset    Size    Description
  4681.  00h    WORD    pointer to user interrupt function    
  4682.  02h    WORD    pointer to user stack
  4683.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  4684. ----------610001-----------------------------
  4685. INT 61 - OPTIMA 1024 VGA-Sync - CENTER ZOOM WINDOW
  4686.     AX = 0001h
  4687.     BX = X coordinate to center
  4688.     CX = Y coordinate to center
  4689. Notes:    Positions the zoom window such that the specified window-relative
  4690.       coordinates appear as close as possible to the center of the
  4691.       display.  Useful for scrolling and panning.
  4692.     INT 61h is the default interrupt; the actual interrupt number can be
  4693.       obtained by calling INT 16/AH=FFh
  4694. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0002h"OPTIMA"
  4695. SeeAlso: INT 61/AX=0005h"OPTIMA"
  4696. ----------610002-----------------------------
  4697. INT 61 - Banyan VINES - 3270 INTERFACE
  4698.     AX = 0002h
  4699.     BH = function
  4700.         00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
  4701.         02h "pi2bsc" (3270/BSC only)
  4702.         03h    "pi2get"    get information stored in 3270 resident driver
  4703.         04h "pi2put"    store information in 3270 resident driver
  4704.         05h "pi2gcur"   get current screen position
  4705.         07h "pi2sdat"   send data keystroke
  4706.         08h "pi2scom"   send command keystroke
  4707.         0Ah "pi2field"  get field info for arbitrary screen positions
  4708.         0Fh "pi2stat"   get logical unit/device status
  4709.         12h "pi2nlus"   determine logical unit/device assignment
  4710.         13h "pi2gate"   specifies comm port address to gateway service
  4711.         14h "pi2attach" attach a logical unit/device
  4712.         15h "pi2sdev"   save logical unit/device info in resident driver
  4713.                 (not supported in >3.0)
  4714.         16h "pi2gdev"   get device information (not supported in >3.0)
  4715.         17h "pi2luinfo" get info about specific logical unit/device
  4716.         18h "pi2gerr"   get finer error detail
  4717.         19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
  4718.         1Ah "pi2shut"   release memory-resident module
  4719.         1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
  4720.         1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
  4721.     DS:CX -> argument block (except BH=00h,1Ah)
  4722. Return: AX = status
  4723.         0000h successful
  4724.         000Bh invalid parameter or data does not fit data area
  4725.         000Ch another code path currently active in resident driver
  4726.         000Dh operation currently not allowed
  4727.         0032h encountered connection disconnect error
  4728.         0033h encountered "sosend" completion error
  4729.         0034h encountered "sosend" communication error
  4730.         0035h attach request refused.  extended error info via "pi2gerr":
  4731.             01h resource unavailable
  4732.             02h invalid type
  4733.             03h version mismatch
  4734.             04h invalid logical unit number
  4735.             05h error during ARL processing
  4736.             06h no access for user
  4737.         0071h encountered "sosock" error
  4738.         0072h encountered unrecognizable error
  4739.         0073h encountered "sowait" error (extended info via "pi2gerr")
  4740.         0074h encountered invalid type-of-request on "sowait"
  4741.         0075h encountered "sorec" error (extended info via "pi2gerr")
  4742.         0076h encountered "sorec" completion error (ext info via "pi2gerr")
  4743.         0077h encountered connection request
  4744.         0078h encountered unrecognizable data
  4745.         0079h encountered unknown connection ID (ext info via "pi2gerr")
  4746. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  4747.       which is loaded first.  The other interface will use AX=000Ah
  4748.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  4749.       or 3270/BSC resident driver, which must be reloaded by the user
  4750.  
  4751. Format of argument block for BH=03h,04h:
  4752. Offset    Size    Description
  4753.  00h    WORD    size of data area (max 256)
  4754.  02h  N BYTEs    data area
  4755.  
  4756. Format of argument block for BH=05h:
  4757. Offset    Size    Description
  4758.  00h    WORD    logical unit/device number
  4759.  02h    WORD    pointer to WORD buffer for cursor index
  4760.  04h    WORD    pointer to BYTE buffer for current field attribute
  4761.  
  4762. Format of argument block for BH=07h:
  4763. Offset    Size    Description
  4764.  00h    WORD    logical unit/device number
  4765.  02h    WORD    ASCII data byte
  4766.  04h    WORD    pointer to WORD count of characters which will need updating
  4767.  
  4768. Format of argument block for BH=08h:
  4769. Offset    Size    Description
  4770.  00h    WORD    logical unit/device number
  4771.  02h    WORD    keystroke
  4772.         0000h Enter
  4773.         0001h Clear
  4774.         0002h PA1
  4775.         0003h PA2
  4776.         0004h PA3
  4777.         0005h PF1
  4778.         ...
  4779.         001Ch PF24
  4780.         001Dh CSELECT (cursor select)
  4781.         001Eh Insert
  4782.         001Fh Delete
  4783.         0020h EOField
  4784.         0021h EINPUT (erase input)
  4785.         0022h Reset
  4786.         0023h Attention
  4787.         0024h SysReq
  4788.         0025h Duplicate
  4789.         0026h Fieldmark
  4790.         0027h Home
  4791.         0028h NextLine
  4792.         0029h Tab
  4793.         002Ah BackTab
  4794.         002Bh cursor up
  4795.         002Ch cursor down
  4796.         002Dh cursor right
  4797.         002Eh cursor left
  4798.         002Fh double cursor right
  4799.         0030h double cursor left
  4800.         0031h PRINT
  4801.         0032h CANCEL
  4802.         0033h Backspace
  4803.  
  4804. Format of argument block for BH=0Ah:
  4805. Offset    Size    Description
  4806.  00h    WORD    logical unit/device number
  4807.  02h    WORD    screen index
  4808.  04h    WORD    pointer to WORD buffer for field length
  4809.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  4810.  
  4811. Format of argument block for BH=0Fh:
  4812. Offset    Size    Description
  4813.  00h    WORD    logical unit/device number
  4814.  02h    WORD    clear mask (clear these bits of status after returning status)
  4815.  04h    WORD    pointer to WORD buffer for status
  4816.         bit 10: status modified
  4817.         bit  9: buffer modified
  4818.         bit  8: set cursor
  4819.         bit  5: sound alarm
  4820.         bits 0,1: size of print line for printer logical units
  4821.             00 unformatted line
  4822.             01 40-character line
  4823.             10 64-character line
  4824.             11 80-character line
  4825.  
  4826. Format of argument block for BH=12h:
  4827. Offset    Size    Description
  4828.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  4829.  02h    WORD    pointer to WORD buffer for version number
  4830.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  4831.  
  4832. Format of argument block for BH=13h:
  4833. Offset    Size    Description
  4834.  00h 16 BYTEs    communications port address (see AX=0001h#"Sosock")
  4835.  
  4836. Format of argument block for BH=14h:
  4837. Offset    Size    Description
  4838.  00h    WORD    logical unit/device number 
  4839.         0000h attach any free device of the specified type
  4840.  02h    WORD    logical unit/device type
  4841.         (3270/SNA) 01h, 02h, or 03h
  4842.         (3270/BSC) 02h display
  4843.         (3270/BSC) 03h printer
  4844.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  4845.  
  4846. Format of argument block for BH=16h:
  4847. Offset    Size    Description
  4848.  00h    WORD    pointer to 18-byte buffer for device block (see below)
  4849.         first WORD must be set to desired logical unit/device number
  4850.  
  4851. Format of argument block for BH=17h:
  4852. Offset    Size    Description
  4853.  00h    WORD    logical unit/device number
  4854.  02h    WORD    pointer to information block in caller's DS (see below)
  4855.  
  4856. Format of argument block for BH=18h:
  4857. Offset    Size    Description
  4858.  00h    WORD    pointer to WORD buffer for major error code
  4859.  02h    WORD    pointer to WORD buffer for minor error code
  4860.  
  4861. Format of argument block for BH=19h:
  4862. Offset    Size    Description
  4863.  00h    WORD    logical unit/device number
  4864.  
  4865. Format of argument block for BH=1Ch,1Dh:
  4866. Offset    Size    Description
  4867.  00h    WORD    pointer to profile block in caller's DS (see below)
  4868.  
  4869. Format of device block, argument block for BH=15h:
  4870. Offset    Size    Description
  4871.  00h    WORD    logical unit/device number
  4872.  02h    WORD    logical unit/device type
  4873.  04h    WORD    display model number
  4874.  06h    WORD    numeric checking
  4875.  08h    WORD    status line
  4876.  0Ah    BYTE    unprotected normal field attribute
  4877.  0Bh    BYTE    unprotected intensified field attribute
  4878.  0Ch    BYTE    protected normal field attribute
  4879.  0Dh    BYTE    protected intensified field attribute
  4880.  0Eh    WORD    reserved
  4881.  10h    WORD    printer port number
  4882.  
  4883. Format of information block:
  4884. Offset    Size    Description
  4885.  00h    WORD    device model number
  4886.  02h    DWORD    screen buffer pointer
  4887.  06h    DWORD    status line pointer (see below)
  4888.  0Ah    DWORD    reserved
  4889.  
  4890. Format of status line:
  4891. Offset    Size    Description
  4892.  00h    BYTE    comm line status
  4893.         00h inactive
  4894.         01h active
  4895.  01h    BYTE    activation level
  4896.         01h physical unit activated
  4897.         02h logical unit also activated
  4898.         03h session is bound
  4899.  02h    BYTE    data traffic state
  4900.         00h inactive
  4901.         01h active
  4902.  03h    BYTE    screen ownership
  4903.         00h SLU->PLU sessoin owns screen
  4904.         01h SLU->SSCP session owns screen
  4905.  04h    BYTE    keyboard status
  4906.         00h UNLOCK - ready to accept data
  4907.         01h TIME - aid was struck
  4908.         02h SYSTEM - received response no restore
  4909.         03h FUNCTION - unavailable keyboard function
  4910.         04h INPUT - not currently used
  4911.         05h ENDFIELD - field filled in insert mode
  4912.         06h PROTECTED - attempt to enter in protected field
  4913.         07h NUMERIC - attempt to enter in numeric field
  4914.         08h PROGRAM - error in outbound data stream
  4915.  05h    BYTE    insert mode
  4916.         01h if in insert mode
  4917.  06h    BYTE    numeric
  4918.         01h if current screen buffer is numeric only
  4919.  07h    BYTE    printer status
  4920.         00h printer not assigned
  4921.         01h printer is inactive
  4922.         02h printer error
  4923.         03h currently printing
  4924.         04h printer is busy
  4925.         05h printer is very busy
  4926.  08h    BYTE    printer assignment
  4927.  09h    BYTE    maximum size of network name
  4928.  0Ah  N BYTEs    ASCIZ network name
  4929.     BYTE    maximum size of message window
  4930.       M BYTEs    null-terminated message window
  4931.     BYTE    code set
  4932.         00h EBCDIC
  4933.         01h ASCII
  4934.       M BYTEs    extended attributes
  4935.         01h extended attributes are in effect (stored at screen+1920)
  4936.             each extended attribute specifies
  4937.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  4938.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  4939.                   100=green,101=turquoise,110=yellow,111=white
  4940.     BYTE    extended color
  4941.         01h other than base color is in effect
  4942.  
  4943. Format of profile block:
  4944. Offset    Size    Description
  4945.  00h 64 BYTEs    gateway service name
  4946.  40h 16 BYTEs    gateway comm port address
  4947.  50h    WORD    primary logical unit number
  4948.  52h    WORD    secondary logical unit type
  4949.  54h    WORD    secondary logical unit number
  4950.  56h    WORD    printer assignment
  4951.  58h 50 BYTEs    keyboard definitions filename
  4952. ----------610002-----------------------------
  4953. INT 61 - OPTIMA 1024 VGA-Sync - END ZOOM
  4954.     AX = 0002h
  4955. Note:    switches off zoom and returns window to its original state
  4956.     INT 61h is the default interrupt; the actual interrupt number can be
  4957.       obtained by calling INT 16/AH=FFh
  4958. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA"
  4959. ----------610003-----------------------------
  4960. INT 61 - Banyan VINES - ASYNCHRONOUS TERMINAL EMULATION
  4961.     AX = 0003h
  4962.     DS:BX -> argument block with function number (see below)
  4963. Return: AX = status
  4964.         0000h successful
  4965.         000Bh invalid session ID
  4966.         000Ch session not active
  4967.         000Dh invalid request type
  4968.         000Eh invalid parameters
  4969.         000Fh out of heap space
  4970.         0010h timeout on send
  4971.         0011h Banyan communications error
  4972.         0012h session not waiting for host
  4973.         0013h session is active
  4974.         0014h duplicate suspend session request
  4975.         0015h no session suspended
  4976.         0016h ring data buffer full
  4977.         0017h printer error encountered
  4978.         0018h Banyan communications error
  4979.         0019h unable to make connection
  4980.         001Ah no ring buffer specified at startup
  4981.         001Bh service is down
  4982.         001Ch invalid service name
  4983.         001Dh service is closed
  4984.         001Eh invalid connection name
  4985.         001Fh max session limit reached for service
  4986.         0020h access rights list for connection/dialout does not include
  4987.             this user
  4988.         0021h service not responding
  4989.         0022h missing telephone number
  4990.  
  4991. Format of argument block:
  4992. Offset    Size    Description
  4993.  00h    BYTE    session ID (00h)
  4994.  01h    BYTE    asynchronous interface request number
  4995.         00h initialize user buffer pointer information area
  4996.         01h send to host
  4997.         02h "control monitor"
  4998.         03h "flow control data": freeze/unfreeze display, ring buffer
  4999.         04h end active session
  5000.         05h set session parameter
  5001.         06h get session parameter
  5002.         07h set tab settings
  5003.         08h get tab settings
  5004.         09h refresh emulation screen
  5005.         0Ah suspend session temporarily
  5006.         0Bh restore previously suspended session
  5007.         0Ch set state of scroll lock checking
  5008.         0Dh exit emulation
  5009.         0Eh interrupt on character from host
  5010.         0Fh start a session
  5011.         10h start/stop printing of data received from host
  5012.         11h get file transfer parameters
  5013.         12h get connection information
  5014.         13h start/stop tracing data traffic in session
  5015.         14h interrupt on message from host
  5016.         15h reset error
  5017. ---request=00h---
  5018.  02h    WORD    pointer to info area in caller's current DS
  5019.         Offset    Size    Description
  5020.          00h    WORD    flags
  5021.                 0000h don't read interface's data buffer
  5022.                 0001h read data buffer
  5023.          02h    DWORD    pointer to ring buffer
  5024.          06h    WORD    length of ring buffer
  5025.          08h    WORD    ring buffer offset to last byte read by caller
  5026.          0Ah    DWORD    pointer to WORD containing offset of last byte
  5027.                   in ring buffer filled
  5028.          0Eh    DWORD    pointer to screen buffer
  5029.          12h    DWORD    pointer to field containing cursor position
  5030.          16h    DWORD    pointer to terminal status area (see below)
  5031. ---request=01h---
  5032.  02h    BYTE    type
  5033.         00h ASCII byte
  5034.         01h ASCII string
  5035.         02h terminal function code
  5036.         03h up arrow
  5037.         04h down arrow
  5038.         05h left arrow
  5039.         06h right arrow
  5040.         07h break
  5041.  03h  N BYTEs    type-specific info
  5042.         Offset    Size    Description
  5043.         ---ASCII byte---
  5044.          03h    BYTE    byte to send to host
  5045.         ---ASCII string---
  5046.          03h    WORD    length of string
  5047.          05h    WORD    pointer to string
  5048.         ---terminal function code (VT52/VT100)---
  5049.          03h    BYTE    function code
  5050.                 00h keypad 0
  5051.                 01h keypad 1
  5052.                 ...
  5053.                 09h keypad 9
  5054.                 0Ah keypad -
  5055.                 0Bh keypad ,
  5056.                 0Ch keypad .
  5057.                 0Dh keypad ENTER
  5058.                 0Eh PF1
  5059.                 0Fh PF2
  5060.                 10h PF3
  5061.                 11h PF4
  5062.         ---terminal function code (IBM3101)---
  5063.          03h    BYTE    function code
  5064.                 00h PF1
  5065.                 ...
  5066.                 07h PF8
  5067.                 08h Home
  5068. ---request=02h---
  5069.  02h    BYTE    display flag
  5070.         00h don't display data received from host
  5071.         01h display data
  5072. ---request=03h---
  5073.  02h    BYTE    flow control flag
  5074.         00h allow characters to be put into display or ring buffer
  5075.         01h don't place any more characters into display or ring buffer
  5076. ---request=05h,06h---
  5077.  02h    BYTE    parameter number
  5078.         00h line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  5079.             05h=300,06h=600,07h=1200,08h=2400,09h=4800, 0Ah=9600)
  5080.         01h parity (00h=none, 01h=odd, 02h=even)
  5081.         02h duplex (00h=full, 01h=half)
  5082.         03h character size (00h=7 bits, 01h=8 bits)
  5083.         04h stop bits (00h=1, 01h=2)
  5084.         05h XON/XOFF flow control (00h=no, 01h=yes)
  5085.         07h intercharacter delay in tenths of a second
  5086.         08h interline delay in tenths of a second
  5087.         09h auto linefeed (00h=no, 01h=yes)
  5088.         0Ah filter control characters (00h=no, 01h=yes)
  5089.         0Bh terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  5090.         0Ch auto wrap (00h=no, 01h=yes)
  5091.         0Dh cursor shape (00h=underscore, 01h=block)
  5092.         0Eh character set (00h=UK, 01h=US ASCII)
  5093.         0Fh printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  5094.  03h    BYTE    parameter value (returned for 06h)
  5095. ---request=07h,08h---
  5096.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  5097.           each byte = 00h if no tab, 01h if tab at that position
  5098. ---request=0Ah---
  5099.  02h    WORD    size of session information to be saved
  5100.  04h    WORD    pointer to buffer in caller's DS
  5101. ---request=0Bh---
  5102.  02h    WORD    size of buffer into which session info is restored
  5103.  04h    WORD    pointer to buffer in caller's DS
  5104. ---request=0Ch---
  5105.  02h    BYTE    check_scroll_lock flag
  5106.         00h off
  5107.         01h on (display of host data stopped while ScrollLock on)
  5108. ---request=0Eh,14h---
  5109.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  5110.  06h    DWORD    stack pointer to use when call is made
  5111. ---request=0Fh---
  5112.  02h    WORD    pointer to information area in caller's current DS
  5113.         Offset    Size    Description
  5114.          00h    WORD    length of service name
  5115.          02h    WORD    pointer to service name in caller's DS
  5116.          04h    BYTE    type of connection
  5117.                 (00h=connection name, 01h=dialout)
  5118.          05h    WORD    length of connection name/telephone number
  5119.          07h    WORD    pointer to connection name/telephone number
  5120. ---request=10h---
  5121.  02h    WORD    print capture flag (00h=off, 01h=on)
  5122. ---request=11h---
  5123.  02h    WORD    pointer to info area in caller's current DS
  5124.         Offset    Size    Description
  5125.          00h    BYTE    protocol flag (00h none, 01h Kermit)
  5126.          01h    BYTE    direction flag (00h send, 01h receive)
  5127.          02h    BYTE    length of null-terminated PC filename
  5128.          03h    DWORD    pointer to null-terminated PC filename
  5129.          07h    BYTE    length of null-terminated host filename
  5130.          08h    DWORD    pointer to null-terminated host filename
  5131. ---request=12h---
  5132.  02h    WORD    pointer to info area in caller's current DS (see below)
  5133.         Offset    Size    Description
  5134.          00h    WORD    length of service name (returned)
  5135.          02h    WORD    pointer to 64-byte buffer for service name
  5136.          04h    BYTE    type of connection
  5137.                 00h connection name
  5138.                 01h dialout
  5139.          05h    WORD    length of connection name/telephone number
  5140.          07h    WORD    pointer to 64-byte buffer for name/telno
  5141.          09h    BYTE    server line number being used (returned)
  5142. ---request=13h---
  5143.  02h    BYTE    trace flag (00h=off, 01h=on)
  5144.  
  5145. Format of terminal status area:
  5146. Offset    Size    Description
  5147.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  5148.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  5149.  02h    BYTE    current keypad mode (VT100,VT52 only)
  5150.         4Eh ("N") numeric mode
  5151.         41h ("A") application mode
  5152.  03h  4 BYTEs    current state of LEDs (VT100 only)
  5153.         00h off
  5154.         01h on
  5155.  07h    WORD    line error count
  5156.  09h    WORD    primary error code
  5157.         0000h no error
  5158.         0001h unable to make connection
  5159.         0002h communications error, restart session
  5160.         0003h async terminal emulation service unavailable
  5161.         0004h lost carrier
  5162.         0005h all matching lines busy
  5163.         0006h no lines defined for connection name
  5164.         0007h no dial lines available on server
  5165.         0008h no matching dial lines available
  5166.         0009h out of heap space
  5167.         000Ah service error encountered
  5168.         000Bh timed out waiting to connect
  5169.         000Ch communications error
  5170.         000Dh communications error
  5171.         000Eh host wants file transferred to/from PC
  5172.         000Fh host software changed session parameter
  5173.         0010h host software changed tap settings
  5174.         0011h host software changed LED indicator
  5175.         0012h host software changed display background (secondary error
  5176.             code 00h for white on black, 01h for black on white)
  5177.         0013h host software changed display option (secondary error
  5178.             code 00h for off, 01h for on)
  5179.         0014h communications error
  5180.         0015h communications error
  5181.         0016h unable to make connection
  5182.         0017h unable to make connection
  5183.  0Bh    WORD    secondary error code
  5184. ----------610003-----------------------------
  5185. INT 61 - OPTIMA 1024 VGA-Sync - REPORT ZOOM FACTOR
  5186.     AX = 0003h
  5187. Return: AX = zoom factor
  5188. Note:    returns the current zoom factor
  5189.     INT 61h is the default interrupt; the actual interrupt number can be
  5190.       obtained by calling INT 16/AH=FFh
  5191. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0005h"OPTIMA"
  5192. ----------610004-----------------------------
  5193. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  5194.     AX = 0004h
  5195.     DS:DX -> request block (function 0008h)
  5196. Return: AX = status
  5197.         0000h server ID returned in request block
  5198.         000Fh invalid drive
  5199.         0015h drive not ready
  5200.  
  5201. Format of request block:
  5202. Offset    Size    Description
  5203.  00h    WORD    0008h
  5204.  02h    WORD    drive number (0=default, 1=A, ...)
  5205.  04h  6 BYTEs    buffer for server ID
  5206. ----------610004-----------------------------
  5207. INT 61 - OPTIMA 1024 VGA-Sync - ENTER SPECIFY MODE
  5208.     AX = 0004h
  5209. Note:    Specify Mode is enabled by hot key (seeAlso below), and allows
  5210.     panning and zooming via the numeric keypad.
  5211.     INT 61h is the default interrupt; the actual interrupt number can be
  5212.       obtained by calling INT 16/AH=FFh
  5213.     The Zoom interrupt no. can be obtained with function INT 16h,AH=0FFh
  5214. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0007h"OPTIMA"
  5215. ----------610005-----------------------------
  5216. INT 61 - Banyan VINES - PRINTER CONTROL
  5217.     AX = 0005h
  5218.     DS:DX -> request block
  5219. Return: AX = status
  5220.         0000h successful
  5221.         0001h network software not installed or incompatible
  5222. SeeAlso: INT 2F/AX=D702h
  5223.  
  5224. Format of request block:
  5225. Offset    Size    Description
  5226.  00h    WORD    function
  5227.         0201h "endspool" all data for a print job has been sent
  5228.         0205h "getactive" get currently active printer port
  5229.  02h    WORD    number of active port (1-3)
  5230.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  5231.  06h    WORD    0000h
  5232. ----------610005-----------------------------
  5233. INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
  5234.     AX = 0005h
  5235.     BX:CX -> buffer for window parameters (see below)
  5236. Note:    INT 61h is the default interrupt; the actual interrupt number can be
  5237.       obtained by calling INT 16/AH=FFh
  5238. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0003h"OPTIMA"
  5239. SeeAlso: INT 61/AX=0006h"OPTIMA"
  5240.  
  5241. Format of window parameters:
  5242. Offset    Size    Description
  5243.  00h    WORD    X start of zoom window
  5244.  02h    WORD    Y start of zoom window
  5245.  04h    WORD    X end of zoom window
  5246.  06h    WORD    Y end of zoom window
  5247.  08h    WORD    current zoom factor
  5248.  0Ah    WORD    zoom offset start X
  5249.  0Ch    WORD    zoom offset start Y
  5250. ----------610006-----------------------------
  5251. INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM WINDOW
  5252.     AX = 0006h
  5253.     BX:CX -> zoom window description (see below)
  5254. Notes:    width of zoom window must be a multiple of the pixel replication
  5255.       factor
  5256.     INT 61h is the default interrupt; the actual interrupt number can be
  5257.       obtained by calling INT 16/AH=FFh
  5258. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0001h"OPTIMA"
  5259. SeeAlso: INT 61/AX=0005h"OPTIMA",INT 61/AX=0008h"OPTIMA"
  5260.  
  5261. Format of zoom window description:
  5262. Offset    Size    Description
  5263.  00h    WORD    X start of zoom window
  5264.  02h    WORD    Y start of zoom window
  5265.  04h    WORD    X end of zoom window
  5266.  06h    WORD    Y end of zoom window
  5267. ----------610007-----------------------------
  5268. INT 61 - OPTIMA 1024 VGA-Sync - QUERY APPLICATION KEY
  5269.     AX = 0007h
  5270. Return: AX = 0000h/0001h
  5271. Notes:    In specify mode, the END key has been reserved for applications.
  5272.     Returns the current toggle state of that key. E.g. in the
  5273.       OPTIMA AutoCAD driver, 0 means, AutoCAD calls subfunction 0001h
  5274.       every time the cross cursor moves.
  5275.     INT 61h is the default interrupt; the actual interrupt number can be
  5276.       obtained by calling INT 16/AH=FFh
  5277. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0001h"OPTIMA"
  5278. SeeAlso: INT 61/AX=0004h"OPTIMA",INT 7A"AutoCAD"
  5279. ----------610007BX0002-----------------------
  5280. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  5281.     AX = 0007h
  5282.     BX = 0002h
  5283.     DS:DX -> StreetTalk service name
  5284.     DS:DI -> port record block (see below)
  5285. Return: AX = status
  5286.         0000h successful
  5287.         0001h PC network software not installed or incompatible
  5288.         03E9h incorrect name syntax
  5289.         03EAh organization name too long
  5290.         03EBh group name too long
  5291.         03ECh item name too long
  5292.         03EDh StreetTalk name too long
  5293.         03F3h organization not found
  5294.         03F4h group not found
  5295.         03F5h StreetTalk name not found
  5296.         03F8h not a StreetTalk name
  5297.         040Dh appropriate StreetTalk name unavailable
  5298.  
  5299. Format of port record block:
  5300. Offset    Size    Description
  5301.  00h    WORD    number of 17-byte elements
  5302.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  5303.         (see AX=0001h#"Sosock" for port format)
  5304. ----------610007BX0004-----------------------
  5305. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  5306.     AX = 0007h
  5307.     BX = 0004h
  5308.     DS:DX -> StreetTalk name of service
  5309.     DS:DI -> port record block (see below)
  5310. Return: AX = status
  5311.         0000h successful
  5312.         0001h PC network software not installed or incompatible
  5313.         03E9h incorrect name syntax
  5314.         03EAh organization name too long
  5315.         03EBh group name too long
  5316.         03ECh item name too long
  5317.         03EDh StreetTalk name too long
  5318.         03F3h organization not found
  5319.         03F4h group not found
  5320.         03F5h StreetTalk name not found
  5321.         03F8h not a StreetTalk name
  5322.         0409h modify access denied
  5323.         040Dh appropriate StreetTalk name unavailable
  5324.  
  5325. Format of port record block:
  5326. Offset    Size    Description
  5327.  00h    WORD    number of 17-byte elements
  5328.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  5329.         (see AX=0001h#"Sosock" for port format)
  5330. ----------610007BX0005-----------------------
  5331. INT 61 - Banyan VINES - GET USER NAME
  5332.     AX = 0007h
  5333.     BX = 0005h
  5334.     DS:DX -> 64-byte buffer for user's StreetTalk name
  5335. Return: AX = status
  5336.         0000h successful
  5337.         0001h network software not installed or incompatible
  5338. Note:    if no user logged in, first byte of returned name will be 00h
  5339. ----------610007BX0006-----------------------
  5340. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  5341.     AX = 0007h
  5342.     BX = 0006h
  5343.     SI = error code (>100)
  5344.     DS:DX -> 80-byte buffer for error text
  5345. Return: AX = status
  5346.         0000h successful
  5347.         0001h network software not installed or incompatible        
  5348. ----------610007BX0007-----------------------
  5349. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  5350.     AX = 0007h
  5351.     BX = 0007h
  5352.     DS:DX -> NiceName block (see below)
  5353. Return: AX = status
  5354.         0000h successful
  5355.         0001h PC network software not installed or incompatible
  5356.         03E9h incorrect name syntax
  5357.         03EAh organization name too long
  5358.         03EBh group name too long
  5359.         03ECh item name too long
  5360.         03EDh StreetTalk name too long
  5361.         03F3h organization not found
  5362.         03F4h group not found
  5363.         03F5h StreetTalk name not found
  5364.         03F8h not a StreetTalk name
  5365.         040Dh appropriate StreetTalk name unavailable
  5366. SeeAlso: AX=0007h/BX=0008h
  5367.  
  5368. Format of NiceName block:
  5369. Offset    Size    Description
  5370.  00h    WORD    type of name
  5371.         0064h organization
  5372.         00C8h group
  5373.         012Ch item
  5374.  02h    WORD    pointer to ASCIZ input name
  5375.  04h    WORD    pointer to 64-byte buffer for output name
  5376. ----------610007BX0008-----------------------
  5377. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  5378.     AX = 0007h
  5379.     BX = 0008h
  5380.     DS:DX -> enumerate block (see below)
  5381. Return: AX = status
  5382.         0000h successful
  5383.         0411h all matching names have been returned
  5384.         0412h some groups unavailable, all available matches returned
  5385. Note:    each program using this call should continue until a nonzero status
  5386.       is returned; otherwise, some resources will not be freed for several
  5387.       hours
  5388. SeeAlso: AX=0007h/BX=0007h
  5389.  
  5390. Format of enumerate block:
  5391. Offset    Size    Description
  5392.  00h    WORD    return code
  5393.  02h    WORD    pointer to pattern string
  5394.  04h    WORD    enumerate type
  5395.         0064h organization
  5396.         00C8h group
  5397.         012Ch item
  5398.  06h    WORD    enumerate class
  5399.         0000h unspecified (return all matching items)
  5400.         0001h user names
  5401.         0002h service names
  5402.         0003h list names
  5403.         0004h nicknames
  5404.  08h    WORD    pointer to category criteria block (see below) or 0
  5405.  0Ah    WORD    pointer to array of 64-byte returned names
  5406.  0Ch    WORD    number of names returned
  5407.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  5408.           call)
  5409.  
  5410. Format of category criteria block:
  5411. Offset    Size    Description
  5412.  00h    WORD    exclude flag
  5413.         0000h return only items with the specified categories
  5414.         0001h return all items except those with the given categories
  5415.  02h    WORD    number of categories
  5416.  04h    WORD    category 1 value
  5417.  06h    WORD    category 2 value
  5418.         ...
  5419.  
  5420. Values for common service categories:
  5421.  0002h file service
  5422.  0003h print service
  5423.  0004h mail service
  5424.  0005h StreetTalk
  5425.  0006h time service
  5426.  0008h semaphore service
  5427.  0009h 3270/SNA service
  5428.  000Ah asynchronous terminal emulation service
  5429.  000Ch NETBIOS service
  5430.  000Dh PC-based service
  5431. ----------610008-----------------------------
  5432. INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM OFFSET
  5433.     AX = 0008h
  5434.     BX = X start of zoom offset
  5435.     CX = Y start of zoom offset
  5436. Notes:    specifies the first byte of video memory to appear in the zoom window
  5437.     INT 61h is the default interrupt; the actual interrupt number can be
  5438.       obtained by calling INT 16/AH=FFh
  5439. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0006h"OPTIMA"
  5440. ----------610008BX0002-----------------------
  5441. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  5442.     AX = 0008h
  5443.     BX = 0002h
  5444.     CX = flags
  5445.         bit 0: message will remain on screen until user presses ^X
  5446.         bit 1: ring bell after displaying message
  5447.         bit 2: blink
  5448.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  5449. Return: AX = status
  5450.         0000h successful
  5451.         000Bh message display function currently busy
  5452.         000Ch message queue full
  5453. Note:    queues up to three messages to be displayed on the bottom line
  5454. ----------610008BX0003-----------------------
  5455. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  5456.     AX = 0008h
  5457.     BX = 0003h
  5458.     DS:DX -> request block
  5459. Return: AX = status
  5460.         0000h successful
  5461.         0001h network software not installed or incompatible
  5462. Notes:    message handler should not call BIOS or DOS functions, and should
  5463.       either call next handler or simply return
  5464.     to stop intercepting messages, set prev and next request blocks to
  5465.       point at each other
  5466.  
  5467. Format of request block:
  5468. Offset    Size    Description
  5469.  00h    DWORD    pointer to user-written message handler
  5470.  04h    DWORD    pointer to next request block (filled in by VINES)
  5471.  08h    DWORD    pointer to previous request block (filled in by VINES)
  5472.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see below)
  5473.  
  5474. Format of message storage area:
  5475. Offset    Size    Description
  5476.  00h 16 BYTEs    IPC port of message sender (see AX=0001h#"Sosock")
  5477.  10h    BYTE    message flags
  5478.  11h    WORD    reserved
  5479.  13h    BYTE    length of message
  5480.  14h 80 BYTEs    message text
  5481. ----------61000A-----------------------------
  5482. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  5483.     AX = 000Ah
  5484. Notes:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  5485.       which is loaded second.  The first interface loaded will use AX=0002h
  5486. SeeAlso: INT 61/AX=0002h
  5487. ----------6101-------------------------------
  5488. INT 61 - Banyan VINES - CHECK SERVICE
  5489.     AH = 01h
  5490.     AL = service ID
  5491.         01h communications
  5492.         02h primary 3270 emulation
  5493.         03h async terminal emulation
  5494.         04h file deflection
  5495.         07h StreetTalk
  5496.         08h environment
  5497.         0Ah secondary 3270 emulation
  5498.         0Bh semaphore service
  5499.         0Ch 3270 emulation active status
  5500.         0Dh 3270 keyboard interrupt simulator
  5501. Return: AX = status
  5502.         0000h installed
  5503.         0001h not installed
  5504.         0002h invalid ID
  5505. ----------6102-------------------------------
  5506. INT 61 - Banyan VINES - GET REVISION NUMBER
  5507.     AH = 02h
  5508.     DS:DX -> 2-byte buffer for result
  5509. Return: AX = 0000h installed
  5510.         DS:DX buffer contains revision number as
  5511.         10000d * major_ver + 100d * minor_ver + patch_revision
  5512. ----------62---------------------------------
  5513. INT 62 - reserved for user interrupt
  5514. ----------62---------------------------------
  5515. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  5516. Notes:    this vector stores the third four bytes of the parameter table for
  5517.       hard disk 0
  5518. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  5519. ----------62---------------------------------
  5520. INT 62 - HP 95LX - USED BY CALCULATOR
  5521. SeeAlso: INT 60"HP 95LX"
  5522. ----------62---------------------------------
  5523. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
  5524.     AH = function (00h to 07h)
  5525.     CX = FFFEh
  5526.     DX = FFFFh
  5527.     ???
  5528. Return: ???
  5529. Note:    the installation check consists of testing for the string "DBLIBRARY"
  5530.       2 bytes past the interrupt handler
  5531. SeeAlso: AH=08h"SQL"
  5532. ----------6201-------------------------------
  5533. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  5534.     AH = 01h
  5535. Note:    Cswitch is a set of multitasking functions by Herb Rose
  5536. SeeAlso: AH=05h,AH=06h
  5537. ----------6202-------------------------------
  5538. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  5539.     AH = 02h
  5540.     DX = semaphore number (0-63)
  5541. Return: AX = FFFFh bad semaphore number
  5542.          else  success
  5543. SeeAlso: AH=03h,AH=04h
  5544. ----------6203-------------------------------
  5545. INT 62 - Cswitch - CHECK SEMAPHORE
  5546.     AH = 03h
  5547.     DX = semaphore number (0-63)
  5548. Return: AX = FFFFh not owned
  5549.          else  owned
  5550. SeeAlso: AH=02h,AH=04h
  5551. ----------6204-------------------------------
  5552. INT 62 - Cswitch - TRIGGER SEMAPHORE
  5553.     AH = 04h
  5554.     DX = semaphore number (0-63)
  5555. Return: AX = FFFFh bad semaphore number
  5556.          else  success
  5557. SeeAlso: AH=02h,AH=03h
  5558. ----------6205-------------------------------
  5559. INT 62 - Cswitch - SLEEP
  5560.     AH = 05h
  5561.     BX = seconds to sleep
  5562. SeeAlso: AH=01h,AH=06h,AH=08h"Cswitch"
  5563. ----------6206-------------------------------
  5564. INT 62 - Cswitch - SUSPEND
  5565.     AH = 06h
  5566. SeeAlso: AH=05h,AH=08h"Cswitch"
  5567. ----------6207-------------------------------
  5568. INT 62 - Cswitch - SPAWN
  5569.     AH = 07h
  5570.     ES:BX -> function address to start executing at
  5571.     CX = priority (1-10)
  5572. Return: AX = FFFDh  no free memory control blocks
  5573.        = FFFEh  no free task control blocks
  5574.        = FFFFh  not enough memory to create new task stack
  5575.        = >0        the tcb number of the new task, indicating no error
  5576. SeeAlso: AH=0Fh,AH=10h
  5577. ----------6208-------------------------------
  5578. INT 62 - Cswitch - WAKE UP TASK
  5579.     AH = 08h
  5580.     BX = tcb identifier
  5581. SeeAlso: AH=05h,AH=06h
  5582. ----------6208--CXFFFE-----------------------
  5583. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
  5584.     AH = 08h
  5585.     CX = FFFEh
  5586.     DX = FFFFh
  5587. Return: AX = PSP address of resident DBLIBRARY
  5588. Note:    this call does not free the memory allocated to the TSR; the calling
  5589.       code must do the deallocation.
  5590. SeeAlso: INT 62"DBLIBRARY"
  5591. ----------6209-------------------------------
  5592. INT 62 - Cswitch - SET PRIORITY
  5593.     AH = 09h
  5594.     BX = new base priority (1-10)
  5595. Note:    the lower the priority is numerically, the more often the task will run
  5596. ----------620A-------------------------------
  5597. INT 62 - Cswitch - TEST MESSAGE QUEUE
  5598.     AH = 0Ah
  5599.     DX = queue number (0-63)
  5600. Return: AX = FFFFh bad queue number
  5601.        = 0000h nothing on queue
  5602.          else  number of bytes in first message in queue
  5603. SeeAlso: AH=0Bh,AH=0Ch
  5604. ----------620B-------------------------------
  5605. INT 62 - Cswitch - SEND MESSAGE
  5606.     AH = 0Bh
  5607.     CX = number of bytes to write
  5608.     DS:SI -> buffer
  5609.     DX = queue number (0-63)
  5610. Return: AX = FFFEh triggered by something arriving, redo the call
  5611.        = FFFFh bad queue number
  5612.        = 0000h no message was on queue
  5613.          else  number of bytes in message
  5614. SeeAlso: AH=0Ah,AH=0Ch
  5615. ----------620C-------------------------------
  5616. INT 62 - Cswitch - READ MESSAGE
  5617.     AH = 0Ch
  5618.     CX = number of bytes to read
  5619.     DS:SI -> buffer
  5620.     DX = queue number (0-63)
  5621. Return: AX = FFFFh bad queue number
  5622.          else  number of bytes transferred
  5623. SeeAlso: AH=0Ah,AH=0Bh
  5624. ----------620D-------------------------------
  5625. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  5626.     AH = 0Dh
  5627. SeeAlso: AH=0Eh
  5628. ----------620E-------------------------------
  5629. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  5630.     AH = 0Eh
  5631. SeeAlso: AH=0Dh
  5632. ----------620F-------------------------------
  5633. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  5634.     AH = 0Fh
  5635.     ES:BX -> command line
  5636.     CX = priority (1-10)
  5637.     DX = background flag
  5638.        = != 0000h  allows loading to EMS
  5639. Return: AX = 0000h task loader queue is full
  5640.        = 0001h  no error
  5641. SeeAlso: AH=07h,AH=10h,AH=13h
  5642. ----------6210-------------------------------
  5643. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  5644.     AH = 10h
  5645. SeeAlso: AH=07h,AH=0Fh
  5646. ----------6211-------------------------------
  5647. INT 62 - Cswitch - GET TCB INFORMATION
  5648.     AH = 11h
  5649.     ES:BX -> a pointer which will be set to the tcb address
  5650. Return: AX = tcb indentifier
  5651. SeeAlso: AH=12h
  5652. ----------6212-------------------------------
  5653. INT 62 - Cswitch - GET TCB ADDRESS
  5654.     AH = 12h
  5655.     ES:BX -> a pointer which will be set to the tcb table address
  5656. Return: AX = tcb indentifier
  5657. SeeAlso: AH=11h
  5658. ----------6213-------------------------------
  5659. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  5660.     AH = 13h
  5661. Return: AX = FFFCh no Memory Control Blocks available
  5662.        = FFFDh no TCBs available
  5663.        = FFFEh insufficient memory
  5664.        = FFFFh cannot open file
  5665.        = 0000h load in progress (not done yet)
  5666.          else  tcb indentifier
  5667. SeeAlso: AH=0Fh
  5668. ----------6247-------------------------------
  5669. INT 62 - PC Tools 7 COMMUTE - ???
  5670.     AH = 47h
  5671.     AL = subfunction (00h-31h)
  5672.     ???
  5673.     CF set
  5674. Return: ???
  5675. ----------6248-------------------------------
  5676. INT 62 - PC Tools 7 COMMUTE - ???
  5677.     AH = 48h
  5678.     AL = ???
  5679.     ???
  5680.     CF set
  5681. Return: ???
  5682. ----------6249-------------------------------
  5683. INT 62 - PC Tools 7 COMMUTE - ???
  5684.     AH = 49h
  5685.     ???
  5686.     CF set
  5687. Return: ???
  5688. Note:    may be the same as AH=4Ch
  5689. ----------624A-------------------------------
  5690. INT 62 - PC Tools 7 COMMUTE - ???
  5691.     AH = 4Ah
  5692.     AL = subfunction (00h-46h)
  5693.     ???
  5694.     CF set
  5695. Return: ???
  5696. ----------624B--BX1234-----------------------
  5697. INT 62 - PC Tools 7 COMMUTE - ???
  5698.     AH = 4Bh
  5699.     BX = 1234h
  5700.     CX = 1234h
  5701.     ES = ???
  5702.     CF set
  5703. Return: ???
  5704. ----------624C-------------------------------
  5705. INT 62 - PC Tools 7 COMMUTE - ???
  5706.     AH = 4Ch
  5707.     BL = subfunction
  5708.         00h ???
  5709.         02h ???
  5710. Return: CF clear if successful
  5711.     CF set on error
  5712. ----------626262-----------------------------
  5713. INT 62 - PC Tools 7 COMMUTE - INSTALLATION CHECK
  5714.     AX = 6262h
  5715.     CF set
  5716. Return: AX = 0000h
  5717.     BX = segment of resident code's PSP
  5718. ----------63---------------------------------
  5719. INT 63 - reserved for user interrupt
  5720. ----------63---------------------------------
  5721. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  5722. Notes:    this vector stores the last four bytes of the parameter table for
  5723.       hard disk 0
  5724. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  5725. ----------63---------------------------------
  5726. INT 63 - Oracle SQL Protected Mode Executive - ???
  5727. ----------63---------------------------------
  5728. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  5729.    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if INT 13
  5730.    has been moved there) and places the old value here
  5731. ----------63---------------------------------
  5732. INT 63 - Kofax KF9X00 image manipulation card interface
  5733. ----------64---------------------------------
  5734. INT 64 - reserved for user interrupt
  5735. ----------64---------------------------------
  5736. INT 64 - Adaptec controllers - DRIVE 1 DATA
  5737. Notes:    this vector stores the first four bytes of the parameter table for
  5738.       hard disk 1
  5739.     these vectors are used by the following Adaptec controllers:
  5740.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  5741.     these vectors are NOT used by the following Adaptec controllers:
  5742.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  5743. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  5744. ----------64---------------------------------
  5745. INT 64 - Oracle SQL Protected Mode Executive - ???
  5746. ----------64---------------------------------
  5747. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  5748. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  5749.       versions do not use this interrupt for IPX/SPX access, instead
  5750.       getting an entry point from INT 2F/AX=7A00h
  5751. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  5752. ----------64---------------------------------
  5753. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5754. SeeAlso: INT 65"DG10",INT 66"DG10"
  5755. ----------64---------------------------------
  5756. INT 64 - Extended Batch Language v3.14+
  5757.     AH = function
  5758.         00h to 5Fh chained to previous handler
  5759.         60h to 6Ch reserved, return immediately
  5760.         80h to FFh chained to previous handler
  5761.         6Dh (v4.01+) insert tone in queue
  5762.         AL = ???
  5763.         CX = frequency in Hertz
  5764.         DL = duration in clock ticks
  5765.         Return: AL = 00h if note stored
  5766.                = 01h if no room to store
  5767.         6Eh clear ??? counter/flag
  5768.         6Fh return counter/flag that AH=6Eh clears
  5769.         70h ???
  5770.         AL = ???
  5771.         71h ???
  5772.         AL = ???
  5773.         72h ???
  5774.         73h insert byte at end of keyboard buffer
  5775.         AL = byte to insert
  5776.         Return: AL = 00h if byte inserted
  5777.                = 01h if no room to store
  5778.         74h insert byte at front of keyboard buffer
  5779.         AL = byte to insert
  5780.         Return: AL = 00h if byte inserted
  5781.                = 01h if no room to store
  5782.         75h ???
  5783.         76h get keyboard "stack" status
  5784.         AL = 'K' if kbd read will read physical keyboard
  5785.              'S' if it will read EBL internal keyboard buffer
  5786.         AH = ???
  5787.         77h clear internal keyboard buffer
  5788.         78h ???
  5789.         AL = ???
  5790.         79h ???
  5791.         7Ah ???
  5792.         AL = ???
  5793.         7Bh ???
  5794.         AL = ???
  5795.         7Ch ???
  5796.         AL = ???
  5797.         7Dh ???
  5798.         AL = ???
  5799.         7Eh clear buffer for ???
  5800.         7Fh installation check
  5801.         Return: CX = version in BCD
  5802.             DI = segment of ???
  5803.             BX = segment of next program's PSP???
  5804. Notes:    Extended Batch Language is a batch-file enhancer by Seaware
  5805.     the chaining does not check whether the interrupt had been hooked
  5806.       before, so if you try to chain when the previous vector was 
  5807.       0000h:0000h, you'll be in trouble
  5808.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  5809.       floating-point and extended function packages
  5810. ----------64---------------------------------
  5811. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5812. Note:   This vector is overwritten by Pdisk to install custom harddrive types.
  5813.           It can either destroy 4 vectors and take no memory or TSR and take
  5814.           up some memory.
  5815. SeeAlso: INT 65"Pdisk"
  5816. ----------65---------------------------------
  5817. INT 65 - reserved for user interrupt
  5818. ----------65---------------------------------
  5819. INT 65 - Adaptec controllers - DRIVE 1 DATA
  5820. Note:    this vector stores the second four bytes of the parameter table for
  5821.       hard disk 1
  5822. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  5823. ----------65---------------------------------
  5824. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5825. SeeAlso: INT 64"DG10",INT 66"DG10"
  5826. ----------65---------------------------------
  5827. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  5828. ----------65---------------------------------
  5829. INT 65 - SD.COM v6.2
  5830.    The unregistered version of SD62.COM uses the low byte of this vector to
  5831.    count the number of invocations, displaying a registration reminder each
  5832.    time after the 20th use.
  5833. ----------65---------------------------------
  5834. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5835. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  5836. ----------65---------------------------------
  5837. INT 65 - Ad Lib SOUND.COM - INTERFACE
  5838.     SI = function number (see separate entries for details on several)
  5839.        = 0000h Init
  5840.        = 0002h RelTimeStart
  5841.        = 0003h SetState
  5842.        = 0004h GetState
  5843.        = 0005h Flush
  5844.        = 0006h SetMode
  5845.        = 0007h GetMode
  5846.        = 0008h SetRelVolume
  5847.        = 0009h SetTempo
  5848.        = 000Ah SetTranspose
  5849.        = 000Bh GetTranspose
  5850.        = 000Ch SetActVoice
  5851.        = 000Dh GetActVoice
  5852.        = 000Eh PlayNoteDel
  5853.        = 000Fh PlayNote
  5854.        = 0010h SetTimbre
  5855.        = 0011h SetPitch
  5856.        = 0012h SetTickBeat
  5857.        = 0013h NoteOn
  5858.        = 0014h NoteOff
  5859.        = 0015h Timbre
  5860.        = 0016h SetPitchBend
  5861.        = 0017h WaveForm
  5862.     ES:BX -> arguments
  5863. Note:    the installation check consists of checking for the signature block
  5864.       immediately preceding the interrupt handler (see below)
  5865.  
  5866. Format of signature block:
  5867. Offset    Size    Description
  5868.  00h    WORD    version number
  5869.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  5870.  15h    BYTE    01h
  5871.  16h    BYTE    01h
  5872.  17h    BYTE    00h
  5873. ----------65----SI0000-----------------------
  5874. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  5875.     SI = 0000h
  5876. ----------65----SI0003-----------------------
  5877. INT 65 - Ad Lib SOUND.COM - SET STATE
  5878.     SI = 0003h
  5879.     ES:BX -> WORD state = 0000h disabled 
  5880.                 = 0001h enabled
  5881. SeeAlso: SI=0004h
  5882. ----------65----SI0004-----------------------
  5883. INT 65 - Ad Lib SOUND.COM - GET STATE
  5884.     SI = 0004h
  5885. Return: AX = 0000h all done playing sounds
  5886.        = else  still playing sounds
  5887. SeeAlso: SI=0003h
  5888. ----------65----SI0006-----------------------
  5889. INT 65 - Ad Lib SOUND.COM - SET MODE
  5890.     SI = 0006h
  5891.     ES:BX -> WORD mode = 0000h melodic
  5892.                = 0001h percussive
  5893. SeeAlso: SI=0007h
  5894. ----------65----SI0007-----------------------
  5895. INT 65 - Ad Lib SOUND.COM - GET MODE
  5896.     SI = 0007h
  5897. Return: AX = 0000h melodic
  5898.        = 0001h percussive
  5899. SeeAlso: SI=0006h
  5900. ----------65----SI000C-----------------------
  5901. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  5902.     SI = 000Ch
  5903.     ES:BX -> WORD voice = 0000h to 0008h
  5904. SeeAlso: SI=000Dh
  5905. ----------65----SI000D-----------------------
  5906. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  5907.     SI = 000Dh
  5908. Return: AX = voice (0000h to 0008h)
  5909. SeeAlso: SI=000Ch
  5910. ----------66---------------------------------
  5911. INT 66 - reserved for user interrupt
  5912. ----------66---------------------------------
  5913. INT 66 - Adaptec controllers - DRIVE 1 DATA
  5914. Note:    this vector stores the third four bytes of the parameter table for
  5915.       hard disk 1
  5916. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  5917. ----------66---------------------------------
  5918. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5919. SeeAlso: INT 64"DG10"
  5920. ----------66---------------------------------
  5921. INT 66 - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  5922. Notes:    hooked but not used (IRET) by both redirector and server; called from
  5923.       server's INT 28 handler
  5924.     TurboNET is a NetBIOS-based file redirector and server
  5925. SeeAlso: INT 2F/AX=8100h
  5926. ----------66---------------------------------
  5927. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5928. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  5929. ----------66---------------------------------
  5930. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  5931. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  5932.       which will expire and call INT 66.  This timer can be used to
  5933.       calculate elapsed execution time etc.
  5934. ----------66FFFBBXFFFB-----------------------
  5935. INT 66 - MicroHelp Stay-Res Plus - ???
  5936.     AX = FFFBh
  5937.     BX = FFFBh
  5938.     ???
  5939. Return: ???
  5940. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  5941. ----------66FFFEBXFFFE-----------------------
  5942. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  5943.     AX = FFFEh
  5944.     BX = FFFEh
  5945. Return: only if unsuccessful
  5946. Notes:    installation check is for the interrupt handler to begin with the bytes
  5947.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  5948.       appear at offset 0005h (older versions) or the offset returned by
  5949.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  5950.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  5951.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  5952. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  5953. ----------66FFFFBXFFF0-----------------------
  5954. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  5955.     AX = FFFFh
  5956.     BX = FFF0h
  5957. Return: DI = offset of program name in interrupt handler segment
  5958. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  5959. ----------660688-----------------------------
  5960. INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
  5961.     AX = 0688h
  5962.     ???
  5963. Return: ???
  5964. SeeAlso: AX=0689h
  5965. ----------660689-----------------------------
  5966. INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
  5967.     AX = 0689h
  5968.     ???
  5969. Return: ???
  5970. SeeAlso: AX=0688h
  5971. ----------663345-----------------------------
  5972. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  5973.     AX = 3345h
  5974. Return: AX = FFFFh error removing TSR
  5975. Note:    the installation check consists of checking for the signature
  5976.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  5977. SeeAlso: INT 2F/AH=2Ah,INT 2F/AX=CB00h
  5978. ----------67---------------------------------
  5979. INT 67 - Adaptec controllers - DRIVE 1 DATA
  5980. Note:    this vector stores the last four bytes of the parameter table for
  5981.       hard disk 1
  5982. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  5983. ----------67---------------------------------
  5984. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5985. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  5986. ----------67---------------------------------
  5987. INT 67 - Sangoma CCPOP 3270 resident module
  5988. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  5989. ----------67---------------------------------
  5990. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  5991. Notes:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  5992.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  5993.       the signature value 434Ch:4F4Bh ('CLOK')
  5994.     CUCKOO is a resident on-screen clock with optional hourly chime or
  5995.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  5996. ----------6700-------------------------------
  5997. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  5998.     AH = 00h
  5999.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6000. Return: AL = status
  6001.         00h successful
  6002.         01h invalid function
  6003.         02h semaphore already locked
  6004.         03h unable to lock semaphore
  6005.         04h semaphore space exhausted
  6006.     AH = semaphore owner if status=02h
  6007. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  6008. ----------6701-------------------------------
  6009. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  6010.     AH = 01h
  6011.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6012. Return: AL = status (see AH=00h)
  6013.     AH = semaphore owner if status=02h
  6014. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  6015. ----------6702-------------------------------
  6016. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  6017.     AH = 02h
  6018.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6019. Return: AL = status (see AH=00h)
  6020.     AH = semaphore owner if status=02h
  6021. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  6022. ----------673F--CX5145-----------------------
  6023. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  6024.     AH = 3Fh
  6025.     CX = 5145h ("QE")
  6026.     DX = 4D4Dh ("MM")
  6027. Return: AH = 00h if installed
  6028.         ES:DI -> QEMM API entry point
  6029. Notes:    if no other program has hooked INT 67, an alternate installation
  6030.       check is to test for the string
  6031.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  6032.       handler's segment; the word at offset 12h contains the offset in
  6033.       the handler's segment of the API entry point
  6034.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  6035.       the alternate QEMM installation check and entry point functions 00h,
  6036.       02h, and 03h; version 4D only provides the signature string if the
  6037.       commandline argument "DV" is provided
  6038.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  6039.       recognize the returned entry point as providing QEMM's capabilities
  6040.       because a) only functions 0Ch (different from QEMM 0Ch) and
  6041.               1000h-1009h are supported,
  6042.             b) status is returned as for EMS functions, not QEMM funcs
  6043.           c) the protected-mode entry point returned by function 1000h
  6044.               only supports functions    0Ch, 1004h, 1005h, and 100Ah
  6045.     the string check mentioned above is not supported by 386MAX
  6046. SeeAlso: AH=DDh,AX=5BF0h,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h"QEMM"
  6047. SeeAlso: INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  6048.  
  6049. Call QEMM entry point with:
  6050.     AH = 00h get QEMM state
  6051.         Return: CF clear
  6052.             AL = QEMM state
  6053.                 bit 0 set if QEMM turned OFF
  6054.                 bit 1 set if in "Auto" mode
  6055.     AH = 01h set QEMM state
  6056.         AL = new state
  6057.             bit 0 set: place QEMM in OFF state
  6058.         Return: CF clear if successful
  6059.             CF set on error
  6060.     AH = 02h get ???
  6061.         Return: CF clear
  6062.             AX = segment of ??? data structure
  6063.             Data Structure
  6064.             Offset    Size    Description
  6065.              00h    BYTE    ???
  6066.              01h    WORD    ???
  6067.                  ???
  6068.     AH = 03h get QEMM version
  6069.         Return: CF clear
  6070.             AX = BX = version in BCD
  6071.         Notes:    the official docs only state that the version is
  6072.               returned in BX
  6073.             MICEMM returns AX=0001h, BX unchanged
  6074.     AH = 04h set AUTO/ON mode???
  6075.         Return: CF clear if successful
  6076.                 DX = page number of a 4K page
  6077.             CF set if unable to allocate page
  6078.         Note:    QEMM mode unchanged if not AUTO/OFF
  6079.     AH = 05h set AUTO/OFF mode???
  6080.         DX = page number returned by function 04h
  6081.         Return: CF clear
  6082.         Note:    QEMM mode unchanged if not AUTO/ON
  6083.     AH = 06h set mapping context???
  6084.         DX = page table number???
  6085.         Return: CF clear
  6086.     AH = 07h get mapping context???
  6087.         Return: CF clear
  6088.             DX = page table number???
  6089.     AH = 08h ???
  6090.         DX = linear page number
  6091.         Return: CF clear
  6092.     AH = 09h get linear page number for page table entry
  6093.         CX = page table index
  6094.         Return: CF clear
  6095.             DX = linear page number
  6096.     AH = 0Ah set linear page number for page table entry
  6097.         CX = page table index
  6098.         DX = linear page number
  6099.         Return: CF clear
  6100.     AH = 0Bh map 4K pages???
  6101.         BX = number of pages???
  6102.         CX = first page number??? (must be 0100h to allocate HMA)
  6103.         DX = EMS handle???
  6104.         Return: AH = 00h
  6105.     AH = 0Ch get ???
  6106.         Return: CF clear
  6107.             BX = 0001h
  6108.             CX = ???
  6109.             DX = number of 4K pages free
  6110.     AH = 0Dh ???
  6111.         AL = zero/nonzero ???
  6112.         Return: CF clear
  6113.     AH = 0Eh set ??? callbacks
  6114.         DS:BX -> FAR routine for ???
  6115.         ES:DX -> FAR routine for ???
  6116.         Return: CF clear
  6117.         Note:    DS:BX callback should return BX=???; ES:DX is called
  6118.               with BX=???, and should set the ??? from which the
  6119.               other handler read the value of BX.  BH and BL
  6120.               appear to be separate values.
  6121.     AH = 0Fh unmap 4K pages???
  6122.         CX = first page number (must be 0100h to free HMA)
  6123.         DX = number of pages??? (must be 0010h to free HMA)
  6124.         Return: AL = 00h/01h if ???
  6125.     AX = 1000h get protected-mode interface
  6126.         DS:SI -> 16-byte buffer for two GDT entries
  6127.         ES:DI -> buffer for 4K page table
  6128.         Return: CF clear
  6129.             EAX = offset of protected-mode API entry point
  6130.             DS:SI buffer filled with two GDT descriptors
  6131.                 first is QEMM code segment, second is data???
  6132.             ES:DI buffer filled with 4K page table
  6133.             DI points to first unused page table entry
  6134.         SeeAlso: INT 67/AX=DE01h
  6135.     AX = 1001h get CPU debug registers
  6136.         ES:DI -> buffer for debug registers (8 DWORDs)
  6137.         Return: CF clear
  6138.             BL = ???
  6139.             ES:DI buffer filled
  6140.     AX = 1002h set CPU debug registers
  6141.         BL = ???
  6142.         ES:DI -> buffer containing debug registers (8 DWORDs)
  6143.         Return: CF clear
  6144.         Note:    identical to INT 67/AX=DE09h if BL=01h
  6145.     AX = 1003h get machine status word CR0
  6146.         Return: CF clear
  6147.             EAX = contents of CR0
  6148.         SeeAlso: INT 67/AX=DE07h
  6149.     AX = 1004h allocate a 4K page
  6150.         Return: CF clear if successful
  6151.                 EDX = linear address of allocated page
  6152.             CF set on error
  6153.         SeeAlso: INT 67/AX=DE04h
  6154.     AX = 1005h free 4K page
  6155.         EDX = linear address of page to free
  6156.         Return: CF clear
  6157.         SeeAlso: INT 67/AX=DE05h
  6158.     AX = 1006h NOP
  6159.         Return: CF set
  6160.     AX = 1007h get maximum physical memory address
  6161.         Return: CF clear
  6162.             EDX = physical address of highest 4K memory page
  6163.         SeeAlso: INT 67/AX=DE02h
  6164.     AX = 1008h get physical address of page in first megabyte
  6165.         CX = page number (linear address shifted right 12 bits)
  6166.         Return: CF clear
  6167.             EDX = linear address of page
  6168.         SeeAlso: function 1F00h
  6169.     AX = 1009h switch to protected mode
  6170.         ESI = linear address in first megabyte of system reg values
  6171.             (see INT 67/AX=DE0Ch)
  6172.         interrupts disabled
  6173.         Return: interrupts disabled
  6174.             GDTR, IDTR, LDTR, TR loaded
  6175.             SS:ESP must have at least 16 bytes space, and the
  6176.                 entry point is required to set up a new stack
  6177.                 before enabling interrupts
  6178.             EAX, ESI, DS, ES, FS, GS destroyed
  6179.     AX = 100Ah switch back to virtual-86 mode
  6180.         DS = selector for data segment from function 1000h
  6181.         SS:ESP in first megabyte of linear memory
  6182.         interrupts disabled
  6183.         STACK:    QWORD  return address from FAR call to 32-bit segment
  6184.             DWORD  EIP
  6185.             DWORD  CS
  6186.             DWORD  reserved for EFLAGS
  6187.             DWORD  ESP
  6188.             DWORD  SS
  6189.             DWORD  ES
  6190.             DWORD  DS
  6191.             DWORD  FS
  6192.             DWORD  GS
  6193.         will switch to virtual86 mode with interrupts disabled, all
  6194.           segment registers loaded, and EAX destroyed.
  6195.     AH = 11h get memory type map
  6196.         AL = zero/nonzero ???
  6197.         ES:DI -> 256-byte buffer for memory types
  6198.         Return: CF clear
  6199.             BL = ???
  6200.             ES:DI buffer filled
  6201.         Note:    each byte of the buffer corresponds to a 4K page, and
  6202.               contains the type of that page: 00h = mappable,
  6203.               02h = mapped ROM, 03h = high RAM, 04h = excluded,
  6204.               05h = video, 06h = ROM, 07h = adapter ROM,
  6205.               08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  6206.               0Bh = conventional
  6207.     AH = 12h get HIRAM chain
  6208.         Return: CF clear
  6209.             BX = segment of first MCB in high memory
  6210.                 0000h if no high memory
  6211.     AX = 1300h VIDRAMEGA???
  6212.         BL = 00h copy ???
  6213.              nonzero copy ??? (reverse)
  6214.         Return: CF clear
  6215.             AL = 00h if all pages clean
  6216.                = 01h if any page dirty
  6217.     AX = 1301h check if ???
  6218.         DX:DI = start address of range to check ???
  6219.         CX = length of range
  6220.         Return: CF clear
  6221.             CX = ??? (0000h or 1000h)
  6222.     AX = 1302h ???
  6223.         ???
  6224.         Return: CF clear
  6225.             ???
  6226.         Note:    disables certain interrupts at the two 8259 PICs during
  6227.               execution; also modifies CRT controller during
  6228.               execution under certain circumstances
  6229.     AX = 1303h ??? EMS allocation
  6230.         BX = number of pages of EMS to allocate
  6231.         ???
  6232.         Return: CF clear if successful
  6233.             CF set on error
  6234.             ???
  6235.     AX = 1304h EMS deallocation
  6236.         DX = EMS handle
  6237.         Return: CF clear
  6238.     AX = 1305h ???
  6239.         CX = ???
  6240.         Return: CF clear
  6241.         Note:    disables certain interrupts at the two 8259 PICs during
  6242.               execution (see AX=130Ch)
  6243.     AX = 1306h set critical section counter address???
  6244.         ES:BX -> WORD QEMM critical section counter??? or 0000h:0000h
  6245.         Return: CF clear
  6246.         Note:    also sets pointer in low-memory part of QEMM to current
  6247.               value of INT 15 if ES:BX not 0000h:0000h
  6248.     AX = 1307h ???
  6249.         ???
  6250.         Return: CF clear
  6251.         Note:    disables certain interrupts at the two 8259 PICs during
  6252.               execution (see AX=130Ch)
  6253.     AX = 1308h ???
  6254.         BL = ??? (zero/nonzero)
  6255.         Return: CF clear
  6256.     AX = 1309h Hercules mode-change support
  6257.         ES:BX -> new address for Hercules mode-change callback
  6258.         Return: CF clear
  6259.         Note:    the callback function is called whenever the CRTC mode
  6260.               register is written, with AL set to the value written
  6261.     AX = 130Ah virtualize EGA/VGA I/O ports 03C8h/03C9h???
  6262.         CX:DX -> buffer for storing CRTC register contents???
  6263.             or 0000h:0000h to disable
  6264.         Return: CF clear
  6265.     AX = 130Bh ???
  6266.         BL = ???
  6267.         Return: CF clear
  6268.             ???
  6269.     AX = 130Ch set interrupts to mask
  6270.         BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  6271.             AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  6272.         Return: CF clear
  6273.     AX = 130Dh ???
  6274.         ???
  6275.         Return: CF clear
  6276.         Note:    disables certain interrupts at the two 8259 PICs during
  6277.               execution (see AX=130Ch)
  6278.     AX = 130Eh ??? (modifies CRT controller setup)
  6279.         ???
  6280.         Return: CF clear
  6281.     AX = 130Fh reset ???
  6282.         Return: CF clear
  6283.     AX = 1310h ???
  6284.         ???
  6285.         Return: CF clear
  6286.         Note:    disables certain interrupts at the two 8259 PICs during
  6287.               execution (see AX=130Ch)
  6288.     AX = 1311h set ???
  6289.         BL = ???
  6290.         Return: CF clear
  6291.     AX = 1400h ???
  6292.         ES:DI -> ??? data structure (at least 24 bytes)
  6293.         BL = ???
  6294.         Return: AX = ???
  6295.         Data structure
  6296.         Offset    Size    Description
  6297.          00h      WORD    ???
  6298.          02h    DWORD    far pointer to ???
  6299.          06h    DWORD    far pointer to ??? pointer array (see below)
  6300.          0Ah    DWORD    far pointer to ???
  6301.          0Eh    DWORD    ???
  6302.          12h    WORD    segment of ???
  6303.          14h    DWORD    far pointer to ???
  6304.         Pointer array
  6305.         Offset    Size    Description
  6306.          00h    WORD    number of pointers to follow
  6307.          02h  N DWORDs    far pointers to ???
  6308.         Note: QEMM converts the pointers into linear addresses in place
  6309.     AX = 1401h ???
  6310.         Return: CF clear
  6311.             ???
  6312.     AX = 1402h ???
  6313.         BL = function
  6314.             00h NOP
  6315.             01h ???
  6316.             02h ???
  6317.             other ???
  6318.         ES:DI -> ???
  6319.         Return: CF clear
  6320.             ???
  6321.         Data structure
  6322.         Offset    Size    Description
  6323.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  6324.          02h    WORD    segment of ??? (word at X:0124h set to this)
  6325.          04h    WORD    number of paragraphs of ???
  6326.          06h  3 WORDs    ??? (copied to X:0000h)
  6327.          0Ch
  6328.     AX = 1403h add ??? to list and ??? (execute func 1406h)
  6329.         ES:DI -> ??? structure added to end of ??? list
  6330.             (at least 31 bytes, DWORD at offset 06h used for
  6331.              storing pointer to next struc, WORD at offset 00h
  6332.              seems to be a key or index)
  6333.         Return: CF clear
  6334.     AX = 1404h NOP
  6335.     AX = 1405h remove ??? from ??? list
  6336.         BX = key???
  6337.         Return: CF clear
  6338.     AX = 1406h ???
  6339.         ???
  6340.         Return: CF clear
  6341.             ???
  6342.     AX = 1407h ???
  6343.         ???
  6344.         Return: CF clear
  6345.             ???
  6346.     AX = 1408h ???
  6347.         ???
  6348.         Return: CF clear
  6349.             ???
  6350.     AX = 1409h ???
  6351.         ???
  6352.         Return: CF clear
  6353.             ???
  6354.     AX = 140Ah ???
  6355.         BX = ???
  6356.         Return: CF clear
  6357.             ???
  6358.     AX = 140Bh ???
  6359.         BX = ???
  6360.         Return: CF clear
  6361.             SI = ???
  6362.     AH = 15h ???
  6363.         ES:BX -> ??? or 0000h:0000h
  6364.         Return: CF clear
  6365.      ---QEMM v5.00+ ---
  6366.     AX = 1600h get memory access status
  6367.         ES:DI -> 256-byte buffer
  6368.         Return: ES:DI buffer filled
  6369.         Note:    each byte of the buffer indicates the status of a 4K
  6370.               page (bit 0 set if read, bit 1 set if written)
  6371.     AX = 1601h set memory access status
  6372.         ES:DI -> 256-byte buffer containing access statuses (see above)
  6373.     AH = 17h get memory usage statistics
  6374.         ES:DI -> 81-byte buffer for memory statistics (see below)
  6375.         Return: CF clear
  6376.      ---QEMM v5.11+ ---
  6377.     AH = 18h check whether conventional memory mapped into address range
  6378.         ES:BX = starting address
  6379.         CX = number of 4K pages
  6380.         Return: CF clear
  6381.             AL = 00h one or more pages is remapped
  6382.                  01h all pages in range are conventional memory
  6383.                      (physical address == virtual address)
  6384.     AH = 19h NOP
  6385.         Return: CF set
  6386.     AH = 1Ah I/O port access
  6387.         AL = subfunction
  6388.             00h get byte from I/O port
  6389.             Return: BL = port value
  6390.             01h send byte to I/O port
  6391.             BL = value to send
  6392.             02h send byte to I/O port, get byte from following port
  6393.             BH = value to send
  6394.             Return: BL = value read
  6395.             03h send bytes to two consecutive I/O ports
  6396.             BH = value for first I/O port (DX)
  6397.             BL = value for second I/O port (DX+1)
  6398.         DX = port number
  6399.         Return: CF clear
  6400.     AH = 1Bh MS Windows 3 support
  6401.         AL = subfunction
  6402.             00h get ???
  6403.             ES:DI -> buffer for ??? data structure
  6404.             Return: CF set on error
  6405.                 CF clear if successful
  6406.             Data structure:
  6407.             Offset    Size    Description
  6408.              00h    DWORD    pointer to ???
  6409.              04h    BYTE    ??? (v6.00 sets to 01h)
  6410.              05h    BYTE    ??? (v6.00 sets to 00h or 0Bh)
  6411.             SeeAlso: INT 21/AX=4402h"QEMM"
  6412.             01h ???
  6413.             Return: CF set on error
  6414.                 CF clear if successful
  6415.             02h ???
  6416.             Return: CF set on error
  6417.                 CF clear if successful
  6418.             03h MS Windows initializing
  6419.                 CX = segment from which Windows init broadcast made???
  6420.             DL = Windows startup flags???
  6421.             DI = Windows version number (major in upper byte)
  6422.             Return: ???
  6423.             SeeAlso: INT 2F/AX=1605h
  6424.             04h MS Windows terminating
  6425.             Return: CF clear
  6426.             05h determine whether program is driver???
  6427.             DS:DX -> ASCIZ filename
  6428.             Return: CF clear
  6429.                 AL = 01h if string ends in ".DRV"
  6430.                    = FFh if string ends in "GDI.EXE"
  6431.                    = 00h otherwise
  6432.             06h ???
  6433.             CX = length of data pointed at by DS:DX
  6434.             DS:DX -> ???
  6435.             Return: CF clear
  6436.             07h BUG: QEMM 6.00 will accept this and branch randomly
  6437.             else Return: CF set
  6438.     AH = 1Ch protected-mode hardware interrupt handlers ???
  6439.         AL = subfunction
  6440.             00h restore??? IRQ0-7 handlers
  6441.             01h set??? IRQ0-7 handlers
  6442.             ES:DI -> 8 DWORDs containing ???
  6443.             02h restore??? IRQ8-15 handlers
  6444.             03h set??? IRQ8-15 handlers
  6445.             ES:DI -> 8 DWORDs containing ???
  6446.         BUG: although the jump table only contains four entries,
  6447.             QEMM 6.00 will attempt to use it for any value of
  6448.             AL between 00h and 2Ah, thus branching unpredictably
  6449.             for AL=04h-2Ah
  6450.      ---QEMM v6.00+ ---
  6451.     AH = 1Dh Stealth interrupts
  6452.         AL = subfunction
  6453.             00h switch to pre-Stealth interrupt vector table
  6454.                 Note:    also switches VGA Save table pointer
  6455.                   (0040h:00A8h)    and overwrites the vectors
  6456.                   currently assigned for use by the two
  6457.                   interrupt controllers (see INT 67/AX=DE0Ah)
  6458.                   with the vectors for INT 08-0F and 70-77 (to
  6459.                   avoid crashing the system).
  6460.             01h restore user interrupt vector table
  6461.             Notes:    interrupts should be disabled around the
  6462.                   AX=1D00h and AX=1D01h calls because QEMM does
  6463.                   not modify the memory maps to map in ROM, so
  6464.                   an interrupt could be disastrous
  6465.                 clears any pending IRQ7 at end of function
  6466.             else
  6467.             Return: CF set
  6468.     AH = 1Eh Stealth information
  6469.         AL = subfunction
  6470.             00h get Stealth configuration
  6471.             Return: BL = flags
  6472.                     bit 0: conventional memory sorted
  6473.                     bit 1: conventional memory filled
  6474.                     bit 2: ???
  6475.                     bit 3: ???
  6476.                     bit 4: expanded memory is in use
  6477.                     bit 5: ???
  6478.                 BH = ??? (always 00h for v6.00)
  6479.                 CL = stealth type (00h none,46h Frame,4Dh Map)
  6480.                 CH = ??? (zero/nonzero important)
  6481.                 DX = ??? (always 0000h for v6.00)
  6482.                 SI = ??? (always 0000h for v6.00)
  6483.                 DI = ??? (always 0000h for v6.00)
  6484.             01h get number of Stealth'ed ROMs
  6485.             Return: CF clear
  6486.                 BX = number of Stealth'ed ROMs
  6487.             02h get Stealth'ed ROM info
  6488.                 ES:DI -> buffer for Stealth ROM info (see below)
  6489.             Return: CF clear
  6490.                 BX = number of Stealth'ed ROMs
  6491.                 ES:DI buffer filled
  6492.             else
  6493.             Return: CF set
  6494.     AH = 1Fh page table manipulation
  6495.         AL = subfunction
  6496.             00h get page table entry
  6497.             CX = page number
  6498.             Return: EDX = page table entry
  6499.                 CF clear
  6500.             01h set page table entry
  6501.             CX = page number
  6502.             EDX = page table entry
  6503.             Return: CF clear
  6504.             SeeAlso: function 1008h
  6505.             else
  6506.             Return: CF set
  6507.     AH = 20h asynchronous disk access support???
  6508.         AL = subfunction
  6509.             00h get ???
  6510.             Return: CF clear
  6511.                 BL = flags
  6512.                     bit 7: ??? (set if Stealth:F or :M active)
  6513.                     bit 0: ???
  6514.             01h set ???
  6515.             BL = ??? (bit 0 only)
  6516.             Return: CF clear
  6517.             else
  6518.             Return: CF set
  6519.     AH = 21h Stealth support
  6520.         AL = subfunction
  6521.             00h copy data from Stealthed address space
  6522.             DS:SI -> start address of hidden memory to copy
  6523.             ES:DI -> buffer for copied data
  6524.             ECX = number of bytes to copy
  6525.             Return: CF clear if successful
  6526.                 CF set on error (DS:SI < C000h:0000h or
  6527.                          DS:SI + ECX > 1M)
  6528.             else
  6529.             Return: CF set
  6530.     other
  6531.         Return: CF set
  6532.  
  6533. Format of QEMM 6.0 memory statistics:
  6534. Offset    Size    Description
  6535.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  6536.  01h    DWORD    initial conventional memory in bytes
  6537.  05h    DWORD    initial extended memory in bytes
  6538.  09h    DWORD    initial expanded memory in bytes
  6539.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  6540.  11h    DWORD    Unavailable conventional memory in bytes
  6541.  15h    DWORD    Unavailable extended memory in bytes
  6542.  19h    DWORD    Unavailable expanded memory in bytes
  6543.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  6544.         Add to offset 49h for Total unavailable top/shadow.
  6545.  21h    DWORD    QEMM code size in bytes
  6546.  25h    DWORD    QEMM data size in bytes
  6547.  29h    DWORD    bytes used for TASKS=
  6548.  2Dh    DWORD    DMA buffer size
  6549.  31h    DWORD    bytes used for MAPS=
  6550.  35h    DWORD    bytes of high RAM
  6551.  39h    DWORD    bytes used by mapped ROMs
  6552.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  6553.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  6554.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  6555.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  6556.         Add to offset 1Dh for Total unavailable top/shadow.
  6557.  4Dh    DWORD    conventional memory overhead in bytes
  6558.          (set to 0 by QEMM.COM prior to call)
  6559.  
  6560. Format of Stealth ROM info [array]:
  6561. Offset    Size    Description
  6562.  00h    WORD    starting segment of ROM
  6563.  02h    WORD    length of ROM in paragraphs
  6564. ----------6740-------------------------------
  6565. INT 67 - LIM EMS - GET MANAGER STATUS
  6566.     AH = 40h
  6567. Return: AH = status
  6568.         00h successful
  6569.         80h internal error
  6570.         81h hardware malfunction
  6571.         84h undefined function requested by application
  6572. Note:    this call can be used only after establishing that the EMS driver is in
  6573.       fact present
  6574. SeeAlso: AH=3Fh,AX=FFA5h
  6575. ----------6741-------------------------------
  6576. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  6577.     AH = 41h
  6578. Return: AH = 00h function successful
  6579.         BX = segment of page frame
  6580.     AH = error code (see AH=40h)
  6581. SeeAlso: AH=58h,AH=68h
  6582. ----------6742-------------------------------
  6583. INT 67 - LIM EMS - GET NUMBER OF PAGES
  6584.     AH = 42h
  6585. Return: AH = 00h function successful
  6586.         BX = number of unallocated pages
  6587.         DX = total number of pages
  6588.     AH = error code (see AH=40h)
  6589. SeeAlso: INT 2F/AX=2702h
  6590. ----------6743-------------------------------
  6591. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  6592.     AH = 43h
  6593.     BX = number of logical pages to allocate
  6594. Return: AH = status
  6595.         00h function successful
  6596.         DX = handle
  6597.         80h internal error
  6598.         81h hardware malfunction
  6599.         84h undefined function requested
  6600.         85h no more handles available
  6601.         87h more pages requested than physically exist
  6602.         88h more pages requested than currently available
  6603.         89h zero pages requested
  6604. SeeAlso: AH=45h
  6605. ----------6744-------------------------------
  6606. INT 67 - LIM EMS - MAP MEMORY
  6607.     AH = 44h
  6608.     AL = physical page number (0-3)
  6609.     BX = logical page number
  6610.     DX = handle
  6611. Return: AH = status
  6612.         00h function successful
  6613.         80h internal error
  6614.         81h hardware malfunction
  6615.         83h invalid handle
  6616.         84h undefined function requested
  6617.         8Ah invalid logical page number
  6618.         8Bh illegal physical-page number
  6619. SeeAlso: AH=69h
  6620. ----------6745-------------------------------
  6621. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  6622.     AH = 45h
  6623.     DX = EMM handle
  6624. Return: AH = status
  6625.         00h successful
  6626.         80h internal error
  6627.         81h hardware malfunction
  6628.         83h invalid handle
  6629.         84h undefined function requested
  6630.         86h error in save or restore of mapping context
  6631. SeeAlso: AH=43h
  6632. ----------6746-------------------------------
  6633. INT 67 - LIM EMS - GET EMM VERSION
  6634.     AH = 46h
  6635. Return: AH = status
  6636.         00h successful
  6637.         AL = EMM version number
  6638.         80h internal error
  6639.         81h hardware malfunction
  6640.         84h undefined function requested
  6641. ----------6747-------------------------------
  6642. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  6643.     AH = 47h
  6644.     DX = handle
  6645. Return: AH = status
  6646.         00h successful
  6647.         80h internal error
  6648.         81h hardware malfunction
  6649.         83h invalid handle
  6650.         84h undefined function requested
  6651.         8Ch page-mapping hardware state save area is full
  6652.         8Dh save of mapping context failed
  6653. SeeAlso: AH=48h
  6654. ----------6748-------------------------------
  6655. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  6656.     AH = 48h
  6657.     DX = handle
  6658. Return: AH = status
  6659.         00h successful
  6660.         80h internal error
  6661.         81h hardware malfunction
  6662.         83h invalid handle
  6663.         84h undefined function requested
  6664.         8Eh restore of mapping context failed
  6665. SeeAlso: AH=47h
  6666. ----------6749-------------------------------
  6667. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  6668.     AH = 49h
  6669. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  6670. ----------674A-------------------------------
  6671. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  6672.     AH = 4Ah
  6673. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  6674. ----------674B-------------------------------
  6675. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  6676.     AH = 4Bh
  6677. Return: AH = status
  6678.         00h successful
  6679.         BX = number of EMM handles
  6680.         80h internal error
  6681.         81h hardware malfunction
  6682.         83h invalid handle
  6683.         84h undefined function requested
  6684. ----------674C-------------------------------
  6685. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  6686.     AH = 4Ch
  6687.     DX = EMM handle
  6688. Return: AH = status
  6689.         00h successful
  6690.         BX = number of logical pages
  6691.         80h internal error
  6692.         81h hardware malfunction
  6693.         83h invalid handle
  6694.         84h undefined function requested
  6695. SeeAlso: AH=4Dh
  6696. ----------674D-------------------------------
  6697. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  6698.     AH = 4Dh
  6699.     ES:DI -> array to receive information
  6700. Return: AH = status
  6701.         00h successful
  6702.         BX = number of active EMM handles
  6703.         array filled with 2-word entries, consisting of a handle
  6704.           and the number of pages allocated to that handle
  6705.         80h internal error
  6706.         81h hardware malfunction
  6707.         84h undefined function requested
  6708. SeeAlso: AH=4Ch
  6709. ----------674E-------------------------------
  6710. INT 67 - LIM EMS - GET OR SET PAGE MAP
  6711.     AH = 4Eh
  6712.     AL = 00h if getting mapping registers
  6713.          01h if setting mapping registers
  6714.          02h if getting and setting mapping registers at once
  6715.          03h if getting size of page-mapping array
  6716.     DS:SI -> array holding information (AL=01/02)
  6717.     ES:DI -> array to receive information (AL=00/02)
  6718. Return: AH = status
  6719.         00h successful
  6720.         AL = bytes in page-mapping array (AL=03h only)
  6721.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  6722.         80h internal error
  6723.         81h hardware malfunction
  6724.         84h undefined function requested
  6725.         8Fh undefined subfunction parameter
  6726.         A3h contents of source array corrupted (EMS 4.0?)
  6727. Note:    this function was designed to be used by multitasking operating systems
  6728.       and should not ordinarily be used by appplication software.
  6729. SeeAlso: AH=4Fh
  6730. ----------674F-------------------------------
  6731. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  6732.     AH = 4Fh
  6733.     AL = subfunction
  6734.         00h get partial page map
  6735.            DS:SI -> structure containing list of segments whose mapping
  6736.             contexts are to be saved
  6737.            ES:DI -> array to receive page map
  6738.         01h set partial page map
  6739.            DS:SI -> structure containing saved partial page map
  6740.         02h get size of partial page map
  6741.            BX = number of mappable segments in the partial map to be saved
  6742. Return: AH = status
  6743.         00h successful
  6744.         80h internal error
  6745.         81h hardware malfunction
  6746.         84h undefined function requested
  6747.         8Bh one of specified segments is not mappable
  6748.         8Fh undefined subfunction parameter
  6749.         A3h contents of partial page map corrupted or count of mappable
  6750.         segments exceeds total number of mappable segments in system
  6751.     AL = size of partial page map for subfunction 02h
  6752. SeeAlso: AH=4Eh
  6753. ----------6750-------------------------------
  6754. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  6755.     AH = 50h
  6756.     AL = subfunction
  6757.         00h use physical page numbers
  6758.         01h use segment addresses
  6759.     DX = handle
  6760.     CX = number of entries in array
  6761.     DS:SI -> mapping array (see below)
  6762. Return: AH = status
  6763.         00h successful
  6764.         80h internal error
  6765.         81h hardware malfunction
  6766.         83h invalid handle
  6767.         84h undefined function requested
  6768.         8Ah one or more logical pages are invalid
  6769.         8Bh one or more physical pages are invalid
  6770.         8Fh invalid subfunction
  6771. SeeAlso: AH=40h
  6772.  
  6773. Format of mapping array entry:
  6774. Offset    Size    Description
  6775.  00h    WORD    logical page number or FFFFh to unmap physical page
  6776.  02h    WORD    physical page number or segment address
  6777. ----------6751-------------------------------
  6778. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  6779.     AH = 51h
  6780.     DX = handle
  6781.     BX = number of pages to be allocated to handle
  6782. Return: BX = actual number of pages allocated to handle
  6783.     AH = status
  6784.         00h successful
  6785.         80h internal error
  6786.         81h hardware malfunction
  6787.         83h invalid handle
  6788.         84h undefined function requested
  6789.         87h more pages requested than present in system
  6790.         88h more pages requested than currently available
  6791. ----------6752-------------------------------
  6792. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  6793.     AH = 52h
  6794.     AL = subfunction
  6795.         00h get handle attributes
  6796.         Return: AL = attribute
  6797.                 00h handle is volatile
  6798.                 01h handle is nonvolatile
  6799.         01h set handle attributes
  6800.         BL = new attribute (see returned AL)
  6801.         02h get attribute capability
  6802.         Return: AL = attribute capability
  6803.                 00h only volatile handles supported
  6804.                 01h both volatile and non-volatile supported
  6805.     DX = handle
  6806. Return:    AH = status
  6807.         00h successful
  6808.         80h internal error
  6809.         81h hardware malfunction
  6810.         83h invalid handle
  6811.         84h undefined function requested
  6812.         8Fh undefined subfunction
  6813.         90h undefined attribute type
  6814.         91h feature not supported
  6815. SeeAlso: AH=53h
  6816. ----------6753-------------------------------
  6817. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  6818.     AH = 53h
  6819.     AL = subfunction
  6820.         00h get handle name
  6821.            ES:DI -> 8-byte buffer for handle name
  6822.         01h set handle name
  6823.            DS:SI -> 8-byte handle name
  6824.     DX = handle
  6825. Return: AH = status
  6826.         00h successful
  6827.         80h internal error
  6828.         81h hardware malfunction
  6829.         83h invalid handle
  6830.         84h undefined function requested
  6831.         8Fh undefined subfunction
  6832.         A1h duplicate handle name
  6833. SeeAlso: AH=52h
  6834. ----------6754-------------------------------
  6835. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  6836.     AH = 54h
  6837.     AL = subfunction
  6838.         00h get handle directory
  6839.            ES:DI -> buffer for handle directory (see below)
  6840.         01h search for named handle
  6841.            DS:SI -> 8-byte name
  6842.         02h get total number of handles
  6843. Return: AL = number of entries in handle directory (subfunction 00h)
  6844.     DX = value of named handle (subfunction 01h)
  6845.     BX = total number of handles (subfunction 02h)
  6846.     AH = status
  6847.         00h successful
  6848.         80h internal error
  6849.         81h hardware malfunction
  6850.         84h undefined function requested
  6851.         8Fh undefined subfunction
  6852.         A0h no such handle name
  6853.         A1h a handle found had no name
  6854.  
  6855. Format of handle directory entry:
  6856. Offset    Size    Description
  6857.  00h    WORD    handle
  6858.  02h  8 BYTEs    handle's name
  6859. ----------6755-------------------------------
  6860. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  6861.     AH = 55h
  6862.     AL = subfunction
  6863.         00h physical page numbers provided by caller
  6864.         01h segment addresses provided by caller
  6865.     DX = handle
  6866.     DS:SI -> structure containing map and jump address
  6867. Return: (at target address unless error)
  6868.     AH = status
  6869.         00h successful
  6870.         80h internal error
  6871.         81h hardware failure
  6872.         83h invalid handle
  6873.         84h undefined function requested
  6874.         8Ah invalid logical page number encountered
  6875.         8Bh invalid physical page number encountered
  6876.         8Fh invalid subfunction
  6877. SeeAlso: AH=56h
  6878. ----------6756-------------------------------
  6879. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  6880.     AH = 56h
  6881.     AL = subfunction
  6882.         00h physical page numbers provided by caller
  6883.         DX = handle
  6884.         DS:SI -> structure containing page map and call address
  6885.         01h segment addresses provided by caller
  6886.         DX = handle
  6887.         DS:SI -> structure containing page map and call address
  6888.         02h get page map stack space required
  6889.         Return: BX = stack space required
  6890. Return: (if successful, the target address is called.  Use a RETF to return and
  6891.      restore mapping context)
  6892.     AH = status (see AH=55h)
  6893. SeeAlso: AH=55h
  6894. ----------6757-------------------------------
  6895. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  6896.     AH = 57h
  6897.     AL = subfunction
  6898.         00h move memory region
  6899.         01h exchange memory region
  6900.     DS:SI -> structure describing source and destination (see below)
  6901. Return: AH = status
  6902.         00h successful
  6903.         80h internal error
  6904.         81h hardware failure
  6905.         83h invalid handle
  6906.         84h undefined function requested
  6907.         8Ah invalid logical page number encountered
  6908.         8Fh undefined subfunction
  6909.         92h successful, but a portion of the source region has been
  6910.         overwritten
  6911.         93h length of source or destination region exceeds length of region
  6912.         allocated to either source or destination handle
  6913.         94h conventional and expanded memory regions overlap
  6914.         95h offset within logical page exceeds size of logical page
  6915.         96h region length exceeds 1M
  6916.         97h source and destination EMS regions have same handle and overlap
  6917.         98h memory source or destination type undefined
  6918.         A2h attempted to wrap around 1M conventional address space
  6919. Note:    source and destination may overlap for a move, in which case the copy
  6920.       direction is chosen such that the destination receives an intact copy
  6921.       of the source region
  6922.  
  6923. Format of EMS copy data:
  6924. Offset    Size    Description
  6925.  00h    DWORD    region length in bytes
  6926.  04h    BYTE    source memory type
  6927.         00h conventional
  6928.         01h expanded
  6929.  05h    WORD    source handle (0000h if conventional memory)
  6930.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  6931.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  6932.  0Bh    BYTE    destination memory type
  6933.         00h conventional
  6934.         01h expanded
  6935.  0Ch    WORD    destination handle
  6936.  0Eh    WORD    destination initial offset
  6937.  10h    WORD    destination initial segment or page
  6938. ----------6758-------------------------------
  6939. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  6940.     AH = 58h
  6941.     AL = subfunction
  6942.         00h get mappable physical address array
  6943.         ES:DI -> buffer to be filled with array
  6944.         01h get number of entries in m.p.a. array
  6945. Return: CX = number of entries in array
  6946.     AH = status
  6947.         00h successful
  6948.         80h internal error
  6949.         81h hardware failure
  6950.         84h undefined function requested
  6951.         8Fh undefined subfunction
  6952. Note:    the returned array for subfunction 00h is filled in physical segment
  6953.       address order
  6954.  
  6955. Format of mappable physical address entry:
  6956. Offset    Size    Description
  6957.  00h    WORD    physical page segment
  6958.  02h    WORD    physical page number
  6959. ----------6759-------------------------------
  6960. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  6961.     AH = 59h
  6962.     AL = subfunction
  6963.         00h get hardware configuration array
  6964.         ES:DI -> buffer to be filled with array (see below)
  6965.         01h get unallocated raw page count
  6966.         Return: BX = unallocated raw pages
  6967.             DX = total raw pages
  6968. Return:    AH = status
  6969.         00h successful
  6970.         80h internal error
  6971.         81h hardware failure
  6972.         84h undefined function requested
  6973.         8Fh undefined subfunction
  6974.         A4h access denied by operating system
  6975. Note:    subfunction 00h is for use by operating systems only, and can be
  6976.       enabled or disabled at any time by the operating system
  6977.  
  6978. Format of hardware configuration array:
  6979. Offset    Size    Description
  6980.  00h    WORD    size of raw EMM pages in paragraphs
  6981.  02h    WORD    number of alternate register sets
  6982.  04h    WORD    size of mapping-context save area in bytes
  6983.  06h    WORD    number of register sets assignable to DMA
  6984.  08h    WORD    DMA operation type
  6985.         0000h DMA with alternate register sets
  6986.         0001h only one DMA register set
  6987. ----------675A-------------------------------
  6988. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  6989.     AH = 5Ah
  6990.     AL = subfunction
  6991.         00h allocate standard pages
  6992.         01h allocate raw pages
  6993.     BX = number of pages to allocate
  6994. Return: DX = handle
  6995.     AH = status
  6996.         00h successful
  6997.         80h internal error
  6998.         81h hardware failure
  6999.         84h undefined function requested
  7000.         85h no more handles available
  7001.         87h insufficient memory pages in system
  7002.         88h insufficient memory pages available
  7003.         8Fh undefined subfunction
  7004. ----------675B-------------------------------
  7005. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  7006.     AH = 5Bh
  7007.     AL = subfunction
  7008.         00h get alternate map register set
  7009.         Return: BL = current active alternate map register set number
  7010.             ES:DI -> map register context save area if BL=00h
  7011.         01h set alternate map register set
  7012.         BL = new alternate map register set number
  7013.         ES:DI -> map register context save area if BL=0
  7014.         02h get alternate map save array size
  7015.         Return: DX = array size in bytes
  7016.         03h allocate alternate map register set
  7017.         Return: BL = number of map register set; 00h = not supported
  7018.         04h deallocate alternate map register set
  7019.         BL = number of alternate map register set
  7020. Return: AH = status
  7021.         00h successful
  7022.         80h internal error
  7023.         81h hardware malfunction
  7024.         84h undefined function requested
  7025.         8Fh undefined subfunction
  7026.         9Ah specified alternate map register set not supported
  7027.         9Bh all alternate map register sets currently allocated
  7028.         9Ch alternate map register sets not supported
  7029.         9Dh undefined or unallocated alternate map register set
  7030.         A3h source array corrupted
  7031.         A4h operating system denied access
  7032. Note:    this function is for use by operating systems only, and can be
  7033.       enabled or disabled at any time by the operating system
  7034. ----------675B-------------------------------
  7035. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  7036.     AH = 5Bh
  7037.     AL = subfunction
  7038.         05h allocate DMA register set
  7039.         Return: BL = DMA register set number, 00h if not supported
  7040.         06h enable DMA on alternate map register set
  7041.            BL = DMA register set number
  7042.            DL = DMA channel number
  7043.         07h disable DMA on alternate map register set
  7044.            BL = DMA register set number
  7045.         08h deallocate DMA register set
  7046.            BL = DMA register set number
  7047. Return: AH = status
  7048.         00h successful
  7049.         80h internal error
  7050.         81h hardware malfunction
  7051.         84h undefined function requested
  7052.         8Fh undefined subfunction
  7053.         9Ah specified DMA register set not supported
  7054.         9Bh all DMA register sets currently allocated
  7055.         9Ch alternate DMA sets not supported
  7056.         9Dh undefined or unallocated DMA register set
  7057.         9Eh dedicated DMA channels not supported
  7058.         9Fh specified dedicated DMA channel not supported
  7059.         A3h source array corrupted
  7060.         A4h operating system denied access
  7061. Note:    this function is for use by operating systems only, and can be
  7062.       enabled or disabled at any time by the operating system
  7063. ----------675BE0-----------------------------
  7064. INT 67 - MICEMM v4D - GET LINEAR ADDRESS OF MEMORY
  7065.     AX = 5BE0h
  7066.     ES:BX -> memory for which to get linear address
  7067. Return: AH = 00h
  7068.     DX:CX = linear address of physical memory corresponding to ES:BX
  7069. SeeAlso: AX=5BF0h,AX=5BF1h
  7070. ----------675BF0-----------------------------
  7071. INT 67 - MICEMM v4D - INSTALLATION CHECK
  7072.     AX = 5BF0h
  7073. Return: AH = 00h if MICEMM present
  7074.         BX = code segment of driver
  7075. Note:    MICEMM is the Micronics Expanded Memory Manager
  7076. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  7077. ----------675BF1-----------------------------
  7078. INT 67 - MICEMM v4D - GET MEMORY TYPES
  7079.     AX = 5BF1h
  7080.     ES:BX -> 256-byte buffer for memory types
  7081. Return: AH = 00h
  7082.     ES:BX buffer filled
  7083. Note:    each byte in the buffer specifies the type of a 4K page of memory:
  7084.         00h unused
  7085.         02h DOS extension
  7086.         04h shadowed ROM
  7087.         08h mappable EMS
  7088.         10h page frame
  7089.         20h ROM
  7090.         40h reserved (video memory, etc)
  7091.         80h RAM
  7092. SeeAlso: AX=5BE0h,AX=5BF0h
  7093. ----------675C-------------------------------
  7094. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  7095.     AH = 5Ch
  7096. Return: AH = status
  7097.         00h successful
  7098.         80h internal error
  7099.         81h hardware malfunction
  7100.         84h undefined function requested
  7101. ----------675D-------------------------------
  7102. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  7103.     AH = 5Dh
  7104.     AL = subfunction
  7105.         00h enable OS Function Set
  7106.         01h disable OS Function Set
  7107.         02h return access key (resets memory manager, returns access key at
  7108.         next invocation)
  7109.     BX,CX = access key returned by first invocation
  7110. Return: BX,CX = access key, returned only on first invocation of function
  7111.     AH = status
  7112.         00h successful
  7113.         80h internal error
  7114.         81h hardware malfunction
  7115.         84h undefined function requested
  7116.         8Fh undefined subfunction
  7117.         A4h operating system denied access
  7118. ----------6760-------------------------------
  7119. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  7120.     AH = 60h
  7121.     ES:DI -> buffer
  7122. Return: AH = status
  7123.     AL = number of entries
  7124.     buffer at ES:DI filled
  7125. ----------6761-------------------------------
  7126. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  7127.     AH = 61h
  7128.     ???
  7129. Return: ???
  7130. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  7131.       ensuring that the cache accurately reflects what the processor would
  7132.       see without the cache.
  7133. ----------6768-------------------------------
  7134. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  7135.     AH = 68h
  7136.     ES:DI -> buffer
  7137. Return: AH = status
  7138.     AL = number of entries
  7139.     buffer at ES:DI filled
  7140. Note:    equivalent to LIM 4.0 function 58h
  7141. ----------6769-------------------------------
  7142. INT 67 - EEMS - MAP PAGE INTO FRAME
  7143.     AH = 69h
  7144.     AL = frame number
  7145.     BX = page number
  7146.     DX = handle
  7147. Return: AH = status
  7148. Note:    similar to EMS function 44h
  7149. SeeAlso: AH=44h,AH=50h,AH=6Ah
  7150. ----------676A-------------------------------
  7151. INT 67 - EEMS - PAGE MAPPING
  7152.     AH = 6Ah
  7153.     AL = subfunction
  7154.         00h save partial page map
  7155.         CH = first page frame
  7156.         CL = number of frames
  7157.         ES:DI -> buffer which is to be filled
  7158.         01h restore partial page map
  7159.         CH = first page frame
  7160.         CL = number of frames
  7161.         DI:SI -> previously saved page map
  7162.         02h save and restore partial page map
  7163.         CH = first page frame
  7164.         CL = number of frames
  7165.         ES:DI = buffer for current page map
  7166.         DI:SI = new page map
  7167.         03h get size of save array
  7168.         CH = first page frame
  7169.         CL = number of frames
  7170.         Return: AL = size of array in bytes
  7171.         04h switch to standard map register setting
  7172.         05h switch to alternate map register setting
  7173.         06h deallocate pages mapped to frames in conventional memory
  7174.         CH = first page frame
  7175.         CL = number of frames
  7176. Return: AH = status
  7177. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  7178.       specified
  7179. SeeAlso: AH=69h
  7180. ----------67DD-------------------------------
  7181. INT 67 - Quadtel QMAPS - API
  7182.     AH = DDh
  7183.     AL = function
  7184.     ???
  7185. Return: ???
  7186. Notes:    details are not yet available
  7187.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  7188.       supports this API
  7189. SeeAlso: AH=3Fh,AX=FFA5h
  7190. ----------67DE00-----------------------------
  7191. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  7192.     AX = DE00h
  7193. Return: AH = 00h    VCPI is present
  7194.         BH = major version number
  7195.         BL = minor version number
  7196.     AH nonzero  VCPI not present
  7197. ----------67DE01-----------------------------
  7198. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  7199.     AX = DE01h
  7200.     ES:DI -> 4K page table buffer
  7201.     DS:SI -> three descriptor table entries in GDT
  7202.         first becomes code segment descriptor, other two for use by
  7203.         main control program
  7204. Return: AH = 00h successful
  7205.         DI -> first unused page table entry in buffer
  7206.         EBX -> protected mode entry point in code segment
  7207.     AH = nonzero  failed
  7208. SeeAlso: INT 67/AH=3Fh
  7209. ----------67DE02-----------------------------
  7210. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  7211.     AX = DE02h
  7212. Return: AH = 00h  successful
  7213.         EDX = physical address of highest 4K memory page
  7214.     AH nonzero: failed
  7215. SeeAlso: AH=3Fh
  7216. ----------67DE03-----------------------------
  7217. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  7218.     AX = DE03h
  7219. Return: AH = 00h  successful
  7220.         EDX = number of free 4K pages
  7221.     AH nonzero: failed
  7222. Notes:    returns total number of pages available to ALL tasks in system
  7223.     also available in protected mode by calling the protected-mode VCPI
  7224.       entry point
  7225. SeeAlso: AX=DE04h
  7226. ----------67DE04-----------------------------
  7227. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  7228.     AX = DE04h
  7229. Return: AH = 00h successful
  7230.         EDX = physical address of allocated page
  7231.     AH nonzero: failed
  7232. Notes:    the client program is responsible for freeing all memory allocated
  7233.       with this call before terminating
  7234.     also available in protected mode by calling the protected-mode VCPI
  7235.       entry point
  7236. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  7237. ----------67DE05-----------------------------
  7238. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  7239.     AX = DE05h
  7240.     EDX = physical address of 4K page
  7241. Return: AH = 00h successful
  7242.     AH nonzero: failed
  7243. Note:    also available in protected mode by calling the protected-mode VCPI
  7244.       entry point
  7245. SeeAlso: AH=3Fh,AX=DE04h
  7246. ----------67DE06-----------------------------
  7247. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  7248.     AX = DE06h
  7249.     CX = page number (linear address shifted right 12 bits)
  7250. Return: AH = 00h successful
  7251.         EDX = physical address of page
  7252.     AH nonzero: invalid page number (AH = 8Bh recommended)
  7253. ----------67DE07-----------------------------
  7254. INT 67 - Virtual Control Program Interface - READ CR0
  7255.     AX = DE07h
  7256. Return: AH = 00h
  7257.     EBX = value of Control Register 0
  7258. SeeAlso: AH=3Fh,AX=DE07h
  7259. ----------67DE08-----------------------------
  7260. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  7261.     AX = DE08h
  7262.     ES:DI -> array of 8 DWORDs
  7263. Return: AH = 00h
  7264.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  7265. SeeAlso: AH=3Fh,AX=DE09h
  7266. ----------67DE09-----------------------------
  7267. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  7268.     AX = DE09h
  7269.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  7270. Return: AH = 00h
  7271. Note:    values for DR4 and DR5 ignored
  7272. SeeAlso: AH=3Fh,AX=DE08h
  7273. ----------67DE0A-----------------------------
  7274. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  7275.     AX = DE0Ah
  7276. Return: AH = 00h successful
  7277.         BX = first vector used by master 8259 (IRQ0)
  7278.         CX = first vector used by slave 8259 (IRQ8)
  7279.     AH nonzero: failed
  7280. Note:    CX is undefined in systems without a slave 8259
  7281. SeeAlso: AX=DE0Bh
  7282. ----------67DE0B-----------------------------
  7283. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  7284.     AX = DE0Bh
  7285.     BX = first vector used by master 8259
  7286.     CX = first vector used by slave 8259
  7287.     interrupts disabled
  7288. Return: AH = 00h successful
  7289.     AH nonzero: failed 
  7290. Notes:    This call merely informs the server that the client has changed the
  7291.       interrupt mappings.  The client may not change the mappings if they
  7292.       have already been changed by the server or another client, and is
  7293.       responsible for restoring the original mappings before terminating.
  7294. SeeAlso: AX=DE0Ah
  7295. ----------67DE0C-----------------------------
  7296. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  7297.     AX = DE0Ch
  7298.     ESI = linear address in first megabyte of values for system registers
  7299.     interrupts disabled
  7300. Return: interrupts disabled
  7301.     GDTR, IDTR, LDTR, TR loaded
  7302.     SS:ESP must have at least 16 bytes space, and the entry point is
  7303.         required to set up a new stack before enabling interrupts
  7304.     EAX, ESI, DS, ES, FS, GS destroyed
  7305. SeeAlso: AH=3Fh,INT 15/AH=89h
  7306.  
  7307. Note:    in protected mode, calling the protected-mode VCPI entry point with 
  7308.       AX = DE0Ch
  7309.       DS = segment selector from function DE01h
  7310.       SS:ESP in first megabyte of linear memory
  7311.       STACK:QWORD  return address from FAR call to 32-bit segment
  7312.         DWORD  EIP
  7313.         DWORD  CS
  7314.         DWORD  reserved for EFLAGS
  7315.         DWORD  ESP
  7316.         DWORD  SS
  7317.         DWORD  ES
  7318.         DWORD  DS
  7319.         DWORD  FS
  7320.         DWORD  GS
  7321.       and interrupts disabled, will switch to virtual86 mode with
  7322.       interrupts disabled, all segment registers loaded, and EAX destroyed.
  7323.  
  7324. Format of system register values for switch to protected mode:
  7325. Offset    Size    Description
  7326.  00h    DWORD    value for CR3
  7327.  04h    DWORD    linear address in first megabyte of value for GDTR
  7328.  08h    DWORD    linear address in first megabyte of value for IDTR
  7329.  0Ch    WORD    value for LDTR
  7330.  0Eh    WORD    value for TR
  7331.  10h    PWORD    CS:EIP of protected mode entry-point
  7332. ----------67FFA5-----------------------------
  7333. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  7334.     AX = FFA5h
  7335. Return: AX = 845Ah if loaded
  7336.         BX:CX -> API entry point
  7337. Notes:    this call is available even if EMM386 is not providing EMS
  7338.     if no other program has hooked INT 67, an alternate installation
  7339.       check is to search for the string
  7340.       "MICROSOFT EXPANDED MEMORY MANAGER 386" early in the INT 67
  7341.       handler's segment, usually at offset 14h
  7342. SeeAlso: AH=3Fh
  7343.  
  7344. Call API entry point with:
  7345.     AH = 00h get memory manager's status
  7346.         Return: AH = status
  7347.                 bit 0: not active (OFF)
  7348.             bit 1: in "Auto" mode
  7349.     AH = 01h set memory manager's state
  7350.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  7351.     AH = 02h Weitek coprocessor support
  7352.         AL = subfunction
  7353.         00h get Weitek support state
  7354.             Return: AL = status
  7355.                     bit 0: Weitek coprocessor is present
  7356.                 bit 1: Weitek support is enabled
  7357.         01h turn on Weitek support
  7358.         02h turn off Weitek support
  7359.      --- v4.20-4.41 only ---
  7360.     AH = 03h Windows support???
  7361.         AL = subfunction (00h, 01h)
  7362.     AH = 04h print copyright notice to standard output
  7363.          (using INT 21/AH=09h)
  7364.     AH = 05h print available report
  7365.          (the one shown when running EMM386 from the DOS prompt)
  7366. ---------------------------------------------
  7367.