home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR3 / INTER38B.ZIP / INTERRUP.H < prev    next >
Text File  |  1993-12-05  |  287KB  |  7,843 lines

  1. Interrupt List, part 8 of 10
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. --------D-30---------------------------------
  4. INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
  5.    the CALL 5 entry point does a FAR jump to here
  6. Note:    under DOS 2+, the instruction at PSP:0005 points two bytes too low in
  7.       memory
  8. SeeAlso: INT 21/AH=26h
  9. --------D-31---------------------------------
  10. INT 31 - overwritten by CP/M jump instruction in INT 30
  11. --------v-31---------------------------------
  12. INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
  13. Note:    if one of the Vacsina viruses is resident, the low byte of this
  14.       interrupt still contains the last byte of the INT 30 CP/M JMP
  15.       instruction, but the remaining three bytes are 7Fh 39h followed
  16.       by the Vacsina version number
  17. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
  18. --------E-310000-----------------------------
  19. INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
  20.     AX = 0000h
  21.     CX = number of descriptors to allocate
  22. Return: CF clear if successful
  23.         AX = base selector
  24.     CF set on error
  25.         AX = error code (DPMI 1.0+) (see below)
  26. Notes:    DPMI is the DOS Protected-Mode Interface
  27.     the base and limit of the returned descriptors will be 0, and the type
  28.       will be "data"
  29.     add the value returned by INT 31/AX=0003h to move to subsequent
  30.       descriptors if multiple descriptors were allocated
  31.     not supported by MS Windows 3.0 in Standard mode
  32. SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
  33.  
  34. Values for error code:
  35.  0000h-7FFFh DOS error passed through by DPMI
  36.  8001h    unsupported function
  37.  8002h    object in wrong state for function
  38.  8003h    system integrity would be endangered
  39.  8004h    deadlock detected
  40.  8005h    pending serialization request cancelled
  41.  8010h    out of DPMI internal resources
  42.  8011h    descriptor unavailable
  43.  8012h    linear memory unavailable
  44.  8013h    physical memory unavailable
  45.  8014h    backing store unavailable
  46.  8015h    callback unavailable
  47.  8016h    handle unavailable
  48.  8017h    maximum lock count exceeded
  49.  8018h    shared memory already serialized exclusively by another
  50.  8019h    shared memory already serialized shared by another client
  51.  8021h    invalid value for numeric or flag parameter
  52.  8022h    invalid segment selector
  53.  8023h    invalid handle
  54.  8024h    invalid callback
  55.  8025h    invalid linear address
  56.  8026h    request not supported by hardware
  57. --------E-310001-----------------------------
  58. INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
  59.     AX = 0001h
  60.     BX = selector to free
  61. Return: CF clear if successful
  62.     CF set on error
  63.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  64. Notes:    only one descriptor is freed per call
  65.     the program's initial CS, DS, and SS descriptors may be freed
  66.     (DPMI 1.0+) any segment registers containing the freed selector are
  67.       set to 0000h
  68.     not supported by MS Windows 3.0 in Standard mode
  69. SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
  70. --------E-310002-----------------------------
  71. INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
  72.     AX = 0002h
  73.     BX = real mode segment
  74. Return: CF clear if successful
  75.         AX = selector corresponding to real mode segment (64K limit)
  76.     CF set on error
  77.         AX = error code (DPMI 1.0+) (8011h) (see AX=0000h)
  78. Notes:    multiple calls for the same real mode segment return the same selector
  79.     the returned descriptor can never be modified or freed
  80.     not supported by MS Windows 3.0 in Standard mode
  81. --------E-310003-----------------------------
  82. INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
  83.     AX = 0003h
  84. Return: CF clear
  85.         AX = value to add to get next sequential selector
  86. Notes:    the increment will be a power of two
  87.     not supported by MS Windows 3.0 in Standard mode
  88. SeeAlso: AX=0000h
  89. --------E-310004-----------------------------
  90. INT 31 P - DPMI 0.9+ - LOCK SELECTOR
  91.     AX = 0004h
  92.     BX = selector to lock (prevent paging)
  93. Return: ???
  94. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  95.       specification, this function is called by MS Windows TASKMAN,
  96.       PROGMAN, and KERNEL
  97. SeeAlso: AX=0005h,AX=0600h
  98. --------E-310005-----------------------------
  99. INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
  100.     AX = 0005h
  101.     BX = selector to unlock (permit paging)
  102. Return: ???
  103. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  104.       specification, this function is called by MS Windows TASKMAN,
  105.       PROGMAN, and KERNEL
  106. SeeAlso: AX=0004h,AX=0601h
  107. --------E-310006-----------------------------
  108. INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
  109.     AX = 0006h
  110.     BX = selector
  111. Return: CF clear if successful
  112.         CX:DX = linear base address of segment
  113.     CF set on error
  114.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  115. Note:    not supported by MS Windows 3.0 in Standard mode
  116. SeeAlso: AX=0007h,INT 21/AX=3504h
  117. --------E-310007-----------------------------
  118. INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
  119.     AX = 0007h
  120.     BX = selector
  121.     CX:DX = linear base address
  122. Return: CF clear if successful
  123.     CF set on error
  124.         AX = error code (DPMI 1.0+) (8022h,8025h) (see AX=0000h)
  125. Notes:    only modify descriptors allocated with INT 31/AX=0000h
  126.     only the low 24 bits of the address will be used by 16-bit DPMI
  127.       implementations even on a 386 or higher
  128.     DPMI 1.0+ automatically reloads any segment registers containing the
  129.       selector being modified
  130.     not supported by MS Windows 3.0 in Standard mode
  131. SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
  132. SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
  133. --------E-310008-----------------------------
  134. INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
  135.     AX = 0008h
  136.     BX = selector
  137.     CX:DX = segment limit
  138. Return: CF clear if successful
  139.     CF set on error
  140.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  141. Notes:    CX must be zero for 16-bit DPMI implementations
  142.     limits greater than 1MB must be page aligned (low 12 bits set)
  143.     only modify descriptors allocated with INT 31/AX=0000h
  144.     DPMI 1.0+ automatically reloads any segment registers containing the
  145.       selector being modified
  146.     not supported by MS Windows 3.0 in Standard mode
  147. SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
  148. SeeAlso: INT 2C/AX=0003h
  149. --------E-310009-----------------------------
  150. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
  151.     AX = 0009h
  152.     BX = selector
  153.     CL = access rights/type byte
  154.     CH = 80386 extended rights/type byte (32-bit DPMI implementations only)
  155. Return: CF clear if successful
  156.     CF set on error
  157.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  158. Notes:    if the Present bit is clear, CL bits 0-3 may have any value
  159.     DPMI 1.0+ automatically reloads any segment registers containing the
  160.       selector being modified
  161.     not supported by MS Windows 3.0 in Standard mode
  162. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
  163. SeeAlso: INT 2C/AX=0005h
  164. --------E-31000A-----------------------------
  165. INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
  166.     AX = 000Ah
  167.     BX = selector
  168. Return: CF clear if successful
  169.         AX = new data selector
  170.     CF set on error
  171.         AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
  172. Notes:    fails if selector in BX is not a code segment or is invalid
  173.     use INT 31/AX=0001h to free new selector
  174.     future changes to the original selector will not be reflected in the
  175.       returned alias selector
  176.     not supported by MS Windows 3.0 in Standard mode
  177. SeeAlso: AX=0001h
  178. --------E-31000B-----------------------------
  179. INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
  180.     AX = 000Bh
  181.     BX = LDT selector
  182.     ES:(E)DI -> 8-byte buffer for copy of descriptor
  183. Return: CF clear if successful
  184.         buffer filled
  185.     CF set on error
  186.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  187. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  188.     not supported by MS Windows 3.0 in Standard mode
  189. SeeAlso: AX=000Ch
  190. --------E-31000C-----------------------------
  191. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
  192.     AX = 000Ch
  193.     BX = LDT selector
  194.     ES:(E)DI -> 8-byte buffer containing descriptor
  195. Return: CF clear if successful
  196.     CF set on error
  197.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  198. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  199.     only modify descriptors allocated with INT 31/AX=0000h
  200.     DPMI 1.0+ automatically reloads any segment registers containing the
  201.       selector being modified
  202.     not supported by MS Windows 3.0 in Standard mode
  203. SeeAlso: AX=000Bh
  204. --------E-31000D-----------------------------
  205. INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
  206.     AX = 000Dh
  207.     BX = LDT selector
  208. Return: CF clear if successful
  209.         descriptor allocated
  210.     CF set on error
  211.         AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
  212. Notes:    free descriptor with INT 31/AX=0001h
  213.     the first 16 descriptors (04h-7Ch) are reserved for this function, but
  214.       some may already be in use by other applications under DPMI 0.9;
  215.       DPMI 1.0 guarantees 16 descriptors per client
  216.     not supported by MS Windows 3.0 in Standard mode
  217. SeeAlso: AX=0000h,AX=0001h
  218. --------E-31000E-----------------------------
  219. INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
  220.     AX = 000Eh
  221.     CX = number of descriptors to copy
  222.     ES:(E)DI -> descriptor buffer (see below)
  223. Return: CF clear if successful
  224.         descriptors copied
  225.     CF set on error
  226.         AX = error code (8022h) (see AX=0000h)
  227.         CX = number of descriptors successfully copied
  228. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  229.     if the function fails, the first CX descriptors are valid; the
  230.       remainder are not modified
  231. SeeAlso: AX=000Bh,AX=000Fh
  232.  
  233. Format of descriptor buffer entry (one per descriptor to get):
  234. Offset    Size    Description
  235.  00h    WORD    selector (set by client)
  236.  02h    QWORD    descriptor (set by host)
  237. --------E-31000F-----------------------------
  238. INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
  239.     AX = 000Fh
  240.     CX = number of descriptors to copy
  241.     ES:(E)DI -> descriptor buffer (see below)
  242. Return: CF clear if successful
  243.         descriptors copied
  244.     CF set on error
  245.         AX = error code (8021h,8022h,8025h) (see AX=0000h)
  246.         CX = number of descriptors successfully copied
  247. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  248.     if the function fails, the first CX descriptors are valid; the
  249.       remainder are not modified
  250.     DPMI 1.0+ automatically reloads any segment registers containing a
  251.       selector being modified
  252. SeeAlso: AX=000Ch,AX=000Eh
  253.  
  254. Format of descriptor buffer entry (one per descriptor to set):
  255. Offset    Size    Description
  256.  00h    WORD    selector
  257.  02h    QWORD    descriptor
  258. --------E-310100-----------------------------
  259. INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
  260.     AX = 0100h
  261.     BX = number of paragraphs to allocate
  262. Return: CF clear if successful
  263.         AX = real mode segment of allocated block
  264.         DX = first selector for allocated block
  265.     CF set on error
  266.         AX = DOS error code (07h,08h) (see INT 21/AH=59h)
  267.          (DPMI 1.0+) DPMI error code (8011h) (see AX=0000h)
  268.         BX = size (in paragraphs) of largest available block
  269. Notes:    multiple contiguous selectors are allocated for blocks of more than 64K
  270.       if the caller is a 16-bit program
  271.     never modify or deallocate returned descriptors
  272.     not supported by MS Windows 3.0 in Standard mode
  273. SeeAlso: AX=0101h,AX=0501h
  274. --------E-310101-----------------------------
  275. INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
  276.     AX = 0101h
  277.     DX = selector of block
  278. Return: CF set if successful
  279.     CF set on error
  280.         AX = DOS error code (07h,09h) (see INT 21/AH=59h)
  281. Notes:    all descriptors allocated for the block are automatically freed
  282.     DPMI 1.0+ automatically zeros any segment registers containing a
  283.       selector freed by this function
  284.     not supported by MS Windows 3.0 in Standard mode
  285. SeeAlso: AX=0100h,AX=0102h,AX=0502h
  286. --------E-310102-----------------------------
  287. INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
  288.     AX = 0102h
  289.     BX = new block size in paragraphs
  290.     DX = selector of block
  291. Return: CF clear if successful
  292.     CF set on error
  293.         AX = DOS error code (07h,08h,09h) (see INT 21/AH=59h)
  294.          (DPMI 1.0+) DPMI error code (8011h,8022h) (see AX=0000h)
  295.         BX = maximum block size (in paragraphs) possible
  296. Notes:    increasing the size of a block past a 64K boundary will fail if the
  297.       next descriptor in the LDT is already in use
  298.     shrinking a block past a 64K boundary will cause some selectors to be
  299.       freed; DPMI 1.0+ automatically zeros any segment registers containing
  300.       a selector freed by this function
  301.     not supported by MS Windows 3.0 in Standard mode
  302. SeeAlso: AX=0100h
  303. --------E-310200-----------------------------
  304. INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
  305.     AX = 0200h
  306.     BL = interrupt number
  307. Return: CF clear
  308.     CX:DX = segment:offset of real mode interrupt handler
  309. Note:    the DPMI implementation is required to support all 256 vectors
  310. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
  311. --------E-310201-----------------------------
  312. INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
  313.     AX = 0201h
  314.     BL = interrupt number
  315.     CX:DX = segment:offset of real mode handler
  316. Return: CF clear
  317. Note:    all memory that may be touched by a hardware interrupt handler must be
  318.       locked down with INT 31/AX=0600h
  319. SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
  320. --------E-310202-----------------------------
  321. INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
  322.     AX = 0202h
  323.     BL = exception number (00h-1Fh)
  324. Return: CF clear if successful
  325.         CX:(E)DX = selector:offset of handler
  326.     CF set on error
  327.         AX = error code (DPMI 1.0+) (8021h) (see AX=0000h)
  328. Notes:    16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
  329.     DPMI 1.0+ supports this function only for backward compatibility; use
  330.        AX=0210h or AX=0211h instead
  331.     not supported by MS Windows 3.0 in Standard mode
  332. SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
  333. --------E-310203-----------------------------
  334. INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
  335.     AX = 0203h
  336.     BL = exception number (00h-1Fh)
  337.     CX:(E)DX = selector:offset of handler
  338. Return: CF clear if successful
  339.     CF set on error
  340.         AX = error code (DPMI 1.0+) (8021h,8022h) (see AX=0000h)
  341. Notes:    32-bit programs must supply an offset in EDX and use a 32-bit interrupt
  342.       stack frame on chaining to the next exception handler
  343.     the handler should return using a FAR return
  344.     all fault stack frames contain an error code, but it is only valid for
  345.       exceptions 08h and 0Ah-0Eh
  346.     handlers will only be called if the exception occurs in protected mode,
  347.       and the DPMI host does not transparently handle the exception
  348.     the handler may change certain values on the stack frame (see below)
  349.     DPMI 1.0+ supports this function only for backward compatibility; use
  350.        AX=0212h or AX=0213h instead
  351.     not supported by MS Windows 3.0 in Standard mode
  352. SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
  353.  
  354. Format of stack frame for 16-bit programs: (offset from SS:SP)
  355. Offset    Size    Description
  356.  00h    DWORD    return CS:IP (do not change)
  357.  04h    WORD    error code
  358.  06h    DWORD    CS:IP of exception
  359.  0Ah    WORD    flags
  360.  0Ch    DWORD    SS:SP
  361.  
  362. Format of stack frame for 32-bit programs: (offset from SS:ESP)
  363. Offset    Size    Description
  364.  00h    DWORD    return EIP (do not change)
  365.  04h    WORD    return CS selector (do not change)
  366.  06h    WORD    reserved (do not change)
  367.  08h    DWORD    error code
  368.  0Ch    DWORD    EIP of exception
  369.  10h    WORD    CS selector of exception
  370.  12h    WORD    reserved (do not change)
  371.  14h    DWORD    EFLAGS
  372.  18h    DWORD    ESP
  373.  1Ch    WORD    SS
  374.  1Eh    WORD    reserved (do not change)
  375. --------E-310204-----------------------------
  376. INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
  377.     AX = 0204h
  378.     BL = interrupt number
  379. Return: CF clear
  380.     CX:(E)DX = selector:offset of handler
  381. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  382.     DPMI implementations are required to support all 256 vectors
  383.     not supported by MS Windows 3.0 in Standard mode
  384. SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2C/AX=0006h
  385. SeeAlso: INT 2F/AX=FB42h/BX=0024h
  386. --------E-310205-----------------------------
  387. INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
  388.     AX = 0205h
  389.     BL = interrupt number
  390.     CX:(E)DX = selector:offset of handler
  391. Return: CF clear if successful
  392.     CF set on error
  393.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  394. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  395.     32-bit programs must use a 32-bit interrupt stack frame when chaining
  396.       to the next handler
  397.     DPMI implementations are required to support all 256 vectors
  398.     hardware interrupts are reflected to the virtual machine's primary
  399.       client, software interrupts to the current client
  400.     not supported by MS Windows 3.0 in Standard mode
  401. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2C/AX=0007h
  402. SeeAlso: INT 2F/AX=FB42h/BX=0025h
  403. --------E-310210-----------------------------
  404. INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  405.     AX = 0210h
  406.     BL = exception number (00h-1Fh)
  407. Return: CF clear if successful
  408.         CX:(E)DX = selector:offset of exception handler
  409.     CF set on error
  410.         AX = error code (8021h) (see AX=0000h)
  411. Note:    DPMI host reflects exception to current client's handler
  412. SeeAlso: AX=0202h,AX=0211h,AX=0212h
  413. --------E-310211-----------------------------
  414. INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  415.     AX = 0211h
  416.     BL = exception number (00h-1Fh)
  417. Return: CF clear if successful
  418.         CX:(E)DX = selector:offset of exception handler
  419.     CF set on error
  420.         AX = error code (8021h) (see AX=0000h)
  421. Notes:    returns address of protected-mode handler for real-mode exception
  422.     DPMI host performs a switch to protected mode, reflects the exception
  423.       to the virtual machine's primary client, and returns to real mode
  424.       on the handler's completion
  425. SeeAlso: AX=0202h,AX=0210h,AX=0213h
  426. --------E-310212-----------------------------
  427. INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  428.     AX = 0212h
  429.     BL = exception or fault number (00h-1Fh)
  430.     CX:(E)DX = exception handler selector:offset
  431. Return: CF clear if successful
  432.     CF set on error
  433.         AX = error code (8021h,8022h) (see AX=0000h)
  434. Note:    DPMI host sends exception to current client's handler
  435. SeeAlso: AX=0203h,AX=0210h,AX=0213h
  436. --------E-310213-----------------------------
  437. INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  438.     AX = 0213h
  439.     BL = exception or fault number (00h-1Fh)
  440.     CX:(E)DX = exception handler selector:offset
  441. Return: CF clear if successful
  442.     CF set on error
  443.         AX = error code (8021h,8022h) (see AX=0000h)
  444. Notes:    specifies address of protected-mode handler for real-mode exception
  445.     DPMI host performs a switch to protected mode, reflects the exception
  446.       to the virtual machine's primary client, and returns to real mode
  447.       on the handler's completion
  448. SeeAlso: AX=0203h,AX=0211h,AX=0212h
  449. --------E-310300-----------------------------
  450. INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
  451.     AX = 0300h
  452.     BL = interrupt number
  453.     BH = flags
  454.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  455.            reserved, must be 0 (DPMI 1.0+)
  456.         others must be 0
  457.     CX = number of words to copy from protected mode to real mode stack
  458.     ES:(E)DI = selector:offset of real mode call structure (see below)
  459. Return: CF clear if successful
  460.         real mode call structure modified (all fields except SS:SP, CS:IP
  461.           filled with return values from real mode interrupt)
  462.     CF set on error
  463.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  464.     protected mode stack unchanged
  465. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  466.     CS:IP in the real mode call structure is ignored for this call,
  467.       instead, the indicated interrupt vector is used for the address
  468.     the flags in the call structure are pushed on the real mode stack to
  469.       form an interrupt stack frame, and the trace and interrupt flags are
  470.       clear on entry to the handler
  471.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  472.     the real mode handler must return with the stack in the same state as
  473.       it was on being called
  474. SeeAlso: AX=0302h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286",INT 2C/AX=0026h
  475. SeeAlso: INT 2F/AX=FB42h/BX=000Dh
  476.  
  477. Format of real mode call structure:
  478. Offset    Size    Description
  479.  00h    DWORD    EDI
  480.  04h    DWORD    ESI
  481.  08h    DWORD    EBP
  482.  0Ch    DWORD    reserved (00h)
  483.  10h    DWORD    EBX
  484.  14h    DWORD    EDX
  485.  18h    DWORD    ECX
  486.  1Ch    DWORD    EAX
  487.  20h    WORD    flags
  488.  22h    WORD    ES
  489.  24h    WORD    DS
  490.  26h    WORD    FS
  491.  28h    WORD    GS
  492.  2Ah    WORD    IP
  493.  2Ch    WORD    CS
  494.  2Eh    WORD    SP
  495.  30h    WORD    SS
  496. --------E-310301-----------------------------
  497. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
  498.     AX = 0301h
  499.     BH = flags
  500.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  501.            reserved, must be 0 (DPMI 1.0+)
  502.         others must be 0
  503.     CX = number of words to copy from protected mode to real mode stack
  504.     ES:(E)DI = selector:offset of real mode call structure
  505.           (see INT 31/AX=0300h)
  506. Return: CF clear if successful
  507.         real mode call structure modified (all fields except SS:SP, CS:IP
  508.           filled with return values from real mode interrupt)
  509.     CF set on error
  510.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  511.     protected mode stack unchanged
  512. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  513.     the real mode procedure must exit with a FAR return
  514.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  515.     the real mode handler must return with the stack in the same state as
  516.       it was on being called
  517. SeeAlso: AX=0300h,AX=0302h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
  518. SeeAlso: INT 2C/AX=0025h
  519. --------E-310302-----------------------------
  520. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
  521.     AX = 0302h
  522.     BH = flags
  523.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  524.            reserved, must be 0 (DPMI 1.0+)
  525.         others must be 0
  526.     CX = number of words to copy from protected mode to real mode stack
  527.     ES:(E)DI = selector:offset of real mode call structure
  528.           (see INT 31/AX=0300h)
  529. Return: CF clear if successful
  530.         real mode call structure modified (all fields except SS:SP, CS:IP
  531.           filled with return values from real mode interrupt)
  532.     CF set on error
  533.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  534.     protected mode stack unchanged
  535. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  536.     the flags in the call structure are pushed on the real mode stack to
  537.       form an interrupt stack frame, and the trace and interrupt flags are
  538.       clear on entry to the handler
  539.     the real mode procedure must exit with an IRET
  540.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  541.     the real mode handler must return with the stack in the same state as
  542.       it was on being called
  543. SeeAlso: AX=0300h
  544. --------E-310303-----------------------------
  545. INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
  546.     AX = 0303h
  547.     DS:(E)SI = selector:offset of procedure to call
  548.     ES:(E)DI = selector:offset of real mode call structure (see AX=0300h)
  549. Return: CF clear if successful
  550.         CX:DX = segment:offset of real mode call address
  551.     CF set on error
  552.         AX = error code (DPMI 1.0+) (8015h) (see AX=0000h)
  553. Notes:    the real mode call structure is static, causing reentrancy problems;
  554.       its contents are only valid at the time of a callback
  555.     the called procedure must modify the real mode CS:IP before returning
  556.     values are returned to real mode by modifying the real mode call struc
  557.     DPMI hosts must provide at least 16 callbacks per client
  558.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  559.       not support this function
  560. SeeAlso: AX=0304h,AX=0C00h
  561.  
  562. Values callback procedure is called with:
  563.     DS:(E)SI = selector:offset of real mode SS:SP
  564.     ES:(E)DI = selector:offset of real mode call structure
  565.     SS:(E)SP = locked protected mode API stack
  566.     interrupts disabled
  567. Return: (with IRET)
  568.     ES:(E)DI = selector:offset of real mode call structure to restore
  569. --------E-310304-----------------------------
  570. INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
  571.     AX = 0304h
  572.     CX:DX = real mode callback address
  573. Return: CF clear if successful
  574.     CF set on error
  575.         AX = error code (DPMI 1.0+) (8024h) (see AX=0000h)
  576. Note:    the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  577.       not support this function
  578. SeeAlso: AX=0303h
  579. --------E-310305-----------------------------
  580. INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
  581.     AX = 0305h
  582. Return: CF clear
  583.     AX = size in bytes of state buffer
  584.     BX:CX = real mode address of procedure to save/restore state
  585.     SI:(E)DI = protected mode procedure to save/restore state
  586. Notes:    the buffer size will be zero if it is not necessary to preserve state
  587.     16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
  588.     this function is only needed if using the raw mode switch service
  589. SeeAlso: AX=0306h
  590.  
  591. Values to call state-save procedures with:
  592.     AL = direction
  593.         00h save state
  594.         01h restore state
  595.     ES:(E)DI -> state buffer
  596. Return: all registers preserved
  597. --------E-310306-----------------------------
  598. INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
  599.     AX = 0306h
  600. Return: CF clear
  601.     BX:CX -> procedure to switch from real to protected mode
  602.     SI:(E)DI -> procedure to switch from protected to real mode
  603. Notes:    16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
  604.     the caller must save and restore the state of the task with AX=0305h
  605.     not supported by MS Windows 3.0 in Standard mode
  606. SeeAlso: AX=0305h
  607.  
  608. Values to JUMP at mode-switch procedures with:
  609.     AX = new DS
  610.     CX = new ES
  611.     DX = new SS
  612.     (E)BX = new (E)SP
  613.     SI:(E)DI = new CS:(E)IP
  614. Notes:    BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
  615.       DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
  616.     interrupts will stay disabled during the entire mode switch if they
  617.       are disabled on entry to the mode-switch procedure
  618. --------E-310400-----------------------------
  619. INT 31 P - DPMI 0.9+ - GET DPMI VERSION
  620.     AX = 0400h
  621. Return: CF clear
  622.     AH = major version of DPMI spec supported
  623.     AL = two-digit minor version of DPMI spec supported
  624.     BX = flags
  625.         bit 0: running under an 80386 (32-bit) implementation
  626.         bit 1: processor returns to real mode for reflected interrupts
  627.            instead of V86 mode
  628.         bit 2: virtual memory supported
  629.         bit 3: reserved (undefined)
  630.         others reserved (zero)
  631.     CL = processor type (02h=80286, 03h=80386, 04h=80486)
  632.     DH = curr value of virtual master interrupt controller base interrupt
  633.     DL = curr value of virtual slave interrupt controller base interrupt
  634. BUG:    the Windows NT March 1993 beta reports version 0090h (0.144); this has
  635.       been fixed in the final release
  636. SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 67/AX=DE0Ah
  637. --------E-310401-----------------------------
  638. INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
  639.     AX = 0401h
  640.     ES:(E)DI -> 128-byte buffer for host description (see below)
  641. Return: CF clear if successful
  642.         AX = capabilities (see below)
  643.         CX = reserved (00h)
  644.         DX = reserved (00h)
  645.         buffer filled
  646.     CF set on error (DPMI 0.9 only)
  647. SeeAlso: AX=0400h
  648.  
  649. Bitfields for capabilities:
  650.  bit 0    paged accessed/dirty supported (see AX=0506h,AX=0507h)
  651.  bit 1    exceptions restartability supported
  652.  bit 2    device mapping supported (see AX=0508h)
  653.  bit 3    conventional memory mapping supported (see AX=0509h)
  654.  bit 4    demand zero-fill supported
  655.  bit 5    write-protect client capability supported
  656.  bit 6    write-protect host capability supported
  657.  bits 7-15 reserved
  658.  
  659. Format of host description:
  660. Offset    Size    Description
  661.  00h    BYTE    host major version number
  662.  01h    BYTE    host minor version number
  663.  02h 126 BYTEs    ASCIZ host vendor name
  664. --------E-310500-----------------------------
  665. INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
  666.     AX = 0500h
  667.     ES:(E)DI -> buffer for memory information (see below)
  668. Return: CF clear
  669. Notes:    16-bit programs use ES:DI, 32-bit programs use ES:EDI
  670.     this function must be considered advisory because other applications
  671.       may affect the results at any time after the call
  672.     fields not supported by the DPMI implementation are filled with
  673.       FFFFFFFFh
  674.     DPMI 1.0+ supports this function solely for backward compatibility; use
  675.       AX=050Bh instead
  676.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 only
  677.       returns the first field in the memory information record
  678. SeeAlso: AX=0501h,AX=0604h
  679.  
  680. Format of memory information:
  681. Offset    Size    Description
  682.  00h    DWORD    largest available block in bytes
  683.  04h    DWORD    maximum unlocked page allocation
  684.  08h    DWORD    maximum locked page allocation
  685.  0Ch    DWORD    total linear address space in pages
  686.  10h    DWORD    total unlocked pages
  687.  14h    DWORD    free pages
  688.  18h    DWORD    total physical pages
  689.  1Ch    DWORD    free linear address space in pages
  690.  20h    DWORD    size of paging file/partition in pages
  691.  24h 12 BYTEs    reserved
  692. --------E-310501-----------------------------
  693. INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
  694.     AX = 0501h
  695.     BX:CX = size in bytes
  696. Return: CF clear if successful
  697.         BX:CX = linear address of block
  698.         SI:DI = memory block handle for resizing and freeing block
  699.     CF set on error
  700.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see AX=0000h)
  701. Notes:    no selectors are allocated
  702.     the memory block is allocated unlocked (can be locked with AX=0600h)
  703.     allocations are often page granular (see AX=0604h)
  704.     under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
  705.       for this function to fail even if AX=0500h indicates that enough
  706.       memory is available
  707. SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
  708. SeeAlso: INT 2F/AX=FB42h/BX=0002h
  709. --------E-310502-----------------------------
  710. INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
  711.     AX = 0502h
  712.     SI:DI = handle of memory block
  713. Return: CF clear if successful
  714.     CF set on error
  715.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  716. Note:    any selectors allocated for the memory block must also be freed,
  717.       preferably before freeing the memory block
  718. SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
  719. --------E-310503-----------------------------
  720. INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
  721.     AX = 0503h
  722.     BX:CX = new size in bytes (nonzero)
  723.     SI:DI = handle of memory block
  724. Return: CF clear if successful
  725.         BX:CX = new linear address
  726.         SI:DI = new handle of memory block
  727.     CF set on error
  728.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
  729.         (see AX=0000h)
  730. Notes:    any selectors pointing at the block must be updated
  731.     the previous memory block handle becomes invalid
  732.     an error is returned if the new size is 0
  733. SeeAlso: AX=0102h,AX=0501h,AX=0505h
  734. --------E-310504-----------------------------
  735. INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
  736.     AX = 0504h
  737.     EBX = page-aligned linear address of memory block (00000000h if any
  738.         address is acceptable)
  739.     ECX = size in bytes (nonzero)
  740.     EDX = flags
  741.         bit 0: set to create committed pages instead of uncommitted pages
  742.         bits 1-31 reserved (0)
  743. Return: CF clear if successful
  744.         EBX = linear address of memory block
  745.         ESI = memory block handle
  746.     CF set on error
  747.         AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see AX=0000h)
  748. Note:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  749. SeeAlso: AX=0501h,AX=0505h
  750. --------E-310505-----------------------------
  751. INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
  752.     AX = 0505h
  753.     ESI = memory block handle
  754.     ECX = new size in bytes (nonzero)
  755.     EDX = flags
  756.         bit 0: create committed pages rather than uncommitted pages
  757.         bit 1: segment descriptor update required
  758.         ES:EBX -> buffer containing array of WORDs with selectors
  759.         EDI = number of selectors in array
  760.         bits 2-31 reserved (0)
  761. Return: CF clear if successful
  762.         EBX = new linear base address
  763.         ESI = new memory block handle
  764.     CF set on error
  765.         AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see AX=0000h)
  766. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  767.     the old memory block handle becomes invalid
  768.     if EDX bit 1 set and the block's base address is changed, DPMI updates
  769.       all descriptors for selectors in the update buffer which fall within
  770.       the memory block
  771. SeeAlso: AX=0503h,AX=0504h
  772. --------E-310506-----------------------------
  773. INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
  774.     AX = 0506h
  775.     ESI = memory block handle
  776.     EBX = offset in memory block of first page
  777.     ECX = number of pages
  778.     ES:EDX -> array of WORDs to hold page attributes (see below)
  779. Return: CF clear if successful
  780.         buffer filled
  781.     CF set on error
  782.         AX = error code (8001h,8023h,8025h) (see AX=0000h)
  783. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  784.     if EBX is not page-aligned, it will be rounded down
  785. SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
  786.  
  787. Format of page attribute words:
  788.  bits 0-2    page type
  789.         000 uncommitted
  790.         001 committed
  791.         010 mapped (see AX=0508h,AX=0509h)
  792.         other currently unused
  793.  bit 3        page is read/write rather than read-only
  794.  bit 4        accessed/dirty bits supplied in bits 5 and 6
  795.  bit 5        page has been accessed (only valid if bit 4 set)
  796.  bit 6        page has been written (only valid if bit 4 set)
  797.  bits 7-15    reserved (0)
  798. --------E-310507-----------------------------
  799. INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
  800.     AX = 0507h
  801.     ESI = memory block handle
  802.     EBX = offset in memory block of first page
  803.     ECX = number of pages
  804.     ES:EDX -> array of WORDs with new page attributes (see AX=0506h)
  805. Return: CF clear if successful
  806.     CF set on error
  807.         AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
  808.         (see AX=0000h)
  809.         ECX = number of pages which have been set
  810. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  811.     if EBX is not page-aligned, it will be rounded down
  812. SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
  813. --------E-310508-----------------------------
  814. INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
  815.     AX = 0508h
  816.     ESI = memory block handle
  817.     EBX = page-aligned offset within memory block of page(s) to be mapped
  818.     ECX = number of pages to map
  819.     EDX = page-aligned physical address of device
  820. Return: CF clear if successful
  821.     CF set on error
  822.         AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
  823. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  824.     support of this function is optional; hosts are also allowed to support
  825.       the function for some devices but not others
  826. SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
  827. --------E-310509-----------------------------
  828. INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
  829.     AX = 0509h
  830.     ESI = memory block handle
  831.     EBX = page-aligned offset within memory block of page(s) to map
  832.     ECX = number of pages to map
  833.     EDX = page-aligned linear address of conventional (below 1M) memory
  834. Return: CF clear if successful
  835.     CF set on error
  836.         AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
  837. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  838.     support of this function is optional
  839. SeeAlso: AX=0504h,AX=0508h,AX=0801h
  840. --------E-31050A-----------------------------
  841. INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
  842.     AX = 050AH
  843.     SI:DI = memory block handle
  844. Return: CF clear if successful
  845.         SI:DI = size in bytes
  846.         BX:CX = base address
  847.     CF set on error
  848.         AX = error code (8023h) (see AX=0000h)
  849. SeeAlso: AX=0501h,AX=0504h
  850. --------E-31050B-----------------------------
  851. INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
  852.     AX = 050Bh
  853.     ES:(E)DI -> 128-byte buffer for memory information (see below)
  854. Return: CF clear if successful
  855.     CF set on error (DPMI 0.9 only)
  856. Note:    16-bit programs use ES:DI, 32-bit programs must use ES:EDI
  857. SeeAlso: AX=0500h
  858.  
  859. Format of memory information:
  860. Offset    Size    Description
  861.  00h    DWORD    total allocated bytes of physical memory controlled by host
  862.  04h    DWORD    total allocated bytes of virtual memory controlled by host
  863.  08h    DWORD    total available bytes of virtual memory controlled by host
  864.  0Ch    DWORD    total allocated bytes of virtual memory for curr virtual mach
  865.  10h    DWORD    total available bytes of virtual memory for curr virtual mach
  866.  14h    DWORD    total allocated bytes of virtual memory for current client
  867.  18h    DWORD    total available bytes of virtual memory for current client
  868.  1Ch    DWORD    total locked bytes for current client
  869.  20h    DWORD    maximum locked bytes for current client
  870.  24h    DWORD    highest linear address available to current client
  871.  28h    DWORD    largest available memory block in bytes
  872.  2Ch    DWORD    minimum allocation unit in bytes
  873.  30h    DWORD    allocation alignment unit size in bytes
  874.  34h 76 BYTEs    reserved (00h)
  875. --------E-310600-----------------------------
  876. INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
  877.     AX = 0600h
  878.     BX:CX = starting linear address
  879.     SI:DI = size of region in bytes
  880. Return: CF clear if successful
  881.     CF set on error
  882.         none of the memory is locked
  883.         AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see AX=0000h)
  884. Notes:    pages at beginning and end will be locked if the region overlaps them
  885.     may be called multiple times for a given page; the DPMI host keeps a
  886.       lock count for each page
  887. SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
  888. --------E-310601-----------------------------
  889. INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
  890.     AX = 0601h
  891.     BX:CX = starting linear address
  892.     SI:DI = size of region in bytes
  893. Return: CF clear if successful
  894.     CF set on error
  895.         none of the memory is unlocked
  896.         AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
  897. Notes:    pages at beginning and end will be unlocked if the region overlaps them
  898.     memory whose lock count has not reached zero remains locked
  899. SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
  900. --------E-310602-----------------------------
  901. INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
  902.     AX = 0602h
  903.     BX:CX = starting linear address
  904.     SI:DI = size of region in bytes
  905. Return: CF clear if successful
  906.     CF set on error
  907.         none of the memory is made pageable
  908.         AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
  909. Notes:    must relock all unlocked real mode memory before terminating process
  910.       for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
  911.     pages at beginning and end will be unlocked if the region overlaps them
  912.     pageability of real mode pages is binary, not a count
  913. SeeAlso: AX=0600h,AX=0603h
  914. --------E-310603-----------------------------
  915. INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
  916.     AX = 0603h
  917.     BX:CX = starting linear address
  918.     SI:DI = size of region in bytes
  919. Return: CF clear if successful
  920.     CF set on error
  921.         none of the memory is relocked
  922.         AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see AX=0000h)
  923. Notes:    pages at beginning and end will be relocked if the region overlaps them
  924.     pageability of real mode pages is binary, not a count
  925. SeeAlso: AX=0602h
  926. --------E-310604-----------------------------
  927. INT 31 P - DPMI 0.9+ - GET PAGE SIZE
  928.     AX = 0604h
  929. Return: CF clear if successful
  930.         BX:CX = page size in bytes
  931.     CF set on error
  932.         AX = error code (DPMI 1.0+)
  933.         8001h unsupported, 16-bit host
  934. BUG:    the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
  935.       unchanged
  936. --------E-310700-----------------------------
  937. INT 31 Pu - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
  938.     AX = 0700h
  939.     BX:CX = starting linear page number
  940.     SI:DI = number of pages to mark as paging candidates
  941. Return: ???
  942. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  943.       specification, this function is called by MS Windows TASKMAN,
  944.       PROGMAN, and KERNEL
  945. SeeAlso: AX=0701h,AX=0702h
  946. --------E-310701-----------------------------
  947. INT 31 Pu - DPMI 0.9+ - DISCARD PAGES
  948.     AX = 0701h
  949.     BX:CX = starting linear page number
  950.     SI:DI = number of pages to discard
  951. Return: ???
  952. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  953.       specification, this function is called by MS Windows TASKMAN,
  954.       PROGMAN, and KERNEL
  955. SeeAlso: AX=0700h,AX=0703h
  956. --------E-310702-----------------------------
  957. INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
  958.     AX = 0702h
  959.     BX:CX = starting linear address
  960.     SI:DI = number of bytes to mark as paging candidates
  961. Return: CF clear if successful
  962.     CF set on error
  963.         AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
  964. Notes:    this function is advisory, and does not force immediate paging
  965.     partial pages will not be discarded
  966. SeeAlso: AX=0700h,AX=0703h
  967. --------E-310703-----------------------------
  968. INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
  969.     AX = 0703h
  970.     BX:CX = starting linear address
  971.     SI:DI = number of bytes to mark as discarded
  972. Return: CF clear if successful
  973.     CF set on error
  974.         AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
  975. Notes:    this function is advisory, and may be ignored by DPMI implementations
  976.     partial pages will not be discarded
  977. SeeAlso: AX=0701h,AX=0702h
  978. --------E-310800-----------------------------
  979. INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
  980.     AX = 0800h
  981.     BX:CX = physical address (should be above 1 MB)
  982.     SI:DI = size in bytes
  983. Return: CF clear if successful
  984.         BX:CX = linear address which maps the requested physical memory
  985.     CF set on error
  986.         AX = error code (DPMI 1.0+) (8003h,8021h) (see AX=0000h)
  987. Notes:    implementations may refuse this call because it can circumvent protects
  988.     the caller must build an appropriate selector for the memory
  989.     do not use for memory mapped in the first megabyte
  990. SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
  991. --------E-310801-----------------------------
  992. INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
  993.     AX = 0801h
  994.     BX:CX = linear address returned by AX=0800h
  995. Return: CF clear if successful
  996.     CF set on error
  997.         AX = error code (8025h) (see AX=0000h)
  998. Note:    should be called at end of access to device mapped with AX=0800h
  999. SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
  1000. --------E-310900-----------------------------
  1001. INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
  1002.     AX = 0900h
  1003. Return: CF clear
  1004.     virtual interrupts disabled
  1005.     AL = 00h if previously disabled
  1006.        = 01h if previously enabled
  1007.     AH preserved
  1008. Notes:    the previous state may be restored simply by executing another INT 31
  1009.     a CLI instruction may be used if the previous state is unimportant,
  1010.       but should be assumed to be very slow due to trapping by the host
  1011. SeeAlso: AX=0901h,AX=0902h
  1012. --------E-310901-----------------------------
  1013. INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
  1014.     AX = 0901h
  1015. Return: CF clear
  1016.     virtual interrupts enabled
  1017.     AL = 00h if previously disabled
  1018.        = 01h if previously enabled
  1019.     AH preserved
  1020. Notes:    the previous state may be restored simply by executing another INT 31
  1021.     a STI instruction may be used if the previous state is unimportant,
  1022.       but should be assumed to be very slow due to trapping by the host
  1023. SeeAlso: AX=0900h,AX=0902h
  1024. --------E-310902-----------------------------
  1025. INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
  1026.     AX = 0902h
  1027. Return: CF clear
  1028.     AL = 00h if disabled
  1029.        = 01h if enabled
  1030. Note:    should be used rather than PUSHF because that instruction yields the
  1031.       physical interrupt state rather than the per-client virtualized
  1032.       interrupt flag
  1033. SeeAlso: AX=0900h,AX=0901h
  1034. --------E-310A00-----------------------------
  1035. INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
  1036.     AX = 0A00h
  1037.     DS:(E)SI -> case-sensitive ASCIZ vendor name or identifier
  1038. Return: CF clear if successful
  1039.         ES:(E)DI -> FAR extended API entry point
  1040.         DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
  1041.     CF set on error
  1042.         AX = error code (DPMI 1.0+) (8001h) (see AX=0000h)
  1043. Notes:    extended API parameters are vendor-specific
  1044.     DPMI 1.0+ supports this function solely for backward compatibility; use
  1045.       INT 2F/AX=168Ah instead
  1046.     this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
  1047.       or QDPMI v1.0x; use INT 2F/AX=168Ah instead.    It is supported by
  1048.       386MAX v7.01.
  1049. SeeAlso: INT 2F/AX=168Ah
  1050. --------E-310B00-----------------------------
  1051. INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
  1052.     AX = 0B00h
  1053.     BX:CX = linear address
  1054.     DL = size (1,2,4 bytes)
  1055.     DH = type (00h execute, 01h write, 02h read/write)
  1056. Return: CF clear if successful
  1057.         BX = watchpoint handle
  1058.     CF set on error
  1059.         AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see AX=0000h)
  1060. SeeAlso: AX=0212h,AX=0601h
  1061. --------E-310B01-----------------------------
  1062. INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
  1063.     AX = 0B01h
  1064.     BX = watchpoint handle
  1065. Return: CF clear if successful
  1066.     CF set on error
  1067.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  1068. Note:    the watchpoint handle is freed
  1069. SeeAlso: AX=0B00h
  1070. --------E-310B02-----------------------------
  1071. INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
  1072.     AX = 0B02h
  1073.     BX = watchpoint handle
  1074. Return: CF clear if successful
  1075.         AX = status flags
  1076.         bit 0: watch point has been executed since AX=0B00h or AX=0B03h
  1077.     CF set on error
  1078.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  1079. SeeAlso: AX=0B00h,AX=0B03h
  1080. --------E-310B03-----------------------------
  1081. INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
  1082.     AX = 0B03h
  1083.     BX = watchpoint handle
  1084. Return: CF clear if successful
  1085.     CF set on error
  1086.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  1087. SeeAlso: AX=0B02h
  1088. --------E-310C00-----------------------------
  1089. INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
  1090.     AX = 0C00h
  1091.     ES:(E)DI -> resident service provider structure (see below)
  1092. Return: CF clear if successful
  1093.     CF set on error
  1094.         AX = error code (8015h,8021h,8025h) (see AX=0000h)
  1095. Note:    calling this function declares an intent to provide resident
  1096.       protected mode services after terminating with AX=0C01h
  1097. SeeAlso: AX=0303h,AX=0C01h
  1098.  
  1099. Format of resident service provider structure:
  1100. Offset    Size    Description
  1101.  00h    QWORD    descriptor for 16-bit data segment
  1102.  08h    QWORD    descriptor for 16-bit code segment (zeros if not supported)
  1103.  10h    WORD    offset of 16-bit callback procedure
  1104.  12h  2 BYTEs    reserved
  1105.  14h    QWORD    descriptor for 32-bit data segment
  1106.  1Ch    QWORD    descriptor for 32-bit code segment (zeros if not supported)
  1107.  24h    DWORD    offset of 32-bit callback procedure
  1108. --------E-310C01-----------------------------
  1109. INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
  1110.     AX = 0C01h
  1111.     BL = return code
  1112.     DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
  1113. Return: never
  1114. Notes:    should only be used if the program will only provide services to
  1115.       other DPMI programs
  1116.     any protected mode memory remains allocated to the program unless
  1117.       explicitly freed before this call
  1118.     must first call AX=0C00h or program will simply be terminated
  1119. SeeAlso: AX=0C00h,INT 21/AH=31h
  1120. --------E-310D00-----------------------------
  1121. INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
  1122.     AX = 0D00h
  1123.     ES:(E)DI -> shared memory allocation request structure (see below)
  1124. Return: CF clear if successful
  1125.         request structure updated
  1126.     CF set on error
  1127.         AX = error code (8012h,8013h,8014h,8016h,8021h) (see AX=0000h)
  1128. Note:    first 16 bytes of memory block will be initialized to zeros on the
  1129.       first allocation
  1130. SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
  1131.  
  1132. Format of shared memory allocation request structure:
  1133. Offset    Size    Description
  1134.  00h    DWORD    requested length of shared memory block in bytes
  1135.  04h    DWORD    (return) allocated length of block
  1136.  08h    DWORD    (return) shared memory handle
  1137.  0Ch    DWORD    (return) linear address of memory block
  1138.  10h    PWORD    selector:offset32 of ASCIZ name for memory block
  1139.         (name max 128 bytes)
  1140.  16h  2 BYTEs    reserved
  1141.  18h  4 BYTEs    reserved (00h)
  1142. --------E-310D01-----------------------------
  1143. INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
  1144.     AX = 0D01h
  1145.     SI:DI = shared memory block handle
  1146. Return: CF clear if successful
  1147.     CF set on error
  1148.         AX = error code (8023h) (see AX=0000h)
  1149. Notes:    handle becomes invalid after this call
  1150.     DPMI maintains separate global and virtual machine use counts for each
  1151.       shared memory block; when the global use counts reaches zero, the
  1152.       block is finally destroyed
  1153. SeeAlso: AX=0502h,AX=0D00h
  1154. --------E-310D02-----------------------------
  1155. INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
  1156.     AX = 0D02h
  1157.     SI:DI = shared memory block handle
  1158.     DX = flags
  1159.         bit 0: return immediately rather than suspending if serialization
  1160.             unavailable
  1161.         bit 1: shared rather than exclusive serialization
  1162.         bits 2-15 reserved (0)
  1163. Return: CF clear if successful
  1164.     CF set on error
  1165.         AX = error code (8004h,8005h,8017h-8019h,8023h) (see AX=0000h)
  1166. Notes:    an exclusive serialization blocks any other serialization attempts for
  1167.       the same block by another virtual machine; a shared serialization
  1168.       blocks attempts at exclusive serialization by another virtual machine
  1169.     hosts are not required to detect deadlock
  1170.     a client's interrupt handler can cancel a serialization call which
  1171.       caused it to block by calling AX=0D03h
  1172. SeeAlso: AX=0D00h,AX=0D03h
  1173. --------E-310D03-----------------------------
  1174. INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
  1175.     AX = 0D03h
  1176.     SI:DI = shared memory block handle
  1177.     DX = flags
  1178.         bit 0: release shared serialization rather than exclusive serialztn
  1179.         bit 1: free pending serialization
  1180.         bits 2-15 reserved (0)
  1181. Return: CF clear if successful
  1182.     CF set on error
  1183.         AX = error code (8002h,8023h) (see AX=0000h)
  1184. SeeAlso: AX=0D00h,AX=0D02h
  1185. --------E-310E00-----------------------------
  1186. INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
  1187.     AX = 0E00h
  1188. Return: CF clear
  1189.     AX = coprocessor status
  1190.         bit 0: numeric coprocessor enabled for current client
  1191.         bit 1: client is emulating coprocessor
  1192.         bit 2: numeric coprocessor is present
  1193.         bit 3: host is emulating coprocessor instructions
  1194.         bits 4-7: coprocessor type
  1195.         0000 none
  1196.         0010 80287
  1197.         0011 80387
  1198.         0100 80486 with numeric coprocessor
  1199.         other reserved
  1200.         bits 8-15 not used
  1201. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1202. SeeAlso: AX=0E01h
  1203. --------E-310E01-----------------------------
  1204. INT 31 P - DPMI 1.0+ - SET EMULATION
  1205.     AX = 0E01h
  1206.     BX = coprocessor flag bits
  1207.         bit 0: enable numeric coprocessor for current client
  1208.         bit 1: client will emulate coprocessor
  1209.         bits 2-15 not used
  1210. Return: CF clear if successful
  1211.     CF set on error
  1212.         AX = error code (8026h) (see AX=0000h)
  1213. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1214. SeeAlso: AX=0E00h
  1215. --------E-3157-------------------------------
  1216. INT 31 - Netroom3 DPMI.EXE v3.00 - ???
  1217.     AH = 57h
  1218.     AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
  1219.     ???
  1220. Return: ???
  1221. SeeAlso: INT 2C/AX=0000h"RM386"
  1222. --------E-315702-----------------------------
  1223. INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
  1224.     AX = 5702h
  1225.     DX = PSP segment of caller
  1226.     STACK: WORD    ???
  1227.            WORD    flags (bit 0 set if 32-bit program)
  1228. Return: as for DPMI mode-switch entry point (see INT 2F/AX=1687h)
  1229. Note:    this function is called by the real-mode DPMI mode-switch entry point
  1230. SeeAlso: INT 2F/AX=1687h
  1231. --------v-32---------------------------------
  1232. INT 32 - VIRUS - reportedly used by "Tiny" Viruses
  1233. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
  1234. --------v-32---------------------------------
  1235. INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
  1236. SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
  1237. --------M-330000-----------------------------
  1238. INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
  1239.     AX = 0000h
  1240. Return: AX = status
  1241.         0000h hardware/driver not installed
  1242.         FFFFh hardware/driver installed
  1243.     BX = number of buttons
  1244.         0000h other than two
  1245.         0002h two buttons (many drivers)
  1246.         0003h Mouse Systems/Logitech three-button mouse
  1247.         FFFFh two buttons
  1248. Notes:    to use mouse on a Hercules-compatible monographics card in graphics
  1249.       mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
  1250.       and then call this function.    Logitech drivers v5.01 and v6.00
  1251.       reportedly do not correctly use Hercules graphics in dual-monitor
  1252.       systems, while version 4.10 does.
  1253.     the Logitech mouse driver contains the signature string "LOGITECH"
  1254.       three bytes past the interrupt handler; many of the Logitech mouse
  1255.       utilities check for this signature.
  1256. SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
  1257. --------M-330001-----------------------------
  1258. INT 33 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
  1259.     AX = 0001h
  1260. SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh
  1261. --------M-330002-----------------------------
  1262. INT 33 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
  1263.     AX = 0002h
  1264. Note:    multiple calls to hide the cursor will require multiple calls to
  1265.       function 01h to unhide it.
  1266. SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
  1267. --------M-330003-----------------------------
  1268. INT 33 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
  1269.     AX = 0003h
  1270. Return: BX = button status
  1271.        bit 0  left button pressed if 1
  1272.        bit 1  right button pressed if 1
  1273.        bit 2  middle button pressed if 1 (Mouse Systems/Logitech mouse)
  1274.     CX = column
  1275.     DX = row
  1276. Note:    in text modes, all coordinates are specified as multiples of the cell
  1277.       size, typically 8x8 pixels
  1278. SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
  1279. --------M-330004-----------------------------
  1280. INT 33 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
  1281.     AX = 0004h
  1282.     CX = column
  1283.     DX = row
  1284. Note:    the row and column are truncated to the next lower multiple of the cell
  1285.       size (typically 8x8 in text modes); however, some versions of the
  1286.       Microsoft documentation incorrectly state that the coordinates are
  1287.       rounded
  1288. SeeAlso: AX=0003h,INT 62/AX=0081h
  1289. --------M-330005-----------------------------
  1290. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
  1291.     AX = 0005h
  1292.     BX = button
  1293.         0000h left
  1294.         0001h right
  1295.         0002h middle (Mouse Systems/Logitech mouse)
  1296. Return: AX = button states
  1297.         bit 0 left button pressed if 1
  1298.         bit 1 right button pressed if 1
  1299.         bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
  1300.     BX = number of times specified button has been pressed since last call
  1301.     CX = column at time specified button was last pressed
  1302.     DX = row at time specified button was last pressed
  1303. SeeAlso: AX=0006h,INT 62/AX=007Ch
  1304. --------M-330006-----------------------------
  1305. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
  1306.     AX = 0006h
  1307.     BX = button
  1308.         0000h left
  1309.         0001h right
  1310.         0002h middle (Mouse Systems/Logitech mouse)
  1311. Return: AX = button states
  1312.         bit 0 left button pressed if 1
  1313.         bit 1 right button pressed if 1
  1314.         bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
  1315.     BX = number of times specified button has been released since last call
  1316.     CX = column at time specified button was last released
  1317.     DX = row at time specified button was last released
  1318. SeeAlso: AX=0005h,INT 62/AX=007Ch
  1319. --------M-330007-----------------------------
  1320. INT 33 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
  1321.     AX = 0007h
  1322.     CX = minimum column
  1323.     DX = maximum column
  1324. Note:    in text modes, the minimum and maximum columns are truncated to the
  1325.       next lower multiple of the cell size, typically 8x8 pixels
  1326. SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1327. --------M-330008-----------------------------
  1328. INT 33 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
  1329.     AX = 0008h
  1330.     CX = minimum row
  1331.     DX = maximum row
  1332. Note:    in text modes, the minimum and maximum rows are truncated to the
  1333.       next lower multiple of the cell size, typically 8x8 pixels
  1334. SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1335. --------M-330009-----------------------------
  1336. INT 33 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
  1337.     AX = 0009h
  1338.     BX = column of cursor hot spot in bitmap (-16 to 16)
  1339.     CX = row of cursor hot spot (-16 to 16)
  1340.     ES:DX -> bitmap
  1341.         16 words screen mask
  1342.         16 words cursor mask
  1343.             each word defines the sixteen pixels of a row, low bit
  1344.               rightmost
  1345. Notes:    in graphics modes, the screen contents around the current mouse cursor
  1346.       position are ANDed with the screen mask and then XORed with the
  1347.       cursor mask
  1348.     the Microsoft mouse driver v7.04 and v8.20 uses only BL and CL, so the
  1349.       hot spot row/column should be limited to -128..127
  1350.     Microsoft KnowledgeBase article Q19850 states that the high bit is
  1351.       right-most, but that statement is contradicted by all other available
  1352.       documentation
  1353. SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh
  1354. --------M-33000A-----------------------------
  1355. INT 33 - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
  1356.     AX = 000Ah
  1357.     BX = hardware/software text cursor
  1358.         0000h software
  1359.         CX = screen mask
  1360.         DX = cursor mask
  1361.         0001h hardware
  1362.         CX = start scan line
  1363.         DX = end scan line
  1364. Note:    when the software cursor is selected, the character/attribute data at
  1365.       the current screen position is ANDed with the screen mask and then
  1366.       XORed with the cursor mask
  1367. SeeAlso: AX=0009h,INT 62/AX=007Eh
  1368. --------M-33000B-----------------------------
  1369. INT 33 - MS MOUSE v1.0+ - READ MOTION COUNTERS
  1370.     AX = 000Bh
  1371. Return: CX = number of mickeys mouse moved horizontally since last call
  1372.     DX = number of mickeys mouse moved vertically
  1373. Notes:    a mickey is the smallest increment the mouse can sense
  1374.     positive values indicate down/right
  1375. SeeAlso: AX=0003h,AX=001Bh,AX=0027h
  1376. --------M-33000C-----------------------------
  1377. INT 33 - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
  1378.     AX = 000Ch
  1379.     CX = call mask (see below)
  1380.     ES:DX -> FAR routine
  1381. Notes:    when the subroutine is called, it is passed the following values:
  1382.       AX = condition mask (same bit assignments as call mask)
  1383.       BX = button state
  1384.       CX = cursor column
  1385.       DX = cursor row
  1386.       SI = horizontal mickey count
  1387.       DI = vertical mickey count
  1388.     in text modes, the row and column will be reported as a multiple of
  1389.       the cell size, typically 8x8 pixels
  1390. BUG:    some versions of the Microsoft documentation incorrectly state that CX
  1391.       bit 0 means call if mouse cursor moves, and swap the meanings of SI
  1392.       and DI
  1393. SeeAlso: AX=0018h
  1394.  
  1395. Bitfields for call mask:
  1396.  bit 0    call if mouse moves
  1397.  bit 1    call if left button pressed
  1398.  bit 2    call if left button released
  1399.  bit 3    call if right button pressed
  1400.  bit 4    call if right button released
  1401.  bit 5    call if middle button pressed (Mouse Systems/Logitech mouse)
  1402.  bit 6    call if middle button released (Mouse Sys/Logitech mouse)
  1403.  bits 7-15 unused
  1404. --------M-33000D-----------------------------
  1405. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
  1406.     AX = 000Dh
  1407. SeeAlso: AX=000Eh,INT 10/AH=04h
  1408. --------M-33000E-----------------------------
  1409. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
  1410.     AX = 000Eh
  1411. SeeAlso: AX=000Dh
  1412. --------M-33000F-----------------------------
  1413. INT 33 - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
  1414.     AX = 000Fh
  1415.     CX = number of mickeys per 8 pixels horizontally (default 8)
  1416.     DX = number of mickeys per 8 pixels vertically (default 16)
  1417. SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
  1418. --------M-330010-----------------------------
  1419. INT 33 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
  1420.     AX = 0010h
  1421.     CX,DX = X,Y coordinates of upper left corner
  1422.     SI,DI = X,Y coordinates of lower right corner
  1423. Note:    mouse cursor is hidden in the specified region, and needs to be
  1424.       explicitly turned on again
  1425. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
  1426. --------M-330010-----------------------------
  1427. INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
  1428.     AX = 0010h
  1429.     ES:DX -> update region list (see below)
  1430. Notes:    mouse cursor is hidden in the specified region, and needs to be
  1431.       explicitly turned on again
  1432.     this version of the call is described in an August 1988 version of the
  1433.       Genius Mouse programmer's reference; it has been changed to conform
  1434.       to the Microsoft version shown above by version 9.06 (and possibly
  1435.       earlier versions)
  1436. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
  1437.  
  1438. Format of update region list:
  1439. Offset    Size    Description
  1440.  00h    WORD    left-most column
  1441.  02h    WORD    top-most row
  1442.  04h    WORD    right-most column
  1443.  06h    WORD    bottom-most row
  1444. --------M-330011-----------------------------
  1445. INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
  1446.     AX = 0011h
  1447. Return: AX = FFFFh
  1448.     BX = number of buttons
  1449. SeeAlso: AX=0000h
  1450. --------M-330012-----------------------------
  1451. INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
  1452.     AX = 0012h
  1453.     BH = cursor width in words
  1454.     CH = rows in cursor
  1455.     BL = horizontal hot spot (-16 to 16)
  1456.     CL = vertical hot spot (-16 to 16)
  1457.     ES:DX -> bit map of screen and cursor maps
  1458. Return: AX = FFFFh if successful
  1459. SeeAlso: AX=0009h,AX=002Ah,AX=0035h
  1460. --------M-330013-----------------------------
  1461. INT 33 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
  1462.     AX = 0013h
  1463.     DX = threshold speed in mickeys/second, 0000h = default of 64/second
  1464. Note:    if speed exceeds threshold, the cursor's on-screen motion is doubled
  1465. SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
  1466. --------M-330014-----------------------------
  1467. INT 33 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
  1468.     AX = 0014h
  1469.     CX = call mask (see AX=000Ch)
  1470.     ES:DX -> FAR routine
  1471. Return: CX = call mask of previous interrupt routine
  1472.     ES:DX = FAR address of previous interrupt routine
  1473. SeeAlso: AX=000Ch,AX=0018h
  1474. --------M-330015-----------------------------
  1475. INT 33 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
  1476.     AX = 0015h
  1477. Return: BX = size of buffer needed to store driver state
  1478. SeeAlso: AX=0016h,AX=0017h,AX=0042h
  1479. --------M-330016-----------------------------
  1480. INT 33 - MS MOUSE v6.0+ - SAVE DRIVER STATE
  1481.     AX = 0016h
  1482.     BX = size of buffer (see AX=0015h)
  1483.     ES:DX -> buffer for driver state
  1484. Note:    although not documented (since the Microsoft driver does not use it),
  1485.       many drivers appear to require BX on input
  1486. SeeAlso: AX=0015h,AX=0017h
  1487. --------M-330017-----------------------------
  1488. INT 33 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
  1489.     AX = 0017h
  1490.     BX = size of buffer (see AX=0015h)
  1491.     ES:DX -> buffer containing saved state
  1492. Notes:    although not documented (since the Microsoft driver does not use it),
  1493.       many drivers appear to require BX on input
  1494.     some mouse drivers range-check the values in the saved state based on
  1495.       the current video mode; thus, the video mode should be restored
  1496.       before the mouse driver's state is restored
  1497. SeeAlso: AX=0015h,AX=0016h
  1498. --------M-330018-----------------------------
  1499. INT 33 - MS MOUSE v6.0+ - SET ALTERNATE MOUSE USER HANDLER
  1500.     AX = 0018h
  1501.     CX = call mask (see below)
  1502.     ES:DX -> FAR routine to be invoked on mouse events (see below)
  1503. Return: AX = status
  1504.         0018h if successful
  1505.         FFFFh on error
  1506. Notes:    up to three handlers can be defined by separate calls to this function,
  1507.       each with a different combination of shift states in the call mask;
  1508.       calling this function again with a call mask of 0000h undefines the
  1509.       specified handler (official documentation); specifying the same
  1510.       call mask and an address of 0000h:0000h undefines the handler (real
  1511.       life)
  1512.     some versions of the documentation erroneously reverse the order of
  1513.       the bits in the call mask
  1514. SeeAlso: AX=000Ch,AX=0014h,AX=0019h
  1515.  
  1516. Bitfields for call mask:
  1517.  bit 0    call if mouse moves
  1518.  bit 1    call if left button pressed
  1519.  bit 2    call if left button released
  1520.  bit 3    call if right button pressed
  1521.  bit 4    call if right button released
  1522.  bit 5    call if shift button pressed during event
  1523.  bit 6    call if ctrl key pressed during event
  1524.  bit 7    call if alt key pressed during event
  1525. Note:    at least one of bits 5-7 must be set
  1526.  
  1527. User handler called with:
  1528.     AX = condition mask (same bit assignments as call mask)
  1529.     BX = button state
  1530.     CX = cursor column
  1531.     DX = cursor row
  1532.     SI = horizontal mickey count
  1533.     DI = vertical mickey count
  1534. Return: registers preserved
  1535. Note:    in text modes, the row and column will be reported as a multiple of
  1536.       the cell size, typically 8x8 pixels
  1537. --------M-330019-----------------------------
  1538. INT 33 - MS MOUSE v6.0+ - RETURN USER ALTERNATE INTERRUPT VECTOR
  1539.     AX = 0019h
  1540.     CX = call mask (see AX=0018h)
  1541. Return: BX:DX = user interrupt vector
  1542.     CX = call mask (0000h if not found)
  1543. Note:    attempts to find a user event handler (defined by function 18h)
  1544.       whose call mask matches CX
  1545. SeeAlso: AX=0018h
  1546. --------M-33001A-----------------------------
  1547. INT 33 - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
  1548.     AX = 001Ah
  1549.     BX = horizontal speed \
  1550.     CX = vertical speed   / (see AX=000Fh)
  1551.     DX = double speed threshold (see AX=0013h)
  1552. SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
  1553. --------M-33001B-----------------------------
  1554. INT 33 - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
  1555.     AX = 001Bh
  1556. Return: BX = horizontal speed
  1557.     CX = vertical speed
  1558.     DX = double speed threshold
  1559. SeeAlso: AX=000Bh,AX=001Ah
  1560. --------M-33001C-----------------------------
  1561. INT 33 - MS MOUSE v6.0+ - SET INTERRUPT RATE
  1562.     AX = 001Ch
  1563.     BX = rate
  1564.         00h no interrupts allowed
  1565.         01h 30 per second
  1566.         02h 50 per second
  1567.         03h 100 per second
  1568.         04h 200 per second
  1569. Notes:    only available on InPort mouse
  1570.     values greater than 4 may cause unpredictable driver behavior
  1571. --------M-33001D-----------------------------
  1572. INT 33 - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
  1573.     AX = 001Dh
  1574.     BX = display page number
  1575. Note:    the cursor will be displayed on the specified page
  1576. SeeAlso: AX=001Eh
  1577. --------M-33001E-----------------------------
  1578. INT 33 - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
  1579.     AX = 001Eh
  1580. Return: BX = display page number
  1581. SeeAlso: AX=001Dh
  1582. --------M-33001F-----------------------------
  1583. INT 33 - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
  1584.     AX = 001Fh
  1585. Return: AX = status
  1586.         001Fh successful
  1587.         ES:BX = INT 33 vector before mouse driver was first installed
  1588.         FFFFh unsuccessful
  1589. Notes:    restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
  1590.     if you restore INT 33 to ES:BX, driver will be completely disabled
  1591.     many drivers return AX=001Fh even though the driver has been disabled
  1592. SeeAlso: AX=0020h
  1593. --------M-330020-----------------------------
  1594. INT 33 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
  1595.     AX = 0020h
  1596. Return: AX = status
  1597.         0020h successful
  1598.         FFFFh unsuccessful
  1599. Notes:    restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
  1600.       which were removed by function 1Fh
  1601.     Microsoft's documentation states that no value is returned
  1602. SeeAlso: AX=001Fh
  1603. --------M-330021-----------------------------
  1604. INT 33 - MS MOUSE v6.0+ - SOFTWARE RESET
  1605.     AX = 0021h
  1606. Return: AX = status
  1607.         FFFFh if mouse driver installed
  1608.         BX = number of buttons (FFFFh = two buttons)
  1609.         0021h if mouse driver not installed
  1610. Note:    this call is identical to funtion 00h, but does not reset the mouse
  1611. SeeAlso: AX=0000h
  1612. --------M-330022-----------------------------
  1613. INT 33 - MS MOUSE v6.0+ - SET LANGUAGE FOR MESSAGES
  1614.     AX = 0022h
  1615.     BX = language (see below)
  1616. Note:    only available on international versions of the driver; US versions
  1617.       ignore this call
  1618. SeeAlso: AX=0023h
  1619.  
  1620. Values for language:
  1621.  00h    English
  1622.  01h    French
  1623.  02h    Dutch
  1624.  03h    German
  1625.  04h    Swedish
  1626.  05h    Finnish
  1627.  06h    Spanish
  1628.  07h    Portugese
  1629.  08h    Italian
  1630. --------M-330023-----------------------------
  1631. INT 33 - MS MOUSE v6.0+ - GET LANGUAGE FOR MESSAGES
  1632.     AX = 0023h
  1633. Return: BX = language (see AX=0022h)
  1634. Note:    the US version of the driver always returns zero
  1635. SeeAlso: AX=0022h
  1636. --------M-330024-----------------------------
  1637. INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
  1638.     AX = 0024h
  1639. Return: AX = FFFFh on error
  1640.     otherwise,
  1641.         BH = major version
  1642.         BL = minor version
  1643.         CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
  1644.         CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7)
  1645. SeeAlso: AX=004Dh,AX=006Dh
  1646. --------M-330025-----------------------------
  1647. INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
  1648.     AX = 0025h
  1649. Return: AX = general information
  1650.         bit 15: driver loaded as device driver rather than TSR
  1651.         bit 14: driver is newer integrated type
  1652.         bits 13,12: current cursor type
  1653.             00 software text cursor
  1654.             01 hardware text cursor (CRT Controller's cursor)
  1655.             1X graphics cursor
  1656.         bits 11-8: interrupt rate (see AX=001Ch)
  1657.         bits 7-0:  count of currently-active Mouse Display Drivers (MDD),
  1658.             the newer integrated driver type
  1659.     BX = cursor lock flag for OS/2 to prevent reentrancy problems
  1660.     CX = mouse code active flag (for OS/2)
  1661.     DX = mouse driver busy flag (for OS/2)
  1662. --------M-330026-----------------------------
  1663. INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
  1664.     AX = 0026h
  1665. Return: BX = mouse-disabled flag (0000h mouse enabled, nonzero disabled)
  1666.     CX = maximum virtual X (for current video mode)
  1667.     DX = maximum virtual Y
  1668. Note:    for driver versions before 7.05, this call returns the currently-set
  1669.       maximum coordinates; v7.05+ returns the absolute maximum coordinates
  1670. SeeAlso: AX=0031h
  1671. --------M-330026-----------------------------
  1672. INT 33 - Genius Mouse 9.06 - ???
  1673.     AX = 0026h
  1674. Return: CX = 0204h if CX was 0105h on entry, else unchanged
  1675. --------M-330027-----------------------------
  1676. INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
  1677.     AX = 0027h
  1678. Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
  1679.     BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
  1680.     CX = horizontal mickeys moved since last call
  1681.     DX = vertical mickeys moved since last call
  1682. SeeAlso: AX=000Bh
  1683. --------M-330028-----------------------------
  1684. INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
  1685.     AX = 0028h
  1686.     CX = new video mode (call is NOP if 0000h)
  1687.     DH = Y font size (00h = default)
  1688.     DL = X font size (00h = default)
  1689. Return: CL = status (00h = successful)
  1690. Notes:    DX is ignored unless the selected video mode supports font size control
  1691.     when CX=0000h, an internal flag that had been set by a previous call
  1692.       is cleared; this is required before a mouse reset
  1693. SeeAlso: AX=0029h,INT 10/AH=00h
  1694. --------M-330029-----------------------------
  1695. INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
  1696.     AX = 0029h
  1697.     CX = previous video mode
  1698.         0000h get first supported video mode
  1699.         other get next supported mode after mode CX
  1700. Return: CX = first/next video mode (0000h = no more video modes)
  1701.     DS:DX -> description of video mode or 0000h:0000h if none
  1702. Notes:    the enumerated video modes may be in any order and may repeat
  1703.     the description string (if available) is terminated by '$' followed by
  1704.       a NUL byte
  1705. SeeAlso: AX=0028h
  1706. --------M-33002A-----------------------------
  1707. INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
  1708.     AX = 002Ah
  1709. Return: AX = internal counter controlling cursor visibility
  1710.     BX = cursor hot spot column
  1711.     CX = cursor hot spot row
  1712.     DX = mouse type (00h none, 01h bus, 02h serial, 03h InPort, 04h IBM,
  1713.              05h Hewlett-Packard)
  1714. Note:    the hot spot location is relative to the upper left corner of the
  1715.       cursor block and may range from -128 to +127 both horizontally and
  1716.       vertically
  1717. SeeAlso: AX=0009h,AX=0012h,AX=0035h
  1718. --------M-33002B-----------------------------
  1719. INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
  1720.     AX = 002Bh
  1721.     BX = active acceleration profile
  1722.         0001h-0004h or FFFFh to restore default curves
  1723.     ES:SI -> buffer containing acceleration profile data (see below)
  1724. Return: AX = success flag
  1725. SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
  1726.  
  1727. Format of acceleration profile data:
  1728. Offset    Size    Description
  1729.  00h    BYTE    length of acceleration profile 1
  1730.  01h    BYTE    length of acceleration profile 2
  1731.  02h    BYTE    length of acceleration profile 3
  1732.  03h    BYTE    length of acceleration profile 4
  1733.  04h 32 BYTEs    threshold speeds for acceleration profile 1
  1734.  24h 32 BYTEs    threshold speeds for acceleration profile 2
  1735.  44h 32 BYTEs    threshold speeds for acceleration profile 3
  1736.  64h 32 BYTEs    threshold speeds for acceleration profile 4
  1737.  84h 32 BYTEs    speedup factor for acceleration profile 1
  1738.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1739.  A4h 32 BYTEs    speedup factor for acceleration profile 2
  1740.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1741.  C4h 32 BYTEs    speedup factor for acceleration profile 3
  1742.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1743.  E4h 32 BYTEs    speedup factor for acceleration profile 4
  1744.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1745. 104h 16 BYTEs    name of acceleration profile 1 (blank-padded)
  1746. 114h 16 BYTEs    name of acceleration profile 2 (blank-padded)
  1747. 124h 16 BYTEs    name of acceleration profile 3 (blank-padded)
  1748. 134h 16 BYTEs    name of acceleration profile 4 (blank-padded)
  1749. Note:    unused bytes in the threshold speed fields are filled with 7Fh and
  1750.       unused bytes in the speedup factor fields are filled with 10h
  1751. --------M-33002C-----------------------------
  1752. INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
  1753.     AX = 002Ch
  1754. Return: AX = status (0000h success)
  1755.     BX = currently-active acceleration profile
  1756.     ES:SI -> acceleration profile data (see AX=002Bh)
  1757. SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
  1758. --------M-33002D-----------------------------
  1759. INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
  1760.     AX = 002Dh
  1761.     BX = acceleration level
  1762.         0001h-0004h to set profile, or FFFFh to get current profile
  1763. Return: AX = status
  1764.         0000h successful
  1765.         ES:SI -> 16-byte blank-padded name of acceleration profile
  1766.         FFFEh invalid acceleration curve number
  1767.         ES:SI destroyed
  1768.     BX = active acceleration curve number
  1769. SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
  1770. --------M-33002E-----------------------------
  1771. INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
  1772.     AX = 002Eh
  1773.     BL = flag (if nonzero, fill ES:SI buffer with default names on return)
  1774.     ES:SI -> 64-byte buffer for profile names (16 bytes per name)
  1775. Return: AX = status (0000h success)
  1776.     ES:SI buffer filled with default names if BL nonzero on entry
  1777. Note:    not supported by Logitech driver v6.10
  1778. SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
  1779. --------M-33002F-----------------------------
  1780. INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
  1781.     AX = 002Fh
  1782. Return: AX = status
  1783. Note:    invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
  1784. SeeAlso: INT 2F/AH=53h
  1785. --------M-330030-----------------------------
  1786. INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
  1787.     AX = 0030h
  1788.     CX = command
  1789.         0000h get status of BallPoint device
  1790.         other set rotation angle and masks
  1791.         BX = rotation angle (-32768 to 32767 degrees)
  1792.         CH = primary button mask
  1793.         CL = secondary button mask
  1794. Return: AX = button status (FFFFh if no BallPoint)
  1795.         bit 5: button 1
  1796.         bit 4: button 2
  1797.         bit 3: button 3
  1798.         bit 2: button 4
  1799.         other: zero
  1800.     BX = rotation angle (0-360 degrees)
  1801.     CH = primary button mask
  1802.     CL = secondary button mask
  1803. --------M-330031-----------------------------
  1804. INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
  1805.     AX = 0031h
  1806. Return: AX = virtual X minimum
  1807.     BX = virtual Y minimum
  1808.     CX = virtual X maximum
  1809.     DX = virtual Y maximum
  1810. Note:    the minimum and maximum values are those set by AX=0007h and AX=0008h;
  1811.       the default is minimum = 0 and maximum = absolute maximum
  1812.       (see AX=0026h)
  1813. SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
  1814. --------M-330032-----------------------------
  1815. INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
  1816.     AX = 0032h
  1817. Return: AX = active function flags (FFFFh for v8.10)
  1818.         bit 15: function 0025h supported
  1819.         bit 14: function 0026h supported
  1820.         ...
  1821.         bit 0:    function 0034h supported
  1822.     BX = ??? (0000h) officially unused
  1823.     CX = ??? (E000h) officially unused
  1824.     DX = ??? (0000h) officially unused
  1825. --------M-330033-----------------------------
  1826. INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
  1827.     AX = 0033h
  1828.     CX = size of buffer
  1829.         0000h get required buffer size
  1830.         Return: AX = 0000h
  1831.             CX = required size (0154h for Logitech v6.10, 0159h
  1832.                 for MS v8.10-8.20)
  1833.         other
  1834.         ES:DX -> buffer of CX bytes
  1835.         Return: AX = 0000h
  1836.             CX = number of bytes returned
  1837.             ES:DX buffer filled (see below)
  1838. SeeAlso: AX=002Bh
  1839.  
  1840. Format of data buffer:
  1841. Offset    Size    Description
  1842.  00h    BYTE    mouse type
  1843.  01h    BYTE    current language
  1844.  02h    BYTE    horizontal sensitivity (00h-64h)
  1845.  03h    BYTE    vertical sensitivity (00h-64h)
  1846.  04h    BYTE    double-speed threshold (00h-64h)
  1847.  05h    BYTE    ballistic curve (01h-04h)
  1848.  06h    BYTE    interrupt rate (01h-04h)
  1849.  07h    BYTE    cursor override mask
  1850.  08h    BYTE    laptop adjustment
  1851.  09h    BYTE    memory type (00h-02h)
  1852.  0Ah    BYTE    SuperVGA support (00h,01h)
  1853.  0Bh    BYTE    rotation angle
  1854.  0Ch    BYTE    ???
  1855.  0Dh    BYTE    primary button (01h-04h)
  1856.  0Eh    BYTE    secondary button (01h-04h)
  1857.  0Fh    BYTE    click lock enabled (00h,01h)
  1858.  10h 324 BYTEs    acceleration profile data (see AX=002Bh)
  1859. 154h  5 BYTEs    ??? (Microsoft driver, but not Logitech)
  1860. --------M-330034-----------------------------
  1861. INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
  1862.     AX = 0034h
  1863. Return: AX = status (0000h successful)
  1864.     ES:DX -> ASCIZ initialization (.INI) file name
  1865. --------M-330035-----------------------------
  1866. INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
  1867.     AX = 0035h
  1868.     BX = function
  1869.         FFFFh get current settings
  1870.         Return: AX = 0000h
  1871.             BH = style (see below)
  1872.             BL = size (see below)
  1873.             CH = threshold
  1874.             CL = active flag (00h disabled, 01h enabled)
  1875.             DX = delay
  1876.         other
  1877.         BH = style (00h normal, 01h reverse, 02h transparent)
  1878.         BL = size (00h small "1", 01h medium "1.5", 02h large "2")
  1879.         CH = threshold (00h-64h)
  1880.         CL = active flag (00h disable size change, 01h enable)
  1881.         DX = delay (0000h-0064h)
  1882.         Return: AX = 0000h
  1883. Note:    not supported by Logitech driver v6.10
  1884. SeeAlso: AX=0012h,AX=002Ah
  1885. --------M-330042-----------------------------
  1886. INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
  1887.     AX = 0042h
  1888. Return: AX = FFFFh successful
  1889.         BX = buffer size in bytes for functions 50h and 52h
  1890.        = 0000h MSMOUSE not installed
  1891.        = 0042h functions 42h, 50h, and 52h not supported
  1892. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1893. SeeAlso: AX=0015h,AX=0050h,AX=0052h
  1894. --------M-330043-----------------------------
  1895. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CONFIGURE MOUSE???
  1896.     AX = 0043h
  1897.     CX:BX -> ??? buffer (see below)
  1898.     DL = ???
  1899. Return: ???
  1900. Notes:    also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
  1901.     this function is also supported by the Genius Mouse 9.06 driver
  1902.  
  1903. Format of buffer:
  1904. Offset    Size    Description
  1905.  00h    WORD    I/O port address
  1906.  02h    BYTE    ???
  1907.  03h    BYTE    interrupt number
  1908.  04h    BYTE    interrupt mask for interrupt controller
  1909.  05h  5 BYTEs    ???
  1910. --------M-330044CXCDEF-----------------------
  1911. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE IGNORE ACCELERATION CMDS
  1912.     AX = 0044h
  1913.     CX = CDEFh
  1914. Return: AX = new state of "Ignore Application Acceleration Commands" flag
  1915. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1916. SeeAlso: AX=0045h
  1917. --------M-330045CXCDEF-----------------------
  1918. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE RESOLUTION DOUBLING
  1919.     AX = 0045h
  1920.     CX = CDEFh
  1921. Return: AX = new state of resolution doubling flag
  1922. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1923. SeeAlso: AX=0044h
  1924. --------M-330047-----------------------------
  1925. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET BUTTON ASSIGNMENTS
  1926.     AX = 0047h
  1927.     ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
  1928. Return: ???
  1929. Note:    also supported by Genius Mouse 9.06 driver
  1930. SeeAlso: AX=0067h
  1931. --------M-330048BXCDEF-----------------------
  1932. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET ???
  1933.     AX = 0048h
  1934.     BX = CDEFh
  1935. Return: CX = ???
  1936.     BH = ???
  1937.     BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
  1938. Note:    also supported by Genius Mouse 9.06 driver
  1939. --------M-33004B-----------------------------
  1940. INT 33 - Z-NIX MOUSE DRIVER v7.04d - INSTALLATION CHECK
  1941.     AX = 004Bh
  1942. Return: ES:DI -> signature/description string if installed
  1943. Note:    the signature string in v7.04d is
  1944.       "Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
  1945. --------M-33004CBXCDEF-----------------------
  1946. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ??? FLAG
  1947.     AX = 004Ch
  1948.     BX = CDEFh
  1949. Note:    also supported by Genius Mouse 9.06
  1950. SeeAlso: AX=006Ch
  1951. --------M-33004D-----------------------------
  1952. INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
  1953.     AX = 004Dh
  1954. Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft"
  1955. Notes:    also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
  1956.       mouse drivers
  1957.     in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
  1958.       follows the above copyright message (KYE Corp. manufactures the
  1959.       driver)
  1960. SeeAlso: AX=0024h,AX=006Dh,AX=0666h
  1961. --------M-33004F-----------------------------
  1962. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ENABLE MOUSE
  1963.     AX = 004Fh
  1964. Return: nothing
  1965. Note:    also supported by Genius Mouse 9.06
  1966. SeeAlso: AX=0043h,AX=0053h
  1967. --------M-330050-----------------------------
  1968. INT 33 - PCMOUSE - SAVE MSMOUSE STATE
  1969.     AX = 0050h
  1970.     BX = buffer size (ignored by some driver versions)
  1971.     ES:DX -> buffer
  1972. Return: AX = FFFFh if successful
  1973. Notes:    the buffer must be large enough to hold the entire state, or following
  1974.       data will be overwritten by state data in versions which ignore BX;
  1975.       use INT 33/AX=0042h to get the required size
  1976.     this function is also supported by the Genius Mouse 9.06 driver
  1977. SeeAlso: AX=0042h,AX=0052h
  1978. --------M-330052-----------------------------
  1979. INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
  1980.     AX = 0052h
  1981.     BX = buffer size (ignored by some driver versions)
  1982.     ES:DX -> buffer
  1983. Return: AX = FFFFh if successful
  1984. Note:    also supported by Genius Mouse 9.06 driver
  1985. SeeAlso: AX=0050h
  1986. --------M-330053-----------------------------
  1987. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - DISABLE MOUSE
  1988.     AX = 0053h
  1989. Return: nothing
  1990. Note:    also supported by Genius Mouse 9.06
  1991. SeeAlso: AX=0043h,AX=004Fh
  1992. --------M-330054CXCDEF-----------------------
  1993. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SELECT ULTRARES ACCELERATION LEVEL
  1994.     AX = 0054h
  1995.     CX = CDEFh
  1996.     BX = new acceleration level (0-9)
  1997. Return: ???
  1998. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1999. SeeAlso: AX=005Ah
  2000. --------M-330055-----------------------------
  2001. INT 33 - Kraft Mouse - GET ???
  2002.     AX = 0055h
  2003. Return: CX = ???
  2004.     DX = ???
  2005.     ES = ???
  2006. --------M-330058-----------------------------
  2007. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2008.     AX = 0058h
  2009. Return: AX = CS of driver
  2010.     CX:BX = original INT 33 vector
  2011.     DX = ???
  2012. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2013. --------M-33005A-----------------------------
  2014. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ULTRARES ACCELERATIONS
  2015.     AX = 005Ah
  2016.     CX = number of WORDs to copy (max 0014h, but not range-checked)
  2017.     DX:SI -> buffer containing thresholds??? (CX words)
  2018.     DX:BX -> buffer containing acceleration values???
  2019.         (9*14h words, only first CX of each 14h used)
  2020.     ???
  2021. Return: CF clear
  2022.     ???
  2023. Note:    this function is also supported by Genius Mouse 9.06
  2024. SeeAlso: AX=0054h
  2025. --------M-330061BXCDEF-----------------------
  2026. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2027.     AX = 0061h
  2028.     BX = CDEFh
  2029. Return: CX = ???
  2030. Note:    also supported by Genius Mouse 9.06
  2031. --------M-330067-----------------------------
  2032. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET MOUSE BUTTONS???
  2033.     AX = 0067h
  2034. Return: BL = number of buttons???
  2035. Note:    also supported by Genius Mouse 9.06
  2036. SeeAlso: AX=0047h
  2037. --------M-33006C-----------------------------
  2038. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - GET/SET ???
  2039.     AX = 006Ch
  2040.     BX = IRQ??? (0003h or 0004h), or 0000h to get current values only
  2041.     CL = ???
  2042.     DX = ???
  2043. Return: BX = current or new ???
  2044.     DX = ???
  2045. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2046.       TRUEDOX Technology Corporation
  2047. SeeAlso: AX=00A1h,AX=0666h
  2048. --------M-33006CBXCDEF-----------------------
  2049. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CLEAR ??? FLAG
  2050.     AX = 006Ch
  2051.     BX = CDEFh
  2052. Note:    also supported by Genius Mouse 9.06
  2053. SeeAlso: AX=004Ch
  2054. --------M-33006D-----------------------------
  2055. INT 33 - MS MOUSE - GET VERSION STRING
  2056.     AX = 006Dh
  2057. Return: ES:DI -> Microsoft version number of resident driver (see below)
  2058. Notes:    also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
  2059.       drivers
  2060.     the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
  2061.       Microsoft version as 7.00 even though they do not support any of the
  2062.       functions from 0025h through 002Dh supported by the MS 7.00 driver
  2063.       (the Genius Mouse driver supports function 0026h, but it differs
  2064.       from the Microsoft function)
  2065.     the TRUEDOX 4.01 driver reports its version as 6.26 through this call,
  2066.       but as 6.24 through AX=0024h
  2067. SeeAlso: AX=0024h,AX=004Dh,AX=266Ch
  2068.  
  2069. Format of Microsoft version number:
  2070. Offset    Size    Description
  2071.  00h    BYTE    major version
  2072.  01h    BYTE    minor version (BCD)
  2073. --------M-330070BXABCD-----------------------
  2074. INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
  2075.     AX = 0070h
  2076.     BX = ABCDh
  2077. Return: AX = ABCDh if installed
  2078.         BX:CX -> data structure (see below)
  2079. Notes:    this function is also supported by the Genius Mouse 9.06 driver
  2080.     the v7.01 POPUP.COM and menu drivers also check for the signature
  2081.       CDh ABh BAh DCh at offset -2Ch from the interrupt handler
  2082.     if POPUP is not loaded, the returned data structure contains the proper
  2083.       signature at offset 00h, but not at offset 08h
  2084.  
  2085. Format of data structure:
  2086. Offset    Size    Description
  2087.  00h    WORD    signature ABCDh
  2088.  02h    DWORD    pointer to info structure???
  2089.  06h  2 BYTEs    ???
  2090.  08h    WORD    signature ABCDh
  2091.  
  2092. Format of info structure:
  2093. Offset    Size    Description
  2094.  00h    WORD    driver version
  2095.  02h  8 BYTEs    ???
  2096.  0Ah    WORD    segment of ???
  2097.     ???
  2098. --------M-330072BXABCD-----------------------
  2099. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2100.     AX = 0072h
  2101.     BX = ABCDh
  2102. Return: ???
  2103. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2104. --------M-330073BXCDEF-----------------------
  2105. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET BUTTON ASSIGNMENTS
  2106.     AX = 0073h
  2107.     BX = CDEFh
  2108.     ES:DX -> 3-byte buffer for button assignments
  2109. Return: CX = number of buttons???
  2110.     ES:DX buffer filled (default is "LMR")
  2111. Note:    also supported by Genius Mouse 9.06
  2112. SeeAlso: AX=0067h
  2113. --------M-3300A1-----------------------------
  2114. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - ???
  2115.     AX = 00A1h
  2116.     ???
  2117. Return: ???
  2118. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2119.       TRUEDOX Technology Corporation
  2120. SeeAlso: AX=006Ch"TRUEDOX",AX=00A6h,AX=0666h
  2121. --------M-3300A6-----------------------------
  2122. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - ???
  2123.     AX = 00A6h
  2124.     BL = ???
  2125. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2126.       TRUEDOX Technology Corporation
  2127. SeeAlso: AX=00A6h,AX=0666h
  2128. --------M-33012E-----------------------------
  2129. INT 33 - MS MOUSE v8.10+ - ???
  2130.     AX = 012Eh
  2131.     BL = ???
  2132. Return: AX = 0000h
  2133. Note:    not supported by Logitech driver v6.10
  2134. SeeAlso: AX=002Eh,AX=022Eh
  2135. --------M-33022E-----------------------------
  2136. INT 33 - MS MOUSE v8.10+ - ???
  2137.     AX = 022Eh
  2138.     BL = ???
  2139. Return: AX = 0000h
  2140. Note:    not supported by Logitech driver v6.10
  2141. SeeAlso: AX=002Eh,AX=012Eh
  2142. --------M-330666-----------------------------
  2143. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - ???
  2144.     AX = 0666h
  2145. Return: DX:AX -> ASCII sig "Copyright 1987-1992 TRUEDOX Technology Corporation"
  2146. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2147.       TRUEDOX Technology Corporation
  2148. SeeAlso: AX=004Dh,AX=00A6h,AX=0666h
  2149. --------M-33136C-----------------------------
  2150. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2151.     AX = 136Ch
  2152.     BX = ???
  2153. Return: AX = ???
  2154.     BX = ???
  2155. --------M-33146C-----------------------------
  2156. INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
  2157.     AX = 146Ch
  2158.     BL = function
  2159.         00h set ???
  2160.         BH = new value (zero/nonzero to clear/set)
  2161.         else get ???
  2162.         Return: ???
  2163. --------M-33156C-----------------------------
  2164. INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
  2165.     AX = 156Ch
  2166. Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
  2167.     ES:SI -> version string, terminated with CRLF
  2168. --------M-33166C-----------------------------
  2169. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2170.     AX = 166Ch
  2171.     BL = ???
  2172.         00h ???
  2173.         01h ???
  2174.         other ???
  2175.         BH = new value of ???
  2176.         Return: AX = FFFFh
  2177. --------M-33176C-----------------------------
  2178. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2179.     AX = 176Ch
  2180.     ???
  2181. Return: ???
  2182. --------M-33186C-----------------------------
  2183. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2184.     AX = 186Ch
  2185.     ???
  2186. Return: ???
  2187. --------M-33196C-----------------------------
  2188. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2189.     AX = 196Ch
  2190.     ???
  2191. Return: ???
  2192. --------M-331A6C-----------------------------
  2193. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2194.     AX = 1A6Ch
  2195. Return: AX = FFFFh
  2196.     BX = ???
  2197.     CX = ???
  2198. SeeAlso: AX=1B6Ch
  2199. --------M-331B6C-----------------------------
  2200. INT 33 - LOGITECH MOUSE v6.10+ - SET ???
  2201.     AX = 1B6Ch
  2202.     BX = new value for ??? (0000h-0003h)
  2203. Return: AX = FFFFh
  2204. SeeAlso: AX=1A6Ch
  2205. --------M-331C6C-----------------------------
  2206. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2207.     AX = 1C6Ch
  2208.     BX = ???
  2209.         <42h ???
  2210.         =42h ???
  2211.         >42h ???
  2212.             ES:DI -> ???
  2213.             Return: AX = ???
  2214. --------M-331D6C-----------------------------
  2215. INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
  2216.     AX = 1D6Ch
  2217. Return: BX = direction (0=north, 1=south, 2=east, 3=west)
  2218. SeeAlso: AX=1E6Ch
  2219. --------M-331E6C-----------------------------
  2220. INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
  2221.     AX = 1E6Ch
  2222.     BX = direction (0=north, 1=south, 2=east, 3=west)
  2223. SeeAlso: AX=1D6Ch
  2224. --------M-331F6C-----------------------------
  2225. INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
  2226.     AX = 1F6Ch
  2227. Return: BX = 0=off, 1=on
  2228.     CX = 1=low, 2=high
  2229. SeeAlso: AX=002Ch,AX=236Ch
  2230. --------M-33206C-----------------------------
  2231. INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
  2232.     AX = 206Ch
  2233.     BX = parameter (00h = right, FFh = left)
  2234. SeeAlso: AX=216Ch
  2235. --------M-33216C-----------------------------
  2236. INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
  2237.     AX = 216Ch
  2238. Return: BX = parameter (00h = right, FFh = left)
  2239. SeeAlso: AX=206Ch
  2240. --------M-33226C-----------------------------
  2241. INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
  2242.     AX = 226Ch
  2243. Note:    this only frees memory; does not restore hooked interrupts
  2244. --------M-33236C-----------------------------
  2245. INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
  2246.     AX = 236Ch
  2247.     BX = 0=off, 1=on
  2248.     CX = 1=low, 2=high
  2249. SeeAlso: AX=002Ch,AX=1F6Ch
  2250. --------M-33246C-----------------------------
  2251. INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
  2252.     AX = 246Ch
  2253.     ES:DX -> parameter table buffer (see below)
  2254. Return: AX = FFFFh if driver installed for serial mouse
  2255. SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
  2256.  
  2257. Format of parameter table:
  2258. Offset    Size    Description
  2259.  00h    WORD    baud rate divided by 100  (serial mouse only)
  2260.  02h    WORD    emulation          (serial mouse only)
  2261.  04h    WORD    report rate          (serial mouse only)
  2262.  06h    WORD    firmware revision      (serial mouse only)
  2263.  08h    WORD    00h              (serial mouse only)
  2264.  0Ah    WORD    port              (serial mouse only)
  2265.  0Ch    WORD    physical buttons
  2266.  0Eh    WORD    logical buttons
  2267. --------M-33256CBX0000-----------------------
  2268. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
  2269.     AX = 256Ch
  2270.     BX = 0000h
  2271.     CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
  2272. Return: AX = FFFFh if driver installed for serial mouse
  2273. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
  2274. --------M-33256CBX0001-----------------------
  2275. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
  2276.     AX = 256Ch
  2277.     BX = 0001h
  2278.     CX = emulation
  2279.         00h 5 byte packed binary
  2280.         01h 3 byte packed binary
  2281.         02h hexadecimal
  2282.         03h relative bit pad
  2283.         04h not supported
  2284.         05h MM Series
  2285.         06h not supported
  2286.         07h Microsoft
  2287. Return: AX = FFFFh if driver installed for serial mouse
  2288. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
  2289. --------M-33256CBX0002-----------------------
  2290. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
  2291.     AX = 256Ch
  2292.     BX = 0002h
  2293.     CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
  2294. Return: AX = FFFFh if driver installed for serial mouse
  2295. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
  2296. --------M-33256CBX0003-----------------------
  2297. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
  2298.     AX = 256Ch
  2299.     BX = 0003h
  2300.     CX = port (1, 2)
  2301. Return: AX = FFFFh if driver installed for serial mouse
  2302. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
  2303. --------M-33256CBX0004-----------------------
  2304. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
  2305.     AX = 256Ch
  2306.     BX = 0004h
  2307.     CX = buttons (2, 3)
  2308. Return: AX = FFFFh if driver installed for serial mouse
  2309. SeeAlso: AX=246Ch,AX=276Ch
  2310. --------M-33266C-----------------------------
  2311. INT 33 - LOGITECH MOUSE - GET VERSION???
  2312.     AX = 266Ch
  2313. Return: BX = 'SS'
  2314.     CH = '4'  major version number
  2315.     CL = '1'  minor version number
  2316. SeeAlso: AX=006Dh
  2317. --------M-33276C-----------------------------
  2318. INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
  2319.     AX = 276Ch
  2320. SeeAlso: AX=256Ch
  2321. --------M-333000-----------------------------
  2322. INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
  2323.     AX = 3000h
  2324. Return: AX = FFFFh if installed
  2325.         BX = version number (BH = major, BL = minor)
  2326. Program: SMD is a programmer's library by Andy Hakim which provides a
  2327.       graphics-style mouse cursor in text mode.  PrecisePoint is an
  2328.       SMD-based TSR which replaces the block mouse cursor in text
  2329.       applications.
  2330. SeeAlso: AX=0000h,AX=3001h,AX=3003h
  2331. --------M-333001-----------------------------
  2332. INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
  2333.     AX = 3001h
  2334. Return: AX = status (0000h = disabled, 0001h = enabled)
  2335. Note:    SMD remains disabled if running under Desqview or in graphics mode
  2336. SeeAlso: AX=0001h,AX=0002h,AX=3002h
  2337. --------M-333002-----------------------------
  2338. INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
  2339.     AX = 3002h
  2340. Return: AX = status (0000h = disabled, 0001h = enabled)
  2341. SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
  2342. --------M-333003-----------------------------
  2343. INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
  2344.     AX = 3003h
  2345.     BL = data structure selector
  2346.         00h Primary Bitmap (used for 25 line mode)
  2347.         01h Secondary Bitmap (used for 43/50 line modes)
  2348.         02h Sacrifice Character Map
  2349.         03h Program Information
  2350. Return: ES:DX -> selected data structure
  2351. SeeAlso: AX=3000h
  2352.  
  2353. Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]
  2354. Offset    Size    Description
  2355.  00h    BYTE    vertical size of bitmap (00h - 10h)
  2356.  01h    BYTE    horizontal size of bitmap (00h - 10h)
  2357.  02h    BYTE    vertical hotspot position (00h - 10h)
  2358.  03h    BYTE    horizontal hotspot position (00h - 10h)
  2359.  04h 16 WORDs    cursor bitmap data
  2360.  14h 16 WORDs    screen bitmap data
  2361.  
  2362. Format of Sacrifice Character Map [SMD_SMAP_STRUCT]
  2363. Offset    Size    Description
  2364.  00h    BYTE    bytes are character values (00h-FFh) used in place of the
  2365.  01h    BYTE    actual character for the corresponding position on the screen
  2366.  02h    BYTE         +--------------+      occupied by part or all of the mouse
  2367.  03h    BYTE         | 0h | 1h | 2h |      cursor
  2368.  04h    BYTE         |----+----+----|
  2369.  05h    BYTE         | 3h | 4h | 5h |
  2370.  06h    BYTE         |----+----+----|
  2371.  07h    BYTE         | 6h | 7h | 8h |
  2372.  08h    BYTE         +--------------+
  2373.  
  2374. Format of Program Information [SMD_INFO_STRUCT]
  2375. Offset    Size    Description
  2376.  00h    WORD    segment of old interrupt 33h handler
  2377.  02h    WORD    offset of old interrupt 33h handler
  2378.  04h    WORD    PSP of SMD
  2379.  06h    BYTE    ENABLE/DISABLE manual setting status
  2380.  07h    BYTE    ENABLE/DISABLE internal usage status
  2381. --------M-333004-----------------------------
  2382. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2383.     AX = 3004h
  2384. SeeAlso: AX=3000h
  2385. --------M-333005-----------------------------
  2386. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2387.     AX = 3005h
  2388. SeeAlso: AX=3000h
  2389. --------M-334F00-----------------------------
  2390. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2391.     AX = 4F00h
  2392. Return: AX = 004Fh if supported
  2393.     BX = ???
  2394.     ES:DI -> ???
  2395. SeeAlso: AX=4F01h
  2396. --------M-334F01-----------------------------
  2397. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2398.     AX = 4F01h
  2399.     ES = ???
  2400. Return: AX = 004Fh if supported
  2401.     ES:DI -> ???
  2402. SeeAlso: AX=4F00h
  2403. --------T-33FFE6-----------------------------
  2404. INT 33 - Switch-It v3.23 - GET ??? PROGRAM
  2405.     AX = FFE6h
  2406.     CX = length of buffer
  2407.     ES:DI -> buffer for program name
  2408. Return: ES:DI buffer filled
  2409. Program: Switch-It is a task switcher supporting up to 100 programs
  2410.       simultaneously by Better Software Technology, Inc.
  2411. --------T-33FFE7-----------------------------
  2412. INT 33 - Switch-It v3.23 - GET ???
  2413.     AX = FFE7h
  2414. Return: AX = ???
  2415. --------T-33FFE8-----------------------------
  2416. INT 33 - Switch-It v3.23 - ???
  2417.     AX = FFE8h
  2418.     CX = length of name including terminating NUL
  2419.     DS:SI -> ASCIZ program pathname
  2420. --------T-33FFE9-----------------------------
  2421. INT 33 - Switch-It v3.23 - SET ???
  2422.     AX = FFE9h
  2423.     BX = ???
  2424. --------T-33FFEA-----------------------------
  2425. INT 33 - Switch-It v3.23 - SET ???
  2426.     AX = FFEAh
  2427.     BL = ???
  2428. --------T-33FFEB-----------------------------
  2429. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2430.     AX = FFEBh
  2431. --------T-33FFEC-----------------------------
  2432. INT 33 - Switch-It v3.23 - SET ???
  2433.     AX = FFECh
  2434.     BL = ???
  2435. --------T-33FFED-----------------------------
  2436. INT 33 - Switch-It v3.23 - GET ???
  2437.     AX = FFEDh
  2438. Return: AX = ??? (0001h)
  2439.     BX = ???
  2440. Program: Switch-It is a task switcher supporting up to 100 programs
  2441.       simultaneously by Better Software Technology, Inc.
  2442. --------T-33FFEE-----------------------------
  2443. INT 33 - Switch-It v3.23 - GET ???
  2444.     AX = FFEEh
  2445. Return: AX = ???
  2446. --------T-33FFEF-----------------------------
  2447. INT 33 - Switch-It v3.23 - GET ???
  2448.     AX = FFEFh
  2449. Return: BX:AX -> ???
  2450. --------T-33FFF0-----------------------------
  2451. INT 33 - Switch-It v3.23 - SET ???
  2452.     AX = FFF0h
  2453.     BL = ???
  2454. --------T-33FFF1-----------------------------
  2455. INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
  2456.     AX = FFF1h
  2457. Return: BX:AX -> ASCIZ pathname of configuration file
  2458. Program: Switch-It is a task switcher supporting up to 100 programs
  2459.       simultaneously by Better Software Technology, Inc.
  2460. --------T-33FFF2-----------------------------
  2461. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2462.     AX = FFF2h
  2463. Return: AL = 01h
  2464. --------T-33FFF3-----------------------------
  2465. INT 33 - Switch-It v3.23 - GET ???
  2466.     AX = FFF3h
  2467. Return: AX = ???
  2468. --------T-33FFF4-----------------------------
  2469. INT 33 - Switch-It v3.23 - SET ???
  2470.     AX = FFF4h
  2471.     BX = ???
  2472.     CX = ???
  2473. --------T-33FFF5-----------------------------
  2474. INT 33 - Switch-It v3.23 - GET ???
  2475.     AX = FFF5h
  2476. Return: AX = ???
  2477. --------T-33FFF6-----------------------------
  2478. INT 33 - Switch-It v3.23 - GET ???
  2479.     AX = FFF6h
  2480. Return: AX = ???
  2481. --------T-33FFF7-----------------------------
  2482. INT 33 - Switch-It v3.23 - GET ???
  2483.     AX = FFF7h
  2484.     BX = index of ???
  2485. Return: AX = ???
  2486. --------T-33FFF8-----------------------------
  2487. INT 33 - Switch-It v3.23 - ???
  2488.     AX = FFF8h
  2489.     BX = ???
  2490.     CX = length of program name, including terminating NUL
  2491.     DS:SI -> ASCIZ program pathname
  2492. Return: ???
  2493. Program: Switch-It is a task switcher supporting up to 100 programs
  2494.       simultaneously by Better Software Technology, Inc.
  2495. --------T-33FFF9-----------------------------
  2496. INT 33 - Switch-It v3.23 - NOP
  2497.     AX = FFF9h
  2498. --------T-33FFFA-----------------------------
  2499. INT 33 - Switch-It v3.23 - SET ???
  2500.     AX = FFFAh
  2501.     BX = index of program
  2502. SeeAlso: AX=FFFBh,AX=FFFCh
  2503. --------T-33FFFB-----------------------------
  2504. INT 33 - Switch-It v3.23 - GET ???
  2505.     AX = FFFBh
  2506.     BX = index of program
  2507. Return: AX = ??? (0000h or 0001h)
  2508. SeeAlso: AX=FFFAh,AX=FFFCh
  2509. --------T-33FFFC-----------------------------
  2510. INT 33 - Switch-It v3.23 - CLEAR ???
  2511.     AX = FFFCh
  2512.     BX = index of program
  2513. SeeAlso: AX=FFFAh,AX=FFFCh
  2514. --------T-33FFFD-----------------------------
  2515. INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
  2516.     AX = FFFDh
  2517. Return: AX = first available segment???
  2518.     BX = paragraph of top of conventional memory
  2519.     DX = PSP segment of SI.EXE
  2520. --------T-33FFFE-----------------------------
  2521. INT 33 - Switch-It v3.23 - INSTALLATION CHECK
  2522.     AX = FFFEh
  2523. Return: BX = ???
  2524.     DX = 5349h ("SI")
  2525. --------T-33FFFF-----------------------------
  2526. INT 33 - Switch-It v3.23 - ???
  2527.     AX = FFFFh
  2528.     BX = ???
  2529. Program: Switch-It is a task switcher supporting up to 100 programs
  2530.       simultaneously by Better Software Technology, Inc.
  2531. --------r-34---------------------------------
  2532. INT 34 - FLOATING POINT EMULATION - OPCODE D8h
  2533. Desc:    this interrupt is used to emulate floating-point instructions with
  2534.       an opcode of D8h
  2535. Note:    the floating-point emulators in Borland and Microsoft languages and
  2536.       Lahey FORTRAN use this interrupt
  2537. SeeAlso: INT 35,INT 3E
  2538. --------r-35---------------------------------
  2539. INT 35 - FLOATING POINT EMULATION - OPCODE D9h
  2540. Desc:    this interrupt is used to emulate floating-point instructions with
  2541.       an opcode of D9h
  2542. Note:    the floating-point emulators in Borland and Microsoft languages and
  2543.       Lahey FORTRAN use this interrupt
  2544. SeeAlso: INT 34,INT 36
  2545. --------r-36---------------------------------
  2546. INT 36 - FLOATING POINT EMULATION - OPCODE DAh
  2547. Desc:    this interrupt is used to emulate floating-point instructions with
  2548.       an opcode of DAh
  2549. Note:    the floating-point emulators in Borland and Microsoft languages and
  2550.       Lahey FORTRAN use this interrupt
  2551. SeeAlso: INT 35,INT 37
  2552. --------r-37---------------------------------
  2553. INT 37 - FLOATING POINT EMULATION - OPCODE DBh
  2554. Desc:    this interrupt is used to emulate floating-point instructions with
  2555.       an opcode of DBh
  2556. Note:    the floating-point emulators in Borland and Microsoft languages and
  2557.       Lahey FORTRAN use this interrupt
  2558. SeeAlso: INT 36,INT 38
  2559. --------r-38---------------------------------
  2560. INT 38 - FLOATING POINT EMULATION - OPCODE DCh
  2561. Desc:    this interrupt is used to emulate floating-point instructions with
  2562.       an opcode of DCh
  2563. Note:    the floating-point emulators in Borland and Microsoft languages and
  2564.       Lahey FORTRAN use this interrupt
  2565. SeeAlso: INT 37,INT 39
  2566. --------O-38---------------------------------
  2567. INT 38 - PC-MOS/386 v3.0 - API
  2568. Note:    this API was been moved to INT D4h sometime between versions 3.0 and
  2569.       5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
  2570.       12h
  2571. SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
  2572. --------r-39---------------------------------
  2573. INT 39 - FLOATING POINT EMULATION - OPCODE DDh
  2574. Desc:    this interrupt is used to emulate floating-point instructions with
  2575.       an opcode of DDh
  2576. Note:    the floating-point emulators in Borland and Microsoft languages and
  2577.       Lahey FORTRAN use this interrupt
  2578. SeeAlso: INT 38,INT 3A
  2579. --------r-3A---------------------------------
  2580. INT 3A - FLOATING POINT EMULATION - OPCODE DEh
  2581. Desc:    this interrupt is used to emulate floating-point instructions with
  2582.       an opcode of DEh
  2583. Note:    the floating-point emulators in Borland and Microsoft languages and
  2584.       Lahey FORTRAN use this interrupt
  2585. SeeAlso: INT 39,INT 3B
  2586. --------r-3B---------------------------------
  2587. INT 3B - FLOATING POINT EMULATION - OPCODE DFh
  2588. Desc:    this interrupt is used to emulate floating-point instructions with
  2589.       an opcode of DFh
  2590. Note:    the floating-point emulators in Borland and Microsoft languages and
  2591.       Lahey FORTRAN use this interrupt
  2592. SeeAlso: INT 3A,INT 3C
  2593. --------r-3C---------------------------------
  2594. INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
  2595. Notes:    the floating-point emulators in Borland and Microsoft languages and
  2596.       Lahey FORTRAN use this interrupt
  2597.     the generated code is  CD 3C xy mm ....
  2598.       where xy is a modified ESC instruction and mm is the modR/M byte.
  2599.       The xy byte appears to be encoded as
  2600.         s s 0 1 1 x x x      or    s s 0 0 0 x x x
  2601.       where "ss" specifies the segment override:
  2602.         00 -> DS:
  2603.         01 -> SS:
  2604.         10 -> CS:
  2605.         11 -> ES:
  2606. SeeAlso: INT 3B,INT 3D
  2607. --------r-3D---------------------------------
  2608. INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
  2609. Notes:    the floating-point emulators in Borland and Microsoft languages and
  2610.       Lahey FORTRAN use this interrupt
  2611.     this vector is modified but not restored by Direct Access v4.0, and
  2612.       may be left dangling by other programs written with the same version
  2613.       of compiled BASIC
  2614. SeeAlso: INT 3C,INT 3E
  2615. --------r-3E---------------------------------
  2616. INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
  2617. Notes:    the two bytes following the INT 3E instruction are the subcode and
  2618.       a NOP (90h), except for subcodes DCh and DEh, where the second byte
  2619.       is a register count (01h-08h)
  2620.     this vector is modified but not restored by Direct Access v4.0, and
  2621.       may be left dangling by other programs written with the same version
  2622.       of compiled BASIC
  2623. SeeAlso: INT 3D
  2624.  
  2625. Values for subcode:
  2626. Subcode        Function
  2627.  DCh    load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
  2628.       top of the stack prior to the INT 3E with the 8087 register contents
  2629.  DEh    load 8087 registers from top of 8086 stack; ST0 is furthest from top
  2630.       of 8086 stack
  2631.  E0h    round TOS and R1 to single precision, compare, pop twice
  2632.       returns AX=8087 status word, FLAGS=8087 condition bits
  2633.  E2h    round TOS and R1 to double precision, compare, pop twice
  2634.       returns AX=8087 status word, FLAGS=8087 condition bits
  2635.     Note: buggy in TPas5.5, because it sets the 8087 precision control
  2636.       field to the undocumented value 01h; this results in actually
  2637.       rounding to single precision
  2638.  E4h    compare TOS/R1 with two POP's
  2639.       returns FLAGS=8087 condition bits
  2640.  E6h    compare TOS/R1 with POP
  2641.       returns FLAGS=8087 condition bits
  2642.  E8h    FTST (check TOS value)
  2643.       returns FLAGS=8087 condition bits
  2644.  EAh    FXAM (check TOS value)
  2645.       returns AX=8087 status word
  2646.  ECh    sine(ST0)
  2647.  EEh    cosine(ST0)
  2648.  F0h    tangent(ST0)
  2649.  F2h    arctangent(ST0)
  2650.  F4h    ST0 = ln(ST0)
  2651.  F6h    ST0 = log2(ST0)
  2652.  F8h    ST0 = log10(ST0)
  2653.  FAh    ST0 = e**ST0
  2654.  FCh    ST0 = 2**ST0
  2655.  FEh    ST0 = 10**ST0
  2656. --------r-3F---------------------------------
  2657. INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
  2658. Notes:    INT 3F is the default, and may be overridden while linking
  2659.     this vector is modified but not restored by Direct Access v4.0, and
  2660.       may be left dangling by other programs written with the same version
  2661.       of compiled BASIC
  2662. SeeAlso: INT FE"OVERLAY"
  2663. --------r-3F---------------------------------
  2664. INT 3F - Microsoft Dynamic Link Library manager
  2665. SeeAlso: INT 21/AH=4Bh
  2666. --------B-40---------------------------------
  2667. INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
  2668. SeeAlso: INT 13,INT 47"SuperBIOS",INT 63
  2669. --------h-40---------------------------------
  2670. INT 40 - Z100 - Master 8259 - Parity error or S100 error
  2671. SeeAlso: INT 41"Z100",INT FF"Z100"
  2672. --------O-40---------------------------------
  2673. INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
  2674.     AL = operation
  2675.         00h close file
  2676.         40h open file for reading
  2677.         80h open file for writing
  2678.         C0h open file for random access
  2679.     DS:BX -> CR-terminated filename
  2680. Return: AL = file handle (00h if file closed or could not be opened)
  2681. Note:    the Acorn BBC Master 512 is an 80186-based add-on board for the
  2682.       6502-based Master 128 which uses the original CPU as an I/O processor
  2683. SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
  2684. --------B-41---------------------------------
  2685. INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
  2686. Note:    the default parameter table array is located at F000h:E401h in 100%
  2687.       compatible BIOSes; the pointer may be overridden by the hard disk
  2688.       controller's BIOS to support drive formats unknown to the ROM BIOS
  2689. SeeAlso: INT 13/AH=09h,INT 1E,INT 46
  2690.  
  2691. Format of fixed disk parameters:
  2692. Offset    Size    Description
  2693.  00h    WORD    number of cylinders
  2694.  02h    BYTE    number of heads
  2695.  03h    WORD    starting reduced write current cylinder (XT only, 0 for others)
  2696.  05h    WORD    starting write precompensation cylinder number
  2697.  07h    BYTE    maximum ECC burst length (XT only)
  2698.  08h    BYTE    control byte
  2699.            bits 0-2: drive option (XT only, 0 for others)
  2700.            bit 3:    set if more than 8 heads (AT and later only)
  2701.            bit 4:    always 0
  2702.            bit 5:    set if manufacturer's defect map on max cylinder+1
  2703.                  (AT and later only)
  2704.            bit 6:    disable ECC retries
  2705.            bit 7:    disable access retries
  2706.  09h    BYTE    standard timeout (XT only, 0 for others)
  2707.  0Ah    BYTE    formatting timeout (XT and WD1002 only, 0 for others)
  2708.  0Bh    BYTE    timeout for checking drive (XT and WD1002 only, 0 for others)
  2709.  0Ch    WORD    cylinder number of landing zone (AT and later only)
  2710.  0Eh    BYTE    number of sectors per track (AT and later only)
  2711.  0Fh    BYTE    reserved
  2712. --------h-41---------------------------------
  2713. INT 41 - Z100 - Master 8259 - Processor Swap
  2714. SeeAlso: INT 40"Z100",INT 42"Z100"
  2715. --------O-41---------------------------------
  2716. INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
  2717.     AL = function
  2718.         01h put bytes sequentially
  2719.         02h put bytes, ignoring sequential pointer
  2720.         03h get bytes sequentially
  2721.         04h get bytes, ignoring sequential pointer
  2722.         05h get media title and boot option
  2723.         06h get current device and directory
  2724.         07h get current library and device
  2725.         08h search directory
  2726.     DS:BX -> control block (see below)
  2727. Return: CF clear if successful
  2728.     CF set on error
  2729.     AL = 00h if operation attempted
  2730.     AL unchanged if unsupported function
  2731. SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
  2732.  
  2733. Format of control block:
  2734. Offset    Size    Description
  2735.  00h    BYTE    file handle
  2736.  01h    DWORD    pointer to data in either I/O processor or Tube processor
  2737.  05h    DWORD    number of bytes to be transferred
  2738.  09h    DWORD    transfer address
  2739. --------G-4112-------------------------------
  2740. INT 41 P - MS Windows debugging kernel - "OutputDebugString"
  2741.     AH = 12h
  2742.     ???
  2743. Return: ???
  2744. SeeAlso: AH=50h
  2745. --------G-4150-------------------------------
  2746. INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
  2747.     AH = 50h
  2748.     ???
  2749. Return: ???
  2750. SeeAlso: AH=12h
  2751. --------V-42---------------------------------
  2752. INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
  2753. SeeAlso: INT 10
  2754. Note:    not used by PS/2 built-in VGA or XGA
  2755. --------h-42---------------------------------
  2756. INT 42 - Z100 - Master 8259 - Timer
  2757. SeeAlso: INT 41"Z100",INT 43"Z100"
  2758. --------b-42---------------------------------
  2759. INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
  2760. Note:    if the second WD1002 controller in the system finds INT 40 already in
  2761.       use, it uses this vector to cascade to the first controller's BIOS
  2762. SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
  2763. --------O-42---------------------------------
  2764. INT 42 - Acorn BBS Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
  2765.     AL = byte to be written
  2766.     BH = file handle
  2767. Return: flags destroyed
  2768. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  2769. --------V-43---------------------------------
  2770. INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
  2771.    points at graphics data for characters 00h-7Fh of the current font
  2772. SeeAlso: INT 1F,INT 44"VIDEO"
  2773. --------h-43---------------------------------
  2774. INT 43 - Z100 - Master 8259 - Slave 8259 input
  2775. Note:    slave runs in special fully nested mode
  2776. SeeAlso: INT 42"Z100",INT 44"Z100"
  2777. --------O-43---------------------------------
  2778. INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
  2779.     BH = file handle
  2780. Return: CF clear if successful
  2781.         AL = byte read from file
  2782.     CF set on error
  2783. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
  2784. --------V-44---------------------------------
  2785. INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
  2786.    points at graphics data for current character font
  2787. SeeAlso: INT 1F,INT 43"VIDEO"
  2788. --------N-44---------------------------------
  2789. INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
  2790. --------I-44---------------------------------
  2791. INT 44 - IBM 3270-PC High Level Language API
  2792.     DS:SI -> parameter control block
  2793. --------h-44---------------------------------
  2794. INT 44 - Z100 - Master 8259 - Serial A
  2795. SeeAlso: INT 43"Z100",INT 45"Z100"
  2796. --------v-44---------------------------------
  2797. INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
  2798. SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
  2799. --------O-4400-------------------------------
  2800. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  2801.     AH = 00h
  2802.     AL = function
  2803.         00h get current filing system
  2804.         Return: AL = filing system (see below)
  2805.         01h get address of commandline tail
  2806.         Return: BX buffer filled with address of command tail in I/O
  2807.                 processor address space (use INT 4A/AL=05h to
  2808.                 retrieve)
  2809.         FFh flush all files onto secondary storage
  2810.     BX -> 4-byte data buffer
  2811. Note:    the commandline tail is terminated with a carriage return (0Dh)
  2812. SeeAlso: INT 40"Acorn",INT 45"Acorn"
  2813.  
  2814. Values for filing system:
  2815.  00h    none
  2816.  01h    1200 bps cassette
  2817.  02h    300 bps cassette
  2818.  03h    ROM FS
  2819.  04h    DFS
  2820.  05h    ANFS/NFS
  2821.  06h    TFS
  2822.  08h    ADFS
  2823. --------O-44---------------------------------
  2824. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  2825.     AH = nonzero file handle
  2826.         AL = function
  2827.         00h get sequential pointer for file
  2828.         01h set sequential pointer for file
  2829.         02h get length of file
  2830.     BX -> 4-byte data buffer
  2831. Return: BX buffer updated if appropriate
  2832. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
  2833. --------h-45---------------------------------
  2834. INT 45 - Z100 - Master 8259 - Serial B
  2835. SeeAlso: INT 44"Z100",INT 46"Z100"
  2836. --------O-45---------------------------------
  2837. INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
  2838.     AL = function
  2839.         00h save block of memory as file
  2840.         01h update directory entry for existing file
  2841.         02h set load address for existing file
  2842.         03h set execution address for existing file
  2843.         04h set attributes for existing file
  2844.         05h read directory
  2845.         06h delete file
  2846.         FFh load file
  2847.     DS:BX -> control block (see below)
  2848. Return: FLAGS destroyed
  2849.     AL = file type
  2850.         00h not found
  2851.         01h file found
  2852.         02h directory found
  2853.         FFh protected file
  2854. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
  2855.  
  2856. Format of control block:
  2857. Offset    Size    Description
  2858.  00h    WORD    address of CR-terminated filename
  2859.  02h    DWORD    load address of file
  2860.  06h    DWORD    execution address of file
  2861.  0Ah    DWORD    start address of data to save
  2862.  0Eh    DWORD    end address of data to save, or file attributes
  2863.         file attributes in low byte (see below)
  2864.         other three bytes are filing-system specific file attributes
  2865.  
  2866. Bitfields for file attributes:
  2867.  bit 0    no owner read access
  2868.  bit 1    no owner write access
  2869.  bit 2    not executable by owner
  2870.  bit 3    not deletable by owner
  2871.  bit 4    no public read access
  2872.  bit 5    no public write access
  2873.  bit 6    not executable with public access
  2874.  bit 7    not deletable with public access
  2875. --------B-46---------------------------------
  2876. INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
  2877. SeeAlso: INT 13/AH=09h,INT 41
  2878. --------h-46---------------------------------
  2879. INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
  2880. SeeAlso: INT 45"Z100",INT 47"Z100"
  2881. --------O-46---------------------------------
  2882. INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
  2883. Return: CF clear if successful
  2884.         AL = character read
  2885.     CF set on error
  2886.         AL = error code
  2887. SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  2888. --------h-47---------------------------------
  2889. INT 47 - Z100 - Master 8259 - Printer
  2890. SeeAlso: INT 46"Z100",INT 48"Z100"
  2891. --------O-47---------------------------------
  2892. INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
  2893.     AL = character to be written
  2894. Return: FLAGS destroyed
  2895. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
  2896. --------b-47---------------------------------
  2897. INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
  2898. Desc:    used by the second WD1002-27X controller to cascade to the first
  2899.       controller's INT 40
  2900. SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
  2901. ----------478000-----------------------------
  2902. INT 47 - SQL Base - DATABASE ENGINE API
  2903.     AX = 8000h
  2904.     DS:BX -> parameter block, first word is function number
  2905. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  2906. SeeAlso: AX=8001h
  2907.  
  2908. Values for function number:
  2909.  01h    "SQLFINI" initalialize application's use of the database
  2910.  02h    "SQLFDON" application is done using the database
  2911.  03h    "SQLFCON" connect to a cursor/database
  2912.  04h    "SQLFDIS" disconnect from a cursor/database
  2913.  05h    "SQLFCOM" compile a SQL command
  2914.  06h    "SQLFEXE" execute a SQL command
  2915.  07h    "SQLFCEX" compile and execute a SQL command
  2916.  08h    "SQLFCMT" commit a transaction to the database
  2917.  09h    "SQLFDES" describe the items of a SELECT statement
  2918.  0Ah    "SQLFGFI" get fetch information
  2919.  0Bh    "SQLFFBK" fetch previous result row from SELECT statement
  2920.  0Ch    "SQLFFET" fetch next result row from SELECT statement
  2921.  0Dh    "SQLFEFB" enable fetch backwards
  2922.  0Eh    "SQLFPRS" position in result set
  2923.  0Fh    "SQLFURS" undo result set
  2924.  10h    "SQLFNBV" get number of bind variables
  2925.  11h    "SQLFBND" bind data variables
  2926.  12h    "SQLFBNN" bind numerics
  2927.  13h    "SQLFBLN" bind long number
  2928.  14h    "SQLFBLD" bind long data variables
  2929.  15h    "SQLFSRS" start restriction set processing
  2930.  16h    "SQLFRRS" restart restriction set processing
  2931.  17h    "SQLFCRS" close restriction set
  2932.  18h    "SQLFDRS" drop restriction set
  2933.  19h    "SQLFARF" apply Roll Forward journal
  2934.  1Ah    "SQLFERF" end Roll Forward journal
  2935.  1Bh    "SQLFSRF" start Roll Forward journal
  2936.  1Ch    "SQLFSTO" store a compiled SQL command
  2937.  1Dh    "SQLFRET" retrieve a compiled SQL command
  2938.  1Eh    "SQLFDST" drop a stored command
  2939.  1Fh    "SQLFCTY" get command type
  2940.  20h    "SQLFEPO" get error position
  2941.  21h    "SQLFGNR" get number of rows
  2942.  22h    "SQLFNSI" get number of select items
  2943.  23h    "SQLFRBF" get Roll Back flag
  2944.  24h    "SQLFRCD" get return code
  2945.  25h    "SQLFROW" get number of ROWs
  2946.  26h    "SQLFSCN" set cursor name
  2947.  27h    "SQLFSIL" set isolation level
  2948.  28h    "SQLFSLP" set log parameters
  2949.  29h    "SQLFSSB" set select buffer
  2950.  2Ah    "SQLFSSS" set sort space
  2951.  2Bh    "SQLFRLO" read long
  2952.  2Ch    "SQLFWLO" write long
  2953.  2Dh    "SQLFLSK" long seek
  2954.  2Eh    "SQLFGLS" get long size
  2955.  2Fh    "SQLFELO" end long operation
  2956.  30h    "SQLFRBK" roll back a transaction from the database
  2957.  31h    "SQLFERR" error message
  2958.  32h    "SQLFCPY" copy
  2959.  33h    "SQLFR01" reserved
  2960.  34h    "SQLFSYS" system
  2961.  35h    "SQLFSTA" statistics
  2962.  36h    "SQLFR02" reserved
  2963.  37h    "SQLFXAD" extra add
  2964.  38h    "SQLFXCN" extra character to number
  2965.  39h    "SQLFXDA" extra date add
  2966.  3Ah    "SQLFXDP" extra date picture
  2967.  3Bh    "SQLFXDV" extra divide
  2968.  3Ch    "SQLFXML" extra multiply
  2969.  3Dh    "SQLFXNP" extra number picture
  2970.  3Eh    "SQLFXPD" extra picture date
  2971.  3Fh    "SQLFXSB" extra subtract
  2972.  40h    "SQLFINS" install database
  2973.  41h    "SQLFDIN" deinstall database
  2974.  42h    "SQLFDIR" directory of databases
  2975.  43h    "SQLFTIO" timeout
  2976.  44h    "SQLFFQN" get fully qualified column name
  2977.  45h    "SQLFEXP" explain execution plan
  2978.  46h    "SQLFFER" get full error
  2979.  47h    "SQLFBKP" begin online backup
  2980.  48h    "SQLFRDC" read backup data chunk
  2981.  49h    "SQLFEBK" end backup
  2982.  4Ah    "SQLFRES" begin restore from backup
  2983.  4Bh    "SQLFWDC" write backup data chunk for restore
  2984.  4Ch    "SQLFRRD" recover restored database to consistent state
  2985.  4Dh    "SQLFERS" end restore
  2986.  4Eh    "SQLFNRR" return number of result set rows
  2987.  4Fh    "SQLFSTR" start restriction mode
  2988.  50h    "SQLFSPR" stop restriction mode
  2989.  51h    "SQLFCNC" connect 2
  2990.  52h    "SQLFCNR" connect with no recovery
  2991.  53h    "SQLFOMS" set output message size
  2992.  54h    "SQLFIMS" set input message size
  2993.  55h    "SQLFSCP" set cache pages
  2994.  56h    "SQLFDSC" describe items of a SELECT statement (external)
  2995.  57h    "SQLFLAB" get label info for items in SELECT statement
  2996.  58h    "SQLFCBV" clear bind variables
  2997.  59h    "SQLFGET" get database information
  2998.  5Ah    "SQLFSET" set database information
  2999.  5Bh    "SQLFTEC" translate error code
  3000. ----------478001-----------------------------
  3001. INT 47 - SQL Base - GET VERSION NUMBER
  3002.     AX = 8001h
  3003. Return: ???
  3004. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  3005. SeeAlso: AX=8000h
  3006. --------B-48---------------------------------
  3007. INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
  3008. SeeAlso: INT 49"PCjr"
  3009. --------h-48---------------------------------
  3010. INT 48 - Z100 - Slave 8259 - S100 vectored line 0
  3011. SeeAlso: INT 47"Z100",INT 49"Z100"
  3012. --------N-48---------------------------------
  3013. INT 48 - Watstar PC Network data pointer 1
  3014. SeeAlso: INT 49"Watstar"
  3015. --------O-48---------------------------------
  3016. INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
  3017. Return: FLAGS destroyed
  3018. Note:    writes a carriage return (0Dh) followed by a linefeed (0Ah)
  3019. SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
  3020. --------b-48---------------------------------
  3021. INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
  3022. Note:    the second WD1002-27X controller in a system uses the low byte to
  3023.       store the number of drives controlled by the second controller,
  3024.       and the high word for temporary storage during track recalculation;
  3025.       the first controller uses offsets 74h-77h in the BIOS data area
  3026.       (see MEMORY.LST) to store data
  3027. SeeAlso: INT 47"SuperBIOS"
  3028. --------V-48---------------------------------
  3029. INT 48 U - Compaq UILIB.EXE - API
  3030.     AX = function (see below)
  3031.     BX = call type (0002h) (see AX=1A70h)
  3032.     ???
  3033. Return: ???
  3034. Note:    returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
  3035.       listed below
  3036. SeeAlso: AX=1A70h
  3037.  
  3038. Values for function:
  3039.  1000h    1160h    12D0h    1430h    1570h    1680h    17F0h    1920h    1A90h
  3040.  1010h    1170h    12E0h    1440h    1578h    1690h    1800h    1930h    1AA0h
  3041.  1020h    1180h    12F0h    1450h    1580h    16A0h    1810h    1940h
  3042.  1030h    1190h    1300h    1460h    1590h    16B0h    1820h    1950h
  3043.  1040h    11A0h    1310h    1470h    1594h    16C0h    1830h    1960h
  3044.  1050h    11B0h    1320h    1480h    1598h    16D0h    1840h    1970h
  3045.  1060h    11C0h    1330h    1490h    15A0h    16E0h    1848h    1980h
  3046.  1070h    11D0h    1340h    14A0h    15B0h    16F0h    1850h    1990h
  3047.  1080h    11E0h    1350h    14B0h    15C0h    1700h    1860h    19A0h
  3048.  1090h    11F0h    1360h    14B8h    15D0h    1710h    1870h    19B0h
  3049.  1095h    1200h    1370h    14BBh    15D4h    1720h    1878h    19C0h
  3050.  1098h    1210h    1380h    14C0h    15D8h    1730h    1880h    19D0h
  3051.  10A0h    1220h    1390h    14D0h    15E0h    1735h    1890h    19E0h
  3052.  10C0h    1230h    13A0h    14E0h    15F0h    1740h    1898h    19F0h
  3053.  10D0h    1240h    13B0h    14F0h    1600h    1750h    18A0h    1A00h
  3054.  10E0h    1250h    13B8h    1500h    1610h    1770h    18B0h    1A10h
  3055.  10F0h    1260h    13C0h    1508h    1620h    1780h    18C0h    1A20h
  3056.  1100h    1270h    13D0h    1510h    1630h    1790h    18D0h    1A30h
  3057.  1110h    1280h    13E0h    1520h    1640h    17A0h    18E0h    1A40h
  3058.  1120h    1290h    13F0h    1530h    1650h    17B0h    18F0h    1A50h
  3059.  1130h    12A0h    1400h    1540h    1660h    17C0h    1900h    1A60h
  3060.  1140h    12B0h    1410h    1550h    1664h    17D0h    1909h    1A70h
  3061.  1150h    12C0h    1420h    1560h    1670h    17E0h    1910h    1A80h
  3062. --------V-481A70-----------------------------
  3063. INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
  3064.     AX = 1A70h
  3065.     BX = call type (see below)
  3066. Return: CX = 5649h ('VI') if installed
  3067.     DX = 4557h ('EW') if installed
  3068.         AX = version??? (0106h)
  3069.  
  3070. Values for call type:
  3071.  0000h    near
  3072.  0001h    far
  3073.  0002h    INT (only valid call type when using INT 48)
  3074.  0003h    near
  3075. --------B-49---------------------------------
  3076. INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
  3077. SeeAlso: INT 48"PCjr"
  3078.  
  3079. Format of translation table:
  3080. Offset    Size    Description
  3081.  00h    BYTE    number of nonkeyboard scancodes in the table
  3082.  01h  N WORDs    high byte 00h (NUL) byte scancode with low order byte
  3083.         representing the scancode mapped values relative to their
  3084.         input values within the range of 56h through 7Eh
  3085. --------h-49---------------------------------
  3086. INT 49 - Z100 - Slave 8259 - S100 vectored line 1
  3087. SeeAlso: INT 48"Z100",INT 4A"Z100"
  3088. --------V-49---------------------------------
  3089. INT 49 - Texas Instruments PC - VIDEO I/O???
  3090.     apparently provides direct video display on the TI Professional PC
  3091. --------N-49---------------------------------
  3092. INT 49 - Watstar PC Network data pointer 2
  3093. SeeAlso: INT 48"Watstar"
  3094. --------O-49---------------------------------
  3095. INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
  3096.     AL = character to be written
  3097. Return: FLAGS destroyed
  3098. Note:    converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
  3099. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
  3100. --------a-490001-----------------------------
  3101. INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
  3102.     AX = 0001h
  3103. Return: AX = status (see below)
  3104.     BX,CX,DX destroyed
  3105. Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
  3106.       providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
  3107. Note:    INT 49 is the default, but may be overridden on the commandline.  The
  3108.       actual interrupt in use may be found by searching for the signature
  3109.       "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
  3110.       the interrupt handler (this is also the installation check).    MAGic
  3111.       uses CodeRunneR, which places the signature "RT" at offset 0000h in
  3112.       the interrupt handler's segment, followed by MAGic's TSR ID of
  3113.       "VMAG".
  3114. SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
  3115. Index:    installation check;MAGic
  3116.  
  3117. Values for status:
  3118.  0000h    cannot magnify current video mode
  3119.  0002h    magnified (text mode)
  3120.  0003h    magnified (graphics mode)
  3121.  FFFDh    function works only in magnified mode
  3122.  FFFFh    MAGic busy, retry later
  3123. --------a-490002-----------------------------
  3124. INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
  3125.     AX = 0002h
  3126. Return: AX = status (see AX=0001h)
  3127.     BX,CX,DX destroyed
  3128. SeeAlso: AX=0001h
  3129. --------a-490003-----------------------------
  3130. INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
  3131.     AX = 0003h
  3132.     BX = vertical position (character row [text] or pixel row [graphics])
  3133.     DX = horizontal position (char column [text] or 8-pixel units [gr])
  3134. Return: AX = status
  3135.         0000h successful
  3136.         FFFFh MAGic busy, retry later
  3137.     BX,CX,DX destroyed
  3138. Note:    window is not moved if the position is inside the current window
  3139. SeeAlso: AX=0001h,AX=0004h,AX=0005h
  3140. --------a-490004-----------------------------
  3141. INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
  3142.     AX = 0004h
  3143.     BX = vertical position of upper left corner
  3144.     DX = horizontal position
  3145. Return: AX = status (see AX=0003h)
  3146.     BX,CX,DX destroyed
  3147. SeeAlso: AX=0001h,AX=0003h,AX=0005h
  3148. --------a-490005-----------------------------
  3149. INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
  3150.     AX = 0005h
  3151. Return: AX = status
  3152.         0000h successful
  3153.         BX = vertical position (char row or pixel row)
  3154.         DX = horizontal position (char column or 8-pixel units)
  3155.         FFFFh MAGic busy, retry later
  3156.         BX,DX destroyed
  3157.     CX destroyed
  3158. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
  3159. --------a-490006-----------------------------
  3160. INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
  3161.     AX = 0006h
  3162. Return: AX = status
  3163.         0000h successful
  3164.         BX = vertical size (char rows or pixel rows)
  3165.         DX = horizontal size (char cols or 8-pixel units)
  3166.         FFFFh MAGic busy, retry later
  3167.         BX,DX destroyed
  3168.     CX destroyed
  3169. SeeAlso: AX=0001h,AX=0005h,AX=0007h
  3170. --------a-490007-----------------------------
  3171. INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
  3172.     AX = 0007h
  3173. Return: AX = status
  3174.         0000h successful
  3175.         BX = vertical size (char rows or pixel rows)
  3176.         DX = horizontal size (char cols or 8-pixel units)
  3177.         FFFEh invalid function
  3178.         FFFFh MAGic busy, retry later
  3179.         BX,DX destroyed
  3180.     CX destroyed
  3181. BUG:    in v1.16 and v1.17, this function is not recognized as valid, but
  3182.       AX=0000h is accepted and will branch into hyperspace
  3183. SeeAlso: AX=0001h,AX=0006h
  3184. --------a-490008-----------------------------
  3185. INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
  3186.     AX = 0008h
  3187.     BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
  3188. Return: AX = status
  3189.         0000h successful
  3190.         FFFBh scaling factor only available in MAGic Deluxe
  3191.         FFFCh already in magnified state, can't set size
  3192. Notes:    this call specifies the amount a subsequent call to AX=0001h should
  3193.       magnify the display
  3194.     scaling factors greater than 2 are only available in MAGic Deluxe
  3195. SeeAlso: AX=0001h
  3196. --------B-4A---------------------------------
  3197. INT 4A C - SYSTEM - USER ALARM HANDLER
  3198. Desc:    This interrupt is invoked by the BIOS when a real-time clock alarm
  3199.       occurs; an application may use it to perform an action at a
  3200.       predetermined time.
  3201. Note:    this interrupt is called from within a hardware interrupt handler,
  3202.       so all usual precautions against reentering DOS must be taken
  3203. SeeAlso: INT 1A/AH=06h
  3204. --------h-4A---------------------------------
  3205. INT 4A - Z100 - Slave 8259 - S100 vectored line 2
  3206. SeeAlso: INT 49"Z100",INT 4B"Z100"
  3207. --------O-4A---------------------------------
  3208. INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
  3209.     AL = function code
  3210.         FAh transfer data between 80186 and 65C12 I/O processor
  3211.     DS:BX -> control block (see below)
  3212. Return: FLAGS destroyed
  3213.     control block updated
  3214. Note:    there are more functions than are listed here, but details are not
  3215.       available
  3216. SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
  3217.  
  3218. Format of control block for function FAh:
  3219. Offset    Size    Description
  3220.  00h    BYTE    number of parameters sent to I/O processor (0Dh,0Eh)
  3221.  01h    BYTE    number of parameters read from I/O processor (01h)
  3222.  02h    DWORD    I/O processor address
  3223.  06h    DWORD    80186 segment:offset address
  3224.  0Ah    WORD    number of bytes to transfer
  3225.  0Ch    BYTE    operation type
  3226.         00h write to 65C12 at 24 us/byte
  3227.         01h read from 65C12 at 24 us/byte
  3228.         02h write to 65C12 at 26 us/word
  3229.         03h read from 65C12 at 26 us/word
  3230.         04h write to 65C12 at 10 us/byte using 256-byte blocks
  3231.         05h read from 65C12 at 10 us/byte using 256-byte blocks
  3232.  0Dh    BYTE    65C12 memory access control (only used if offset 00h = 0Eh)
  3233.         bit 7: unused
  3234.         bit 6: always use main screen memory if I/O addr 3000h-7FFFh
  3235.             (overrides bit 5)
  3236.         bit 5: use shadow screen memory if screen address specified
  3237.         bit 4: use current ROM rather than ROM selected by bits 3-0
  3238.             (only if I/O address between 8000h and BFFFh)
  3239.         bits 3-0: paged ROM number
  3240. --------h-4B---------------------------------
  3241. INT 4B - Z100 - Slave 8259 - S100 vectored line 3
  3242. SeeAlso: INT 4A"Z100",INT 4C"Z100"
  3243. --------d-4B---------------------------------
  3244. INT 4B - Common Access Method SCSI interface (draft revision 1.9)
  3245.     ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
  3246. Notes:    the CAM committee moved the interface to INT 4F after revision 1.9
  3247.       to avoid conflicting with the IBM SCSI interface and the Virtual
  3248.       DMA specification
  3249.     the installation check for the driver is the string "SCSI_CAM" eight
  3250.       bytes past the INT 4Bh handler
  3251.     it is not known whether any drivers actually implemented this
  3252.       interface on INT 4B instead of INT 4F
  3253. SeeAlso: INT 4F/AX=8100h
  3254. Index:    installation check;Common Access Method SCSI interface
  3255. --------O-4B---------------------------------
  3256. INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
  3257.     AL = function code
  3258.     BL = first parameter
  3259.     BH = second parameter (if needed)
  3260. Return: BL = first return parameter
  3261.     BH = second return parameter
  3262.     CF depends on function
  3263. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
  3264. --------d-4B80-------------------------------
  3265. INT 4B - IBM SCSI interface
  3266.     AH = 80h
  3267.     details not yet available
  3268. --------d-4B8102DX0000-----------------------
  3269. INT 4B - Virtual DMA Specification (VDS) - GET VERSION
  3270.     AX = 8102h
  3271.     DX = 0000h
  3272. Return: CF clear if successful
  3273.         AH = major version number
  3274.         AL = minor version number
  3275.         BX = product number (see below)
  3276.         CX = product revision number
  3277.         always 0000h for QMAPS and HPMM.SYS
  3278.         always 0001h for Microsoft's EMM386.EXE v4.20-4.41
  3279.         SI:DI = maximum DMA buffer size
  3280.         DX = flags
  3281.         bit 0: PC/XT bus (DMA in first megabyte only)
  3282.         bit 1: physical buffer/remap region in first megabyte
  3283.         bit 2: automatic remap enabled
  3284.         bit 3: all memory is physically contiguous
  3285.         bits 4-15 reserved (zero)
  3286.     CF set on error
  3287.         AL = error code (see below)
  3288. Note:    bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
  3289.       apparently not always the case
  3290. SeeAlso: INT 2C/AX=002Bh,INT 31
  3291. Index:    installation check;Virtual DMA Spec
  3292.  
  3293. Values for product number:
  3294.  0000h    for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
  3295.  0001h    for Microsoft's EMM386.EXE
  3296.  0003h    for Windows 3.x WIN386.EXE
  3297.  0EDCh    for DR-DOS 6.0 EMM386.SYS
  3298.  4560h    ("E`") for Qualitas' 386MAX
  3299.  4D43h    ("MC") for V Communication's Memory Commander
  3300.  5145h    ("QE") for Quarterdeck's QEMM-386
  3301.  524Dh    ("RM") for Helix's Netroom RM386
  3302.  
  3303. Values for error code:
  3304.  01h    region not in contiguous memory
  3305.  02h    region crossed a physical alignment boundary
  3306.  03h    unable to lock pages
  3307.  04h    no buffer available
  3308.  05h    region too large for buffer
  3309.  06h    buffer currently in use
  3310.  07h    invalid memory region
  3311.  08h    region was not locked
  3312.  09h    number of physical pages greater than table length
  3313.  0Ah    invalid buffer ID
  3314.  0Bh    copy out of buffer range
  3315.  0Ch    invalid DMA channel number
  3316.  0Dh    disable count overflow
  3317.  0Eh    disable count underflow
  3318.  0Fh    function not supported
  3319.  10h    reserved flag bits set in DX
  3320.  
  3321. Format of DMA descriptor structure (DDS):
  3322. Offset    Size    Description
  3323.  00h    DWORD    region size
  3324.  04h    DWORD    offset
  3325.  08h    WORD    segment/selector
  3326.  0Ah    WORD    buffer ID
  3327.  0Ch    DWORD    physical address
  3328.  
  3329. Format of Extended DMA descriptor structure (EDDS):
  3330. Offset    Size    Description
  3331.  00h    DWORD    region size
  3332.  04h    DWORD    offset
  3333.  08h    WORD    segment/selector
  3334.  0Ah    WORD    reserved
  3335.  0Ch    WORD    number available
  3336.  0Eh    WORD    number used
  3337.  10h    DWORD    region 0 physical address
  3338.  14h    DWORD    region 0 size in bytes
  3339.  18h    DWORD    region 1 physical address
  3340.  1Ch    DWORD    region 1 size in bytes
  3341.     ...
  3342.  
  3343. Format of Extended DMA descriptor structure (EDDS) with page table entries:
  3344. Offset    Size    Description
  3345.  00h    DWORD    region size
  3346.  04h    DWORD    offset
  3347.  08h    WORD    segment/selector
  3348.  0Ah    WORD    reserved
  3349.  0Ch    WORD    number available
  3350.  0Eh    WORD    number used
  3351.  10h    DWORD    page table entry 0 (same as 80386 page table entry)
  3352.  14h    DWORD    page table entry 1
  3353.     ...
  3354. Note:    bits 1-11 of the page table entries should be zero; bit 0 set if page
  3355.       is present and locked
  3356. --------d-4B8103-----------------------------
  3357. INT 4B - Virtual DMA Specification - LOCK DMA REGION
  3358.     AX = 8103h
  3359.     DX = flags (see below)
  3360.     ES:DI -> DMA descriptor structure (see AX=8102h)
  3361. Return: CF clear if successful
  3362.         DDS physical address field filled in
  3363.         DDS buffer ID field filled (0000h if no buffer allocated)
  3364.     CF set on error
  3365.         AL = error code (see AX=8102h)
  3366.         DDS region size field filled wth maximum contiguous length in bytes
  3367. BUGS:    Windows 3.0 does not correctly support automatic remapping or copying
  3368.       in enhanced mode
  3369.     Windows 3.0 in enhanced mode does not return a correct code on error
  3370. SeeAlso: AX=8104h,AX=8105h
  3371.  
  3372. Bitfields for flags:
  3373.  bit 0    reserved (zero)
  3374.  bit 1    data should be copied into buffer (ignored if bit 2 set)
  3375.  bit 2    buffer should not be allocated if region noncontiguous or crosses
  3376.     physical alignment boundary specified by bits 4-5
  3377.  bit 3    don't attempt automatic remap
  3378.  bit 4    region must not cross 64K physical alignment boundary
  3379.  bit 5    region must not cross 128K physical alignment boundary
  3380.  bits 6-15 reserved (zero)
  3381. --------d-4B8104-----------------------------
  3382. INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
  3383.     AX = 8104h
  3384.     DX = flags
  3385.         bit 0: reserved (zero)
  3386.         bit 1: data should be copied out of buffer
  3387.         bits 2-15 reserved (zero)
  3388.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size,
  3389.         physical address, and buffer ID fields set
  3390. Return: CF clear if successful
  3391.         DDS physical address field set
  3392.         DDS buffer ID field set (0000h if no buffer allocated)
  3393.     CF set on error
  3394.         AL = error code (see AX=8102h)
  3395.         DDS region size field filled wth maximum contiguous length in bytes
  3396. Note:    Windows 3.0 does not check whether the region extends beyond the end of
  3397.       a segment
  3398. BUG:    Windows 3.0 in enhanced mode does not return a correct code on error
  3399. SeeAlso: AX=8103h,AX=8106h
  3400. --------d-4B8105-----------------------------
  3401. INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
  3402.     AX = 8105h
  3403.     DX = flags
  3404.         bits 0-5 reserved (zero)
  3405.         bit 6: EDDS should be returned with page table entries
  3406.         bit 7: only present pages should be locked (not-present pages
  3407.             receive entry of 0000h)
  3408.         bits 8-15 reserved (zero)
  3409.     ES:DI -> Extended DMA descriptor structure (see AX=8102h)
  3410.         region size, linear segment, linear offset, and number avail
  3411.         fields set
  3412. Return: CF clear if successful
  3413.         EDDS number used field set
  3414.         if DX bit 6 set, lower 12 bits of BX = offset in first page
  3415.     CF set on error
  3416.         AL = error code (see AX=8102h)
  3417.         EDDS region size field filled with max length in bytes that can be
  3418.         locked and described in the EDDS table
  3419. BUG:    Windows 3.0 in enhanced mode may return zero instead of the physical
  3420.       page address for pages which were originally not present
  3421. SeeAlso: AX=8103h,AX=8106h
  3422. --------d-4B8106-----------------------------
  3423. INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
  3424.     AX = 8106h
  3425.     DX = flags
  3426.         bits 0-5 reserved (zero)
  3427.         bit 6: EDDS contains page table entries
  3428.         bit 7: EDDS may contain not-present pages (entry = 0000h)
  3429.         bits 8-15 reserved (zero)
  3430.     ES:DI -> Extended DMA descriptor structure (see AX=8102h) returned
  3431.         by AX=8105h
  3432. Return: CF clear if successful
  3433.     CF set on error
  3434.         AL = error code (see AX=8102h)
  3435. Note:    according to the Microsoft version of the VDS specification, the
  3436.       actual scatter/gather list is ignored, while according to the IBM
  3437.       version of the specification, "the result of a LOCK operation"
  3438.       must be provided to this function
  3439. SeeAlso: AX=8104h,AX=8105h
  3440. --------d-4B8107-----------------------------
  3441. INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
  3442.     AX = 8107h
  3443.     DX = flags
  3444.         bit 0: reserved (zero)
  3445.         bit 1: data should be copied into buffer
  3446.         bits  2-15 reserved (zero)
  3447.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size set
  3448.         (also region offset and region segment if DX bit 1 set)
  3449. Return: CF clear if successful
  3450.         DDS physical address and buffer ID set
  3451.         DDS region size filled with length of buffer
  3452.     CF set on error
  3453.         AL = error code (see AX=8102h)
  3454. SeeAlso: AX=8108h
  3455. --------d-4B8108-----------------------------
  3456. INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
  3457.     AX = 8108h
  3458.     DX = flags
  3459.         bit 0: reserved (zero)
  3460.         bit 1: data should be copied out of buffer
  3461.         bits 2-15 reserved (zero)
  3462.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID set
  3463.         (also region size/region offset/segment if DX bit 1 set)
  3464. Return: CF clear if successful
  3465.     CF set on error
  3466.         AL = error code (see AX=8102h)
  3467. BUG:    under Windows 3.0 Enhanced mode, you must specify that data be copied
  3468.       for this function to work correctly
  3469. SeeAlso: AX=8107h
  3470. --------d-4B8109DX0000-----------------------
  3471. INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
  3472.     AX = 8109h
  3473.     DX = 0000h
  3474.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  3475.         region segment/offset, and region size fields set
  3476.     BX:CX = starting offset into DMA buffer
  3477. Return: CF clear if successful
  3478.     CF set on error
  3479.         AL = error code (see AX=8102h)
  3480. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3481. SeeAlso: AX=810Ah
  3482. --------d-4B810ADX0000-----------------------
  3483. INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
  3484.     AX = 810Ah
  3485.     DX = 0000h
  3486.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  3487.         region segment/offset, and region size fields set
  3488.     BX:CX = starting offset into DMA buffer
  3489. Return: CF clear if successful
  3490.     CF set on error
  3491.         AL = error code (see AX=8102h)
  3492. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3493. SeeAlso: AX=8109h
  3494. --------d-4B810B-----------------------------
  3495. INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
  3496.     AX = 810Bh
  3497.     BX = DMA channel number
  3498.     DX = 0000h
  3499. Return: CF clear if successful
  3500.     CF set on error
  3501.         AL = error code (see AX=8102h)
  3502. SeeAlso: AX=810Ch
  3503. --------d-4B810C-----------------------------
  3504. INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
  3505.     AX = 810Ch
  3506.     BX = DMA channel number
  3507.     DX = 0000h
  3508. Return: CF clear if successful
  3509.         ZF set if disable count decremented to zero
  3510.     CF set on error
  3511.         AL = error code (see AX=8102h)
  3512. SeeAlso: AX=810Bh
  3513. --------Q-4B810D-----------------------------
  3514. INT 4B - QEMM-386 - BUG
  3515.     AX = 810Dh
  3516. Note:    the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
  3517.       call
  3518. --------h-4C---------------------------------
  3519. INT 4C - Z100 - Slave 8259 - S100 vectored line 4
  3520. SeeAlso: INT 4B"Z100",INT 4D"Z100"
  3521. --------O-4C---------------------------------
  3522. INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
  3523.     DS:BX -> CR-terminated command string
  3524. Return: FLAGS destroyed
  3525. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
  3526. --------h-4D---------------------------------
  3527. INT 4D - Z100 - Slave 8259 - S100 vectored line 5
  3528. SeeAlso: INT 4C"Z100",INT 4E"Z100"
  3529. --------d-4E---------------------------------
  3530. INT 4E - TI Professional PC - DISK I/O
  3531.     used instead of INT 13 on the TI Professional PC
  3532. SeeAlso: INT 13
  3533. --------h-4E---------------------------------
  3534. INT 4E - Z100 - Slave 8259 - S100 vectored line 6
  3535. SeeAlso: INT 4D"Z100",INT 4F"Z100"
  3536. --------h-4F---------------------------------
  3537. INT 4F - Z100 - Slave 8259 - S100 vectored line 7
  3538. SeeAlso: INT 4E"Z100"
  3539. --------d-4F8100-----------------------------
  3540. INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
  3541.     AX = 8100h
  3542.     ES:BX -> CAM Control Block (CCB) (see below)
  3543. Return: AH = status
  3544.         00h successful
  3545.         01h invalid CCB address (0000h:0000h)
  3546. Note:    the SCSI Interface Module (SIM) may complete the requested function
  3547.       and invoke the completion callback function before this call returns
  3548. SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
  3549.  
  3550. Values for CAM function code:
  3551.  00h    NOP
  3552.  01h    execute SCSI I/O
  3553.  02h    get device type
  3554.  03h    path inquiry
  3555.  04h    release SIM queue
  3556.  05h    set async callback
  3557.  06h    set device type
  3558.  07h-0Fh reserved
  3559.  10h    abort SCSI command
  3560.  11h    reset SCSI bus
  3561.  12h    reset SCSI device
  3562.  13h    terminate I/O process
  3563.  14h-1Fh reserved
  3564.  20h    engine inquiry
  3565.  21h    execute engine request
  3566.  22h-2Fh reserved
  3567.  30h    enable logical unit number
  3568.  31h    execute target I/O
  3569.  32h-7Fh reserved
  3570.  80h-FFh vendor-specific functions
  3571.  
  3572. Format of CAM Control Block:
  3573. Offset    Size    Description
  3574.  00h    DWORD    physical address of this CCB
  3575.  04h    WORD    CAM control block length
  3576.  06h    BYTE    function code (see above)
  3577.  07h    BYTE    CAM status (see below)
  3578.  08h    BYTE    SCSI status
  3579.  09h    BYTE    path ID (FFh = XPT)
  3580.  0Ah    BYTE    target ID
  3581.  0Bh    BYTE    logical unit number
  3582.  0Ch    WORD    CAM flags (see below)
  3583.  0Eh    BYTE    CAM address flags (see below)
  3584.  0Fh    BYTE    target-mode flags (see below)
  3585. ---function 02h---
  3586.  10h    DWORD    pointer to 36-byte buffer for inquiry data or 0000h:0000h
  3587.  14h    BYTE    peripheral device type of target logical unit number
  3588. ---function 03h---
  3589.  10h    BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
  3590.         09h-FFh = rev no, i.e. 23h = rev 2.3)
  3591.  11h    BYTE    SCSI capabilities (see below)
  3592.  12h    BYTE    target mode support
  3593.         bit 7: processor mode
  3594.         bit 6: phase-cognizant mode
  3595.         bit 5-0: reserved
  3596.  13h    BYTE    miscellaneous flags
  3597.         bit 7: scanned high to low instead of low to high
  3598.         bit 6: removables not included in scan
  3599.         bit 5: inquiry data not kept by XPT
  3600.         bits 4-0: reserved
  3601.  14h    WORD    engine count
  3602.  16h 14 BYTEs    vendor-specific data
  3603.  24h    DWORD    size of private data area
  3604.  28h    DWORD    asynchronous event capabilities (see below)
  3605.  2Ch    BYTE    highest path ID assigned
  3606.  2Dh    BYTE    SCSI device ID of initiator
  3607.  2Eh  2 BYTEs    reserved
  3608.  30h 16 BYTEs    SIM vendor ID
  3609.  40h 16 BYTEs    HBA (host bus adaptor) vendor ID
  3610.  50h  4 BYTEs    operating-system dependant usage
  3611. ---functions 00h,04h,11h,12h---
  3612.  no additional fields
  3613. ---function 05h---
  3614.  10h    DWORD    asynchronous event enables (see function 03h above)
  3615.  14h    DWORD    pointer to asynchronous callback routine
  3616.  18h    DWORD    pointer to peripheral driver buffer
  3617.  1Ch    BYTE    size of peripheral buffer
  3618. ---function 06h---
  3619.  10h    BYTE    peripheral device type of target
  3620. ---functions 10h,13h---
  3621.  10h    DWORD    pointer to CCB to be aborted
  3622. ---function 20h---
  3623.  10h    WORD    engine number
  3624.  12h    BYTE    engine type
  3625.         00h buffer memory
  3626.         01h lossless compression
  3627.         02h lossy compression
  3628.         03h encryption
  3629.  13h    BYTE    engine algorithm ID
  3630.         00h vendor-unique
  3631.         01h LZ1 variation 1 (STAC)
  3632.         02h LZ2 variation 1 (HP DCZL)
  3633.         03h LZ2 variation 2 (Infochip)
  3634.  14h    DWORD    engine memory size
  3635. ---function 21h---
  3636.  10h    DWORD    pointer to peripheral driver
  3637.  14h  4 BYTEs    reserved
  3638.  18h    DWORD    OS-dependent request-mapping info
  3639.  1Ch    DWORD    address of completion callback routine
  3640.  20h    DWORD    pointer to scatter/gather list or data buffer
  3641.  24h    DWORD    length of data transfer
  3642.  28h    DWORD    pointer to engine buffer data
  3643.  2Ch  2 BYTEs    reserved
  3644.  2Eh    WORD    number of scatter/gather entries
  3645.  30h    DWORD    maximum destination data length
  3646.  34h    DWORD    length of destination data
  3647.  38h    DWORD    source residual length
  3648.  3Ch 12 BYTEs    reserved
  3649.  48h    DWORD    OS-dependent timeout value
  3650.  4Ch  4 BYTEs    reserved
  3651.  50h    WORD    engine number
  3652.  52h    WORD    vendor-unique flags
  3653.  54h  4 BYTEs    reserved
  3654.  58h  N BYTEs    private data area for SIM
  3655. ---function 30h---
  3656.  10h    WORD    group 6 vendor-unique CDB length
  3657.  12h    WORD    group 7 vendor-unique CDB length
  3658.  14h    DWORD    pointer to target CCB list
  3659.  18h    WORD    number of target CCBs
  3660. ---other functions---
  3661.  10h    DWORD    pointer to peripheral driver
  3662.  14h    DWORD    pointer to next CCB
  3663.  18h    DWORD    OS-dependent request mapping information
  3664.  1Ch    DWORD    address of completion callback routine
  3665.  20h    DWORD    pointer to scatter/gather list or data buffer
  3666.  24h    DWORD    length of data transfer
  3667.  28h    DWORD    pointer to sense info buffer
  3668.  2Ch    BYTE    length of sense info buffer
  3669.  2Dh    BYTE    CDB length
  3670.  2Eh    WORD    number of scatter/gather entries
  3671.  30h  4 BYTEs    reserved
  3672.  34h    BYTE    SCSI status
  3673.  35h  3 BYTEs    reserved
  3674.  38h    DWORD    residual length
  3675.  40h 12 BYTEs    Command Descriptor Block (CDB)
  3676.  44h    DWORD    OS-dependent timeout value
  3677.  48h    DWORD    pointer to message buffer
  3678.  4Ch    WORD    length of message buffer
  3679.  4Eh    WORD    vendor-unique flags
  3680.  50h    BYTE    tag queue action
  3681.  51h  3 BYTEs    reserved
  3682.  54h  N BYTEs    private data area for SIM
  3683.  
  3684. Bitfields for CAM flags:
  3685.  bit 0    CDB is a pointer
  3686.  bit 1    tagged queue action enable
  3687.  bit 2    linked CDB
  3688.  bit 3    disable callback on completion
  3689.  bit 4    scatter/gather
  3690.  bit 5    disable autosense
  3691.  bits 7-6 direction (00 reserved, 01 in, 10 out, 11 no data transfer)
  3692.  bits 9-8 reserved
  3693.  bit 10 engine synchronize
  3694.  bit 11 SIM queue freeze
  3695.  bit 12 SIM queue priority
  3696.     1 head insertion
  3697.     0 tail insertion (normal)
  3698.  bit 13 disable synchronous transfers    / exclusive
  3699.  bit 14 initiate synchronous transfers    \ mutually
  3700.  bit 15 disable disconnect
  3701.  
  3702. Bitfields for CAM address flags:
  3703.  bit 7    SG list/data (0 = host, 1 = engine)
  3704.  bit 6    CDB pointer    (bits 6-1: 0=virtual addr, 1=phys addr)
  3705.  bit 5    SG list/data
  3706.  bit 4    sense buffer
  3707.  bit 3    message buffer
  3708.  bit 2    next CCB
  3709.  bit 1    callback on completion
  3710.  bit 0    reserved
  3711.  
  3712. Values for CAM status:
  3713.  00h    request in progress
  3714.  01h    request successful
  3715.  02h    host aborted request
  3716.  03h    unable to abort request
  3717.  04h    request completed with error
  3718.  05h    CAM is busy
  3719.  06h    invalid request
  3720.  07h    invalid path ID
  3721.  08h    no such SCSI device
  3722.  09h    unable to terminate I/O process
  3723.  0Ah    timeout on target selection
  3724.  0Bh    timeout on command
  3725.  0Dh    receive message rejection
  3726.  0Eh    sent/received SCSI bus reset
  3727.  0Fh    detected uncorrectable parity error
  3728.  10h    Autosense request failed
  3729.  11h    no HBA detected
  3730.  12h    data over/underrun
  3731.  13h    bus freed unexpectedly
  3732.  14h    target bus phase sequence failure
  3733.  15h    CCB too small
  3734.  16h    requested capability not available
  3735.  17h    sent bus device reset
  3736.  18h    terminate I/O process
  3737.  38h    invalid LUN
  3738.  39h    invalid target ID
  3739.  3Ah    unimplemented function
  3740.  3Bh    nexus not established
  3741.  3Ch    invalid initiator ID
  3742.  3Dh    received SCSI Command Descriptor Block
  3743.  3Eh    LUN already enabled
  3744.  3Fh    SCSI bus busy
  3745. Note:    bit 6 set to indicate frozen SIM queue
  3746.     bit 7 set to indicate valid autosense
  3747.  
  3748. Bitfields for target-mode flags:
  3749.  bit 7    data buffer valid
  3750.  bit 6    status valid
  3751.  bit 5    message buffer valid
  3752.  bit 4    reserved
  3753.  bit 3    phase-cognizant mode
  3754.  bit 2    target CCB available
  3755.  bit 1    disable autodisconnect
  3756.  bit 0    disable autosave/restore
  3757.  
  3758. Bitfields for SCSI capabilities:
  3759.  bit 7    modify data pointers
  3760.  bit 6    wide bus (32 bits)
  3761.  bit 5    wide bus (16 bits)
  3762.  bit 4    synchronous transfers
  3763.  bit 3    linked commands
  3764.  bit 2    reserved
  3765.  bit 1    tagged queueing
  3766.  bit 0    soft reset
  3767.  
  3768. Bitfields for asynchronous event capabilities:
  3769.  bits 31-24    vendor-specific
  3770.  bits 23-8    reserved
  3771.  bit 7    new devices found during rescan
  3772.  bit 6    SIM module deregistered
  3773.  bit 5    SIM module registered
  3774.  bit 4    sent bus device reset to target
  3775.  bit 3    SCSI AEN
  3776.  bit 2    reserved
  3777.  bit 1    unsolicited reselection
  3778.  bit 0    unsolicited SCSI bus reset
  3779.  
  3780. Completion callback function called with:
  3781.     interrupts disabled
  3782.     ES:BX -> completed CCB
  3783.  
  3784. Asynchronous callback function called with:
  3785.     AH = opcode
  3786.     AL = path ID generating callback
  3787.     DH = target ID causing event
  3788.     DL = LUN causing event
  3789.     CX = data byte count (if applicable)
  3790.     ES:BX -> data buffer (if applicable)
  3791. Return: all registers preserved
  3792. --------d-4F8200CX8765-----------------------
  3793. INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
  3794.     AX = 8200h
  3795.     CX = 8765h
  3796.     DX = CBA9h
  3797. Return: AH = 00h if installed
  3798.         CX = 9ABCh
  3799.         DX = 5678h
  3800.         ES:DI -> "SCSI_CAM"
  3801. SeeAlso: AX=8100h,INT 4B"Common Access Method"
  3802. --------N-50---------------------------------
  3803. INT 50 - TIL Xpert AIM (X.25)
  3804.     AH = function
  3805. --------H-50---------------------------------
  3806. INT 50 - IRQ0 relocated by DESQview
  3807. Notes:    this is the default location for older versions; DESQview v2.26+
  3808.       searches for unused ranges of interrupts and uses the lowest
  3809.       available range in its list for relocating these IRQs and the next
  3810.       lowest for relocating IRQ8-IRQ15
  3811.     a range of eight interrupts starting at a multiple of 8 is considered
  3812.       available if all vectors are identical and it has not been excluded
  3813.       with an /XB:nn commandline switch
  3814.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  3815.       are available, F8h and then 50h are used anyway)
  3816.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  3817.       are available, F8h and then F0h are used anyway)
  3818. SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
  3819. SeeAlso: INT D8"Screen Thief"
  3820. --------H-50---------------------------------
  3821. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  3822. SeeAlso: INT 51"IBM 3278"
  3823. --------H-50---------------------------------
  3824. INT 50 - IRQ0 relocated by OS/2 v1.x
  3825. SeeAlso: INT 51"OS/2"
  3826. --------V-500000-----------------------------
  3827. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
  3828.     AX = 0000h
  3829.     ES:BX -> name string or ES:0000h if none
  3830.     CH,CL = row,column of upper left corner
  3831.     DH,DL = row,column of lower right corner
  3832. Return: AX = window handle or
  3833.         0000h if not installed
  3834.         FFFFh on error
  3835. SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
  3836. --------V-500001-----------------------------
  3837. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
  3838.     AX = 0001h
  3839.     DI = window handle
  3840. SeeAlso: AX=0000h
  3841. --------V-500002-----------------------------
  3842. INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
  3843.     AX = 0002h
  3844.     BL = character
  3845.     BH = attribute
  3846.     DL = column
  3847.     DH = row
  3848.     DI = window handle
  3849. Return: AX = status
  3850.         0000h if successful
  3851.         FFFFh if outside window
  3852. SeeAlso: AX=0000h
  3853. --------l-500002-----------------------------
  3854. INT 50 - PC Thuis Organizer Shell - PLOT TEXT
  3855.     AX = 0002h
  3856.     ES:BX -> text string
  3857.     DH,DL = row,column of upper left corner
  3858.     DI = window handle
  3859. Return: AX = status
  3860.         0000h successful (text fits in window)
  3861.         FFFFh error
  3862. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  3863.       published in the June/July 1990 issue of PC Thuis Power magazine
  3864. --------V-500003-----------------------------
  3865. INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
  3866.     AX = 0003h
  3867.     ES:BX -> text string
  3868.     CX = string length (0000h if ASCIZ string)
  3869.     DL = position (FFh centered, else flush left)
  3870.     DH = starting row
  3871.     DI = window handle
  3872. Return: AX = status
  3873.         0000h successful
  3874.         FFFFh did not fit in window
  3875. --------l-500003-----------------------------
  3876. INT 50 - PC Thuis Organizer Shell - WRITE FILE
  3877.     AX = 0003h
  3878.     ES:BX -> data to be written
  3879.     CX = number of bytes to write
  3880.     DS:SI -> filename
  3881. Return: AX = status
  3882.         0000h successful
  3883.         FFFFh error
  3884. SeeAlso: AX=0004h"Shell"
  3885. --------V-500004-----------------------------
  3886. INT 50 - Vanderaart TEXT WINDOWS - GET KEY
  3887.     AX = 0004h
  3888.     CH = type
  3889.         00h any key
  3890.         01h 'J' or 'N' (Dutch for yes/no)
  3891. Return: AX = key
  3892. SeeAlso: INT 16/AH=00h
  3893. --------l-500004-----------------------------
  3894. INT 50 - PC Thuis Organizer Shell - READ FILE
  3895.     AX = 0004h
  3896.     ES:BX -> buffer for data
  3897.     CX = number of bytes to read or 0000h for entire file
  3898.     DL = file type
  3899.         01h setting shell
  3900.         02h setting sterm
  3901.         03h INT21 file
  3902.     DS:SI -> filename
  3903. Return: AX = status
  3904.         0000h successful
  3905.         FFFFh error
  3906. Note:    file type numbers are maintained by John Vanderaart; if a new file type
  3907.       is needed, a type number should be requested from him through the
  3908.       magazine:
  3909.         PC Thuis BV
  3910.         Spaarne 55
  3911.         2011 CE HAARLEM
  3912.         The Netherlands
  3913. SeeAlso: AX=0003h"Shell"
  3914. --------V-500005-----------------------------
  3915. INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
  3916.     AX = 0005h
  3917.     BL = new attribute
  3918.     CH,CL = row,column of upper left corner
  3919.     DH,DL = row,column of lower right corner
  3920.     DI = window handle
  3921. --------l-500005-----------------------------
  3922. INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
  3923.     AX = 0005h
  3924.     ES:BX -> prompt string (ES:0000h if no prompt)
  3925. Return: AX = key pressed
  3926.         0000h "J" (Dutch "Ja" = "Yes")
  3927.         FFFFh "N" (Dutch "Nee" = "No")
  3928. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  3929.       published in the June/July 1990 issue of PC Thuis Power magazine
  3930. SeeAlso: AX=0008h"PC Thuis"
  3931. --------V-500006-----------------------------
  3932. INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
  3933.     AX = 0006h
  3934.     ES:BX -> text string
  3935.     CH = type of input (see below)
  3936.     DH,DL = row,column of upper left corner
  3937.     DI = window handle
  3938. Return: AX = key which terminated entry
  3939.         0000h Enter
  3940.         0001h Esc
  3941.         0002h Down arrow
  3942.         0003h Up arrow
  3943.         0004h F10
  3944.  
  3945. Values for type of input:
  3946.  00h    everything
  3947.  01h    uppercase only
  3948.  02h    positive numbers
  3949.  03h    Dutch postal code ("9999 AA")
  3950.  04h    'J' or 'N' (Dutch yes/no)
  3951.  05h    telephone or FAX number
  3952.  06h    positive or negative number
  3953.  07h    date (dd/mm/yy)
  3954.  08h    money
  3955.  09h    '1' through '8'
  3956.  0Ah    '1' through '4'
  3957.  0Bh    uppercase filenames
  3958. --------l-500006-----------------------------
  3959. INT 50 - PC Thuis Organizer Shell - ALERT USER
  3960.     AX = 0006h
  3961.     ES:BX -> string
  3962. --------l-500007-----------------------------
  3963. INT 50 - PC Thuis Organizer Shell - DO LINE
  3964.     AX = 0007h
  3965.     ES:BX -> text string
  3966.     CX = string length in bytes (0000h if NUL-terminated)
  3967.     DL = FFh to center string, else flush left
  3968.     DH = upper left row
  3969.     DI = window handle
  3970. Return: AX = status
  3971.         0000h successful
  3972.         FFFFh error
  3973. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  3974.       published in the June/July 1990 issue of PC Thuis Power magazine
  3975. SeeAlso: AX=0008h
  3976. --------l-500008-----------------------------
  3977. INT 50 - PC Thuis Organizer Shell - DO MENU
  3978.     AX = 0008h
  3979.     ES:BX -> menu structure
  3980. Return: AL = index 1 or FFh if not selected
  3981.     AH = index 2 or FFh if not selected
  3982.     BL = index 3 or FFh if not selected
  3983.     BH = index 4 or FFh if not selected
  3984. SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
  3985. --------l-500009-----------------------------
  3986. INT 50 - PC Thuis Organizer Shell - MESSAGE ON
  3987.     AX = 0009h
  3988.     ES:BX -> message string
  3989. SeeAlso: AX=000Ah
  3990. --------l-50000A-----------------------------
  3991. INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
  3992.     AX = 000Ah
  3993. SeeAlso: AX=0009h
  3994. --------l-50000B-----------------------------
  3995. INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
  3996.     AX = 000Bh
  3997.     BL = new attribute
  3998.     CH,CL = row,column of upper left corner
  3999.     DH,DL = row,column of lower right corner
  4000.     DI = window handle
  4001. --------l-50000C-----------------------------
  4002. INT 50 - PC Thuis Organizer Shell - DO REQUEST
  4003.     AX = 000Ch
  4004.     ES:BX -> request structure
  4005. Return: AX = status
  4006.         0000h confirmed
  4007.         FFFFh denied
  4008. SeeAlso: AX=0008h
  4009. --------l-50000D-----------------------------
  4010. INT 50 - PC Thuis Organizer Shell - EDIT LINE
  4011.     AX = 000Dh
  4012.     ES:BX -> text string
  4013.     CL = length
  4014.     CH = type
  4015.         bit 0: force uppercase
  4016.         bit 1: integer
  4017.         bit 2: no spaces allowed
  4018.         bit 3: no cursor keys
  4019.     DH,DL = row,column of upper left corner
  4020.     DI = window handle
  4021. Return: AX = result code
  4022. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4023.       published in the June/July 1990 issue of PC Thuis Power magazine
  4024. --------l-50000E-----------------------------
  4025. INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
  4026.     AX = 000Eh
  4027.     BL = character
  4028.     BH = attribute
  4029.     DH,DL = row,column at which to plot
  4030.     DI = window handle
  4031. Return: AX = status
  4032.         0000h successful
  4033.         FFFFh errror
  4034. --------l-50000F-----------------------------
  4035. INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
  4036.     AX = 000Fh
  4037.     BL = character
  4038.     BH = attribute
  4039.     DI = window handle
  4040. --------l-500010-----------------------------
  4041. INT 50 - PC Thuis Organizer Shell - TRACE MENU
  4042.     AX = 0010h
  4043.     ES:BX -> first menu structure
  4044.     CL = hotkey to look up
  4045. Return: AL = index 1 or FFh if not selected
  4046.     AH = index 2 or FFh if not selected
  4047.     BL = index 3 or FFh if not selected
  4048.     BH = index 4 or FFh if not selected
  4049. Index:    hotkeys;PC Thuis Organizer Shell
  4050. --------l-500011-----------------------------
  4051. INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
  4052.     AX = 0011h
  4053.     DS:SI -> source
  4054.     ES:DI -> destination
  4055.     CX = number of bytes to move (0000h = until NUL string terminator???)
  4056. SeeAlso: AX=0012h
  4057. --------l-500012-----------------------------
  4058. INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
  4059.     AX = 0012h
  4060.     DS:SI -> source
  4061.     ES:DI -> destination
  4062.     CX = number of bytes to compare (0000h=until NUL string terminator???)
  4063. Return: AX = status
  4064.         0000h same
  4065.         FFFFh different
  4066. SeeAlso: AX=0011h
  4067. --------l-500013-----------------------------
  4068. INT 50 - PC Thuis Organizer Shell - GET KEY
  4069.     AX = 0013h
  4070.     CH = type flags
  4071.         bit 0: force uppercase
  4072.         bit 1: integer
  4073.         bit 2: no spaces
  4074. Return: AX = keystroke
  4075. --------l-500014-----------------------------
  4076. INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
  4077.     AX = 0014h
  4078.     BL = direction
  4079.         06h up
  4080.         07h down
  4081.     BH = attribute
  4082.     DI = window handle
  4083. SeeAlso: INT 10/AH=06h,INT 10/AH=07h
  4084. --------l-500015-----------------------------
  4085. INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
  4086.     AX = 0015h
  4087.     BL = handle size
  4088.         00h 65536 bytes (64K)
  4089.         01h 65535 bytes (64K-1)
  4090.         02h 32768 bytes (32K)
  4091.         03h 32767 bytes (32K-1)
  4092. Return: AX = segment
  4093. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4094.       published in the June/July 1990 issue of PC Thuis Power magazine
  4095. SeeAlso: INT 21/AH=48h
  4096. --------H-51---------------------------------
  4097. INT 51 - IRQ1 relocated by DESQview
  4098. Note:    this is the default location for older versions; see INT 50"DESQview"
  4099.       for details of interrupt relocation
  4100. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4101. --------H-51---------------------------------
  4102. INT 51 - IRQ1 relocated by IBM 3278 emulation control program
  4103. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  4104. --------H-51---------------------------------
  4105. INT 51 - IRQ1 relocated by OS/2 v1.x
  4106. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  4107. --------H-52---------------------------------
  4108. INT 52 - IRQ2 relocated by DESQview
  4109. Note:    this is the default location for older versions; see INT 50"DESQview"
  4110.       for details of interrupt relocation
  4111. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4112. --------H-52---------------------------------
  4113. INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4114. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4115. --------H-53---------------------------------
  4116. INT 53 - IRQ3 relocated by DESQview
  4117. Note:    this is the default location for older versions; see INT 50"DESQview"
  4118.       for details of interrupt relocation
  4119. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4120. --------H-53---------------------------------
  4121. INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4122. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4123. --------N-53---------------------------------
  4124. INT 53 - WEB??? - API
  4125.     BX = function
  4126.         0000h ???
  4127.         AX = ???
  4128.         Return: AX = ???
  4129.         0004h ???
  4130.         0009h ???
  4131.         0015h
  4132.         AX = ???
  4133.         DX = ???
  4134.         0017h
  4135. Return: ???
  4136. Notes:    the installation check consists of looking for the signature "WEBCO"
  4137.       immediately prior to the interrupt handler
  4138.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  4139. Index:    installation check;unknown|installation check;WEBCO
  4140. --------H-54---------------------------------
  4141. INT 54 - IRQ4 relocated by DESQview
  4142. Note:    this is the default location for older versions; see INT 50"DESQview"
  4143.       for details of interrupt relocation
  4144. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4145. --------H-54---------------------------------
  4146. INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4147. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4148. --------H-55---------------------------------
  4149. INT 55 - IRQ5 relocated by DESQview
  4150. Note:    this is the default location for older versions; see INT 50"DESQview"
  4151.       for details of interrupt relocation
  4152. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4153. --------H-55---------------------------------
  4154. INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4155. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4156. --------H-56---------------------------------
  4157. INT 56 - IRQ6 relocated by DESQview
  4158. Note:    this is the default location for older versions; see INT 50"DESQview"
  4159.       for details of interrupt relocation
  4160. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4161. --------H-56---------------------------------
  4162. INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4163. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4164. --------H-57---------------------------------
  4165. INT 57 - IRQ7 relocated by DESQview
  4166. Note:    this is the default location for older versions; see INT 50"DESQview"
  4167.       for details of interrupt relocation
  4168. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4169. --------H-57---------------------------------
  4170. INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4171. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4172. --------H-58---------------------------------
  4173. INT 58 - IRQ8 relocated by DESQview 2.26+
  4174. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4175. SeeAlso: INT 50"DESQview",INT 70
  4176. --------H-58---------------------------------
  4177. INT 58 - IRQ0 relocated by DoubleDOS
  4178. SeeAlso: INT 08
  4179. --------H-59---------------------------------
  4180. INT 59 - IRQ9 relocated by DESQview 2.26+
  4181. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4182. SeeAlso: INT 50"DESQview",INT 71
  4183. --------H-59---------------------------------
  4184. INT 59 - IRQ1 relocated by DoubleDOS
  4185. SeeAlso: INT 09
  4186. --------V-59---------------------------------
  4187. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  4188.     DS:DX -> block of 5 array pointers
  4189. Return: CF set on error
  4190.         AX = error code
  4191.     CF clear if successful
  4192.         AX = return code
  4193. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  4194.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  4195.     also used by the IBM Graphic Development Toolkit
  4196. --------H-5A---------------------------------
  4197. INT 5A - IRQ10 relocated by DESQview 2.26+
  4198. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4199. SeeAlso: INT 50"DESQview",INT 72
  4200. --------H-5A---------------------------------
  4201. INT 5A - IRQ2 relocated by DoubleDOS
  4202. SeeAlso: INT 0A
  4203. --------N-5A---------------------------------
  4204. INT 5A - Cluster adapter BIOS entry address
  4205.     ???
  4206. --------H-5B---------------------------------
  4207. INT 5B - IRQ11 relocated by DESQview 2.26+
  4208. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4209. SeeAlso: INT 50"DESQview",INT 73
  4210. --------H-5B---------------------------------
  4211. INT 5B - IRQ3 relocated by DoubleDOS
  4212. SeeAlso: INT 0B
  4213. --------N-5B---------------------------------
  4214. INT 5B - Used by cluster adapter
  4215. --------N-5B---------------------------------
  4216. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  4217.     ES:BX -> Network Control Block (see below)
  4218. Return: AL = status (see INT 5C)
  4219. SeeAlso: INT 5C
  4220.  
  4221. Format of Network Control Block
  4222. Offset    Size    Description
  4223.  00h    BYTE    ncb_command (see below)
  4224.  01h    BYTE    ncb_retcode
  4225.  02h    BYTE    ncb_lsn
  4226.  03h    BYTE    ncb_num
  4227.  04h    DWORD    -> ncb_buffer
  4228.  08h    WORD    ncb_length
  4229.  0Ah 16 BYTEs    ncb_callname
  4230.  1Ah 16 BYTEs    ncb_name
  4231.  2Ah    BYTE    ncb_rto
  4232.  2Bh    BYTE    ncb_sto
  4233.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  4234.  30h    BYTE    ncb_lana_num
  4235.  31h    BYTE    ncb_cmd_cplt
  4236.  32h    DWORD    -> ncb_vname
  4237.  36h    BYTE    ncb_vnamelen
  4238.  37h  9 BYTEs    ncb_reserve
  4239. Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
  4240.  
  4241. Values for ncb_command field same as for INT 5C, except
  4242.  70h    send net Break
  4243. --------N-5B---------------------------------
  4244. INT 5B - Microsoft Network Transport Layer Interface
  4245. Note:    used by MS-NET for executing network commands
  4246. SeeAlso: INT 5C"NetBIOS"
  4247. --------N-5B---------------------------------
  4248. INT 5B - used by Alloy NTNX
  4249. --------N-5B---------------------------------
  4250. INT 5B - ISOLAN Multi Protocol Software
  4251.     ES:BX -> Transfer Control Block
  4252. Return: AL = status
  4253. Note:    this software interface allows multiple protocols/software packages
  4254.       to access a BICC 411x network card
  4255.  
  4256. Format of Transfer Control Block:
  4257. Offset    Type    Description
  4258.  00h    BYTE    command code
  4259.         B3h Status
  4260.         F2h Activate
  4261.         F3h Deactivate
  4262.         F4h Send Data
  4263.  01h    BYTE    command identity
  4264.  02h    BYTE    virtual circuit ID
  4265.  03h    WORD    buffer length
  4266.  05h    DWORD    buffer pointer
  4267.  09h    BYTE    expedited data flag
  4268.  0Ah    BYTE    cancelable flag
  4269.  0Bh 16 BYTEs    local network address
  4270.  1Bh 16 BYTEs    remote network address
  4271.  2Bh    DWORD    asynchronous notification routine
  4272.  30h    DWORD    local network number
  4273.  34h    DWORD    remote network number
  4274.  38h    BYTE    call timeout
  4275.  39h    BYTE    not used
  4276.  3Ah  8 BYTEs    reserved
  4277.  42h    BYTE    command code extension
  4278.  43h    WORD    Blue Book MAC type
  4279. --------U-5B5254DL04-------------------------
  4280. INT 5B U - SitBack v3.02R - GET ???
  4281.     AX = 5254h
  4282.     DL = 04h
  4283. Return: ES:BX -> ??? in resident portion
  4284. Program: SitBack is a background file backup utility by SitBack Technologies,
  4285.       Inc. which initiates backups whenever the system is idle
  4286. SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
  4287. --------U-5B8485DL70-------------------------
  4288. INT 5B U - SitBack v3.02R - INSTALLATION CHECK
  4289.     AX = 8485h
  4290.     DL = 70h
  4291. Return: CX = 8485h if installed
  4292.         DX:AX -> ??? (configuration data?)
  4293. Program: SitBack is a background file backup utility by SitBack Technologies,
  4294.       Inc. which initiates backups whenever the system is idle
  4295. SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
  4296. --------U-5B8485DL71-------------------------
  4297. INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
  4298.     AX = 8485h
  4299.     DL = 71h
  4300. Return: ES:BX -> FAR entry point to ???
  4301. Note:    the flag which is modified is located at the address returned by
  4302.        AX=5254h/DL=04h
  4303. SeeAlso: AX=8485h/DL=72h
  4304. --------U-5B8485DL72-------------------------
  4305. INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
  4306.     AX = 8485h
  4307.     DL = 72h
  4308. Note:    the flag which is modified is located at the address returned by
  4309.        AX=5254h/DL=04h
  4310. SeeAlso: AX=8485h/DL=71h
  4311. --------U-5B8485DL73-------------------------
  4312. INT 5B U - SitBack v3.02R - ???
  4313.     AX = 8485h
  4314.     DL = 73h
  4315.     ???
  4316. Return: ???
  4317. --------U-5B8485DL74-------------------------
  4318. INT 5B U - SitBack v3.02R - ???
  4319.     AX = 8485h
  4320.     DL = 74h
  4321.     ???
  4322. Return: ???
  4323. --------U-5B8485DL75-------------------------
  4324. INT 5B U - SitBack v3.02R - ???
  4325.     AX = 8485h
  4326.     DL = 75h
  4327.     CX = ???
  4328. Return: ???
  4329. SeeAlso: AX=8485h/DL=76h
  4330. --------U-5B8485DL76-------------------------
  4331. INT 5B U - SitBack v3.02R - ???
  4332.     AX = 8485h
  4333.     DL = 76h
  4334.     CX = ???
  4335. Return: ???
  4336. Note:    conditionally calls the code for AX=8485h/DL=75h
  4337. SeeAlso: AX=8485h/DL=75h
  4338. --------U-5B8485DL77-------------------------
  4339. INT 5B U - SitBack v3.02R - SET ??? FLAG
  4340.     AX = 8485h
  4341.     DL = 77h
  4342. --------U-5B8485DL78-------------------------
  4343. INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
  4344.     AX = 8485h
  4345.     DL = 78h
  4346. Return: CX = 5342h if supported
  4347.         ES = AX = segment of TSR data
  4348. SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
  4349. --------U-5B8485DL79-------------------------
  4350. INT 5B U - SitBack v3.02R - GET DTA
  4351.     AX = 8485h
  4352.     DL = 79h
  4353. Return: CX = 5342h if supported
  4354.         ES:BX -> DTA set by last INT 21/AH=1Ah
  4355. Note:    this function is provided by SBOS.EXE rather than SB.EXE
  4356. SeeAlso: INT 21/AH=1Ah
  4357. --------U-5B8485DL7A-------------------------
  4358. INT 5B U - SitBack v3.02R - TOGGLE ???
  4359.     AX = 8485h
  4360.     DL = 7Ah
  4361. Return: CX = 5342h if supported
  4362.         AL = new value of ??? (00h or 01h)
  4363. --------H-5C---------------------------------
  4364. INT 5C - IRQ12 relocated by DESQview 2.26+
  4365. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4366. SeeAlso: INT 50"DESQview",INT 74
  4367. --------H-5C---------------------------------
  4368. INT 5C - IRQ4 relocated by DoubleDOS
  4369. SeeAlso: INT 0C
  4370. --------N-5C---------------------------------
  4371. INT 5C - NetBIOS INTERFACE
  4372.     ES:BX -> network control block (NCB) (see below)
  4373. Return: AL = status (see below)
  4374. Program: NetBIOS was developed by Sytek, Inc. in 1984 as a high-level
  4375.       programming interface to the IBM PC Network; the first implementation
  4376.       was a ROM BIOS extension on Sytek's PCnet LAN adapter card, but many
  4377.       current networks support NetBIOS as the session layer.
  4378. Note:    The Sytek PCnet card uses DMA 3.
  4379. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  4380.  
  4381. Values for NetBIOS status:
  4382.  00h    successful
  4383.  01h    bad buffer size
  4384.  03h    invalid NETBIOS command
  4385.  05h    timeout
  4386.  06h    receive buffer too small
  4387.  07h    No-ACK command failed
  4388.  08h    bad session number
  4389.  09h    LAN card out of memory
  4390.  0Ah    session closed
  4391.  0Bh    command has been cancelled
  4392.  0Dh    name already exists
  4393.  0Eh    local name table full
  4394.  0Fh    name still in use, can't delete
  4395.  11h    local session table full
  4396.  12h    remote PC not listening
  4397.  13h    bad NCB_NUM field
  4398.  14h    no answer to CALL or no such remote
  4399.  15h    name not in local name table
  4400.  16h    duplicate name
  4401.  17h    bad delete
  4402.  18h    abnormal end
  4403.  19h    name error, multiple identical names in use
  4404.  1Ah    bad packet
  4405.  21h    network card busy
  4406.  22h    too many commands queued
  4407.  23h    bad LAN card number
  4408.  24h    command finished while cancelling
  4409.  26h    command can't be cancelled
  4410.  30h    name defined by another process (OS/2)
  4411.  34h    NetBIOS environment not defined, must issue reset (OS/2)
  4412.  35h    required operating system resources exhausted (OS/2)
  4413.  36h    maximum applications exceeded (OS/2)
  4414.  37h    no SAPs available for NetBIOS (OS/2)
  4415.  38h    requested resources not available (OS/2)
  4416.  40h    Lana System Error
  4417.  41h    Lana Remote Hot Carrier
  4418.  42h    Lana Local Hot Carrier
  4419.  43h    Lana No Carrier Detected
  4420.  44h    unusual network condition
  4421.  45h-4Dh hardware error
  4422.  4Eh    token ring is broken
  4423.  4Fh    token ring error
  4424.  50h    adapter malfunction
  4425.  F7h    error in explicit INITIALIZE
  4426.  F8h    error in implicit OPEN
  4427.  F9h    TOKREUI internal error
  4428.  FAh    hardware adapter testing
  4429.  FBh    NetBIOS emulator not found
  4430.  FCh    OPEN or OPEN_SAP failure
  4431.  FDh    unexpected adapter closure
  4432.  FFh    NetBIOS busy (command pending)
  4433.  
  4434. Format of Network Control Block:
  4435. Offset    Size    Description
  4436.  00h    BYTE    command code (see below)
  4437.  01h    BYTE    return code
  4438.  02h    BYTE    local session number (LSN)
  4439.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  4440.  04h    DWORD    -> I/O buffer
  4441.  08h    WORD    length of data in buffer
  4442.  0Ah 16 BYTEs    remote system to call
  4443.  1Ah 16 BYTEs    network name of local machine
  4444.  2Ah    BYTE    receive timeout in 1/2 seconds
  4445.  2Bh    BYTE    send timeout in 1/2 seconds
  4446.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  4447.  30h    BYTE    network adapter number on which to execute command
  4448.         00h-03h IBM NetBIOS specs
  4449.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  4450.  31h    BYTE    command completion code (see returned status above)
  4451.  32h 14 BYTEs    reserved for network card
  4452.  
  4453. Values for command code field in NCB (OR with 80h for non-waiting call):
  4454.  10h    start session with NCB_NAME name (call)
  4455.  11h    listen for call
  4456.  12h    end session with NCB_NAME name (hangup)
  4457.  14h    send data via NCB_LSN
  4458.  15h    receive data from a session
  4459.  16h    receive data from any session
  4460.  17h    send multiple data buffers
  4461.  20h    send unACKed message (datagram)
  4462.  21h    receive datagram
  4463.  22h    send broadcast datagram
  4464.  23h    receive broadcast datagram
  4465.  30h    add name to name table
  4466.  31h    delete name from name table
  4467.  32h    reset adapter card and tables
  4468.  33h    get adapter status (see structure "astatus" below)
  4469.  34h    status of all sessions for name (see structure "sstatus" below)
  4470.  35h    cancel
  4471.  36h    add group name to name table
  4472.  48h    send data and receive data (LAN Manager NETBEUI.DOS)
  4473.  70h    unlink from IBM remote program (no F0h function)
  4474.  71h    send data without ACK
  4475.  72h    send multiple buffers without ACK
  4476.  72h    UngermannBass Register (conflicts with above function)
  4477.  73h    UngermannBass SendNmc
  4478.  74h    UngermannBass Callniu
  4479.  75h    UngermannBass Calladdr
  4480.  76h    UngermannBass Listenaddr
  4481.  77h    UngermannBass SendPkt
  4482.  78h    find name
  4483.  78h    UngermannBass RcvPkt (conflicts with above function)
  4484.  79h    token-ring protocol trace
  4485.  79h    UngermannBass SendAttn (conflicts with above function)
  4486.  7Ah    UngermannBass RcvAttn
  4487.  7Bh    UngermannBass Listenniu
  4488.  7Ch    UngermannBass RcvRaw
  4489.  7Dh    UngermannBass SendNmc2
  4490.  7Fh    Beame&Whiteside BWNB installation check (returns with return code and
  4491.       completion code both set to 03h, while invalid functions return only
  4492.       return code field set to 03h)
  4493.  
  4494. Format of structure "name":
  4495. Offset    Size    Description
  4496.  00h 16 BYTEs "nm_name" symbolic name
  4497.  10h    BYTE  "nm_num" number associated with name
  4498.  11h    BYTE  nm_status
  4499.  
  4500. Format of structure "astatus":
  4501. Offset    Size    Description
  4502.  00h  6 BYTEs as_id
  4503.  06h    BYTE  as_jumpers
  4504.  07h    BYTE  as_post
  4505.  08h    BYTE  as_major
  4506.  09h    BYTE  as_minor
  4507.  0Ah    WORD  as_interval
  4508.  0Ch    WORD  as_crcerr
  4509.  0Eh    WORD  as_algerr
  4510.  10h    WORD  as_colerr
  4511.  12h    WORD  as_abterr
  4512.  14h    DWORD as_tcount
  4513.  18h    DWORD as_rcount
  4514.  1Ch    WORD  as_retran
  4515.  1Eh    WORD  as_xresrc
  4516.  20h  8 BYTEs as_res0
  4517.  28h    WORD  as_ncbfree
  4518.  2Ah    WORD  as_ncbmax
  4519.  2Ch    WORD  as_ncbx
  4520.  2Eh  4 BYTEs as_res1
  4521.  32h    WORD  as_sespend
  4522.  34h    WORD  as_msp
  4523.  36h    WORD  as_sesmax
  4524.  38h    WORD  as_bufsize
  4525.  3Ah    WORD  as_names
  4526.  3Ch 16 name structures     as_name
  4527.  
  4528. Format of structure "sstatus":
  4529. Offset    Size    Description
  4530.  00h    BYTE    number of sessions being reported
  4531.  01h    BYTE    number of sessions with this name
  4532.  02h    BYTE    number of outstanding receive datagrams
  4533.  03h    BYTE    number of outstanding ReceiveAnys
  4534.  04h    var    session structures (see below)
  4535.  
  4536. Format of structure "session":
  4537. Offset    Size    Description
  4538.  00h    BYTE    local session number
  4539.  01h    BYTE    state
  4540.         01h listen pending
  4541.         02h call pending
  4542.         03h session established
  4543.         04h hangup pending
  4544.         05h hangup done
  4545.         06h session aborted
  4546.  02h 16 BYTEs    local name
  4547.  12h 16 BYTEs    remote name
  4548.  22h    BYTE    number of outstanding receives
  4549.  23h    BYTE    number of outstanding sends/chainsends
  4550. --------N-5C---------------------------------
  4551. INT 5C - TOPS INTERFACE
  4552.     ES:BX -> Network Control Block
  4553. Note:    TOPS card uses DMA 1, 3 or none.
  4554. --------N-5C---------------------------------
  4555. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  4556.     DX:BX -> control block (see below)
  4557. Return: none
  4558. Notes:    this driver can use any interrupt from 5Ch to 70h
  4559.     the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  4560.       handler; this serves as the installation check
  4561. Index:    installation check;ATALK.SYS|installation check;AppleTalk interface
  4562.  
  4563. Values for command code:
  4564.  01h    "AT_INIT"        initialize the driver
  4565.  02h    "AT_KILL"
  4566.  03h    "AT_GETNETINFO" get current network info incl init status
  4567.  04h    "AT_GETCLOCKTICKS"
  4568.  05h    "AT_STARTTIMER"
  4569.  06h    "AT_RESETTIMER"
  4570.  07h    "AT_CANCELTIMER"
  4571.  10h    "LAP_INSTALL"
  4572.  11h    "LAP_REMOVE"
  4573.  12h    "LAP_WRITE"
  4574.  13h    "LAP_READ"
  4575.  14h    "LAP_CANCEL"
  4576.  20h    "DDP_OPENSOCKET"
  4577.  21h    "DDP_CLOSESOCKET"
  4578.  22h    "DDP_WRITE"
  4579.  23h    "DDP_READ"
  4580.  24h    "DDP_CANCEL"
  4581.  30h    "NBP_REGISTER"
  4582.  31h    "NBP_REMOVE"
  4583.  32h    "NBP_LOOKUP"
  4584.  33h    "NBP_CONFIRM"
  4585.  34h    "NBP_CANCEL"
  4586.  35h    "ZIP_GETZONELIST"
  4587.  36h    "ZIP_GETMYZONE"
  4588.  37h    "ZIP_TAKEDOWN"
  4589.  38h    "ZIP_BRINGUP"
  4590.  40h    "ATP_OPENSOCKET"
  4591.  41h    "ATP_CLOSESOCKET"
  4592.  42h    "ATP_SENDREQUEST"
  4593.  43h    "ATP_GETREQUEST"
  4594.  44h    "ATP_SENDRESPONSE"
  4595.  45h    "ATP_ADDRESPONSE"
  4596.  46h    "ATP_CANCELTRANS"
  4597.  47h    "ATP_CANCELRESPONSE"
  4598.  48h    "ATP_CANCELREQUEST"
  4599.  50h    "ASP_GETPARMS"
  4600.  51h    "ASP_CLOSESESSION"
  4601.  52h    "ASP_CANCEL"
  4602.  53h    "ASP_INIT"
  4603.  54h    "ASP_KILL"
  4604.  55h    "ASP_GETSESSION"
  4605.  56h    "ASP_GETREQUEST"
  4606.  57h    "ASP_CMDREPLY"
  4607.  58h    "ASP_WRTCONTINUE"
  4608.  59h    "ASP_WRTREPLY"
  4609.  5Ah    "ASP_CLOSEREPLY"
  4610.  5Bh    "ASP_NEWSTATUS"
  4611.  5Ch    "ASP_ATTENTION"
  4612.  5Dh    "ASP_GETSTATUS"
  4613.  5Eh    "ASP_OPENSESSION"
  4614.  5Fh    "ASP_COMMAND"
  4615.  60h    "ASP_WRITE"
  4616.  61h    "ASP_GETATTENTION"
  4617.  70h    "PAP_OPEN"
  4618.  71h    "PAP_CLOSE"
  4619.  72h    "PAP_READ"
  4620.  73h    "PAP_WRITE"
  4621.  74h    "PAP_STATUS"
  4622.  75h    "PAP_REGNAME"
  4623.  76h    "PAP_REMNAME"
  4624.  77h    "PAP_INIT"
  4625.  78h    "PAP_NEWSTATUS"
  4626.  79h    "PAP_GETNEXTJOB"
  4627.  7Ah    "PAP_KILL"
  4628.  7Bh    "PAP_CANCEL"
  4629.  
  4630. Format of AppleTalk control block:
  4631. Offset    Size    Description
  4632.  00h    WORD    command code (see above)
  4633.         OR with the following flags
  4634.         8000h start command then return
  4635.         4000h wait for interrupt service to complete
  4636.  02h    WORD    returned status
  4637.         0000h success (already initialized if func 01h)
  4638.  04h    DWORD    pointer to completion function
  4639.  08h    WORD    network number
  4640.  0Ah    BYTE    node ID
  4641. ---if general func (01h,03h), control block continues:
  4642.  0Bh    BYTE    "inf_abridge"
  4643.  0Ch    WORD    "inf_config"
  4644.  0Eh    DWORD    pointer to buffer
  4645.  12h    WORD    buffer size
  4646. ---if DDP function (20h-24h), control block continues:
  4647.  0Bh    BYTE    "ddp_addr_socket"
  4648.  0Ch    BYTE    "ddp_socket"
  4649.  0Dh    BYTE    "ddp_type"
  4650.  0Eh    DWORD    pointer to buffer
  4651.  12h    WORD    buffer size
  4652.  14h    BYTE    "ddp_chksum"
  4653. ---if Name Binding Protocol (30h-34h), control block continues:
  4654.  0Bh    BYTE    "nbp_addr_socket"
  4655.  0Ch    WORD    "nbp_toget"
  4656.  0Eh    DWORD    pointer to buffer
  4657.  12h    WORD    buffer size
  4658.  14h    BYTE    "nbp_interval"
  4659.  15h    BYTE    "nbp_retry"
  4660.  16h    DWORD    "nbp_entptr"
  4661. ---if AppleTalk Transaction Protocol (42h), control block continues:
  4662.  0Bh    BYTE    "atp_addr_socket"
  4663.  0Ch    WORD    "atp_socket"
  4664.  0Eh    DWORD    pointer to buffer
  4665.  12h    WORD    buffer size
  4666.  14h    BYTE    "atp_interval"
  4667.  15h    BYTE    "atp_retry"
  4668.  16h    BYTE    ATP flags
  4669.         bit 5: exactly one transaction
  4670.  17h    BYTE    "atp_seqbit"
  4671.  18h    BYTE    transaction ID
  4672.  19h  4 BYTEs    ATP user bytes
  4673.  1Dh    BYTE    number of BDS buffers
  4674.  1Eh    BYTE    number of BDS responses
  4675.  1Fh    DWORD    pointer to BDS buffers (see below)
  4676.  
  4677. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  4678. Offset    Size    Description
  4679.  00h    WORD    "tup_address_network"
  4680.  02h    BYTE    "tup_address_notid"
  4681.  03h    BYTE    "tup_address_socket"
  4682.  04h    BYTE    "tup_enum"
  4683.  05h 99 BYTEs    name
  4684.  
  4685. Format of BDS entries:
  4686. Offset    Size    Description
  4687.  00h    DWORD    pointer to buffer
  4688.  04h    WORD    size of buffer
  4689.  06h    WORD    BDS data size
  4690.  08h  4 BYTEs    "bds_userbytes"
  4691. --------N-5C---------------------------------
  4692. INT 5C - IBM 802.2 INTERFACE (LLC)
  4693.     ES:BX -> CCB (see below)
  4694. Return: none
  4695.  
  4696. Format of CCB:
  4697. Offset    Size    Description
  4698.  00h    BYTE    adapter
  4699.  01h    BYTE    command code
  4700.  02h    BYTE    return code
  4701.  03h    BYTE    work
  4702.  04h    DWORD    pointer to ???
  4703.  08h    DWORD    pointer to completion function???
  4704.  0Ch    DWORD    pointer to parameters???
  4705. --------N-5C---------------------------------
  4706. INT 5C - $25 LAN - INSTALLATION CHECK
  4707. Notes:    current versions only check whether the vector is 0000h:0000h or not
  4708.     future versions are supposed to have the signature "NET" in the three
  4709.       bytes preceding the INT 5C handler
  4710. --------N-5C04-------------------------------
  4711. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  4712.     AH = 04h
  4713.     AL = COM port (0 = default)
  4714.     CX = wait count in character times (should be at least 100)
  4715. Return: ZF set if link alive
  4716. --------H-5D---------------------------------
  4717. INT 5D - IRQ13 relocated by DESQview 2.26+
  4718. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4719. SeeAlso: INT 50"DESQview",INT 75
  4720. --------H-5D---------------------------------
  4721. INT 5D - IRQ5 relocated by DoubleDOS
  4722. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  4723. --------H-5E---------------------------------
  4724. INT 5E - IRQ14 relocated by DESQview 2.26+
  4725. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4726. SeeAlso: INT 50"DESQview",INT 76
  4727. --------H-5E---------------------------------
  4728. INT 5E - IRQ6 relocated by DoubleDOS
  4729. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  4730. --------H-5F---------------------------------
  4731. INT 5F - IRQ15 relocated by DESQview 2.26+
  4732. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4733. SeeAlso: INT 50"DESQview",INT 77
  4734. --------H-5F---------------------------------
  4735. INT 5F - IRQ7 relocated by DoubleDOS
  4736. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  4737. --------b-5F00-------------------------------
  4738. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  4739.     AH = 00h
  4740.     AL = video mode
  4741.         07h text, system manager compliant
  4742.         20h 240x128 mono graphics, system manager compliant
  4743.         87h text, not system manager compliant
  4744.         A0h 240x128 mono graphics, not system manager compliant
  4745. Note:    the defaults after setting the mode to graphics are (0,0) logical
  4746.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  4747.       pixel replacement FORCE, line type and fill mask all bits set
  4748. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  4749. --------b-5F01-------------------------------
  4750. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
  4751.     AH = 01h
  4752.     ES:DI -> 8-byte fill mask
  4753. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  4754.       when drawing filled rectangles; it is always aligned with the byte
  4755.       boundaries of video memory, regardless of the actual boundaries of
  4756.       the rectangle
  4757. SeeAlso: AH=02h
  4758. --------b-5F02-------------------------------
  4759. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
  4760.     AH = 02h
  4761.     ES:DI -> graphics info record (see below)
  4762. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  4763.  
  4764. Format of graphics info record:
  4765. Offset    Size    Description
  4766.  00h    BYTE    current video mode
  4767.  01h    BYTE    default video mode
  4768.  02h    WORD    display width in pixels
  4769.  04h    WORD    display height in pixels
  4770.  06h    WORD    current pen column
  4771.  08h    WORD    current pen row
  4772.  0Ah    WORD    current line type
  4773.  0Ch    WORD    current replacement rule
  4774.  0Eh    WORD    current pen color
  4775.  10h    WORD    current leftmost column of clip region
  4776.  12h    WORD    current rightmost column of clip region
  4777.  14h    WORD    current topmost row of clip region
  4778.  16h    WORD    current bottommost row of clip region
  4779.  18h    WORD    current column of logical origin
  4780.  1Ah    WORD    current row of logical origin
  4781.  1Ch  8 BYTEs    current fill mask
  4782. --------b-5F03-------------------------------
  4783. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  4784.     AH = 03h
  4785.     CX = column
  4786.     DX = row
  4787. SeeAlso: AH=04h
  4788. --------b-5F04-------------------------------
  4789. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
  4790.     AH = 04h
  4791.     CX = left-most column
  4792.     DX = top-most row
  4793.     SI = right-most column
  4794.     DI = bottom-most row
  4795. SeeAlso: AH=03h
  4796. --------b-5F05-------------------------------
  4797. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  4798.     AH = 05h
  4799.     AL = fill type
  4800.         00h outline, using current line type and color
  4801.         01h solid, using current color
  4802.         02h pattern, using current fill mask and color
  4803.     DX,CX = row,column of other corner of rectangle
  4804. Note:    the rectangle is drawn starting at the current pen position
  4805. SeeAlso: AH=01h,AH=06h,AH=07h
  4806. --------b-5F06-------------------------------
  4807. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
  4808.     AH = 06h
  4809.     DX,CX = row,column of end point
  4810. Note:    the line is drawn starting at the current pen position
  4811. SeeAlso: AH=05h,AH=07h
  4812. --------b-5F07-------------------------------
  4813. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
  4814.     AH = 07h
  4815.     DX,CX = row,column of point
  4816. Note:    also sets pen position to the specified point
  4817. SeeAlso: AH=06h,AH=08h,AH=0Ch
  4818. --------b-5F08-------------------------------
  4819. INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
  4820.     AH = 08h
  4821.     DX,CX = row,column of new pen position
  4822. SeeAlso: AH=07h,AH=09h
  4823. --------b-5F09-------------------------------
  4824. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
  4825.     AH = 09h
  4826.     AL = new color (00h = white, 01h = black)
  4827. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  4828. --------b-5F0A-------------------------------
  4829. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  4830.     AH = 0Ah
  4831.     AL = new replacement rule
  4832.         00h force
  4833.         01h AND
  4834.         02h OR
  4835.         03h XOR
  4836. SeeAlso: AH=01h,AH=09h,AH=0Bh
  4837. --------b-5F0B-------------------------------
  4838. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
  4839.     AH = 0Bh
  4840.     CX = new line type
  4841. Note:    the line type specifies 16 bits which are repeated over and over while
  4842.       drawing the pixels of a line
  4843. SeeAlso: AH=09h,AH=0Ah
  4844. --------b-5F0C-------------------------------
  4845. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
  4846.     AH = 0Ch
  4847.     DX,CX = row,column of pixel to read
  4848. Return: AX = pixel color
  4849. SeeAlso: AH=07h
  4850. --------b-5F0D-------------------------------
  4851. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
  4852.     AH = 0Dh
  4853.     DX,CX = row,column of first corner
  4854.     BP,SI = row,column of second corner
  4855.     ES:DI -> image buffer (see below)
  4856. Note:    the specified corners are included in the saved image
  4857. SeeAlso: AH=0Eh
  4858.  
  4859. Format of image buffer:
  4860. Offset    Size    Description
  4861.  00h    WORD    number of planes (always 01h on HP 95LX)
  4862.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  4863.  04h    WORD    image width in pixels
  4864.  06h    WORD    image height in pixels
  4865.  08h  N BYTEs    image data
  4866.         requires (WIDTH+7)/8 * HEIGHT bytes
  4867. --------b-5F0E-------------------------------
  4868. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
  4869.     AH = 0Eh
  4870.     AL = replacement rule
  4871.         bit 2: invert image before applying rule
  4872.         bits 1-0:  00 force
  4873.                01 AND
  4874.                10 OR
  4875.                11 XOR
  4876.     DX,CX = row,column of top left corner
  4877.     ES:DI -> image buffer (see AH=0Dh)
  4878. Note:    if the specified image does not fit completely on the screen, this call
  4879.       does nothing
  4880. SeeAlso: AH=0Dh
  4881. --------b-5F0F-------------------------------
  4882. INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
  4883.     AH = 0Fh
  4884.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  4885.     DX,CX = row,column of first character's top left corner
  4886.     ES:DI -> ASCIZ text
  4887. --------*-60---------------------------------
  4888. INT 60 - reserved for user interrupt
  4889. --------v-60---------------------------------
  4890. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  4891.    The "Zero Bug" virus hooks this vector.  It considers itself installed if
  4892.    offset 103h of the handler's segment contains the bytes "ZE"
  4893. SeeAlso: INT 32,INT 44"VIRUS",INT 61"SEMTEX"
  4894. --------d-60---------------------------------
  4895. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  4896. SeeAlso: INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  4897. Notes:    this vector stores the first four bytes of the parameter table for
  4898.       hard disk 0
  4899.     these vectors are used by the following Adaptec controllers:
  4900.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  4901.     these vectors are NOT used by the following Adaptec controllers:
  4902.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  4903. --------b-60---------------------------------
  4904. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  4905.    supplies a number of subfunctions which perform such functions as drawing
  4906.    boxes and menus, and provide input line editing
  4907. SeeAlso: INT 61"Atari"
  4908. --------V-60---------------------------------
  4909. INT 60 - Nabbit v2.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  4910. Program: Nabbit is a shareware resident screen data grabber by RSE Inc.
  4911. Note:    Nabbit searches INT 60 through INT 66 for a vector which points at
  4912.       its ASCIZ signature string "iG" (69h 47h 00h), and uses the first
  4913.       free vector in that range it is it not already installed
  4914. --------V-60---------------------------------
  4915. INT 60 U - Buffit v3.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  4916. Program: Buffit is a shareware scrollback utility by D.T. Hamilton
  4917. Notes:    Buffit searches INT 60 through INT 6F for a vector which points at
  4918.       the ASCII signature "Buffit  ", and uses the first free vector in
  4919.       that range if it is not already installed
  4920.     there is a private entry point immediately following the signature
  4921.       string, i.e. eight bytes beyond the address pointed at by the
  4922.       interrupt
  4923.  
  4924. Call private entry point with:
  4925.     AH = function
  4926.         00h get information and hotkey state
  4927.         01h get information and toggle hotkey state
  4928. Return: AH = new hotkey state (00h enabled, 01h disabled)
  4929.     AL = hotkey scan code
  4930.     BH = hotkey shift states
  4931.     BL = ??? (01h)
  4932.     CX = segment of resident code
  4933.     DH = niterrupt number used for signature pointer
  4934.     DL = ??? (00h)
  4935.     SI = INT 09 handler offset
  4936.     DI = INT 21 handler offset
  4937. Index:    hotkeys;Buffit
  4938. --------r-60---------------------------------
  4939. INT 60 - PC-IPC API
  4940.     STACK:    DWORD    pointer to parameter block (see below)
  4941. Return: STACK:    unchanged
  4942. Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
  4943.       allows communication between independent programs
  4944. Note:    INT 60 is the default, any interrupt vector may be used by specifying
  4945.       the vector on the commandline
  4946.  
  4947. Format of parameter block:
  4948. Offset    Size    Description
  4949.  00h    WORD    caller's ID
  4950.  02h    WORD    to ID
  4951.  04h    WORD    command code (see below)
  4952.  06h    WORD    returned status (see below)
  4953.  08h    WORD    returned error code (see below)
  4954.  0Ah    WORD    size of data
  4955.  0Ch    DWORD    pointer to data buffer
  4956.  
  4957. Values for command code:
  4958.  01h "IPC_CMND_INQUIRE"     inquire current status
  4959.         set status field, writes WORD to data buffer containing free
  4960.           message space in bytes, and sets the "size" field to the
  4961.           number of messages waiting
  4962.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  4963.         ignored unless called with the same ID that disabled PC-IPC
  4964.  03h "IPC_CMND_DISABLE" disable PC-IPC
  4965.  04h "IPC_CMND_INSTALL" reset PC-IPC
  4966.  06h "IPC_CMND_RDATA"    read data
  4967.         returns first message in data buffer, sets "size" to message
  4968.           length and "to ID" field to sender's ID
  4969.         if no messages available, bit 4 of status is cleared and "size"
  4970.           is set to zero
  4971.  07h "IPC_CMND_SDATA"    send data
  4972.  08h "IPC_CMND_REQID"    require user ID
  4973.         create a new recognized ID and return in "caller's ID" field
  4974.  09h "IPC_CMND_DELID"    cancel user ID
  4975.         delete caller's ID from pool of recognized IDs
  4976.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  4977.  0Bh "IPC_CMND_VERS"    get PC-IPC version
  4978.         string representing version returned in data buffer, "size"
  4979.           field set to length of string
  4980.  
  4981. Bitfields for returned status:
  4982.  bit 0    unused
  4983.  bit 1    IPC enabled
  4984.  bit 2    IPC installed
  4985.  bit 3    error
  4986.  bit 4    message(s) available
  4987.  
  4988. Values for error code:
  4989.  00h    no error
  4990.  01h    invalid command or parameter
  4991.  02h    only process 0 can install/reset IPC
  4992.  03h    process can not install/reset IPC
  4993.  04h    IPC is not enabled
  4994.  05h    process can not disable IPC
  4995.  06h    invalid destination process ID
  4996.  07h    invalid sending process ID
  4997.  08h    invalid data destination
  4998.  09h    no more process IDs available
  4999.  0Ah    can not relinquish that process ID
  5000.  0Bh    message space is full
  5001.  0Ch    IPC is not installed
  5002. --------R-60---------------------------------
  5003. INT 60 - Tangram Arbiter - API
  5004. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  5005.     identified by string "@ARB_API" immediately following a short jump at
  5006.       the interrupt handler address
  5007.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  5008.       IBM mainframe
  5009. --------N-60---------------------------------
  5010. INT 60 - Excelan LAN Workplace for DOS 3.5 - API
  5011.     ES:BX -> request packet
  5012. Return: request packet updated
  5013. Notes:    this interrupt is also supported by Beame&Whiteside's BWLWP35 shim,
  5014.       which was used in creating this description
  5015.     the installation check consists of testing for the WORD 4142h ('AB')
  5016.       immediately preceding the interrupt handler
  5017. BUG:    because BWLWP35 range-checks only the low byte of the function number,
  5018.       and has a fencepost error even in that test, functions 000Bh and
  5019.       XX01h-XX0Bh (XX nonzero) branch to random locations
  5020. SeeAlso: INT 2F/AX=7A40h
  5021.  
  5022. Format of request packet:
  5023. Offset    Size    Description
  5024.  00h 12 BYTEs    ???
  5025.  0Ch    WORD    (return) error code (see below)
  5026.  0Eh    DWORD    -> FAR function for ???
  5027.  12h    WORD    function number
  5028.         0001h ???
  5029.         0002h NOP
  5030.         0003h NOP
  5031.         0004h NOP
  5032.         0005h ???
  5033.         0006h get ??? record
  5034.         0007h NOP
  5035.         0008h reset ???
  5036.         0009h NOP
  5037.         000Ah set ???
  5038.     ???
  5039. ---function 01h---
  5040.  20h    BYTE    (call) subfunction (32h-3Bh)
  5041.         3Bh non-blocking I/O request (will be tested every clock tick)
  5042.  21h    BYTE    (return) error code
  5043.         00h successful
  5044.         09h invalid connection number
  5045.         2Ah bad connection type
  5046.         45h ???
  5047. ---function 01h, subfunction 32h---
  5048.  3Ah    WORD    (call) connection type (01h stream, 02h datagram)
  5049. ---function 01h, subfunction 34h---
  5050.  26h    WORD    (call) ???
  5051.  28h    WORD    (call) ???
  5052.  2Ah    WORD    (call) ???
  5053. ---function 01h, subfunction 35h---
  5054.  1Ah    WORD    (call) connection number???
  5055.  26h    WORD    (return) ???
  5056. ---function 01h, subfunction 36h---
  5057.  1Ah    WORD    (call) connection number???
  5058.  38h    WORD    ???
  5059. ---function 01h, subfunction 37h---
  5060.  24h    WORD    (return) ???
  5061.  26h    WORD    (return) ???
  5062. ---function 01h, subfunction 38h---
  5063.  1Ah    WORD    (call) connection number???
  5064. ---function 01h, subfunction 3Ah---
  5065.  22h    WORD    (call) ???
  5066.         667Eh ???
  5067.         667Fh ???
  5068.  24h    BYTE    (call 667Eh) ???
  5069.  24h    WORD    (return 667Fh) ???
  5070. ---function 01h, subfunction 3Bh---
  5071.  0Eh    DWORD    (call) -> function to invoke for I/O or 0000h:0000h
  5072.         function called with AX = 0000h
  5073.                      STACK: DWORD -> request packet
  5074.                         WORD 0000h
  5075.             should return STACK unchanged
  5076.  1Ah    WORD    (call) connection number???
  5077.  21h    BYTE    (return) set to 01h when I/O becomes possible
  5078.  22h    BYTE    (call) direction (00h write, 01h read)
  5079.  34h    DWORD    (return) -> next pending request packet
  5080. ---function 05h---
  5081.  1Eh    WORD    (call) ???
  5082.  20h    WORD    (call) ???
  5083.  34h    DWORD    (call) -> ???
  5084. ---function 06h---
  5085.  16h    DWORD    (call) -> buffer for ??? record (see below)
  5086.  1Ah    WORD    (call) number of bytes to copy
  5087.  22h    WORD    (return) number of bytes transferred
  5088. ---function 08h---
  5089.  14h    WORD    (return) ??? (0001h)
  5090. ---function 0Ah---
  5091.  16h    DWORD    (call) -> WORD ???
  5092.  1Ch    WORD    (call) must be 000Ah for BWLWP35
  5093.  
  5094. Values for error code:
  5095.  0000h    successful
  5096.  002Dh    invalid function
  5097.  0050h    ???
  5098.  
  5099. Format of ??? record:
  5100. Offset    Size    Description
  5101.  00h    WORD    offset of ???
  5102.  02h  4 BYTEs    ???
  5103.  06h    DWORD    IP address (big-endian)
  5104.  0Ah  6 BYTEs    physical address (big-endian)
  5105.     ???
  5106. --------G-60---------------------------------
  5107. INT 60 U - INTRSPY/CMDSPY API
  5108. Program: INTRSPY is a script-driven debugger included with the book
  5109.       _Undocumented_DOS_.
  5110. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  5111.     The installation check is to
  5112.       a) determine that the handler is an IRET instruction
  5113.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  5114.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  5115.       its entry point.
  5116. Index:    installation check;INTRSPY
  5117.  
  5118. Call INTRSPY entry point with:
  5119.     AH = function
  5120.         00h ???
  5121.         01h set current directory (for use in reporting)
  5122.         ES:DI -> counted string containing directory name (max 79 char)
  5123.         02h set name of script file
  5124.         ES:DI -> counted string containing file name (max 79 chars)
  5125.         03h set script arguments
  5126.         ES:DI -> counted string containing arguments (max 79 chars)
  5127.         04h get directory set with function 01h
  5128.         ES:DI -> 80-byte buffer for directory name
  5129.         05h get name of script file
  5130.         ES:DI -> 80-byte buffer for script filename
  5131.         06h get script arguments
  5132.         ES:DI -> 80-byte buffer for script arguments
  5133.         07h get ???
  5134.         CL = 00h-15h specifies what to get
  5135.         ES:DI -> WORD to be set with desired value on return
  5136.         08h get ???
  5137.         ES:DI -> WORD to be set with returned value
  5138.         09h get ???
  5139.         ES:DI -> WORD to be set with returned value
  5140.         0Bh store code for interrupt handler???
  5141.         ES:DI -> data
  5142.         CX = number of bytes
  5143.         0Ch ???
  5144.         ES:DI -> ???
  5145.         0Dh get ???
  5146.         ES:DI -> BYTE to be set with returned value
  5147.         0Eh set ??? flag
  5148.         0Fh clear ??? flag
  5149.         10h ???
  5150.         Return: AL = 04h or 05h if failed
  5151.         11h ???
  5152.         Return: AL = 05h if failed
  5153.         12h get ???
  5154.         ES:DI -> buffer
  5155.         Return: CX = number of bytes returned in buffer
  5156.         13h ???
  5157. Return: AH = 00h
  5158.     AL = status
  5159.         00h successful
  5160.         01h invalid function
  5161.         02h ???
  5162.         03h ???
  5163.         04h ???
  5164.         05h ???
  5165. --------u-60---------------------------------
  5166. INT 60 U - PC/370 v4.2 - ???
  5167.     ???
  5168. Return: ???
  5169. Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
  5170. Note:    this is the default interrupt, however the documentation includes
  5171.       instructions for patching the system for another interrupt
  5172. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  5173. --------r-60---------------------------------
  5174. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  5175. SeeAlso: INT 61"JPI"
  5176. --------N-60---------------------------------
  5177. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  5178. Notes:    The handler for the interrupt will start with a 3-byte jump
  5179.       instruction, followed by the ASCIZ string "PKT DRVR" (the
  5180.       terminating NUL is significant).
  5181.     To find the interrupt being used by the driver, an application should
  5182.       scan through interrupt vectors 60h to 80h (20h through FFh for
  5183.       v1.10+ of the specification) until it finds one with the "PKT DRVR"
  5184.       string.
  5185.     AH values of 80h to FFh have been reserved for user-defined additions.
  5186. --------b-60----DI0100-----------------------
  5187. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  5188.     DI = 0100h
  5189.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5190.         DWORD    pointer to event record (see below)
  5191. Return: event record filled
  5192.     STACK unchanged
  5193. Note:    this call will timeout after about 500ms
  5194. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  5195.  
  5196. Values for event type:
  5197.  00h    no events
  5198.  01h    keystroke available
  5199.  02h    Ctrl-Break
  5200.  03h    reactivation (always follows deactivation event)
  5201.  04h    about to deactivate (sleep)
  5202.     next get-event call will not return until reactivated
  5203.  05h    forced application termination
  5204.  06h    1-2-3 bridge service request (only given to 1-2-3)
  5205.  07h    request to grow
  5206.  08h    request to shrink
  5207.  09h    application's alarm expired
  5208.  0Ah    daily chance to set an alarm
  5209.  0Bh    system date or time has been changed
  5210.  
  5211. Format of event record:
  5212. Offset    Size    Description
  5213.  00h    WORD    event type (see above)
  5214.  02h    WORD    ASCII code page 850 translation of keystroke
  5215.         or grow/shrink amount in paragraphs or 0000h if error
  5216.         or alarm expiration data
  5217.  04h    BYTE    scan code from BIOS
  5218.  05h    BYTE    shift key states at time keystroke is retrieved
  5219.  06h    WORD    LICS translation of keystroke
  5220.  08h    BYTE    function key number (1-2-3 only)
  5221.  09h    DWORD    pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
  5222.         or pointer to time change structure (see below)
  5223. Note:    if the System Manager is awaiting the conclusion of a bridge service
  5224.       or grow/shrink call and the event type field is set to FFFFh on
  5225.       entry, the SysMgr will resume
  5226.  
  5227. Format of time change structure:
  5228. Offset    Size    Description
  5229.  00h    WORD    old year
  5230.  02h    BYTE    old month
  5231.  03h    BYTE    old date
  5232.  04h    BYTE    old day
  5233.  05h    BYTE    old hour
  5234.  06h    BYTE    old minute
  5235.  07h    BYTE    old second
  5236.  08h    BYTE    old hundredth of a second
  5237.  09h  9 BYTEs    new time in same format as old time
  5238. --------b-60----DI0101-----------------------
  5239. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  5240.     DI = 0101h
  5241.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5242.         DWORD pointer to event record (INT 60/DI=0100h)
  5243. Return: event record filled
  5244.     STACK unchanged
  5245. Note:    this call returns immediately if no event is available
  5246. SeeAlso: INT 60/DI=0100h
  5247. --------b-60----DI0102-----------------------
  5248. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  5249.     DI = 0102h
  5250.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5251. Return: ???
  5252.     STACK unchanged
  5253. --------b-60----DI0104-----------------------
  5254. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  5255.     DI = 0104h
  5256.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5257.         DWORD pointer to bridge record (see below)
  5258. Return: ???
  5259.     STACK unchanged
  5260.  
  5261. Values for function code:
  5262.  00h    test
  5263.  01h    get range
  5264.  02h    "GETRANGE_ADDR"
  5265.  03h    "SETRANGE_ADDR"
  5266.  04h    "GETRANGE_DATA"
  5267.  05h    "SETRANGE_DATA"
  5268.  06h    recalculate
  5269.  07h    get cursor
  5270.  08h    set cursor
  5271.  09h    redisplay
  5272.  0Ah    cell type
  5273.  0Bh    "CALCTYPE"
  5274.  
  5275. Format of bridge record:
  5276. Offset    Size    Description
  5277.  00h    WORD    function code (see above)
  5278.  02h    WORD    return code from 1-2-3
  5279.  04h 16 BYTEs    ASCII range name
  5280.  14h    WORD    start column of range
  5281.  16h    WORD    start row of range
  5282.  18h    WORD    end column of range
  5283.  1Ah    WORD    end row of range
  5284.  1Ch    WORD    order in which data is placed in buffer
  5285.  1Eh    WORD    buffer size
  5286.  20h    WORD    offset within bridge record's segment of buffer for cell data
  5287. --------b-60----DI0105-----------------------
  5288. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  5289.     DI = 0105h
  5290.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5291. Return: ???
  5292.     STACK unchanged
  5293. --------b-60----DI0106-----------------------
  5294. INT 60 u - HP 95LX System Manager - YIELD CPU
  5295.     DI = 0106h
  5296.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5297.         DWORD pointer to ???
  5298. Return: ???
  5299.     STACK unchanged
  5300. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  5301. --------b-60----DI0107-----------------------
  5302. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  5303.     DI = 0107h
  5304.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5305.         DWORD pointer to ???
  5306. Return: ???
  5307.     STACK unchanged
  5308. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5309. --------b-60----DI0200-----------------------
  5310. INT 60 u - HP 95LX System Manager - SETUP MENU
  5311.     DI = 0200h
  5312.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5313.         DWORD    pointer to menu data (see below)
  5314.         DWORD    pointer to ???
  5315.         WORD    number of items on menu???
  5316.         WORD    ???
  5317.         DWORD    pointer to ???
  5318.         WORD    ???
  5319.         DWORD    pointer to ???
  5320. Return: ???
  5321.     STACK unchanged
  5322. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  5323.  
  5324. Format of menu data:
  5325. Offset    Size    Description
  5326.  00h 80 BYTEs    first line of menu text
  5327.  50h 80 BYTEs    second line of menu text
  5328.  A0h 80 BYTEs    third line of menu text
  5329.  F0h    WORD    number of keywords
  5330.  F2h    WORD    index of currently highlighted keyword or FFFFh
  5331.  F4h    WORD    single prompt on top line if nonzero
  5332.  F6h 20 BYTEs    which line each of 20 keywords is located on
  5333. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  5334. 11Eh 20 BYTEs    length of each of 20 keywords
  5335. 132h 20 BYTEs    first letter of each of 20 keywords
  5336. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  5337. --------b-60----DI0201-----------------------
  5338. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  5339.     DI = 0201h
  5340.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5341.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5342. Return: ???
  5343.     STACK unchanged
  5344. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  5345. --------b-60----DI0202-----------------------
  5346. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  5347.     DI = 0202h
  5348.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5349.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5350. Return: ???
  5351.     STACK unchanged
  5352. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  5353. --------b-60----DI0203-----------------------
  5354. INT 60 u - HP 95LX System Manager - REMOVE MENU
  5355.     DI = 0203h
  5356.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5357.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5358. Return: ???
  5359.     STACK unchanged
  5360. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  5361. --------b-60----DI0204-----------------------
  5362. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  5363.     DI = 0204h
  5364.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5365.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5366.         WORD    keystroke
  5367.         DWORD    pointer to WORD to receive selection number
  5368. Return: buffer for selection number filled with index of selected menu item or
  5369.       FFFFh if no final selection yet
  5370.     STACK unchanged
  5371. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  5372. --------b-60----DI0205-----------------------
  5373. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  5374.     DI = 0205h
  5375.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5376.         DWORD    pointer to file menu structure (see below)
  5377.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5378.         DWORD    pointer to wildcard filespec for initial file list
  5379.         WORD    row???
  5380.         WORD    column???
  5381. Return: ???
  5382.     STACK unchanged
  5383. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  5384.  
  5385. Format of file menu structure:
  5386. Offset    Size    Description
  5387.  00h    DWORD    pointer to ASCIZ base directory name
  5388.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  5389.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see below)
  5390.  0Ch    WORD    size of file list workspace in bytes
  5391.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  5392.  10h    WORD    starting column
  5393.  12h    WORD    number of lines
  5394.  14h    WORD    number of columns
  5395.  16h    WORD    number of files displayed on each line
  5396. ---the remaining fields are initialized by the System Manager---
  5397.  18h    WORD    0000h if first edit character, else multiline
  5398.  1Ah    WORD    number of files in file list
  5399.  1Ch    WORD    max files workspace has room for
  5400.  1Eh    WORD    file at top of list
  5401.  20h    WORD    index of file to highlight
  5402.  22h    WORD    index of file to unhighlight
  5403.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  5404.  
  5405. Format of file list workspace entry:
  5406. Offset    Size    Description
  5407.  00h    BYTE    file attributes
  5408.  01h    WORD    file time (see INT 21/AX=5700h)
  5409.  03h    WORD    file date (see INT 21/AX=5700h)
  5410.  05h    DWORD    file size
  5411.  09h 13 BYTEs    ASCIZ filename
  5412. --------b-60----DI0206-----------------------
  5413. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  5414.     DI = 0206h
  5415.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5416.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5417.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5418. Return: ???
  5419.     STACK unchanged
  5420. SeeAlso: INT 60/DI=0205h
  5421. --------b-60----DI0207-----------------------
  5422. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  5423.     DI = 0207h
  5424.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5425.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5426.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5427.         WORD    keystroke
  5428. Return: AX = status
  5429.         0000h keystroke processed, call INT 60/DI=0206h to refresh menu
  5430.         0001h redisplay application area before refreshing menu
  5431.         0002h user confirmed selection, filename is in edit record's buffer
  5432.         0003h user aborted menu
  5433.         FFFBh bad filename
  5434.         FFFCh bad directory
  5435.         FFFDh bad drive
  5436.         FFFEh unknown keystroke
  5437.         FFFFh keystroke known but invalid in current context
  5438.     STACK unchanged
  5439. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  5440. --------b-60----DI0208-----------------------
  5441. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  5442.     DI = 0208h
  5443.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5444.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5445.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5446. Return: ???
  5447.     STACK unchanged
  5448. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  5449. --------b-60----DI0300-----------------------
  5450. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  5451.     DI = 0300h
  5452.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5453.         WORD    starting row (-3 is topmost, 0 is first user line)
  5454.         WORD    starting column
  5455.         DWORD    pointer to string
  5456.         WORD    length of string
  5457.         WORD    display style: 0000h normal, 0001h reverse video
  5458.         WORD    "OSTYLE"
  5459. Return: ???
  5460.     STACK unchanged
  5461. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  5462. --------b-60----DI0301-----------------------
  5463. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  5464.     DI = 0301h
  5465.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5466.         WORD    starting row (-3 is topmost, 0 is first user line)
  5467.         WORD    starting column
  5468.         WORD    number of rows
  5469.         WORD    number of columns
  5470. Return: ???
  5471.     STACK unchanged
  5472. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  5473. --------b-60----DI0302-----------------------
  5474. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  5475.     DI = 0302h
  5476.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5477.         WORD    starting row???
  5478.         WORD    starting column???
  5479.         WORD    height of scroll region???
  5480.         WORD    width of scroll region???
  5481.         WORD    number of lines to scroll region???
  5482. Return: ???
  5483.     STACK unchanged
  5484. SeeAlso: INT 60/DI=0301h
  5485. --------b-60----DI0303-----------------------
  5486. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  5487.     DI = 0303h
  5488.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5489.         WORD    ???
  5490.         WORD    ???
  5491.         WORD    ???
  5492.         WORD    ???
  5493.         DWORD    pointer to ???
  5494. Return: ???
  5495.     STACK unchanged
  5496. --------b-60----DI0304-----------------------
  5497. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  5498.     DI = 0304h
  5499.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5500.         DWORD    pointer to ???
  5501.         WORD    ???
  5502. Return: ???
  5503.     STACK unchanged
  5504. --------b-60----DI0305-----------------------
  5505. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  5506.     DI = 0305h
  5507.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5508.         WORD    ???
  5509.         WORD    ???
  5510.         DWORD    pointer to ???
  5511.         WORD    ???
  5512. Return: ???
  5513.     STACK unchanged
  5514. --------b-60----DI0307-----------------------
  5515. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  5516.     DI = 0307h
  5517.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5518.         WORD    ???
  5519.         WORD    ???
  5520.         WORD    ???
  5521. Return: ???
  5522.     STACK unchanged
  5523. --------b-60----DI0308-----------------------
  5524. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  5525.     DI = 0308h
  5526.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5527. Return: ???
  5528.     STACK unchanged
  5529. --------b-60----DI0309-----------------------
  5530. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  5531.     DI = 0309h
  5532.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5533.         WORD    new mode
  5534. Return: ???
  5535.     STACK unchanged
  5536. --------b-60----DI030A-----------------------
  5537. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  5538.     DI = 030Ah
  5539.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5540. Return: ???
  5541.     STACK unchanged
  5542. --------b-60----DI030B-----------------------
  5543. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  5544.     DI = 030Bh
  5545.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5546.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  5547.         WORD    column
  5548. Return: ???
  5549.     STACK unchanged
  5550. Note:    cursor is hidden if the specified position is not on the physical
  5551.       display
  5552. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5553. --------b-60----DI0400-----------------------
  5554. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  5555.     DI = 0400h
  5556.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5557.         DWORD    pointer to edit record (see below)
  5558.         DWORD    pointer to string to be edited
  5559.         WORD    initial length of string being edited
  5560.         WORD    maximum length of edited string
  5561.         WORD    row of edit field
  5562.         WORD    leftmost column of edit field
  5563. Return: ???
  5564.     STACK unchanged
  5565.  
  5566. Format of edit record:
  5567. Offset    Size    Description
  5568.  00h    WORD    current length of edit buffer
  5569.  02h    BYTE    flag for special processing on first character
  5570.  03h    BYTE    flags
  5571.         bit 0: tab handling
  5572.  04h    WORD    editing in prompt window?
  5573.  06h    DWORD    pointer to top line of prompt window message
  5574.  0Ah    WORD    length of top line of prompt
  5575.  0Ch    DWORD    pointer to second line of prompt window message
  5576.  10h    WORD    length of second line of prompt
  5577.  12h 80 BYTEs    workspace for editing
  5578.  62h  2 WORDs    line array needed for multi-line editing
  5579.  66h 36 BYTEs    multi-line edit record (see below)
  5580.  8Ah    WORD    displayable columns
  5581.  
  5582. Format of multi-line edit record:
  5583. Offset    Size    Description
  5584.  00h    DWORD    pointer to user-supplied edit buffer
  5585.  04h    WORD    length of edit buffer
  5586.  06h    WORD    current cursor position
  5587.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  5588.  0Ah    WORD    starting column of edit area
  5589.  0Ch    WORD    height of edit area
  5590.  0Eh    WORD    width of edit area
  5591.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  5592.  12h    WORD    number of rows displayable
  5593.  14h    BYTE    cursor column
  5594.  15h    BYTE    01h if buffer has been modified
  5595.  16h    BYTE    first displayable column (ticker fields only)
  5596.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  5597.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  5598.           area is high)
  5599.  1Ch    BYTE    currently marking?
  5600.  1Dh    BYTE    flag
  5601.  1Eh    WORD    offset of mark start
  5602.  20h    WORD    offset of mark end (inclusive)
  5603.  22h    WORD    displayable columns
  5604. --------b-60----DI0401-----------------------
  5605. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  5606.     DI = 0401h
  5607.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5608.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5609.         DWORD    pointer to string to edit
  5610.         WORD    initial length of string being edited
  5611.         WORD    maximum length of edited string
  5612.         DWORD    pointer to first line of prompt
  5613.         WORD    length of first line
  5614.         DWORD    pointer to second line of prompt
  5615.         WORD    length of second line
  5616. Return: ???
  5617.     STACK unchanged
  5618. --------b-60----DI0402-----------------------
  5619. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  5620.     DI = 0402h
  5621.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5622.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5623. Return: ???
  5624.     STACK unchanged
  5625. --------b-60----DI0403-----------------------
  5626. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  5627.     DI = 0403h
  5628.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5629.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5630.         WORD    keystroke
  5631.         DWORD    pointer to WORD buffer for result code
  5632. Return: result code buffer filled with 0001h if editing complete
  5633.     STACK unchanged
  5634. --------b-60----DI0404-----------------------
  5635. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  5636.     DI = 0404h
  5637.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5638.         DWORD    pointer to ???
  5639.         WORD    ???
  5640.         WORD    ???
  5641.         WORD    ???
  5642.         WORD    ???
  5643.         DWORD    pointer to ???
  5644.         WORD    ???
  5645.         WORD    ???
  5646.         WORD    ???
  5647.         DWORD    pointer to ???
  5648. Return: ???
  5649.     STACK unchanged
  5650. --------b-60----DI0405-----------------------
  5651. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  5652.     DI = 0405h
  5653.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5654.         DWORD    pointer to ???
  5655. Return: ???
  5656.     STACK unchanged
  5657. --------b-60----DI0406-----------------------
  5658. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  5659.     DI = 0406h
  5660.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5661.         DWORD    pointer to ???
  5662.         WORD    ???
  5663. Return: ???
  5664.     STACK unchanged
  5665. --------b-60----DI0407-----------------------
  5666. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  5667.     DI = 0407h
  5668.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5669.         DWORD    pointer to ???
  5670.         DWORD    pointer to ???
  5671. Return: ???
  5672.     STACK unchanged
  5673. --------b-60----DI0408-----------------------
  5674. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  5675.     DI = 0408h
  5676.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5677.         DWORD    pointer to ???
  5678. Return: ???
  5679.     STACK unchanged
  5680. --------b-60----DI0409-----------------------
  5681. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  5682.     DI = 0409h
  5683.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5684.         DWORD    pointer to ???
  5685. Return: ???
  5686.     STACK unchanged
  5687. --------b-60----DI040A-----------------------
  5688. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  5689.     DI = 040Ah
  5690.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5691.         DWORD    pointer to ???
  5692. Return: ???
  5693.     STACK unchanged
  5694. --------b-60----DI040B-----------------------
  5695. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  5696.     DI = 040Bh
  5697.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5698.         DWORD    pointer to ???
  5699.         DWORD    pointer to ???
  5700.         WORD    ???
  5701. Return: ???
  5702.     STACK unchanged
  5703. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5704. --------b-60----DI0500-----------------------
  5705. INT 60 u - HP 95LX System Manager - OPEN FILE
  5706.     DI = 0500h
  5707.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5708.         DWORD    pointer to file state record (see below)
  5709.         DWORD    pointer to filename
  5710.         WORD    length of filename
  5711.         WORD    ???
  5712.         WORD    suppress buffering if nonzero
  5713. Return: AX = status
  5714.     STACK unchanged
  5715. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  5716.  
  5717. Format of file state record:
  5718. Offset    Size    Description
  5719.  00h    WORD    DOS file handle
  5720.  02h    WORD    flags
  5721.         bit 0: buffer contents valid
  5722.         bit 1: buffer is dirty and must be written
  5723.         bit 2: unbuffered I/O
  5724.         bit 3: file is a character device
  5725.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  5726.  08h    DWORD    DOS file offset of start of buffer
  5727.  0Ch    DWORD    effective file offset as seen by caller
  5728.  10h    WORD    number of bytes in file buffer
  5729. ---buffered I/O only---
  5730.  12h 512 BYTEs    file buffer
  5731. --------b-60----DI0501-----------------------
  5732. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  5733.     DI = 0501h
  5734.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5735.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5736.         DWORD    pointer to filename
  5737.         WORD    length of filename
  5738.         WORD    ???
  5739.         WORD    suppress buffering if nonzero
  5740. Return: AX = status
  5741.     STACK unchanged
  5742. SeeAlso: INT 60/DI=0500h
  5743. --------b-60----DI0502-----------------------
  5744. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  5745.     DI = 0502h
  5746.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5747.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5748.         DWORD    pointer to filename
  5749.         WORD    length of filename
  5750.         WORD    ???
  5751.         WORD    suppress buffering if nonzero
  5752. Return: AX = status
  5753.     STACK unchanged
  5754. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  5755. --------b-60----DI0503-----------------------
  5756. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  5757.     DI = 0503h
  5758.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5759.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5760.         DWORD    pointer to filename
  5761.         WORD    length of filename
  5762.         WORD    ???
  5763.         WORD    suppress buffering if nonzero
  5764. Return: AX = status
  5765.     STACK unchanged
  5766. SeeAlso: INT 60/DI=0502h
  5767. --------b-60----DI0504-----------------------
  5768. INT 60 u - HP 95LX System Manager - READ FROM FILE
  5769.     DI = 0504h
  5770.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5771.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5772.         DWORD    pointer to data buffer
  5773.         WORD    number of bytes to read
  5774.         DWORD    pointer to WORD in which to return actual bytes read
  5775. Return: ???
  5776.     STACK unchanged
  5777. SeeAlso: INT 60/DI=0505h
  5778. --------b-60----DI0505-----------------------
  5779. INT 60 - HP 95LX System Manager - WRITE TO FILE
  5780.     DI = 0505h
  5781.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5782.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5783.         DWORD    pointer to data
  5784.         WORD    length of data
  5785. Return: AX = status
  5786.     STACK unchanged
  5787. SeeAlso: INT 60/DI=0504h
  5788. --------b-60----DI0506-----------------------
  5789. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  5790.     DI = 0506h
  5791.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5792.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5793.         WORD    ???
  5794.         WORD    ???
  5795. Return: ???
  5796.     STACK unchanged
  5797. SeeAlso: INT 60/DI=0507h
  5798. --------b-60----DI0507-----------------------
  5799. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  5800.     DI = 0507h "M_TELL"
  5801.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5802.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5803.         DWORD    pointer to DWORD buffer for file position???
  5804. Return: ???
  5805.     STACK unchanged
  5806. SeeAlso: INT 60/DI=0506h
  5807. --------b-60----DI0508-----------------------
  5808. INT 60 u - HP 95LX System Manager - CLOSE FILE
  5809.     DI = 0508h
  5810.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5811.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5812. Return: ???
  5813.     STACK unchanged
  5814. SeeAlso: INT 60/DI=0500h
  5815. --------b-60----DI0509-----------------------
  5816. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  5817.     DI = 0509h
  5818.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5819.         DWORD    pointer to ???
  5820.         DWORD    pointer to ???
  5821.         WORD    ???
  5822.         WORD    ???
  5823. Return: ???
  5824.     STACK unchanged
  5825. --------b-60----DI050A-----------------------
  5826. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  5827.     DI = 050Ah
  5828.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5829.         DWORD    pointer to ???
  5830.         DWORD    pointer to ???
  5831. Return: ???
  5832.     STACK unchanged
  5833.  
  5834. Format of pattern match control block:
  5835. Offset    Size    Description
  5836.  00h 43 BYTEs    FindFirst data block (see INT 21/AH=4Eh)
  5837.  2Bh 80 BYTEs    full path name
  5838.  7Bh    BYTE    offset of last component of filename
  5839.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  5840. --------b-60----DI050B-----------------------
  5841. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  5842.     DI = 050Bh
  5843.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5844.         DWORD    pointer to ???
  5845.         WORD    ???
  5846.         WORD    ???
  5847.         DWORD    pointer to ???
  5848. Return: ???
  5849.     STACK unchanged
  5850.  
  5851. Values returned:
  5852.  0000h nonexistent
  5853.  0001h file
  5854.  0002h directory
  5855.  0003h character device
  5856. --------b-60----DI050C-----------------------
  5857. INT 60 u - HP 95LX System Manager - DELETE FILE
  5858.     DI = 050Ch "M_DELETE"
  5859.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5860.         DWORD    pointer to ???
  5861.         WORD    ???
  5862.         WORD    ???
  5863. Return: ???
  5864.     STACK unchanged
  5865. --------b-60----DI050D-----------------------
  5866. INT 60 u - HP 95LX System Manager - RENAME FILE
  5867.     DI = 050Dh
  5868.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5869.         DWORD    pointer to ???
  5870.         WORD    ???
  5871.         WORD    ???
  5872.         DWORD    pointer to ???
  5873.         WORD    ???
  5874.         WORD    ???
  5875. Return: ???
  5876.     STACK unchanged
  5877. --------b-60----DI050E-----------------------
  5878. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  5879.     DI = 050Eh
  5880.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5881.         WORD    ???
  5882.         DWORD    pointer to ???
  5883.         DWORD    pointer to ???
  5884. Return: ???
  5885.     STACK unchanged
  5886. --------b-60----DI050F-----------------------
  5887. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  5888.     DI = 050Fh
  5889.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5890.         DWORD    pointer to ???
  5891.         WORD    ???
  5892. Return: ???
  5893.     STACK unchanged
  5894. --------b-60----DI0510-----------------------
  5895. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  5896.     DI = 0510h
  5897.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5898.         DWORD    pointer to ???
  5899.         DWORD    pointer to ???
  5900. Return: ???
  5901.     STACK unchanged
  5902. --------b-60----DI0511-----------------------
  5903. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  5904.     DI = 0511h
  5905.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5906.         DWORD    pointer to ???
  5907.         WORD    ???
  5908.         WORD    ???
  5909. Return: ???
  5910.     STACK unchanged
  5911. --------b-60----DI0512-----------------------
  5912. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  5913.     DI = 0512h
  5914.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5915.         DWORD    pointer to ???
  5916.         WORD    ???
  5917.         WORD    ???
  5918. Return: ???
  5919.     STACK unchanged
  5920. --------b-60----DI0513-----------------------
  5921. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  5922.     DI = 0513h
  5923.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5924.         DWORD    pointer to ??? buffer for current drive
  5925. Return: ???
  5926.     STACK unchanged
  5927. --------b-60----DI0514-----------------------
  5928. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  5929.     DI = 0514h
  5930.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5931.         WORD    new drive
  5932. Return: ???
  5933.     STACK unchanged
  5934. --------b-60----DI0515-----------------------
  5935. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  5936.     DI = 0515h
  5937.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5938.         DWORD    pointer to ???
  5939.         DWORD    pointer to ???
  5940. Return: ???
  5941.     STACK unchanged
  5942. --------b-60----DI0516-----------------------
  5943. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  5944.     DI = 0516h
  5945.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5946.         DWORD    pointer to ???
  5947. Return: ???
  5948.     STACK unchanged
  5949. --------b-60----DI0517-----------------------
  5950. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  5951.     DI = 0517h
  5952.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5953.         DWORD    pointer to ???
  5954.         WORD    ???
  5955.         WORD    ???
  5956.         DWORD    pointer to ??? buffer for file's attributes???
  5957. Return: ???
  5958.     STACK unchanged
  5959. --------b-60----DI0518-----------------------
  5960. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  5961.     DI = 0518h
  5962.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5963.         DWORD    pointer to ???
  5964.         WORD    ???
  5965.         WORD    ???
  5966.         WORD    new attributes???
  5967. Return: ???
  5968.     STACK unchanged
  5969. --------b-60----DI0519-----------------------
  5970. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  5971.     DI = 0519h
  5972.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5973.         DWORD    pointer to ???
  5974.         DWORD    pointer to ???
  5975.         WORD    ???
  5976.         WORD    ???
  5977.         WORD    ???
  5978.         WORD    ???
  5979.         WORD    ???
  5980. Return: ???
  5981.     STACK unchanged
  5982. --------b-60----DI051A-----------------------
  5983. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  5984.     DI = 051Ah
  5985.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5986.         DWORD    pointer to ???
  5987.         DWORD    pointer to ???
  5988. Return: ???
  5989.     STACK unchanged
  5990. --------b-60----DI051B-----------------------
  5991. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  5992.     DI = 051Bh
  5993.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5994.         DWORD    pointer to ???
  5995.         DWORD    pointer to ???
  5996. Return: ???
  5997.     STACK unchanged
  5998. --------b-60----DI051C-----------------------
  5999. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  6000.     DI = 051Ch
  6001.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6002.         DWORD    pointer to ???
  6003.         WORD    ???
  6004. Return: ???
  6005.     STACK unchanged
  6006. --------b-60----DI0600-----------------------
  6007. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  6008.     DI = 0600h
  6009.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6010. Return: ???
  6011.     STACK unchanged
  6012. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  6013. --------b-60----DI0601-----------------------
  6014. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  6015.     DI = 0601h
  6016.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6017. Return: never
  6018.     STACK unchanged
  6019. SeeAlso: INT 21/AH=4Ch,INT 60/DI=0600h
  6020. --------b-60----DI0602-----------------------
  6021. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  6022.     DI = 0602h
  6023.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6024. Return: ???
  6025.     STACK unchanged
  6026. SeeAlso: INT 15/AX=101Bh,INT 60/DI=0603h
  6027. --------b-60----DI0603-----------------------
  6028. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  6029.     DI = 0603h
  6030.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6031. Return: ???
  6032.     STACK unchanged
  6033. SeeAlso: INT 15/AX=101Ch,INT 60/DI=0602h
  6034. --------b-60----DI0604-----------------------
  6035. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  6036.     DI = 0604h
  6037.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6038.         DWORD    pointer to ???
  6039.         WORD    ???
  6040.         WORD    ???
  6041.         DWORD    pointer to ???
  6042. Return: ???
  6043.     STACK unchanged
  6044. --------b-60----DI0605-----------------------
  6045. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  6046.     DI = 0605h
  6047.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6048. Return: ???
  6049.     STACK unchanged
  6050. --------b-60----DI0606-----------------------
  6051. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  6052.     DI = 0606h
  6053.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6054. Return: ???
  6055.     STACK unchanged
  6056. --------b-60----DI0607-----------------------
  6057. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  6058.     DI = 0607h
  6059.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6060.         DWORD    pointer to ???
  6061.         WORD    ???
  6062.         DWORD    pointer to ???
  6063.         WORD    ???
  6064. Return: ???
  6065.     STACK unchanged
  6066. --------b-60----DI0608-----------------------
  6067. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  6068.     DI = 0608h
  6069.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6070.         DWORD    pointer to ???
  6071. Return: ???
  6072.     STACK unchanged
  6073. --------b-60----DI0609-----------------------
  6074. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  6075.     DI = 0609h
  6076.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6077.         DWORD    pointer to ???
  6078. Return: DX:AX -> ???
  6079.     STACK unchanged
  6080. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6081. --------b-60----DI0700-----------------------
  6082. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  6083.     DI = 0700h
  6084.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6085. Return: ???
  6086.     STACK unchanged
  6087. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  6088.  
  6089. Values for error code:
  6090.  0000h    successful
  6091.  FFF8h    transfer request out of bounds
  6092.  FFF9h    no such representation
  6093.  FFFAh    no representation open
  6094.  FFFBh    a representation is already open
  6095.  FFFCh    representation already exists
  6096.  FFFDh    heap allocation failure
  6097.  FFFEh    clipboard not open
  6098.  FFFFh    clipboard access denied
  6099. --------b-60----DI0701-----------------------
  6100. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  6101.     DI = 0701h
  6102.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6103. Return: ???
  6104.     STACK unchanged
  6105. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  6106. --------b-60----DI0702-----------------------
  6107. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  6108.     DI = 0702h
  6109.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6110.         DWORD    pointer to ???
  6111. Return: ???
  6112.     STACK unchanged
  6113. SeeAlso: INT 60/DI=0700h
  6114. --------b-60----DI0704-----------------------
  6115. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  6116.     DI = 0704h
  6117.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6118.         DWORD    pointer to ???
  6119. Return: ???
  6120.     STACK unchanged
  6121. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  6122. --------b-60----DI0705-----------------------
  6123. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  6124.     DI = 0705h
  6125.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6126. Return: ???
  6127.     STACK unchanged
  6128. SeeAlso: INT 60/DI=0704h
  6129. --------b-60----DI0706-----------------------
  6130. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  6131.     DI = 0706h
  6132.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6133.         WORD    ???
  6134.         DWORD    pointer to ???
  6135.         DWORD    pointer to ???
  6136. Return: ???
  6137.     STACK unchanged
  6138. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  6139. --------b-60----DI0707-----------------------
  6140. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  6141.     DI = 0707h
  6142.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6143.         DWORD    pointer to ???
  6144.         DWORD    pointer to ???
  6145.         DWORD    pointer to ???
  6146. Return: ???
  6147.     STACK unchanged
  6148. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  6149. --------b-60----DI0708-----------------------
  6150. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  6151.     DI = 0708h
  6152.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6153.         DWORD    pointer to data to be written???
  6154.         WORD    length of data???
  6155. Return: ???
  6156.     STACK unchanged
  6157. SeeAlso: INT 60/DI=0709h
  6158. --------b-60----DI0709-----------------------
  6159. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  6160.     DI = 0709h
  6161.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6162.         WORD    ???
  6163.         WORD    ???
  6164.         DWORD    pointer to buffer for data???
  6165.         WORD    length of buffer???
  6166. Return: ???
  6167.     STACK unchanged
  6168. SeeAlso: INT 60/DI=0708h
  6169. --------b-60----DI0800-----------------------
  6170. INT 60 u - HP 95LX System Manager - BEEP
  6171.     DI = 0800h
  6172.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6173. Return: ???
  6174.     STACK unchanged
  6175. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  6176. --------b-60----DI0801-----------------------
  6177. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  6178.     DI = 0801h
  6179.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6180. Return: ???
  6181.     STACK unchanged
  6182. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  6183. --------b-60----DI0802-----------------------
  6184. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  6185.     DI = 0802h
  6186.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6187.         WORD    pattern number (00h-06h)
  6188. Return: ???
  6189.     STACK unchanged
  6190. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  6191. --------b-60----DI0803-----------------------
  6192. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  6193.     DI = 0803h
  6194.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6195. Return: ???
  6196.     STACK unchanged
  6197. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  6198. --------b-60----DI0900-----------------------
  6199. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  6200.     DI = 0900h
  6201.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6202.         WORD    size of block in bytes
  6203. Return: AX -> memory block
  6204.     STACK unchanged
  6205. Note:    System Manager-compliant applications are always small-model (64K code,
  6206.       64K data)
  6207. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  6208. --------b-60----DI0902-----------------------
  6209. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  6210.     DI = 0902h
  6211.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6212.         WORD    offset of memory block???
  6213. Return: ???
  6214.     STACK unchanged
  6215. Note:    System Manager-compliant applications are always small-model (64K code,
  6216.       64K data)
  6217. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  6218. --------b-60----DI0903-----------------------
  6219. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  6220.     DI = 0903h
  6221.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6222.         WORD    size of block in bytes???
  6223. Return: AX -> memory block???
  6224.     STACK unchanged
  6225. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  6226. --------b-60----DI0904-----------------------
  6227. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  6228.     DI = 0904h
  6229.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6230.         WORD    segment of memory block???
  6231. Return: AX -> ???
  6232.     STACK unchanged
  6233. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  6234. --------b-60----DI0B00-----------------------
  6235. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  6236.     DI = 0B00h
  6237.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6238.         DWORD    pointer to ???
  6239. Return: ???
  6240.     STACK unchanged
  6241. --------b-60----DI0B01-----------------------
  6242. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  6243.     DI = 0B01h
  6244.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6245.         DWORD    pointer to ???
  6246. Return: ???
  6247.     STACK unchanged
  6248. --------b-60----DI0B02-----------------------
  6249. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  6250.     DI = 0B02h
  6251.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6252.         DWORD    pointer to ???
  6253. Return: ???
  6254.     STACK unchanged
  6255. --------b-60----DI0B03-----------------------
  6256. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  6257.     DI = 0B03h
  6258.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6259.         WORD    ???
  6260. Return: ???
  6261.     STACK unchanged
  6262. --------b-60----DI0B04-----------------------
  6263. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  6264.     DI = 0B04h
  6265.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6266.         DWORD    pointer to alarm record???
  6267.         WORD    ???
  6268. Return: ???
  6269.     STACK unchanged
  6270.  
  6271. Format of alarm record:
  6272. Offset    Size    Description
  6273.  00h    BYTE    hour
  6274.  01h    BYTE    minute
  6275.  02h    BYTE    second
  6276.  03h    BYTE    unused padding
  6277.  04h    WORD    rescheduling interval, in seconds
  6278.  06h    BYTE    are seconds significant?
  6279.  07h    BYTE    alarm sound
  6280.  08h 40 BYTEs    message displayed when alarm activates
  6281.  30h    BYTE    task ID of owner
  6282.  31h    BYTE    application's own use for sub-class
  6283.  32h  4 BYTEs    application's own use for private data
  6284. --------b-60----DI0B05-----------------------
  6285. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  6286.     DI = 0B05h
  6287.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6288.         DWORD    pointer to ???
  6289. Return: ???
  6290.     STACK unchanged
  6291. --------b-60----DI0B06-----------------------
  6292. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  6293.     DI = 0B06h
  6294.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6295.         DWORD    pointer to ???
  6296.         DWORD    pointer to ???
  6297.         DWORD    pointer to ???
  6298. Return: ???
  6299.     STACK unchanged
  6300. --------b-60----DI0B07-----------------------
  6301. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  6302.     DI = 0B07h
  6303.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6304.         DWORD    pointer to ???
  6305. Return: ???
  6306.     STACK unchanged
  6307. --------b-60----DI0B08-----------------------
  6308. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  6309.     DI = 0B08h
  6310.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6311.         WORD    timestamp format (see below)
  6312.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  6313.         WORD    column
  6314. Return: ???
  6315.     STACK unchanged
  6316.  
  6317. Bitfields for timestamp format:
  6318.  bits 1-0  timestamp components
  6319.     00 date only
  6320.     01 time only
  6321.     10 date and time
  6322.     11 day and date
  6323.  bit 4    supply am/pm
  6324.  bit 5    supply seconds
  6325.  bit 6    show year
  6326.  bit 7    four-digit year
  6327. --------b-60----DI0B09-----------------------
  6328. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  6329.     DI = 0B09h
  6330.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6331.         DWORD    pointer to ???
  6332.         DWORD    pointer to ???
  6333. Return: ???
  6334.     STACK unchanged
  6335. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  6336.  
  6337. Format of system settings:
  6338. Offset    Size    Description
  6339.  00h    WORD    country code
  6340.  02h    WORD    speaker volume (00h-03h or FFh for off)
  6341.  04h    WORD    contrast level (00h-0Fh)
  6342.  06h    WORD    week start (00h Sunday, 01h Monday)
  6343.  08h    WORD    punctuation format
  6344.         code    decimal arg    thousands
  6345.         00h    .    ,    ,
  6346.         01h    ,    .    .
  6347.         02h    .    ;    ;
  6348.         03h    ,    ;    .
  6349.         04h    .    ,    " "
  6350.         05h    ,    .    " "
  6351.         06h    .    ;    " "
  6352.         07h    ,    ;    " "
  6353.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  6354.  0Ch    WORD    current date format (see below)
  6355.  0Eh    WORD    current time format (see below)
  6356.  10h    WORD    collating sequence
  6357.         00h numbers first, 01h letters first, 02h ASCII
  6358.  12h 80 BYTEs    name of picture file
  6359.  62h 30 BYTEs    name
  6360.  80h 30 BYTEs    title
  6361.  9Eh 28 BYTEs    company name
  6362.  BAh    WORD    number of languages
  6363.  BCh  6 BYTEs    available languages
  6364.  C2h 66 BYTEs    language menu
  6365. 104h  2 BYTEs    ASCIZ date separator
  6366. 106h  2 BYTEs    ASCIZ time separator
  6367. 108h    BYTE    date order
  6368. 109h    BYTE    use 24 hour time?
  6369. 10Ah 16 BYTEs    currency string
  6370. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  6371. 11Ch    WORD    keyboard (see below)
  6372. 11Eh    WORD    printer baud rate
  6373.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  6374. 120h    WORD    printer driver code
  6375.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  6376. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  6377. 124h    WORD    system manager interrupt (60h by default)
  6378. 126h    WORD    code page (01h CP850, 02h CP437)
  6379. 128h    WORD    active exit key
  6380. 12Ah    WORD    active menu key
  6381. 12Ch    WORD    active CHAR key toggle
  6382. 12Eh  6 BYTEs    alarm
  6383.  
  6384. Values for current date format:
  6385.  00h    dd-mmm-yy
  6386.  01h    dd-mmm
  6387.  02h    mmm-yy
  6388.  03h    mm/dd/yy
  6389.  04h    dd/mm/yy
  6390.  05h    dd.mm.yy
  6391.  06h    yy-mm-dd
  6392.  07h    mm/dd
  6393.  08h    dd/mm
  6394.  09h    dd.mm
  6395.  0Ah    mm-dd
  6396.  
  6397. Values for current time format:
  6398.  00h    HH:MM:SS am/pm
  6399.  01h    HH:MM am/pm
  6400.  02h    HH:MM:SS
  6401.  03h    HH.MM.SS
  6402.  04h    HH,MM,SS
  6403.  05h    HHhMMmSSs
  6404.  06h    HH:MM
  6405.  07h    HH.MM
  6406.  08h    HH,MM
  6407.  09h    HHhMMm
  6408.  
  6409. Values for keyboard:
  6410.  0001h    Belgium
  6411.  0002h    French Canadian
  6412.  0004h    Denmark
  6413.  0008h    Finland
  6414.  0010h    French
  6415.  0020h    Finland
  6416.  0040h    Italy
  6417.  0080h    Netherlands
  6418.  0100h    Norway
  6419.  0200h    Portugal
  6420.  0400h    Spain
  6421.  0800h    Sweden
  6422.  1000h    Swiss French
  6423.  2000h    Swiss German
  6424.  4000h    United Kingdom
  6425.  8000h    USA
  6426. --------b-60----DI0B0A-----------------------
  6427. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  6428.     DI = 0B0Ah
  6429.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6430.         DWORD    pointer to ???
  6431.         DWORD    pointer to ???
  6432. Return: ???
  6433.     STACK unchanged
  6434. SeeAlso: INT 60/DI=0B09h
  6435. --------b-60----DI0B0B-----------------------
  6436. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  6437.     DI = 0B0Bh
  6438.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6439.         DWORD    pointer to ???
  6440. Return: ???
  6441.     STACK unchanged
  6442. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  6443. --------b-60----DI0B0C-----------------------
  6444. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  6445.     DI = 0B0Ch
  6446.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6447.         DWORD    pointer to ???
  6448. Return: ???
  6449.     STACK unchanged
  6450. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  6451. --------b-60----DI0B0D-----------------------
  6452. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  6453.     DI = 0B0Dh
  6454.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6455.         DWORD    pointer to ???
  6456.         DWORD    pointer to ???
  6457.         DWORD    pointer to ???
  6458. Return: ???
  6459.     STACK unchanged
  6460. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  6461. --------b-60----DI0B0E-----------------------
  6462. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  6463.     DI = 0B0Eh
  6464.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6465.         WORD    ???
  6466.         WORD    ???
  6467.         WORD    ???
  6468.         DWORD    pointer to ???
  6469.         DWORD    pointer to ???
  6470. Return: DX:AX -> ???
  6471.     STACK unchanged
  6472. --------b-60----DI0B0F-----------------------
  6473. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  6474.     DI = 0B0Fh
  6475.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6476. Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
  6477.     STACK unchanged
  6478. SeeAlso: INT 60/DI=0B09h
  6479. --------b-60----DI0B10-----------------------
  6480. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  6481.     DI = 0B10h
  6482.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6483.         WORD    ???
  6484.         DWORD    pointer to ???
  6485.         DWORD    pointer to ???
  6486. Return: ???
  6487.     STACK unchanged
  6488. --------b-60----DI0B11-----------------------
  6489. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  6490.     DI = 0B11h
  6491.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6492.         WORD    ???
  6493.         DWORD    pointer to ???
  6494.         DWORD    pointer to ???
  6495. Return: ???
  6496.     STACK unchanged
  6497. --------b-60----DI0B12-----------------------
  6498. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  6499.     DI = 0B12h
  6500.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6501.         WORD    new parsing rule (see below)
  6502. Return: ???
  6503.     STACK unchanged
  6504. SeeAlso: INT 60/DI=0B13h
  6505.  
  6506. Values for new parsing rule:
  6507.  01h    day-month-year
  6508.  02h    month-day-year
  6509.  03h    year-month-day
  6510.  04h    "DMYO"
  6511.  05h    "MDYO"
  6512.  OR with 08h to get any year
  6513. --------b-60----DI0B13-----------------------
  6514. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  6515.     DI = 0B13h
  6516.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6517.         WORD    new parsing rule (see below)
  6518. Return: ???
  6519.     STACK unchanged
  6520. SeeAlso: INT 60/DI=0B12h
  6521.  
  6522. Values for new parsing rule:
  6523.  01h    HH:MM:SS (am/pm)
  6524.  02h    HH:MM:SS (24hr)
  6525.  03h    HHMM:SS (24hr)
  6526.  04h    HH:MM:SS.hh (24hr)
  6527.  05h    HH:MM (am/pm)
  6528.  06h    HH:MM (24hr)
  6529.  07h    HHMM (24hr)
  6530. --------b-60----DI0B14-----------------------
  6531. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  6532.     DI = 0B14h
  6533.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6534. Return: ???
  6535.     STACK unchanged
  6536. --------b-60----DI0B15-----------------------
  6537. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  6538.     DI = 0B15h
  6539.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6540.         WORD    ???
  6541. Return: ???
  6542.     STACK unchanged
  6543. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6544. --------b-60----DI0C00-----------------------
  6545. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  6546.     DI = 0C00h
  6547.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6548. Return: ???
  6549.     STACK unchanged
  6550. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  6551. --------b-60----DI0C01-----------------------
  6552. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  6553.     DI = 0C01h
  6554.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6555. Return: ???
  6556.     STACK unchanged
  6557. Note:    relinquishes control of printer
  6558. SeeAlso: INT 60/DI=0C00h
  6559. --------b-60----DI0C02-----------------------
  6560. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  6561.     DI = 0C02h
  6562.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6563.         DWORD    pointer to data to be written
  6564.         WORD    length of data
  6565. Return: ???
  6566.     STACK unchanged
  6567. SeeAlso: INT 60/DI=0C00h
  6568. --------b-60----DI0C03-----------------------
  6569. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  6570.     DI = 0C03h
  6571.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6572. Return: ???
  6573.     STACK unchanged
  6574. SeeAlso: INT 60/DI=0C00h
  6575. --------b-60----DI0C04-----------------------
  6576. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  6577.     DI = 0C04h
  6578.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6579.         WORD    ???
  6580.         DWORD    pointer to ???
  6581. Return: ???
  6582.     STACK unchanged
  6583. --------b-60----DI0C05-----------------------
  6584. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  6585.     DI = 0C05h
  6586.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6587.         WORD    ???
  6588.         DWORD    pointer to ???
  6589. Return: ???
  6590.     STACK unchanged
  6591. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6592. --------b-60----DI0E00-----------------------
  6593. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  6594.     DI = 0E00h
  6595.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6596.         DWORD    pointer to ???
  6597. Return: ???
  6598.     STACK unchanged
  6599. SeeAlso: INT 60/DI=0E01h,INT 60/DI=0E02h
  6600.  
  6601. Values for error code:
  6602.  0000h    successful
  6603.  FFF1h    "E_BUSY"
  6604.  FFF2h    timeout
  6605.  FFF3h    framing error
  6606.  FFF4h    parity error
  6607.  FFF5h    overrun error
  6608.  FFF6h    "E_EMPTY"
  6609.  FFF7h    "E_CONECT"
  6610.  FFF8h    not open
  6611.  FFF9h    out of memory
  6612.  FFFAh    buffer overflow
  6613.  FFFBh    "E_NOFIT"
  6614.  FFFCh    unsupported
  6615.  FFFDh    "E_IVOPR"
  6616.  FFFEh    "E_IVCHN"
  6617.  FFFFh    "E_REOPEN"
  6618. --------b-60----DI0E01-----------------------
  6619. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  6620.     DI = 0E01h
  6621.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6622.         DWORD    pointer to WORD buffer for comm channel handle
  6623.         WORD    communications line number (01h-04h)
  6624. Return: ???
  6625.     STACK unchanged
  6626. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  6627. --------b-60----DI0E02-----------------------
  6628. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  6629.     DI = 0E02h
  6630.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6631.         WORD    comm channel handle
  6632. Return: ???
  6633.     STACK unchanged
  6634. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  6635. --------b-60----DI0E03-----------------------
  6636. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  6637.     DI = 0E03h
  6638.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6639.         WORD    ???
  6640. Return: ???
  6641.     STACK unchanged
  6642. --------b-60----DI0E04-----------------------
  6643. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  6644.     DI = 0E04h
  6645.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6646.         WORD    ???
  6647.         WORD    ???
  6648. Return: ???
  6649.     STACK unchanged
  6650. --------b-60----DI0E05-----------------------
  6651. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  6652.     DI = 0E05h
  6653.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6654.         WORD    ???
  6655.         DWORD    pointer to ???
  6656. Return: ???
  6657.     STACK unchanged
  6658. --------b-60----DI0E06-----------------------
  6659. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  6660.     DI = 0E06h
  6661.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6662.         WORD    comm channel handle
  6663.         WORD    reset options (see below)
  6664. Return: ???
  6665.     STACK unchanged
  6666.  
  6667. Bitfields for reset options:
  6668.  bit 0    reset line
  6669.  bit 1    flush transmit buffer
  6670.  bit 2    flush receive buffer
  6671.  bit 3    reset modem
  6672.  bit 4    reset receiver's ^S state
  6673.  bit 5    reset transmitter's ^S state
  6674. --------b-60----DI0E07-----------------------
  6675. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  6676.     DI = 0E07h
  6677.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6678.         WORD    ???
  6679. Return: ???
  6680.     STACK unchanged
  6681. --------b-60----DI0E08-----------------------
  6682. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  6683.     DI = 0E08h
  6684.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6685.         WORD    comm channel handle
  6686.         DWORD    pointer to data to be sent
  6687.         WORD    option flags
  6688.             bit 0: send partial buffer
  6689.             bit 1: turn on receiver after sending
  6690.         DWORD    pointer to WORD containing length of data to be sent
  6691. Return: length WORD updated to contain number of bytes actually sent???
  6692.     STACK unchanged
  6693. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  6694. --------b-60----DI0E09-----------------------
  6695. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  6696.     DI = 0E09h
  6697.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6698.         WORD    ???
  6699.         DWORD    pointer to ??? WORD
  6700.         DWORD    pointer to ??? WORD
  6701. Return: ???
  6702.     STACK unchanged
  6703. SeeAlso: INT 60/DI=0E0Ah
  6704. --------b-60----DI0E0A-----------------------
  6705. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  6706.     DI = 0E0Ah
  6707.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6708.         WORD    comm channel handle
  6709.         DWORD    pointer to WORD to get receive buffer size
  6710.         DWORD    pointer to WORD to get free bytes in receive buffer
  6711. Return: ???
  6712.     STACK unchanged
  6713. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  6714. --------b-60----DI0E0B-----------------------
  6715. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  6716.     DI = 0E0Bh
  6717.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6718.         WORD    comm channel handle
  6719.         DWORD    pointer to data buffer
  6720.         DWORD    pointer to WORD (input) length of data buffer
  6721.                     (output) number of bytes received
  6722. Return: ???
  6723.     STACK unchanged
  6724. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  6725. --------b-60----DI0E0C-----------------------
  6726. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  6727.     DI = 0E0Ch
  6728.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6729.         WORD    ???
  6730.         DWORD    pointer to ???
  6731.         WORD    ???
  6732. Return: ???
  6733.     STACK unchanged
  6734. --------b-60----DI0E0D-----------------------
  6735. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  6736.     DI = 0E0Dh
  6737.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6738.         WORD    ???
  6739.         DWORD    pointer to ???
  6740.         WORD    ???
  6741. Return: ???
  6742.     STACK unchanged
  6743. --------b-60----DI0E0E-----------------------
  6744. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  6745.     DI = 0E0Eh
  6746.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6747.         WORD    ???
  6748.         WORD    ???
  6749. Return: ???
  6750.     STACK unchanged
  6751. --------b-60----DI0E0F-----------------------
  6752. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  6753.     DI = 0E0Fh
  6754.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6755.         WORD    ???
  6756. Return: ???
  6757.     STACK unchanged
  6758. --------b-60----DI0E10-----------------------
  6759. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  6760.     DI = 0E10h
  6761.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6762.         WORD    ???
  6763. Return: ???
  6764.     STACK unchanged
  6765. --------b-60----DI0E11-----------------------
  6766. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  6767.     DI = 0E11h
  6768.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6769.         WORD    ???
  6770.         WORD    ???
  6771. Return: ???
  6772.     STACK unchanged
  6773. --------b-60----DI0E12-----------------------
  6774. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  6775.     DI = 0E12h
  6776.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6777.         WORD    ???
  6778. Return: ???
  6779.     STACK unchanged
  6780. --------b-60----DI0E13-----------------------
  6781. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  6782.     DI = 0E13h
  6783.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6784.         WORD    ???
  6785. Return: ???
  6786.     STACK unchanged
  6787. --------b-60----DI0E14-----------------------
  6788. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  6789.     DI = 0E14h
  6790.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6791.         WORD    comm channel handle
  6792.         DWORD    pointer to comm settings (see below)
  6793. Return: ???
  6794.     STACK unchanged
  6795. SeeAlso: INT 60/DI=0E15h
  6796.  
  6797. Format of comm settings:
  6798. Offset    Size    Description
  6799.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  6800.  01h    WORD    baud rate divisor (115200/baud_rate)
  6801.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  6802.  04h    BYTE    stop bits (00h one, 04h two)
  6803.  05h    BYTE    data bits - 5
  6804.  06h    BYTE    software handshake
  6805.         01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  6806.  07h    BYTE    infrared (01h off, 02h on)
  6807.  08h    BYTE    duplex (01h half, 02h full)
  6808.  09h    BYTE    echo (01h echo, 02h no echo)
  6809. --------b-60----DI0E15-----------------------
  6810. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  6811.     DI = 0E15h
  6812.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6813.         WORD    ???
  6814.         DWORD    pointer to buffer for settings (see INT 60/DI=0E14h)
  6815. Return: ???
  6816.     STACK unchanged
  6817. SeeAlso: INT 60/DI=0E14h
  6818. --------b-60----DI0E16-----------------------
  6819. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  6820.     DI = 0E16h
  6821.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6822.         WORD    ???
  6823.         WORD    ???
  6824.         WORD    ???
  6825.         WORD    ???
  6826.         WORD    ???
  6827. Return: ???
  6828.     STACK unchanged
  6829. --------b-60----DI0E17-----------------------
  6830. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  6831.     DI = 0E17h
  6832.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6833.         WORD    ???
  6834. Return: ???
  6835.     STACK unchanged
  6836. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6837. --------b-60----DI0F00-----------------------
  6838. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  6839.     DI = 0F00h
  6840.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6841.         WORD    ???
  6842.         DWORD    pointer to ???
  6843.         WORD    ???
  6844.         DWORD    pointer to ???
  6845. Return: ???
  6846.     STACK unchanged
  6847. --------b-60----DI0F01-----------------------
  6848. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  6849.     DI = 0F01h
  6850.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6851.         DWORD    pointer to ASCIZ title string
  6852. Return: ???
  6853.     STACK unchanged
  6854. --------b-60----DI0F02-----------------------
  6855. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  6856.     DI = 0F02h
  6857.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6858.         DWORD    pointer to ???
  6859. Return: ???
  6860.     STACK unchanged
  6861. --------b-60----DI0F03-----------------------
  6862. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  6863.     DI = 0F03h
  6864.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6865.         DWORD    pointer to first line of message
  6866.         WORD    length of first line
  6867.         DWORD    pointer to second line of message
  6868.         WORD    length of second line
  6869. Return: ???
  6870.     STACK unchanged
  6871. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  6872. --------b-60----DI0F04-----------------------
  6873. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  6874.     DI = 0F04h
  6875.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6876. Return: ???
  6877.     STACK unchanged
  6878. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  6879. --------b-60----DI0F05-----------------------
  6880. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  6881.     DI = 0F05h
  6882.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6883. Return: DX:AX -> ???
  6884.     STACK unchanged
  6885. --------b-60----DI0F06-----------------------
  6886. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  6887.     DI = 0F06h
  6888.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6889. Return: DX:AX -> ???
  6890.     STACK unchanged
  6891. --------b-60----DI0F07-----------------------
  6892. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  6893.     DI = 0F07h
  6894.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6895. Return: DX:AX -> ???
  6896.     STACK unchanged
  6897. --------b-60----DI0F08-----------------------
  6898. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  6899.     DI = 0F08h
  6900.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6901.         ???
  6902. Return: ???
  6903.     STACK unchanged
  6904. --------b-60----DI0F09-----------------------
  6905. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  6906.     DI = 0F09h
  6907.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6908.         DWORD    pointer to first line of message
  6909.         WORD    length of first line
  6910.         DWORD    pointer to second line of message
  6911.         WORD    length of second line
  6912.         DWORD    pointer to third line of message
  6913.         WORD    length of third line
  6914. Return: ???
  6915.     STACK unchanged
  6916. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  6917. --------b-60----DI0F0A-----------------------
  6918. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  6919.     DI = 0F0Ah
  6920.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6921. Return: ???
  6922.     STACK unchanged
  6923. SeeAlso: INT 60/DI=0F0Bh
  6924. --------b-60----DI0F0B-----------------------
  6925. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  6926.     DI = 0F0Bh
  6927.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6928. Return: ???
  6929.     STACK unchanged
  6930. SeeAlso: INT 60/DI=0F0Ah
  6931. --------b-60----DI0F0C-----------------------
  6932. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  6933.     DI = 0F0Ch
  6934.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6935.         ???
  6936. Return: ???
  6937.     STACK unchanged
  6938. --------b-60----DI0F0D-----------------------
  6939. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  6940.     DI = 0F0Dh
  6941.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6942.         DWORD    pointer to ???
  6943. Return: DX:AX -> ???
  6944.     STACK unchanged
  6945. --------b-60----DI0F0E-----------------------
  6946. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  6947.     DI = 0F0Eh
  6948.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6949.         DWORD    pointer to ???
  6950. Return: DX:AX -> ???
  6951.     STACK unchanged
  6952. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6953. --------b-60----DI1005-----------------------
  6954. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  6955.     DI = 1005h
  6956.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6957. Return: ???
  6958.     STACK unchanged
  6959. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  6960. --------b-60----DI1200-----------------------
  6961. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  6962.     DI = 1200h
  6963.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6964.         DWORD    pointer to ???
  6965. Return: ???
  6966.     STACK unchanged
  6967. --------b-60----DI1201-----------------------
  6968. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  6969.     DI = 1201h
  6970.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6971.         WORD    ???
  6972. Return: DX:AX -> ???
  6973.     STACK unchanged
  6974. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6975. --------b-60----DI1202-----------------------
  6976. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  6977.     DI = 1202h
  6978.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6979. Return: DX:AX -> ???
  6980.     STACK unchanged
  6981. --------b-60----DI1203-----------------------
  6982. INT 60 u - HP 95LX System Manager - "INIT_SYSMGR_RSRCS"
  6983.     DI = 1203h
  6984.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6985. Return: ???
  6986.     STACK unchanged
  6987. --------b-60----DI1300-----------------------
  6988. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  6989.     DI = 1300h
  6990.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6991.         DWORD    pointer to ???
  6992.         DWORD    pointer to ???
  6993.         WORD    ???
  6994. Return: ???
  6995.     STACK unchanged
  6996. --------b-60----DI1301-----------------------
  6997. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  6998.     DI = 1301h
  6999.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7000.         DWORD    pointer to ???
  7001. Return: ???
  7002.     STACK unchanged
  7003. --------b-60----DI1302-----------------------
  7004. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  7005.     DI = 1302h
  7006.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7007.         DWORD    pointer to ???
  7008.         WORD    ???
  7009. Return: ???
  7010.     STACK unchanged
  7011. --------b-60----DI1303-----------------------
  7012. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  7013.     DI = 1303h
  7014.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7015.         DWORD    pointer to ???
  7016. Return: ???
  7017.     STACK unchanged
  7018. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7019. --------b-60----DI1400-----------------------
  7020. INT 60 u - HP 95LX System Manager - "M_ColInit"
  7021.     DI = 1400h
  7022.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7023. Return: AX = ???
  7024.     STACK unchanged
  7025. --------b-60----DI1401-----------------------
  7026. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  7027.     DI = 1401h
  7028.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7029.         DWORD    pointer to ???
  7030.         WORD    ???
  7031.         DWORD    pointer to ???
  7032.         WORD    ???
  7033. Return: ???
  7034.     STACK unchanged
  7035. --------b-60----DI1402-----------------------
  7036. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  7037.     DI = 1402h
  7038.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7039.         ???
  7040. Return: ???
  7041.     STACK unchanged
  7042. --------b-60----DI1403-----------------------
  7043. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  7044.     DI = 1403h
  7045.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7046.         ???
  7047. Return: ???
  7048.     STACK unchanged
  7049. --------b-60----DI1404-----------------------
  7050. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  7051.     DI = 1404h
  7052.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7053.         DWORD    pointer to ???
  7054.         WORD    ???
  7055. Return: ???
  7056.     STACK unchanged
  7057. --------b-60----DI1405-----------------------
  7058. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  7059.     DI = 1405h
  7060.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7061.         DWORD    pointer to ???
  7062.         WORD    ???
  7063.         DWORD    pointer to ???
  7064.         WORD    ???
  7065.         WORD    ???
  7066. Return: ???
  7067.     STACK unchanged
  7068. --------b-60----DI1406-----------------------
  7069. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  7070.     DI = 1406h
  7071.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7072.         DWORD    pointer to ???
  7073.         WORD    ???
  7074. Return: ???
  7075.     STACK unchanged
  7076. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7077. --------b-60----DI1500-----------------------
  7078. INT 60 u - HP 95LX System Manager - "GrDispInit"
  7079.     DI = 1500h
  7080.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7081.         ???
  7082. Return: ???
  7083.     STACK unchanged
  7084. --------b-60----DI1501-----------------------
  7085. INT 60 u - HP 95LX System Manager - "GrDispClear"
  7086.     DI = 1501h
  7087.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7088.         ???
  7089. Return: ???
  7090.     STACK unchanged
  7091. --------b-60----DI1502-----------------------
  7092. INT 60 u - HP 95LX System Manager - "GrDispDot"
  7093.     DI = 1502h
  7094.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7095.         ???
  7096. Return: ???
  7097.     STACK unchanged
  7098. --------b-60----DI1503-----------------------
  7099. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  7100.     DI = 1503h
  7101.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7102.         ???
  7103. Return: ???
  7104.     STACK unchanged
  7105. --------b-60----DI1504-----------------------
  7106. INT 60 u - HP 95LX System Manager - "GrDispFill"
  7107.     DI = 1504h
  7108.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7109.         ???
  7110. Return: ???
  7111.     STACK unchanged
  7112. --------b-60----DI1505-----------------------
  7113. INT 60 u - HP 95LX System Manager - "GrDispRead"
  7114.     DI = 1505h
  7115.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7116.         ???
  7117. Return: ???
  7118.     STACK unchanged
  7119. --------b-60----DI1506-----------------------
  7120. INT 60 u - HP 95LX System Manager - "GrDispString"
  7121.     DI = 1506h
  7122.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7123.         ???
  7124. Return: ???
  7125.     STACK unchanged
  7126. --------b-60----DI1507-----------------------
  7127. INT 60 u - HP 95LX System Manager - "GrDispPan"
  7128.     DI = 1507h
  7129.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7130.         ???
  7131. Return: ???
  7132.     STACK unchanged
  7133. --------b-60----DI1508-----------------------
  7134. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  7135.     DI = 1508h
  7136.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7137.         ???
  7138. Return: ???
  7139.     STACK unchanged
  7140. --------b-60----DI1509-----------------------
  7141. INT 60 u - HP 95LX System Manager - "GrDispSave"
  7142.     DI = 1509h
  7143.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7144.         ???
  7145. Return: ???
  7146.     STACK unchanged
  7147. --------b-60----DI150A-----------------------
  7148. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  7149.     DI = 150Ah
  7150.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7151.         ???
  7152. Return: ???
  7153.     STACK unchanged
  7154. --------b-60----DI150B-----------------------
  7155. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  7156.     DI = 150Bh
  7157.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7158.         ???
  7159. Return: ???
  7160.     STACK unchanged
  7161. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7162. --------b-60----DI1604-----------------------
  7163. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  7164.     DI = 1604h
  7165.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7166.         ???
  7167. Return: ???
  7168.     STACK unchanged
  7169. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7170. --------G-6000-------------------------------
  7171. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  7172.     AH = 00h
  7173. Return: AX = 0000h    profiling is off
  7174.         otherwise profiling is on
  7175. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  7176. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  7177. --------G-6000-------------------------------
  7178. INT 60 - MDEBUG - GET STATUS
  7179.     AH = 00h
  7180.     DS:SI -> password or a null byte
  7181. Return: AX = return code
  7182.         FFFEh password is invalid
  7183.         FFFDh display mode is invalid
  7184.        else successful
  7185.         ES = value of the monitor register SE
  7186.         DI = value of the monitor register OF
  7187.         CH = monitor color
  7188.         CL = interpreter color
  7189.         BH = monitor start line
  7190.         BL = interpreter start line
  7191.         AH = makecode of the hotkey
  7192.         AL = ASCII code of the hotkey
  7193.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  7194.             hotkey (coded as for the keyboard flag at 0040h:0017h)
  7195.         DH = basic process number for the communication with drivers
  7196.             process number for the display driver, DH+1 = process
  7197.             number for the command driver(s)
  7198.     DS:SI -> MDEBUG identification table
  7199. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  7200.       Schemmer, including a memory monitor, an interpreter, and a
  7201.       disassembler
  7202. Notes:    MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  7203.       through INT 67; the interrupt handler is preceded by the signature
  7204.       "USERINT" and is not chained
  7205.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  7206.       passwords are active; enough stack space must be provided for an
  7207.       INT 10h call (which MDEBUG uses while prompting for the password)
  7208. SeeAlso: AH=02h"MDEBUG"
  7209. Index:    hotkeys;MDEBUG
  7210.  
  7211. Format of MDEBUG identification table:
  7212. Offset    Size    Description
  7213.  -2    WORD    entry offset
  7214.  00h    WORD    CS of MDEBUG
  7215.  02h    DWORD    old INT 08h vector
  7216.  06h    DWORD    old INT 09h vector
  7217.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  7218.  0Eh    BYTE    length of version string
  7219.  0Fh  N BYTEs    version string
  7220. --------G-6001-------------------------------
  7221. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  7222.     AH = 01h
  7223.     DS:SI -> password or a null byte
  7224. Return: AX = return code
  7225.         FFFEh password is invalid
  7226.         FFFDh display mode is invalid
  7227.        else successful
  7228.         ES:DI point to the help registers of MDEBUG
  7229.            ES:DI-02h  -> R0 (WORD)
  7230.            ES:DI      -> R1 (WORD)
  7231.            ES:DI+02h  -> R2 (WORD)
  7232.            ES:DI+04h  -> R3 (WORD)
  7233.            ...
  7234.            ES:DI+0Eh  -> R8 (WORD)
  7235. --------G-6001-------------------------------
  7236. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  7237.     AH = 01h
  7238. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  7239. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  7240. --------N-6001FF-----------------------------
  7241. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  7242.     AX = 01FFh
  7243.     BX = handle returned by function 02h
  7244. Return: CF set on error
  7245.         DH = error code (see below)
  7246.     CF clear if successful
  7247.         BX = version
  7248.         CH = network interface class (see below)
  7249.         DX = interface type (see below)
  7250.         CL = number
  7251.         DS:SI -> name
  7252.         AL = driver functions supported
  7253.         01h basic
  7254.         02h basic and extended
  7255.         05h basic and high-performance
  7256.         06h basic, high-performance, and extended
  7257.         FFh not installed
  7258. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  7259.       the packet driver specification
  7260.  
  7261. Values for error code:
  7262.  01h "BAD_HANDLE"    invalid handle number
  7263.  02h "NO_CLASS"        no interfaces of the specified class found
  7264.  03h "NO_TYPE"        no interfaces of the specified type found
  7265.  04h "NO_NUMBER"    no interfaces of the specified number found
  7266.  05h "BAD_TYPE"        bad packet type
  7267.  06h "NO_MULTICAST"    interface does not support multicast messages
  7268.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  7269.  08h "BAD_MODE"        invalid receiver mode
  7270.  09h "NO_SPACE"        insufficient space
  7271.  0Ah "TYPE_INUSE"    type accessed but never released
  7272.  0Bh "BAD_COMMAND"    bad command
  7273.  0Ch "CANT_SEND"    packet could not be sent
  7274.  0Dh "CANT_SET"        hardware address could not be changed
  7275.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  7276.  0Fh "CANT_RESET"    could not reset interface
  7277.  
  7278. Values for Network Interface classes/types:
  7279.     Class 01h  Ethernet/IEEE 802.3
  7280.     01h 3COM 3C500/3C501
  7281.     02h 3COM 3C505
  7282.     03h MICOM-Interlan NI5010
  7283.     04h BICC Data Networks 4110
  7284.     05h BICC Data Networks 4117
  7285.     06h MICOM-Interlan NP600
  7286.     08h Ungermann-Bass PC-NIC
  7287.     09h Univation NC-516
  7288.     0Ah TRW PC-2000
  7289.     0Bh MICOM-Interlan NI5210
  7290.     0Ch 3COM 3C503
  7291.     0Dh 3COM 3C523
  7292.     0Eh Western Digital WD8003
  7293.     0Fh Spider Systems S4
  7294.     10h Torus Frame Level
  7295.     11h 10Net Communications
  7296.     12h Gateway PC-bus
  7297.     13h Gateway AT-bus
  7298.     14h Gateway MCA-bus
  7299.     15h IMC PCnic
  7300.     16h IMC PCnic II
  7301.     17h IMC PCnic 8-bit
  7302.     18h Tigan Communications
  7303.     19h Micromatic Research
  7304.     1Ah Clarkson "Multiplexor"
  7305.     1Bh D-Link 8-bit
  7306.     1Ch D-Link 16-bit
  7307.     1Dh D-Link PS/2
  7308.     1Eh Research Machines 8
  7309.     1Fh Research Machines 16
  7310.     20h Research Machines MCA
  7311.     21h Radix Microsystems EXM1 16-bit
  7312.     22h Interlan Ni9210
  7313.     23h Interlan Ni6510
  7314.     24h Vestra LANMASTER 16-bit
  7315.     25h Vestra LANMASTER 8-bit
  7316.     26h Allied Telesis PC/XT/AT
  7317.     27h Allied Telesis NEC PC-98
  7318.     28h Allied Telesis Fujitsu FMR
  7319.     29h Ungermann-Bass NIC/PS2
  7320.     2Ah Tiara LANCard/E AT
  7321.     2Bh Tiara LANCard/E MC
  7322.     2Ch Tiara LANCard/E TP
  7323.     2Dh Spider Communications SpiderComm 8
  7324.     2Eh Spider Communications SpiderComm 16
  7325.     2Fh AT&T Starlan NAU
  7326.     30h AT&T Starlan-10 NAU
  7327.     31h AT&T Ethernet NAU
  7328.     32h Intel smart card
  7329.     33h Xircom Packet Adapter
  7330.     34h Aquila Ethernet
  7331.     35h Novell NE1000
  7332.     36h Novell NE2000
  7333.     37h SMC PC-510
  7334.     38h AT&T Fiber NAU
  7335.     39h NDIS to Packet Driver adapter
  7336.     3Ah Racal-InterLan ES3210
  7337.     3Bh General Systems ISDN simulated Ethernet
  7338.     3Ch Hewlett-Packard
  7339.     3Dh IMC EtherNic-8
  7340.     3Eh IMC EtherNic-16
  7341.     3Fh IMC EtherNic-MCA
  7342.     40h NetWorth EtherNext
  7343.     41h Dataco Scanet
  7344.     42h DEC DEPCA
  7345.     43h C-Net
  7346.     44h Gandalf LANLine
  7347.     45h Apricot built-in
  7348.     46h David Systems Ether-T
  7349.     47h ODI to Packet Driver adapter
  7350.     48h AMD Am21110-16
  7351.     49h Intel ICD Network controller family
  7352.     4Ah Intel ICD PCL2
  7353.     4Bh Intel ICD PCL2A
  7354.     4Ch AT&T LANPacer
  7355.     4Dh AT&T LANPacer+
  7356.     4Eh AT&T EVB
  7357.     4Fh AT&T StarStation
  7358.     50h SLIP simulated ethernet
  7359.     51h Racal-Interlan NIA310
  7360.     52h Racal-Interlan NISE
  7361.     53h Racal-Interlan NISE30
  7362.     54h Racal-Interlan NI6610
  7363.     55h Ethernet over IP/UDP
  7364.     56h ICL EtherTeam 16
  7365.     57h David Systems
  7366.     58h NCR WaveLAN
  7367.     59h Thomas Contrad TC5045
  7368.     5Ah Russ Nelson's Parallel Port driver
  7369.     5Bh Intell EtherExpress 16
  7370.     5Ch IBMTOKEN
  7371.     5Dh Zenith Z-Note
  7372.     5Eh 3Com 3C509
  7373.     5Fh Mylex LNE390
  7374.     60h Madge Smart Ringnode
  7375.     61h Novell NE2100
  7376.     62h Allied Telesis 1500
  7377.     63h Allied Telesis 1700
  7378.     64h Fujitsu EtherCoupler
  7379.     Class 02h  ProNET-10
  7380.     01h Proteon p1300
  7381.     02h Proteon p1800
  7382.     Class 03h  IEEE 802.5/ProNet-4 (without expanded RIFs)
  7383.     01h IBM Token-Ring Adapter
  7384.     02h Proteon p1340
  7385.     03h Proteon p1344
  7386.     04h Gateway PC-bus
  7387.     05h Gateway AT-bus
  7388.     06h Gateway MCA-bus
  7389.     07h Madge board
  7390.     39h NDIS to Packet Driver adapter
  7391.     47h ODI to Packet Driver adapter
  7392.     Class 04h  Omninet
  7393.     Class 05h  Appletalk
  7394.     01h ATALK.SYS adapter
  7395.     Class 06h  Serial Line
  7396.     01h Clarkson 8250-SLIP
  7397.     02h Clarkson "Multiplexor"
  7398.     03h Eicon Technologies
  7399.     Class 07h  StarLAN (subsumed by Ethernet class)
  7400.     Class 08h  ARCnet
  7401.     01h Datapoint RIM
  7402.     Class 09h  AX.25
  7403.     01h Ottawa PI card
  7404.     02h Eicon Technologies
  7405.     Class 0Ah  KISS
  7406.     Class 0Bh  IEEE 802.3 with 802.2 headers
  7407.     types same as for class 01h
  7408.     Class 0Ch  FDDI with 802.2 headers
  7409.     01h Western Digital
  7410.     02h Frontier Technology
  7411.     Class 0Dh  Internet X.25
  7412.     01h Western Digital
  7413.     02h Frontier Technology
  7414.     03h Emerging Technologies
  7415.     04h The Software Forge
  7416.     05h Link Data Intelligent X.25
  7417.     06h Eicon Technologies
  7418.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  7419.     01h NT LANSTAR/8
  7420.     02h NT LANSTAR/MC
  7421.     Class 0Fh  SLFP (MIT serial specification)
  7422.     01h MERIT
  7423.     Class 10h  PPP (Point-to-Point Protocol)
  7424.     01h 8250/16550 UART
  7425.     02h Niwot Networks synch
  7426.     03h Eicon Technologies
  7427.     Class 11h  802.5 with expanded RIFs
  7428.     types same as for class 3
  7429.     Class 12h  reserved for LCP/NCPs
  7430. Note: class and type numbers are cleared through FTP Software
  7431. --------G-6002-------------------------------
  7432. INT 60 - MDEBUG - SET STATUS
  7433.     AH = 02h
  7434.     DS:SI -> password or a null byte
  7435.     ES = new value for the register SE
  7436.     DI = new value for the register OF
  7437.     CH = new monitor color if nonzero
  7438.     CL = new interpreter color if nonzero
  7439.     BH = new monitor start line if nonzero
  7440.     BL = new interpreter start line if nonzero
  7441.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  7442.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  7443.         if nonzero
  7444.     DH = if nonzero, new basic process number for communication with the
  7445.         drivers (DH = multiplex number for the display driver,
  7446.         DH+1 = multiplex number for the command driver or drivers)
  7447. Return: AX = return code
  7448.         FFFFh call not allowed
  7449.         FFFEh password is invalid
  7450.         FFFDh display mode is invalid
  7451.         0000h successful, status changed
  7452.        else AL = error reasons (see below)
  7453. Note:    the values of the registers SE and OF are always changed, the other
  7454.       values are only changed if they are valid
  7455. SeeAlso: AH=00h"MDEBUG"
  7456. Index:    hotkeys;MDEBUG
  7457.  
  7458. Bitfields for error reasons:
  7459.  bit 0    invalid monitor start line
  7460.  bit 1    invalid interpreter start line
  7461.  bit 2    invalid hotkey
  7462.  bit 3    invalid process number
  7463.  bits 4-7 reserved
  7464. --------N-6002-------------------------------
  7465. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  7466.     AH = 02h
  7467.     AL = interface class
  7468.     BX = interface type
  7469.     DL = interface number
  7470.     DS:SI -> type
  7471.     CX = length of type (0000h for all packets)
  7472.     ES:DI -> receiver
  7473. Return: CF set on error
  7474.         DH = error code (see AX=01FFh)
  7475.     CF clear if successful
  7476.         AX = handle
  7477. SeeAlso: AH=03h"FTP"
  7478.  
  7479. Receiver is called with:
  7480.     AX = subfunction
  7481.         00h get packet buffer
  7482.         DX = lookahead length (v1.10+)
  7483.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  7484.         DI = error flags (class dependent) (v1.10+)
  7485.         Return: ES:DI -> packet buffer
  7486.                 0000h:0000h means throw away packet
  7487.             CX = size of buffer (v1.10+), may be smaller than
  7488.                 incoming data
  7489.         01h copy completed
  7490.         DS:SI -> buffer
  7491.         CX = bytes actually copied (v1.10+)
  7492.     BX = handle
  7493.     CX = buffer length
  7494. when a packet is received
  7495. --------G-6002-------------------------------
  7496. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  7497.     AH = 02h
  7498. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  7499. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  7500. --------G-6003-------------------------------
  7501. INT 60 - MDEBUG - POP UP
  7502.     AH = 03h
  7503.     DS:SI -> password or a null byte
  7504.     ES -> new value for the register SE
  7505.     DI -> new value for the register OF
  7506. Return: AX = return code
  7507.         FFFFh call not allowed
  7508.         FFFEh password is invalid
  7509.         FFFDh display mode is invalid
  7510.        else successful
  7511. SeeAlso: AH=04h"MDEBUG"
  7512. --------N-6003-------------------------------
  7513. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  7514.     AH = 03h
  7515.     BX = handle
  7516. Return: CF set on error
  7517.        DH = error code (see AX=01FFh)
  7518.     CF clear if successful
  7519. SeeAlso: AH=02h"FTP"
  7520. --------G-6003-------------------------------
  7521. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  7522.     AH = 03h
  7523. Return: ES:BX -> profiling table
  7524. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  7525. SeeAlso: AH=04h"SYS_PROF"
  7526. --------N-6004-------------------------------
  7527. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  7528.     AH = 04h
  7529.     DS:SI -> buffer
  7530.     CX = length
  7531. Return: CF set on error
  7532.         DH = error code (see AX=01FFh)
  7533.     CF clear if successful
  7534. Note:    the buffer may be modified immediately upon return from this call
  7535. SeeAlso: AH=0Bh
  7536. --------G-6004-------------------------------
  7537. INT 60 - MDEBUG - POP UP
  7538.     AH = 04h
  7539.     DS:SI -> password or a null byte
  7540. Return: AX = return code
  7541.         FFFFh call not allowed
  7542.         FFFEh password is invalid
  7543.         FFFDh display mode is invalid
  7544.        else successful
  7545. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  7546. --------G-6004-------------------------------
  7547. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  7548.     AH = 04h
  7549. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  7550. SeeAlso: AH=03h"SYS_PROF"
  7551. --------N-6005-------------------------------
  7552. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  7553.     AH = 05h
  7554.     BX = handle (optional for v1.10+)
  7555. Return: CF set on error
  7556.        DH = error code (see AX=01FFh)
  7557.     CF clear if successful
  7558. --------G-6005-------------------------------
  7559. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  7560.     AH = 05h
  7561.     DS:SI -> password or a null byte
  7562.     BL = new value for the semaphor of MDEBUG
  7563.          00h  enable popup of MDEBUG
  7564.          else disable popup of MDEBUG
  7565. Return: AX = return code
  7566.         FFFEh password is invalid
  7567.         FFFDh display mode is invalid
  7568.        else successful
  7569.         BL = old value of the semaphor of MDEBUG
  7570.         BH = old value of the INT 08h semaphor
  7571.             (this semaphor is always reset after this function)
  7572. --------N-6006-------------------------------
  7573. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  7574.     AH = 06h
  7575.     BX = handle (optional for v1.10+)
  7576.     ES:DI -> buffer
  7577.     CX = length
  7578. Return: CF set on error
  7579.         DH = error code (see AX=01FFh)
  7580.     CF clear if successful
  7581.         CX = length
  7582. Note:    copies the local net address associated with the handle into the buffer
  7583. --------G-6006-------------------------------
  7584. INT 60 - MDEBUG - GET PASSWORD STATUS
  7585.     AH = 06h
  7586. Return: AL = status
  7587.         00h password inactive
  7588.         01h password active
  7589. --------N-6007-------------------------------
  7590. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  7591.     AH = 07h
  7592.     BX = handle (optional for v1.10+)
  7593. Return: CF set on error
  7594.         DH = error code (see AX=01FFh)
  7595.     CF clear if successful
  7596. --------G-6007-------------------------------
  7597. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  7598.     AH = 07h
  7599. Return: AL = active part for the next popup session of MDEBUG:
  7600.         bit 0: the next popup session will start in the interpreter rather
  7601.             than in the monitor
  7602.         bit 1: the next popup session will sart in the online-help
  7603. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  7604. --------G-6008-------------------------------
  7605. INT 60 - MDEBUG - UNUSED
  7606.     AH = 08h-FFh
  7607. Return: AX = FFFCh
  7608. --------N-600A-------------------------------
  7609. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  7610.     AH = 0Ah
  7611. Return: CF set on error
  7612.         DH = error code (0Bh) (see AX=01FFh)
  7613.     CF clear if successful
  7614.         ES:DI -> parameter table (see below)
  7615.  
  7616. Format of parameter table:
  7617. Offset    Size    Description
  7618.  00h    BYTE    major revision of packet driver spec driver conforms to
  7619.  01h    BYTE    minor revision of packet driver spec
  7620.  02h    BYTE    length of this structure in bytes
  7621.  03h    BYTE    length of a MAC-layer address
  7622.  04h    WORD    maximum transfer unit, including MAC headers
  7623.  06h    WORD    buffer size for multicast addr
  7624.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  7625.  0Ah    WORD    number of transmit buffers
  7626.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  7627. --------N-600B-------------------------------
  7628. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  7629.     AH = 0Bh
  7630.     DS:SI -> buffer
  7631.     CX = length of buffer
  7632.     ES:DI -> FAR function to call when buffer becomes available
  7633. Return: CF set on error
  7634.         DH = error code (0Bh,0Ch) (see AX=01FFh)
  7635.     CF clear if successful
  7636. Notes:    unlike function 04h, the buffer is not available for modification as
  7637.       soon as the call returns; the buffer may be queued by the driver and
  7638.       not processed until later
  7639.     this function has been dropped from v1.10+ of the specification and
  7640.       replaced by function 0Ch
  7641. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  7642.  
  7643. Completion function called with:
  7644.     AX = result
  7645.         00h copy OK
  7646.         nonzero error
  7647.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  7648. --------N-600C-------------------------------
  7649. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  7650.     AH = 0Ch
  7651.     ES:DI -> pointer to IOCB
  7652. Return: CF set on error
  7653.         DH = error code (see AX=01FFh)
  7654.     CF clear if successful
  7655. SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
  7656.  
  7657. Format of IOCB:
  7658. Offset    Size    Description
  7659.  00h    DWORD    pointer to buffer
  7660.  04h    WORD    length of buffer
  7661.  06h    BYTE    flags
  7662.         bit 0: packet driver is finished with IOCB
  7663.         bit 1: application requests upcall when driver completes
  7664.  07h    DWORD    function address for upcall
  7665.  0Bh  4 BYTEs    future gather write
  7666.  0Fh    BYTE    ???
  7667.  10h  8 BYTEs    private driver workspace
  7668.  
  7669. Completion function called with:
  7670.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  7671. --------N-600C-------------------------------
  7672. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  7673.     AH = 0Ch
  7674. Return: AL = status
  7675.         00h successful
  7676.         ES:SI -> 6-byte station address
  7677.         02h semaphore service is unavailable
  7678. --------N-600D-------------------------------
  7679. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  7680.     AH = 0Dh
  7681.     ES:DI -> IOCB
  7682. Return: CF set on error
  7683.         DH = error code (see AX=01FFh)
  7684.     CF clear if successful
  7685. SeeAlso: AH=0Ch"Packet Driver"
  7686. --------N-6011-------------------------------
  7687. INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
  7688.     AH = 11h
  7689.     AL = drive number or 0
  7690.     DX = number of seconds to wait
  7691.     ES:SI = Ethernet address or 0
  7692.     DS:BX -> 31-byte ASCIZ semaphore name
  7693. Return: AL = status (see below)
  7694. SeeAlso: AH=12h,AH=13h
  7695.  
  7696. Values for status:
  7697.  00h    successful
  7698.  01h    timeout
  7699.  02h    server not responding
  7700.  03h    invalid semaphore name
  7701.  04h    semaphore list is full
  7702.  05h    invalid drive ID
  7703.  06h    invalid Ethernet address
  7704.  07h    not logged in
  7705.  08h    write to network failed
  7706.  09h    semaphore already logged for this CPU
  7707. --------N-6012-------------------------------
  7708. INT 60 - 3com, 10NET, Banyan VINES - LOCK
  7709.     AH = 12h
  7710.     AL = drive number or 00h
  7711.     ES:SI = Ethernet address or 0000h:0000h
  7712.     DS:BX -> 31-byte ASCIZ semaphore name
  7713. Return: AL = status (see also AH=11h)
  7714.         01h semaphore currently locked by another PC
  7715. Note:    unlike function 11h, this function returns immediately
  7716. SeeAlso: AH=11h,AH=13h
  7717. --------N-6013-------------------------------
  7718. INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
  7719.     AH = 13h
  7720.     AL = drive number or 00h
  7721.     ES:SI = Ethernet address or 0000h:0000h
  7722.     DS:BX -> 31-byte ASCIZ semaphore name
  7723. Return: AL = status (see also AH=11h)
  7724.         01h semaphore not locked
  7725. SeeAlso: AH=11h,AH=12h
  7726. --------N-6014-------------------------------
  7727. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  7728.     AH = 14h
  7729.     BX = handle (optional for v1.10+)
  7730.     CX = mode
  7731.         01h turn off receiver
  7732.         02h receive only packets sent to this interface
  7733.         03h mode 2 plus broadcast packets
  7734.         04h mode 3 plus limited multicast packets
  7735.         05h mode 3 plus all multicast packets
  7736.         06h all packets
  7737.         07h raw mode for serial line only (v1.10+)
  7738. Return: CF set on error
  7739.        DH = error code (01h,08h) (see AX=01FFh)
  7740.     CF clear if successful
  7741. SeeAlso: AH=15h
  7742. --------N-6015-------------------------------
  7743. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  7744.     AH = 15h
  7745.     BX = handle (optional for v1.10+)
  7746. Return: CF set on error
  7747.         DH = error code (01h) (see AX=01FFh)
  7748.     CF clear if successful
  7749.         AX = mode
  7750. SeeAlso: AH=14h
  7751. --------N-6016-------------------------------
  7752. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  7753.     AH = 16h
  7754.     ES:DI -> multicast list
  7755.     CX = length of list in bytes
  7756. Return: CF set on error
  7757.         DH = error code (06h,09h,0Eh) (see AX=01FFh)
  7758.     CF clear if successful
  7759. SeeAlso: AH=17h
  7760. --------N-6017-------------------------------
  7761. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  7762.     AH = 17h
  7763. Return: CF set on error
  7764.         DH = error code (06h,09h) (see AX=01FFh)
  7765.     CF clear if successful
  7766.         ES:DI -> multicast addresses (do not modify)
  7767.         CX = bytes of multicast addresses currently in use
  7768. SeeAlso: AH=16h
  7769. --------N-6018-------------------------------
  7770. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  7771.     AH = 18h
  7772.     BX = handle (optional for v1.10+)
  7773. Return: CF set on error
  7774.         DH = error code (01h) (see AX=01FFh)
  7775.     CF clear if successful
  7776.         DS:SI -> statistics (see below)
  7777.  
  7778. Format of statistics:
  7779. Offset    Size    Description
  7780.  00h    DWORD    packets in
  7781.  04h    DWORD    packets out
  7782.  08h    DWORD    bytes in
  7783.  0Ch    DWORD    bytes out
  7784.  10h    DWORD    errors in
  7785.  14h    DWORD    errors out
  7786.  18h    DWORD    packets dropped
  7787. --------N-6019-------------------------------
  7788. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  7789.     AH = 19h
  7790.     ES:DI -> address
  7791.     CX = length of address
  7792. Return: CF set on error
  7793.         DH = error code (0Dh,0Eh) (see AX=01FFh)
  7794.     CF clear if successful
  7795.         CX = length
  7796. --------N-601A-------------------------------
  7797. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  7798.     AH = 1Ah
  7799.     DS:SI -> buffer
  7800.     CX = length of buffer
  7801. Return: CF set on error
  7802.         DH = error code (see AX=01FFh)
  7803.     CF clear if successful
  7804. SeeAlso: AH=1Ch
  7805. --------N-601B-------------------------------
  7806. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  7807.     AH = 1Bh
  7808. Return: CF set on error
  7809.         DH = error code (see AX=01FFh)
  7810.     CF clear if successful
  7811. SeeAlso: AH=1Ch
  7812. --------N-601C-------------------------------
  7813. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  7814.     AH = 1Ch
  7815.     DS:SI -> buffer
  7816.     CX = length of buffer
  7817.     DX = timeout in clock ticks
  7818. Return: CF set on error
  7819.         DH = error code (see AX=01FFh)
  7820.     CF clear if successful
  7821.         CX = number of bytes transferred to buffer
  7822. SeeAlso: AH=1Ah,AH=1Bh
  7823. --------a-60AD-------------------------------
  7824. INT 60 - AccessDOS - API
  7825.     AH = ADh
  7826.     AL = function
  7827.         E1h ???
  7828.         Return: AX = ???
  7829.         E2h get configuration
  7830.         Return: BX:AX -> configuration data
  7831. Program: AccessDOS is a public domain TSR developed at The Trace Research and
  7832.       Development Center which provides extensions for keyboard, mouse,
  7833.       and sound access by the visually, hearing, or motor-control
  7834.       impaired.
  7835. Note:    INT 60 is the default vector; AccessDOS will use the first 0000h:0000h
  7836.       vector in the range 60h through 66h.
  7837. --------N-60E9-------------------------------
  7838. INT 60 - FTP Packet Driver - Crynwr Software - AUTOSELECT TRANSCEIVER
  7839.     AH = E9h
  7840.     ???
  7841. Return: ???
  7842. --------!------------------------------------
  7843.