home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 13 / CD_ASCQ_13_0494.iso / maj / 4266 / interrup.h < prev    next >
Text File  |  1994-02-06  |  290KB  |  7,935 lines

  1. Interrupt List, part 8 of 10
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 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:    Windows NT versions from the March 1993 beta to at least the Final
  635.       release with fixes to CSD002 report version 0090h (0.144)
  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-410000-----------------------------
  2740. INT 41 CPU - MS Windows debugging kernel - OUTPUT CHARACTER FOR USER
  2741.     AX = 0000h
  2742.     DS:DX -> character
  2743. Note:    the kernel calls this function when it wants the user program to
  2744.       output a character
  2745. SeeAlso: AX=0001h
  2746. --------G-410001-----------------------------
  2747. INT 41 CPU - MS Windows debugging kernel - INPUT CHARACTER
  2748.     AX = 0001h
  2749. Return: AL = character    
  2750. Note:    the kernel calls this function when it needs to input a character
  2751. SeeAlso: AX=0000h
  2752. --------G-41000D-----------------------------
  2753. INT 41 CPU - MS Windows debugging kernel - TASK GOING OUT
  2754.     AX = 000Dh
  2755. SeeAlso: AX=000Eh
  2756. --------G-41000E-----------------------------
  2757. INT 41 CPU - MS Windows debugging kernel - TASK COMING IN
  2758.     AX = 000Eh
  2759. SeeAlso: AX=000Dh
  2760. --------G-410012-----------------------------
  2761. INT 41 CPU - MS Windows debugging kernel - "OutputDebugString"
  2762.     AX = 0012h
  2763.     DS:SI -> string (Windows 3.0)
  2764.     ES:SI -> string (Windows 3.1)
  2765. Return: nothing???
  2766. Note:    this function is called by the kernel when it wants to output a
  2767.       string through the debugger
  2768. SeeAlso: AH=50h,INT 68/AH=47h
  2769. --------G-41004F-----------------------------
  2770. INT 41 CPU - MS Windows debugging kernel - DEBUGGER INSTALLATION CHECK
  2771.     AX = 004Fh
  2772. Return: AX = F386h if debugger is present
  2773. --------G-410050-----------------------------
  2774. INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
  2775.     AX = 0050h
  2776.     BX = segment number in executable (0-based)
  2777.     CX = selector
  2778.     DX = instance handle
  2779.     SI = segment flags (0=code, 1=data)
  2780.     ES:DI -> module name of owner
  2781. Return: ???
  2782. SeeAlso: AX=0012h,AX=004Fh
  2783. --------G-410051-----------------------------
  2784. INT 41 CPU - MS Windows debugging kernel - MOVE SEGMENT
  2785.     AX = 0051h
  2786.     ???
  2787. Return: ???
  2788. SeeAlso: AX=050h,AX=0052h
  2789. --------G-410052-----------------------------
  2790. INT 41 CPU - MS Windows debugging kernel - FREE SEGMENT
  2791.     AX = 0052h
  2792.     BX = freed selector
  2793. SeeAlso: AX=0050h,AX=0051h,AX=005Ch
  2794. --------G-410059-----------------------------
  2795. INT 41 CPU - MS Windows debugging kernel - LOAD TASK
  2796.     AX = 0059h
  2797.     ???:BX = CS:IP of new task's starting point
  2798. --------G-41005C-----------------------------
  2799. INT 41 CPU - MS Windows debugging kernel - FREE INITIAL SEGMENT
  2800.     AX = 005Ch
  2801.     BX = freed selector
  2802. Note:    called only when KERNEL starts, once for CS and once for the DS alias
  2803.       to CS
  2804. SeeAlso: AX=0052h
  2805. --------G-410060-----------------------------
  2806. INT 41 CPU - MS Windows debugging kernel -  END OF SEGMENT LOAD
  2807.     AX = 0060h
  2808.     ???
  2809. Return: ???
  2810. SeeAlso: AX=0061h
  2811. --------G-410061-----------------------------
  2812. INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT DISCARD
  2813.     AX = 0061h
  2814.     ???
  2815. Return: ???
  2816. SeeAlso: AX=0060h
  2817. --------G-410062-----------------------------
  2818. INT 41 CPU - MS Windows debugging kernel - APPLICATION TERMINATING
  2819.     AX = 0062h
  2820. STACK:    BYTE    exit code
  2821. Return: ???
  2822.     STACK unchanged???
  2823. SeeAlso: AX=0064h
  2824. --------G-410063-----------------------------
  2825. INT 41 CPU - MS Windows debugging kernel - ASYNCHRONOUS STOP (Ctrl-Alt-SysReq)
  2826.     AX = 0063h
  2827. --------G-410064-----------------------------
  2828. INT 41 CPU - MS Windows debugging kernel - DLL LOADED
  2829.     AX = 0064h
  2830.     CX:BX = DLL entry point CS:IP
  2831.     SI = module handle
  2832. SeeAlso: AX=0062h,AX=0065h
  2833. --------G-410065-----------------------------
  2834. INT 41 CPU - MS Windows debugging kernel - MODULE REMOVED
  2835.     AX = 0065h
  2836.     ES = module handle
  2837. SeeAlso: AX=0064h
  2838. --------V-42---------------------------------
  2839. INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
  2840. SeeAlso: INT 10
  2841. Note:    not used by PS/2 built-in VGA or XGA
  2842. --------h-42---------------------------------
  2843. INT 42 - Z100 - Master 8259 - Timer
  2844. SeeAlso: INT 41"Z100",INT 43"Z100"
  2845. --------b-42---------------------------------
  2846. INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
  2847. Note:    if the second WD1002 controller in the system finds INT 40 already in
  2848.       use, it uses this vector to cascade to the first controller's BIOS
  2849. SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
  2850. --------O-42---------------------------------
  2851. INT 42 - Acorn BBS Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
  2852.     AL = byte to be written
  2853.     BH = file handle
  2854. Return: flags destroyed
  2855. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  2856. --------V-43---------------------------------
  2857. INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
  2858.    points at graphics data for characters 00h-7Fh of the current font
  2859. SeeAlso: INT 1F,INT 44"VIDEO"
  2860. --------h-43---------------------------------
  2861. INT 43 - Z100 - Master 8259 - Slave 8259 input
  2862. Note:    slave runs in special fully nested mode
  2863. SeeAlso: INT 42"Z100",INT 44"Z100"
  2864. --------O-43---------------------------------
  2865. INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
  2866.     BH = file handle
  2867. Return: CF clear if successful
  2868.         AL = byte read from file
  2869.     CF set on error
  2870. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
  2871. --------V-44---------------------------------
  2872. INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
  2873.    points at graphics data for current character font
  2874. SeeAlso: INT 1F,INT 43"VIDEO"
  2875. --------N-44---------------------------------
  2876. INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
  2877. --------I-44---------------------------------
  2878. INT 44 - IBM 3270-PC High Level Language API
  2879.     DS:SI -> parameter control block
  2880. --------h-44---------------------------------
  2881. INT 44 - Z100 - Master 8259 - Serial A
  2882. SeeAlso: INT 43"Z100",INT 45"Z100"
  2883. --------v-44---------------------------------
  2884. INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
  2885. SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
  2886. --------O-4400-------------------------------
  2887. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  2888.     AH = 00h
  2889.     AL = function
  2890.         00h get current filing system
  2891.         Return: AL = filing system (see below)
  2892.         01h get address of commandline tail
  2893.         Return: BX buffer filled with address of command tail in I/O
  2894.                 processor address space (use INT 4A/AL=05h to
  2895.                 retrieve)
  2896.         FFh flush all files onto secondary storage
  2897.     BX -> 4-byte data buffer
  2898. Note:    the commandline tail is terminated with a carriage return (0Dh)
  2899. SeeAlso: INT 40"Acorn",INT 45"Acorn"
  2900.  
  2901. Values for filing system:
  2902.  00h    none
  2903.  01h    1200 bps cassette
  2904.  02h    300 bps cassette
  2905.  03h    ROM FS
  2906.  04h    DFS
  2907.  05h    ANFS/NFS
  2908.  06h    TFS
  2909.  08h    ADFS
  2910. --------O-44---------------------------------
  2911. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  2912.     AH = nonzero file handle
  2913.         AL = function
  2914.         00h get sequential pointer for file
  2915.         01h set sequential pointer for file
  2916.         02h get length of file
  2917.     BX -> 4-byte data buffer
  2918. Return: BX buffer updated if appropriate
  2919. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
  2920. --------h-45---------------------------------
  2921. INT 45 - Z100 - Master 8259 - Serial B
  2922. SeeAlso: INT 44"Z100",INT 46"Z100"
  2923. --------O-45---------------------------------
  2924. INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
  2925.     AL = function
  2926.         00h save block of memory as file
  2927.         01h update directory entry for existing file
  2928.         02h set load address for existing file
  2929.         03h set execution address for existing file
  2930.         04h set attributes for existing file
  2931.         05h read directory
  2932.         06h delete file
  2933.         FFh load file
  2934.     DS:BX -> control block (see below)
  2935. Return: FLAGS destroyed
  2936.     AL = file type
  2937.         00h not found
  2938.         01h file found
  2939.         02h directory found
  2940.         FFh protected file
  2941. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
  2942.  
  2943. Format of control block:
  2944. Offset    Size    Description
  2945.  00h    WORD    address of CR-terminated filename
  2946.  02h    DWORD    load address of file
  2947.  06h    DWORD    execution address of file
  2948.  0Ah    DWORD    start address of data to save
  2949.  0Eh    DWORD    end address of data to save, or file attributes
  2950.         file attributes in low byte (see below)
  2951.         other three bytes are filing-system specific file attributes
  2952.  
  2953. Bitfields for file attributes:
  2954.  bit 0    no owner read access
  2955.  bit 1    no owner write access
  2956.  bit 2    not executable by owner
  2957.  bit 3    not deletable by owner
  2958.  bit 4    no public read access
  2959.  bit 5    no public write access
  2960.  bit 6    not executable with public access
  2961.  bit 7    not deletable with public access
  2962. --------B-46---------------------------------
  2963. INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
  2964. SeeAlso: INT 13/AH=09h,INT 41
  2965. --------h-46---------------------------------
  2966. INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
  2967. SeeAlso: INT 45"Z100",INT 47"Z100"
  2968. --------O-46---------------------------------
  2969. INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
  2970. Return: CF clear if successful
  2971.         AL = character read
  2972.     CF set on error
  2973.         AL = error code
  2974. SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  2975. --------h-47---------------------------------
  2976. INT 47 - Z100 - Master 8259 - Printer
  2977. SeeAlso: INT 46"Z100",INT 48"Z100"
  2978. --------O-47---------------------------------
  2979. INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
  2980.     AL = character to be written
  2981. Return: FLAGS destroyed
  2982. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
  2983. --------b-47---------------------------------
  2984. INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
  2985. Desc:    used by the second WD1002-27X controller to cascade to the first
  2986.       controller's INT 40
  2987. SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
  2988. ----------478000-----------------------------
  2989. INT 47 - SQL Base - DATABASE ENGINE API
  2990.     AX = 8000h
  2991.     DS:BX -> parameter block, first word is function number
  2992. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  2993. SeeAlso: AX=8001h
  2994.  
  2995. Values for function number:
  2996.  01h    "SQLFINI" initalialize application's use of the database
  2997.  02h    "SQLFDON" application is done using the database
  2998.  03h    "SQLFCON" connect to a cursor/database
  2999.  04h    "SQLFDIS" disconnect from a cursor/database
  3000.  05h    "SQLFCOM" compile a SQL command
  3001.  06h    "SQLFEXE" execute a SQL command
  3002.  07h    "SQLFCEX" compile and execute a SQL command
  3003.  08h    "SQLFCMT" commit a transaction to the database
  3004.  09h    "SQLFDES" describe the items of a SELECT statement
  3005.  0Ah    "SQLFGFI" get fetch information
  3006.  0Bh    "SQLFFBK" fetch previous result row from SELECT statement
  3007.  0Ch    "SQLFFET" fetch next result row from SELECT statement
  3008.  0Dh    "SQLFEFB" enable fetch backwards
  3009.  0Eh    "SQLFPRS" position in result set
  3010.  0Fh    "SQLFURS" undo result set
  3011.  10h    "SQLFNBV" get number of bind variables
  3012.  11h    "SQLFBND" bind data variables
  3013.  12h    "SQLFBNN" bind numerics
  3014.  13h    "SQLFBLN" bind long number
  3015.  14h    "SQLFBLD" bind long data variables
  3016.  15h    "SQLFSRS" start restriction set processing
  3017.  16h    "SQLFRRS" restart restriction set processing
  3018.  17h    "SQLFCRS" close restriction set
  3019.  18h    "SQLFDRS" drop restriction set
  3020.  19h    "SQLFARF" apply Roll Forward journal
  3021.  1Ah    "SQLFERF" end Roll Forward journal
  3022.  1Bh    "SQLFSRF" start Roll Forward journal
  3023.  1Ch    "SQLFSTO" store a compiled SQL command
  3024.  1Dh    "SQLFRET" retrieve a compiled SQL command
  3025.  1Eh    "SQLFDST" drop a stored command
  3026.  1Fh    "SQLFCTY" get command type
  3027.  20h    "SQLFEPO" get error position
  3028.  21h    "SQLFGNR" get number of rows
  3029.  22h    "SQLFNSI" get number of select items
  3030.  23h    "SQLFRBF" get Roll Back flag
  3031.  24h    "SQLFRCD" get return code
  3032.  25h    "SQLFROW" get number of ROWs
  3033.  26h    "SQLFSCN" set cursor name
  3034.  27h    "SQLFSIL" set isolation level
  3035.  28h    "SQLFSLP" set log parameters
  3036.  29h    "SQLFSSB" set select buffer
  3037.  2Ah    "SQLFSSS" set sort space
  3038.  2Bh    "SQLFRLO" read long
  3039.  2Ch    "SQLFWLO" write long
  3040.  2Dh    "SQLFLSK" long seek
  3041.  2Eh    "SQLFGLS" get long size
  3042.  2Fh    "SQLFELO" end long operation
  3043.  30h    "SQLFRBK" roll back a transaction from the database
  3044.  31h    "SQLFERR" error message
  3045.  32h    "SQLFCPY" copy
  3046.  33h    "SQLFR01" reserved
  3047.  34h    "SQLFSYS" system
  3048.  35h    "SQLFSTA" statistics
  3049.  36h    "SQLFR02" reserved
  3050.  37h    "SQLFXAD" extra add
  3051.  38h    "SQLFXCN" extra character to number
  3052.  39h    "SQLFXDA" extra date add
  3053.  3Ah    "SQLFXDP" extra date picture
  3054.  3Bh    "SQLFXDV" extra divide
  3055.  3Ch    "SQLFXML" extra multiply
  3056.  3Dh    "SQLFXNP" extra number picture
  3057.  3Eh    "SQLFXPD" extra picture date
  3058.  3Fh    "SQLFXSB" extra subtract
  3059.  40h    "SQLFINS" install database
  3060.  41h    "SQLFDIN" deinstall database
  3061.  42h    "SQLFDIR" directory of databases
  3062.  43h    "SQLFTIO" timeout
  3063.  44h    "SQLFFQN" get fully qualified column name
  3064.  45h    "SQLFEXP" explain execution plan
  3065.  46h    "SQLFFER" get full error
  3066.  47h    "SQLFBKP" begin online backup
  3067.  48h    "SQLFRDC" read backup data chunk
  3068.  49h    "SQLFEBK" end backup
  3069.  4Ah    "SQLFRES" begin restore from backup
  3070.  4Bh    "SQLFWDC" write backup data chunk for restore
  3071.  4Ch    "SQLFRRD" recover restored database to consistent state
  3072.  4Dh    "SQLFERS" end restore
  3073.  4Eh    "SQLFNRR" return number of result set rows
  3074.  4Fh    "SQLFSTR" start restriction mode
  3075.  50h    "SQLFSPR" stop restriction mode
  3076.  51h    "SQLFCNC" connect 2
  3077.  52h    "SQLFCNR" connect with no recovery
  3078.  53h    "SQLFOMS" set output message size
  3079.  54h    "SQLFIMS" set input message size
  3080.  55h    "SQLFSCP" set cache pages
  3081.  56h    "SQLFDSC" describe items of a SELECT statement (external)
  3082.  57h    "SQLFLAB" get label info for items in SELECT statement
  3083.  58h    "SQLFCBV" clear bind variables
  3084.  59h    "SQLFGET" get database information
  3085.  5Ah    "SQLFSET" set database information
  3086.  5Bh    "SQLFTEC" translate error code
  3087. ----------478001-----------------------------
  3088. INT 47 - SQL Base - GET VERSION NUMBER
  3089.     AX = 8001h
  3090. Return: ???
  3091. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  3092. SeeAlso: AX=8000h
  3093. --------B-48---------------------------------
  3094. INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
  3095. SeeAlso: INT 49"PCjr"
  3096. --------h-48---------------------------------
  3097. INT 48 - Z100 - Slave 8259 - S100 vectored line 0
  3098. SeeAlso: INT 47"Z100",INT 49"Z100"
  3099. --------N-48---------------------------------
  3100. INT 48 - Watstar PC Network data pointer 1
  3101. SeeAlso: INT 49"Watstar"
  3102. --------O-48---------------------------------
  3103. INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
  3104. Return: FLAGS destroyed
  3105. Note:    writes a carriage return (0Dh) followed by a linefeed (0Ah)
  3106. SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
  3107. --------b-48---------------------------------
  3108. INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
  3109. Note:    the second WD1002-27X controller in a system uses the low byte to
  3110.       store the number of drives controlled by the second controller,
  3111.       and the high word for temporary storage during track recalculation;
  3112.       the first controller uses offsets 74h-77h in the BIOS data area
  3113.       (see MEMORY.LST) to store data
  3114. SeeAlso: INT 47"SuperBIOS"
  3115. --------V-48---------------------------------
  3116. INT 48 U - Compaq UILIB.EXE - API
  3117.     AX = function (see below)
  3118.     BX = call type (0002h) (see AX=1A70h)
  3119.     ???
  3120. Return: ???
  3121. Note:    returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
  3122.       listed below
  3123. SeeAlso: AX=1A70h
  3124.  
  3125. Values for function:
  3126.  1000h    1160h    12D0h    1430h    1570h    1680h    17F0h    1920h    1A90h
  3127.  1010h    1170h    12E0h    1440h    1578h    1690h    1800h    1930h    1AA0h
  3128.  1020h    1180h    12F0h    1450h    1580h    16A0h    1810h    1940h
  3129.  1030h    1190h    1300h    1460h    1590h    16B0h    1820h    1950h
  3130.  1040h    11A0h    1310h    1470h    1594h    16C0h    1830h    1960h
  3131.  1050h    11B0h    1320h    1480h    1598h    16D0h    1840h    1970h
  3132.  1060h    11C0h    1330h    1490h    15A0h    16E0h    1848h    1980h
  3133.  1070h    11D0h    1340h    14A0h    15B0h    16F0h    1850h    1990h
  3134.  1080h    11E0h    1350h    14B0h    15C0h    1700h    1860h    19A0h
  3135.  1090h    11F0h    1360h    14B8h    15D0h    1710h    1870h    19B0h
  3136.  1095h    1200h    1370h    14BBh    15D4h    1720h    1878h    19C0h
  3137.  1098h    1210h    1380h    14C0h    15D8h    1730h    1880h    19D0h
  3138.  10A0h    1220h    1390h    14D0h    15E0h    1735h    1890h    19E0h
  3139.  10C0h    1230h    13A0h    14E0h    15F0h    1740h    1898h    19F0h
  3140.  10D0h    1240h    13B0h    14F0h    1600h    1750h    18A0h    1A00h
  3141.  10E0h    1250h    13B8h    1500h    1610h    1770h    18B0h    1A10h
  3142.  10F0h    1260h    13C0h    1508h    1620h    1780h    18C0h    1A20h
  3143.  1100h    1270h    13D0h    1510h    1630h    1790h    18D0h    1A30h
  3144.  1110h    1280h    13E0h    1520h    1640h    17A0h    18E0h    1A40h
  3145.  1120h    1290h    13F0h    1530h    1650h    17B0h    18F0h    1A50h
  3146.  1130h    12A0h    1400h    1540h    1660h    17C0h    1900h    1A60h
  3147.  1140h    12B0h    1410h    1550h    1664h    17D0h    1909h    1A70h
  3148.  1150h    12C0h    1420h    1560h    1670h    17E0h    1910h    1A80h
  3149. --------V-481A70-----------------------------
  3150. INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
  3151.     AX = 1A70h
  3152.     BX = call type (see below)
  3153. Return: CX = 5649h ('VI') if installed
  3154.     DX = 4557h ('EW') if installed
  3155.         AX = version??? (0106h)
  3156.  
  3157. Values for call type:
  3158.  0000h    near
  3159.  0001h    far
  3160.  0002h    INT (only valid call type when using INT 48)
  3161.  0003h    near
  3162. --------B-49---------------------------------
  3163. INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
  3164. SeeAlso: INT 48"PCjr"
  3165.  
  3166. Format of translation table:
  3167. Offset    Size    Description
  3168.  00h    BYTE    number of nonkeyboard scancodes in the table
  3169.  01h  N WORDs    high byte 00h (NUL) byte scancode with low order byte
  3170.         representing the scancode mapped values relative to their
  3171.         input values within the range of 56h through 7Eh
  3172. --------h-49---------------------------------
  3173. INT 49 - Z100 - Slave 8259 - S100 vectored line 1
  3174. SeeAlso: INT 48"Z100",INT 4A"Z100"
  3175. --------V-49---------------------------------
  3176. INT 49 - Texas Instruments PC - VIDEO I/O???
  3177.     apparently provides direct video display on the TI Professional PC
  3178. --------N-49---------------------------------
  3179. INT 49 - Watstar PC Network data pointer 2
  3180. SeeAlso: INT 48"Watstar"
  3181. --------O-49---------------------------------
  3182. INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
  3183.     AL = character to be written
  3184. Return: FLAGS destroyed
  3185. Note:    converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
  3186. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
  3187. --------a-490001-----------------------------
  3188. INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
  3189.     AX = 0001h
  3190. Return: AX = status (see below)
  3191.     BX,CX,DX destroyed
  3192. Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
  3193.       providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
  3194. Note:    INT 49 is the default, but may be overridden on the commandline.  The
  3195.       actual interrupt in use may be found by searching for the signature
  3196.       "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
  3197.       the interrupt handler (this is also the installation check).    MAGic
  3198.       uses CodeRunneR, which places the signature "RT" at offset 0000h in
  3199.       the interrupt handler's segment, followed by MAGic's TSR ID of
  3200.       "VMAG".
  3201. SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
  3202. Index:    installation check;MAGic
  3203.  
  3204. Values for status:
  3205.  0000h    cannot magnify current video mode
  3206.  0002h    magnified (text mode)
  3207.  0003h    magnified (graphics mode)
  3208.  FFFDh    function works only in magnified mode
  3209.  FFFFh    MAGic busy, retry later
  3210. --------a-490002-----------------------------
  3211. INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
  3212.     AX = 0002h
  3213. Return: AX = status (see AX=0001h)
  3214.     BX,CX,DX destroyed
  3215. SeeAlso: AX=0001h
  3216. --------a-490003-----------------------------
  3217. INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
  3218.     AX = 0003h
  3219.     BX = vertical position (character row [text] or pixel row [graphics])
  3220.     DX = horizontal position (char column [text] or 8-pixel units [gr])
  3221. Return: AX = status
  3222.         0000h successful
  3223.         FFFFh MAGic busy, retry later
  3224.     BX,CX,DX destroyed
  3225. Note:    window is not moved if the position is inside the current window
  3226. SeeAlso: AX=0001h,AX=0004h,AX=0005h
  3227. --------a-490004-----------------------------
  3228. INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
  3229.     AX = 0004h
  3230.     BX = vertical position of upper left corner
  3231.     DX = horizontal position
  3232. Return: AX = status (see AX=0003h)
  3233.     BX,CX,DX destroyed
  3234. SeeAlso: AX=0001h,AX=0003h,AX=0005h
  3235. --------a-490005-----------------------------
  3236. INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
  3237.     AX = 0005h
  3238. Return: AX = status
  3239.         0000h successful
  3240.         BX = vertical position (char row or pixel row)
  3241.         DX = horizontal position (char column or 8-pixel units)
  3242.         FFFFh MAGic busy, retry later
  3243.         BX,DX destroyed
  3244.     CX destroyed
  3245. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
  3246. --------a-490006-----------------------------
  3247. INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
  3248.     AX = 0006h
  3249. Return: AX = status
  3250.         0000h successful
  3251.         BX = vertical size (char rows or pixel rows)
  3252.         DX = horizontal size (char cols or 8-pixel units)
  3253.         FFFFh MAGic busy, retry later
  3254.         BX,DX destroyed
  3255.     CX destroyed
  3256. SeeAlso: AX=0001h,AX=0005h,AX=0007h
  3257. --------a-490007-----------------------------
  3258. INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
  3259.     AX = 0007h
  3260. Return: AX = status
  3261.         0000h successful
  3262.         BX = vertical size (char rows or pixel rows)
  3263.         DX = horizontal size (char cols or 8-pixel units)
  3264.         FFFEh invalid function
  3265.         FFFFh MAGic busy, retry later
  3266.         BX,DX destroyed
  3267.     CX destroyed
  3268. BUG:    in v1.16 and v1.17, this function is not recognized as valid, but
  3269.       AX=0000h is accepted and will branch into hyperspace
  3270. SeeAlso: AX=0001h,AX=0006h
  3271. --------a-490008-----------------------------
  3272. INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
  3273.     AX = 0008h
  3274.     BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
  3275. Return: AX = status
  3276.         0000h successful
  3277.         FFFBh scaling factor only available in MAGic Deluxe
  3278.         FFFCh already in magnified state, can't set size
  3279. Notes:    this call specifies the amount a subsequent call to AX=0001h should
  3280.       magnify the display
  3281.     scaling factors greater than 2 are only available in MAGic Deluxe
  3282. SeeAlso: AX=0001h
  3283. --------B-4A---------------------------------
  3284. INT 4A C - SYSTEM - USER ALARM HANDLER
  3285. Desc:    This interrupt is invoked by the BIOS when a real-time clock alarm
  3286.       occurs; an application may use it to perform an action at a
  3287.       predetermined time.
  3288. Note:    this interrupt is called from within a hardware interrupt handler,
  3289.       so all usual precautions against reentering DOS must be taken
  3290. SeeAlso: INT 1A/AH=06h
  3291. --------h-4A---------------------------------
  3292. INT 4A - Z100 - Slave 8259 - S100 vectored line 2
  3293. SeeAlso: INT 49"Z100",INT 4B"Z100"
  3294. --------O-4A---------------------------------
  3295. INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
  3296.     AL = function code
  3297.         FAh transfer data between 80186 and 65C12 I/O processor
  3298.     DS:BX -> control block (see below)
  3299. Return: FLAGS destroyed
  3300.     control block updated
  3301. Note:    there are more functions than are listed here, but details are not
  3302.       available
  3303. SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
  3304.  
  3305. Format of control block for function FAh:
  3306. Offset    Size    Description
  3307.  00h    BYTE    number of parameters sent to I/O processor (0Dh,0Eh)
  3308.  01h    BYTE    number of parameters read from I/O processor (01h)
  3309.  02h    DWORD    I/O processor address
  3310.  06h    DWORD    80186 segment:offset address
  3311.  0Ah    WORD    number of bytes to transfer
  3312.  0Ch    BYTE    operation type
  3313.         00h write to 65C12 at 24 us/byte
  3314.         01h read from 65C12 at 24 us/byte
  3315.         02h write to 65C12 at 26 us/word
  3316.         03h read from 65C12 at 26 us/word
  3317.         04h write to 65C12 at 10 us/byte using 256-byte blocks
  3318.         05h read from 65C12 at 10 us/byte using 256-byte blocks
  3319.  0Dh    BYTE    65C12 memory access control (only used if offset 00h = 0Eh)
  3320.         bit 7: unused
  3321.         bit 6: always use main screen memory if I/O addr 3000h-7FFFh
  3322.             (overrides bit 5)
  3323.         bit 5: use shadow screen memory if screen address specified
  3324.         bit 4: use current ROM rather than ROM selected by bits 3-0
  3325.             (only if I/O address between 8000h and BFFFh)
  3326.         bits 3-0: paged ROM number
  3327. --------h-4B---------------------------------
  3328. INT 4B - Z100 - Slave 8259 - S100 vectored line 3
  3329. SeeAlso: INT 4A"Z100",INT 4C"Z100"
  3330. --------d-4B---------------------------------
  3331. INT 4B - Common Access Method SCSI interface (draft revision 1.9)
  3332.     ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
  3333. Notes:    the CAM committee moved the interface to INT 4F after revision 1.9
  3334.       to avoid conflicting with the IBM SCSI interface and the Virtual
  3335.       DMA specification
  3336.     the installation check for the driver is the string "SCSI_CAM" eight
  3337.       bytes past the INT 4Bh handler
  3338.     it is not known whether any drivers actually implemented this
  3339.       interface on INT 4B instead of INT 4F
  3340. SeeAlso: INT 4F/AX=8100h
  3341. Index:    installation check;Common Access Method SCSI interface
  3342. --------O-4B---------------------------------
  3343. INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
  3344.     AL = function code
  3345.     BL = first parameter
  3346.     BH = second parameter (if needed)
  3347. Return: BL = first return parameter
  3348.     BH = second return parameter
  3349.     CF depends on function
  3350. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
  3351. --------d-4B80-------------------------------
  3352. INT 4B - IBM SCSI interface
  3353.     AH = 80h
  3354.     details not yet available
  3355. --------d-4B8102DX0000-----------------------
  3356. INT 4B - Virtual DMA Specification (VDS) - GET VERSION
  3357.     AX = 8102h
  3358.     DX = 0000h
  3359. Return: CF clear if successful
  3360.         AH = major version number
  3361.         AL = minor version number
  3362.         BX = product number (see below)
  3363.         CX = product revision number
  3364.         always 0000h for QMAPS and HPMM.SYS
  3365.         always 0001h for Microsoft's EMM386.EXE v4.20-4.41
  3366.         SI:DI = maximum DMA buffer size
  3367.         DX = flags
  3368.         bit 0: PC/XT bus (DMA in first megabyte only)
  3369.         bit 1: physical buffer/remap region in first megabyte
  3370.         bit 2: automatic remap enabled
  3371.         bit 3: all memory is physically contiguous
  3372.         bits 4-15 reserved (zero)
  3373.     CF set on error
  3374.         AL = error code (see below)
  3375. Note:    bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
  3376.       apparently not always the case
  3377. SeeAlso: INT 2C/AX=002Bh,INT 31
  3378. Index:    installation check;Virtual DMA Spec
  3379.  
  3380. Values for product number:
  3381.  0000h    for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
  3382.  0001h    for Microsoft's EMM386.EXE
  3383.  0003h    for Windows 3.x WIN386.EXE
  3384.  0EDCh    for DR-DOS 6.0 EMM386.SYS
  3385.  4560h    ("E`") for Qualitas' 386MAX
  3386.  4D43h    ("MC") for V Communication's Memory Commander
  3387.  5145h    ("QE") for Quarterdeck's QEMM-386
  3388.  524Dh    ("RM") for Helix's Netroom RM386
  3389.  
  3390. Values for error code:
  3391.  01h    region not in contiguous memory
  3392.  02h    region crossed a physical alignment boundary
  3393.  03h    unable to lock pages
  3394.  04h    no buffer available
  3395.  05h    region too large for buffer
  3396.  06h    buffer currently in use
  3397.  07h    invalid memory region
  3398.  08h    region was not locked
  3399.  09h    number of physical pages greater than table length
  3400.  0Ah    invalid buffer ID
  3401.  0Bh    copy out of buffer range
  3402.  0Ch    invalid DMA channel number
  3403.  0Dh    disable count overflow
  3404.  0Eh    disable count underflow
  3405.  0Fh    function not supported
  3406.  10h    reserved flag bits set in DX
  3407.  
  3408. Format of DMA descriptor structure (DDS):
  3409. Offset    Size    Description
  3410.  00h    DWORD    region size
  3411.  04h    DWORD    offset
  3412.  08h    WORD    segment/selector
  3413.  0Ah    WORD    buffer ID
  3414.  0Ch    DWORD    physical address
  3415.  
  3416. Format of Extended DMA descriptor structure (EDDS):
  3417. Offset    Size    Description
  3418.  00h    DWORD    region size
  3419.  04h    DWORD    offset
  3420.  08h    WORD    segment/selector
  3421.  0Ah    WORD    reserved
  3422.  0Ch    WORD    number available
  3423.  0Eh    WORD    number used
  3424.  10h    DWORD    region 0 physical address
  3425.  14h    DWORD    region 0 size in bytes
  3426.  18h    DWORD    region 1 physical address
  3427.  1Ch    DWORD    region 1 size in bytes
  3428.     ...
  3429.  
  3430. Format of Extended DMA descriptor structure (EDDS) with page table entries:
  3431. Offset    Size    Description
  3432.  00h    DWORD    region size
  3433.  04h    DWORD    offset
  3434.  08h    WORD    segment/selector
  3435.  0Ah    WORD    reserved
  3436.  0Ch    WORD    number available
  3437.  0Eh    WORD    number used
  3438.  10h    DWORD    page table entry 0 (same as 80386 page table entry)
  3439.  14h    DWORD    page table entry 1
  3440.     ...
  3441. Note:    bits 1-11 of the page table entries should be zero; bit 0 set if page
  3442.       is present and locked
  3443. --------d-4B8103-----------------------------
  3444. INT 4B - Virtual DMA Specification - LOCK DMA REGION
  3445.     AX = 8103h
  3446.     DX = flags (see below)
  3447.     ES:DI -> DMA descriptor structure (see AX=8102h)
  3448. Return: CF clear if successful
  3449.         DDS physical address field filled in
  3450.         DDS buffer ID field filled (0000h if no buffer allocated)
  3451.     CF set on error
  3452.         AL = error code (see AX=8102h)
  3453.         DDS region size field filled wth maximum contiguous length in bytes
  3454. BUGS:    Windows 3.0 does not correctly support automatic remapping or copying
  3455.       in enhanced mode
  3456.     Windows 3.0 in enhanced mode does not return a correct code on error
  3457. SeeAlso: AX=8104h,AX=8105h
  3458.  
  3459. Bitfields for flags:
  3460.  bit 0    reserved (zero)
  3461.  bit 1    data should be copied into buffer (ignored if bit 2 set)
  3462.  bit 2    buffer should not be allocated if region noncontiguous or crosses
  3463.     physical alignment boundary specified by bits 4-5
  3464.  bit 3    don't attempt automatic remap
  3465.  bit 4    region must not cross 64K physical alignment boundary
  3466.  bit 5    region must not cross 128K physical alignment boundary
  3467.  bits 6-15 reserved (zero)
  3468. --------d-4B8104-----------------------------
  3469. INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
  3470.     AX = 8104h
  3471.     DX = flags
  3472.         bit 0: reserved (zero)
  3473.         bit 1: data should be copied out of buffer
  3474.         bits 2-15 reserved (zero)
  3475.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size,
  3476.         physical address, and buffer ID fields set
  3477. Return: CF clear if successful
  3478.         DDS physical address field set
  3479.         DDS buffer ID field set (0000h if no buffer allocated)
  3480.     CF set on error
  3481.         AL = error code (see AX=8102h)
  3482.         DDS region size field filled wth maximum contiguous length in bytes
  3483. Note:    Windows 3.0 does not check whether the region extends beyond the end of
  3484.       a segment
  3485. BUG:    Windows 3.0 in enhanced mode does not return a correct code on error
  3486. SeeAlso: AX=8103h,AX=8106h
  3487. --------d-4B8105-----------------------------
  3488. INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
  3489.     AX = 8105h
  3490.     DX = flags
  3491.         bits 0-5 reserved (zero)
  3492.         bit 6: EDDS should be returned with page table entries
  3493.         bit 7: only present pages should be locked (not-present pages
  3494.             receive entry of 0000h)
  3495.         bits 8-15 reserved (zero)
  3496.     ES:DI -> Extended DMA descriptor structure (see AX=8102h)
  3497.         region size, linear segment, linear offset, and number avail
  3498.         fields set
  3499. Return: CF clear if successful
  3500.         EDDS number used field set
  3501.         if DX bit 6 set, lower 12 bits of BX = offset in first page
  3502.     CF set on error
  3503.         AL = error code (see AX=8102h)
  3504.         EDDS region size field filled with max length in bytes that can be
  3505.         locked and described in the EDDS table
  3506. BUG:    Windows 3.0 in enhanced mode may return zero instead of the physical
  3507.       page address for pages which were originally not present
  3508. SeeAlso: AX=8103h,AX=8106h
  3509. --------d-4B8106-----------------------------
  3510. INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
  3511.     AX = 8106h
  3512.     DX = flags
  3513.         bits 0-5 reserved (zero)
  3514.         bit 6: EDDS contains page table entries
  3515.         bit 7: EDDS may contain not-present pages (entry = 0000h)
  3516.         bits 8-15 reserved (zero)
  3517.     ES:DI -> Extended DMA descriptor structure (see AX=8102h) returned
  3518.         by AX=8105h
  3519. Return: CF clear if successful
  3520.     CF set on error
  3521.         AL = error code (see AX=8102h)
  3522. Note:    according to the Microsoft version of the VDS specification, the
  3523.       actual scatter/gather list is ignored, while according to the IBM
  3524.       version of the specification, "the result of a LOCK operation"
  3525.       must be provided to this function
  3526. SeeAlso: AX=8104h,AX=8105h
  3527. --------d-4B8107-----------------------------
  3528. INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
  3529.     AX = 8107h
  3530.     DX = flags
  3531.         bit 0: reserved (zero)
  3532.         bit 1: data should be copied into buffer
  3533.         bits  2-15 reserved (zero)
  3534.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size set
  3535.         (also region offset and region segment if DX bit 1 set)
  3536. Return: CF clear if successful
  3537.         DDS physical address and buffer ID set
  3538.         DDS region size filled with length of buffer
  3539.     CF set on error
  3540.         AL = error code (see AX=8102h)
  3541. SeeAlso: AX=8108h
  3542. --------d-4B8108-----------------------------
  3543. INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
  3544.     AX = 8108h
  3545.     DX = flags
  3546.         bit 0: reserved (zero)
  3547.         bit 1: data should be copied out of buffer
  3548.         bits 2-15 reserved (zero)
  3549.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID set
  3550.         (also region size/region offset/segment if DX bit 1 set)
  3551. Return: CF clear if successful
  3552.     CF set on error
  3553.         AL = error code (see AX=8102h)
  3554. BUG:    under Windows 3.0 Enhanced mode, you must specify that data be copied
  3555.       for this function to work correctly
  3556. SeeAlso: AX=8107h
  3557. --------d-4B8109DX0000-----------------------
  3558. INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
  3559.     AX = 8109h
  3560.     DX = 0000h
  3561.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  3562.         region segment/offset, and region size fields set
  3563.     BX:CX = starting offset into DMA buffer
  3564. Return: CF clear if successful
  3565.     CF set on error
  3566.         AL = error code (see AX=8102h)
  3567. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3568. SeeAlso: AX=810Ah
  3569. --------d-4B810ADX0000-----------------------
  3570. INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
  3571.     AX = 810Ah
  3572.     DX = 0000h
  3573.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  3574.         region segment/offset, and region size fields set
  3575.     BX:CX = starting offset into DMA buffer
  3576. Return: CF clear if successful
  3577.     CF set on error
  3578.         AL = error code (see AX=8102h)
  3579. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3580. SeeAlso: AX=8109h
  3581. --------d-4B810B-----------------------------
  3582. INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
  3583.     AX = 810Bh
  3584.     BX = DMA channel number
  3585.     DX = 0000h
  3586. Return: CF clear if successful
  3587.     CF set on error
  3588.         AL = error code (see AX=8102h)
  3589. SeeAlso: AX=810Ch
  3590. --------d-4B810C-----------------------------
  3591. INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
  3592.     AX = 810Ch
  3593.     BX = DMA channel number
  3594.     DX = 0000h
  3595. Return: CF clear if successful
  3596.         ZF set if disable count decremented to zero
  3597.     CF set on error
  3598.         AL = error code (see AX=8102h)
  3599. SeeAlso: AX=810Bh
  3600. --------Q-4B810D-----------------------------
  3601. INT 4B - QEMM-386 - BUG
  3602.     AX = 810Dh
  3603. Note:    the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
  3604.       call
  3605. --------h-4C---------------------------------
  3606. INT 4C - Z100 - Slave 8259 - S100 vectored line 4
  3607. SeeAlso: INT 4B"Z100",INT 4D"Z100"
  3608. --------O-4C---------------------------------
  3609. INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
  3610.     DS:BX -> CR-terminated command string
  3611. Return: FLAGS destroyed
  3612. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
  3613. --------h-4D---------------------------------
  3614. INT 4D - Z100 - Slave 8259 - S100 vectored line 5
  3615. SeeAlso: INT 4C"Z100",INT 4E"Z100"
  3616. --------d-4E---------------------------------
  3617. INT 4E - TI Professional PC - DISK I/O
  3618.     used instead of INT 13 on the TI Professional PC
  3619. SeeAlso: INT 13
  3620. --------h-4E---------------------------------
  3621. INT 4E - Z100 - Slave 8259 - S100 vectored line 6
  3622. SeeAlso: INT 4D"Z100",INT 4F"Z100"
  3623. --------h-4F---------------------------------
  3624. INT 4F - Z100 - Slave 8259 - S100 vectored line 7
  3625. SeeAlso: INT 4E"Z100"
  3626. --------d-4F8100-----------------------------
  3627. INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
  3628.     AX = 8100h
  3629.     ES:BX -> CAM Control Block (CCB) (see below)
  3630. Return: AH = status
  3631.         00h successful
  3632.         01h invalid CCB address (0000h:0000h)
  3633. Note:    the SCSI Interface Module (SIM) may complete the requested function
  3634.       and invoke the completion callback function before this call returns
  3635. SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
  3636.  
  3637. Values for CAM function code:
  3638.  00h    NOP
  3639.  01h    execute SCSI I/O
  3640.  02h    get device type
  3641.  03h    path inquiry
  3642.  04h    release SIM queue
  3643.  05h    set async callback
  3644.  06h    set device type
  3645.  07h-0Fh reserved
  3646.  10h    abort SCSI command
  3647.  11h    reset SCSI bus
  3648.  12h    reset SCSI device
  3649.  13h    terminate I/O process
  3650.  14h-1Fh reserved
  3651.  20h    engine inquiry
  3652.  21h    execute engine request
  3653.  22h-2Fh reserved
  3654.  30h    enable logical unit number
  3655.  31h    execute target I/O
  3656.  32h-7Fh reserved
  3657.  80h-FFh vendor-specific functions
  3658.  
  3659. Format of CAM Control Block:
  3660. Offset    Size    Description
  3661.  00h    DWORD    physical address of this CCB
  3662.  04h    WORD    CAM control block length
  3663.  06h    BYTE    function code (see above)
  3664.  07h    BYTE    CAM status (see below)
  3665.  08h    BYTE    SCSI status
  3666.  09h    BYTE    path ID (FFh = XPT)
  3667.  0Ah    BYTE    target ID
  3668.  0Bh    BYTE    logical unit number
  3669.  0Ch    WORD    CAM flags (see below)
  3670.  0Eh    BYTE    CAM address flags (see below)
  3671.  0Fh    BYTE    target-mode flags (see below)
  3672. ---function 02h---
  3673.  10h    DWORD    pointer to 36-byte buffer for inquiry data or 0000h:0000h
  3674.  14h    BYTE    peripheral device type of target logical unit number
  3675. ---function 03h---
  3676.  10h    BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
  3677.         09h-FFh = rev no, i.e. 23h = rev 2.3)
  3678.  11h    BYTE    SCSI capabilities (see below)
  3679.  12h    BYTE    target mode support
  3680.         bit 7: processor mode
  3681.         bit 6: phase-cognizant mode
  3682.         bit 5-0: reserved
  3683.  13h    BYTE    miscellaneous flags
  3684.         bit 7: scanned high to low instead of low to high
  3685.         bit 6: removables not included in scan
  3686.         bit 5: inquiry data not kept by XPT
  3687.         bits 4-0: reserved
  3688.  14h    WORD    engine count
  3689.  16h 14 BYTEs    vendor-specific data
  3690.  24h    DWORD    size of private data area
  3691.  28h    DWORD    asynchronous event capabilities (see below)
  3692.  2Ch    BYTE    highest path ID assigned
  3693.  2Dh    BYTE    SCSI device ID of initiator
  3694.  2Eh  2 BYTEs    reserved
  3695.  30h 16 BYTEs    SIM vendor ID
  3696.  40h 16 BYTEs    HBA (host bus adaptor) vendor ID
  3697.  50h  4 BYTEs    operating-system dependant usage
  3698. ---functions 00h,04h,11h,12h---
  3699.  no additional fields
  3700. ---function 05h---
  3701.  10h    DWORD    asynchronous event enables (see function 03h above)
  3702.  14h    DWORD    pointer to asynchronous callback routine
  3703.  18h    DWORD    pointer to peripheral driver buffer
  3704.  1Ch    BYTE    size of peripheral buffer
  3705. ---function 06h---
  3706.  10h    BYTE    peripheral device type of target
  3707. ---functions 10h,13h---
  3708.  10h    DWORD    pointer to CCB to be aborted
  3709. ---function 20h---
  3710.  10h    WORD    engine number
  3711.  12h    BYTE    engine type
  3712.         00h buffer memory
  3713.         01h lossless compression
  3714.         02h lossy compression
  3715.         03h encryption
  3716.  13h    BYTE    engine algorithm ID
  3717.         00h vendor-unique
  3718.         01h LZ1 variation 1 (STAC)
  3719.         02h LZ2 variation 1 (HP DCZL)
  3720.         03h LZ2 variation 2 (Infochip)
  3721.  14h    DWORD    engine memory size
  3722. ---function 21h---
  3723.  10h    DWORD    pointer to peripheral driver
  3724.  14h  4 BYTEs    reserved
  3725.  18h    DWORD    OS-dependent request-mapping info
  3726.  1Ch    DWORD    address of completion callback routine
  3727.  20h    DWORD    pointer to scatter/gather list or data buffer
  3728.  24h    DWORD    length of data transfer
  3729.  28h    DWORD    pointer to engine buffer data
  3730.  2Ch  2 BYTEs    reserved
  3731.  2Eh    WORD    number of scatter/gather entries
  3732.  30h    DWORD    maximum destination data length
  3733.  34h    DWORD    length of destination data
  3734.  38h    DWORD    source residual length
  3735.  3Ch 12 BYTEs    reserved
  3736.  48h    DWORD    OS-dependent timeout value
  3737.  4Ch  4 BYTEs    reserved
  3738.  50h    WORD    engine number
  3739.  52h    WORD    vendor-unique flags
  3740.  54h  4 BYTEs    reserved
  3741.  58h  N BYTEs    private data area for SIM
  3742. ---function 30h---
  3743.  10h    WORD    group 6 vendor-unique CDB length
  3744.  12h    WORD    group 7 vendor-unique CDB length
  3745.  14h    DWORD    pointer to target CCB list
  3746.  18h    WORD    number of target CCBs
  3747. ---other functions---
  3748.  10h    DWORD    pointer to peripheral driver
  3749.  14h    DWORD    pointer to next CCB
  3750.  18h    DWORD    OS-dependent request mapping information
  3751.  1Ch    DWORD    address of completion callback routine
  3752.  20h    DWORD    pointer to scatter/gather list or data buffer
  3753.  24h    DWORD    length of data transfer
  3754.  28h    DWORD    pointer to sense info buffer
  3755.  2Ch    BYTE    length of sense info buffer
  3756.  2Dh    BYTE    CDB length
  3757.  2Eh    WORD    number of scatter/gather entries
  3758.  30h  4 BYTEs    reserved
  3759.  34h    BYTE    SCSI status
  3760.  35h  3 BYTEs    reserved
  3761.  38h    DWORD    residual length
  3762.  40h 12 BYTEs    Command Descriptor Block (CDB)
  3763.  44h    DWORD    OS-dependent timeout value
  3764.  48h    DWORD    pointer to message buffer
  3765.  4Ch    WORD    length of message buffer
  3766.  4Eh    WORD    vendor-unique flags
  3767.  50h    BYTE    tag queue action
  3768.  51h  3 BYTEs    reserved
  3769.  54h  N BYTEs    private data area for SIM
  3770.  
  3771. Bitfields for CAM flags:
  3772.  bit 0    CDB is a pointer
  3773.  bit 1    tagged queue action enable
  3774.  bit 2    linked CDB
  3775.  bit 3    disable callback on completion
  3776.  bit 4    scatter/gather
  3777.  bit 5    disable autosense
  3778.  bits 7-6 direction (00 reserved, 01 in, 10 out, 11 no data transfer)
  3779.  bits 9-8 reserved
  3780.  bit 10 engine synchronize
  3781.  bit 11 SIM queue freeze
  3782.  bit 12 SIM queue priority
  3783.     1 head insertion
  3784.     0 tail insertion (normal)
  3785.  bit 13 disable synchronous transfers    / exclusive
  3786.  bit 14 initiate synchronous transfers    \ mutually
  3787.  bit 15 disable disconnect
  3788.  
  3789. Bitfields for CAM address flags:
  3790.  bit 7    SG list/data (0 = host, 1 = engine)
  3791.  bit 6    CDB pointer    (bits 6-1: 0=virtual addr, 1=phys addr)
  3792.  bit 5    SG list/data
  3793.  bit 4    sense buffer
  3794.  bit 3    message buffer
  3795.  bit 2    next CCB
  3796.  bit 1    callback on completion
  3797.  bit 0    reserved
  3798.  
  3799. Values for CAM status:
  3800.  00h    request in progress
  3801.  01h    request successful
  3802.  02h    host aborted request
  3803.  03h    unable to abort request
  3804.  04h    request completed with error
  3805.  05h    CAM is busy
  3806.  06h    invalid request
  3807.  07h    invalid path ID
  3808.  08h    no such SCSI device
  3809.  09h    unable to terminate I/O process
  3810.  0Ah    timeout on target selection
  3811.  0Bh    timeout on command
  3812.  0Dh    receive message rejection
  3813.  0Eh    sent/received SCSI bus reset
  3814.  0Fh    detected uncorrectable parity error
  3815.  10h    Autosense request failed
  3816.  11h    no HBA detected
  3817.  12h    data over/underrun
  3818.  13h    bus freed unexpectedly
  3819.  14h    target bus phase sequence failure
  3820.  15h    CCB too small
  3821.  16h    requested capability not available
  3822.  17h    sent bus device reset
  3823.  18h    terminate I/O process
  3824.  38h    invalid LUN
  3825.  39h    invalid target ID
  3826.  3Ah    unimplemented function
  3827.  3Bh    nexus not established
  3828.  3Ch    invalid initiator ID
  3829.  3Dh    received SCSI Command Descriptor Block
  3830.  3Eh    LUN already enabled
  3831.  3Fh    SCSI bus busy
  3832. Note:    bit 6 set to indicate frozen SIM queue
  3833.     bit 7 set to indicate valid autosense
  3834.  
  3835. Bitfields for target-mode flags:
  3836.  bit 7    data buffer valid
  3837.  bit 6    status valid
  3838.  bit 5    message buffer valid
  3839.  bit 4    reserved
  3840.  bit 3    phase-cognizant mode
  3841.  bit 2    target CCB available
  3842.  bit 1    disable autodisconnect
  3843.  bit 0    disable autosave/restore
  3844.  
  3845. Bitfields for SCSI capabilities:
  3846.  bit 7    modify data pointers
  3847.  bit 6    wide bus (32 bits)
  3848.  bit 5    wide bus (16 bits)
  3849.  bit 4    synchronous transfers
  3850.  bit 3    linked commands
  3851.  bit 2    reserved
  3852.  bit 1    tagged queueing
  3853.  bit 0    soft reset
  3854.  
  3855. Bitfields for asynchronous event capabilities:
  3856.  bits 31-24    vendor-specific
  3857.  bits 23-8    reserved
  3858.  bit 7    new devices found during rescan
  3859.  bit 6    SIM module deregistered
  3860.  bit 5    SIM module registered
  3861.  bit 4    sent bus device reset to target
  3862.  bit 3    SCSI AEN
  3863.  bit 2    reserved
  3864.  bit 1    unsolicited reselection
  3865.  bit 0    unsolicited SCSI bus reset
  3866.  
  3867. Completion callback function called with:
  3868.     interrupts disabled
  3869.     ES:BX -> completed CCB
  3870.  
  3871. Asynchronous callback function called with:
  3872.     AH = opcode
  3873.     AL = path ID generating callback
  3874.     DH = target ID causing event
  3875.     DL = LUN causing event
  3876.     CX = data byte count (if applicable)
  3877.     ES:BX -> data buffer (if applicable)
  3878. Return: all registers preserved
  3879. --------d-4F8200CX8765-----------------------
  3880. INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
  3881.     AX = 8200h
  3882.     CX = 8765h
  3883.     DX = CBA9h
  3884. Return: AH = 00h if installed
  3885.         CX = 9ABCh
  3886.         DX = 5678h
  3887.         ES:DI -> "SCSI_CAM"
  3888. SeeAlso: AX=8100h,INT 4B"Common Access Method"
  3889. --------N-50---------------------------------
  3890. INT 50 - TIL Xpert AIM (X.25)
  3891.     AH = function
  3892. --------H-50---------------------------------
  3893. INT 50 - IRQ0 relocated by DESQview
  3894. Notes:    this is the default location for older versions; DESQview v2.26+
  3895.       searches for unused ranges of interrupts and uses the lowest
  3896.       available range in its list for relocating these IRQs and the next
  3897.       lowest for relocating IRQ8-IRQ15
  3898.     a range of eight interrupts starting at a multiple of 8 is considered
  3899.       available if all vectors are identical and it has not been excluded
  3900.       with an /XB:nn commandline switch
  3901.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  3902.       are available, F8h and then 50h are used anyway)
  3903.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  3904.       are available, F8h and then F0h are used anyway)
  3905. SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
  3906. SeeAlso: INT D8"Screen Thief"
  3907. --------H-50---------------------------------
  3908. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  3909. SeeAlso: INT 51"IBM 3278"
  3910. --------H-50---------------------------------
  3911. INT 50 - IRQ0 relocated by OS/2 v1.x
  3912. SeeAlso: INT 51"OS/2"
  3913. --------V-500000-----------------------------
  3914. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
  3915.     AX = 0000h
  3916.     ES:BX -> name string or ES:0000h if none
  3917.     CH,CL = row,column of upper left corner
  3918.     DH,DL = row,column of lower right corner
  3919. Return: AX = window handle or
  3920.         0000h if not installed
  3921.         FFFFh on error
  3922. SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
  3923. --------V-500001-----------------------------
  3924. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
  3925.     AX = 0001h
  3926.     DI = window handle
  3927. SeeAlso: AX=0000h
  3928. --------V-500002-----------------------------
  3929. INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
  3930.     AX = 0002h
  3931.     BL = character
  3932.     BH = attribute
  3933.     DL = column
  3934.     DH = row
  3935.     DI = window handle
  3936. Return: AX = status
  3937.         0000h if successful
  3938.         FFFFh if outside window
  3939. SeeAlso: AX=0000h
  3940. --------l-500002-----------------------------
  3941. INT 50 - PC Thuis Organizer Shell - PLOT TEXT
  3942.     AX = 0002h
  3943.     ES:BX -> text string
  3944.     DH,DL = row,column of upper left corner
  3945.     DI = window handle
  3946. Return: AX = status
  3947.         0000h successful (text fits in window)
  3948.         FFFFh error
  3949. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  3950.       published in the June/July 1990 issue of PC Thuis Power magazine
  3951. --------V-500003-----------------------------
  3952. INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
  3953.     AX = 0003h
  3954.     ES:BX -> text string
  3955.     CX = string length (0000h if ASCIZ string)
  3956.     DL = position (FFh centered, else flush left)
  3957.     DH = starting row
  3958.     DI = window handle
  3959. Return: AX = status
  3960.         0000h successful
  3961.         FFFFh did not fit in window
  3962. --------l-500003-----------------------------
  3963. INT 50 - PC Thuis Organizer Shell - WRITE FILE
  3964.     AX = 0003h
  3965.     ES:BX -> data to be written
  3966.     CX = number of bytes to write
  3967.     DS:SI -> filename
  3968. Return: AX = status
  3969.         0000h successful
  3970.         FFFFh error
  3971. SeeAlso: AX=0004h"Shell"
  3972. --------V-500004-----------------------------
  3973. INT 50 - Vanderaart TEXT WINDOWS - GET KEY
  3974.     AX = 0004h
  3975.     CH = type
  3976.         00h any key
  3977.         01h 'J' or 'N' (Dutch for yes/no)
  3978. Return: AX = key
  3979. SeeAlso: INT 16/AH=00h
  3980. --------l-500004-----------------------------
  3981. INT 50 - PC Thuis Organizer Shell - READ FILE
  3982.     AX = 0004h
  3983.     ES:BX -> buffer for data
  3984.     CX = number of bytes to read or 0000h for entire file
  3985.     DL = file type
  3986.         01h setting shell
  3987.         02h setting sterm
  3988.         03h INT21 file
  3989.     DS:SI -> filename
  3990. Return: AX = status
  3991.         0000h successful
  3992.         FFFFh error
  3993. Note:    file type numbers are maintained by John Vanderaart; if a new file type
  3994.       is needed, a type number should be requested from him through the
  3995.       magazine:
  3996.         PC Thuis BV
  3997.         Spaarne 55
  3998.         2011 CE HAARLEM
  3999.         The Netherlands
  4000. SeeAlso: AX=0003h"Shell"
  4001. --------V-500005-----------------------------
  4002. INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
  4003.     AX = 0005h
  4004.     BL = new attribute
  4005.     CH,CL = row,column of upper left corner
  4006.     DH,DL = row,column of lower right corner
  4007.     DI = window handle
  4008. --------l-500005-----------------------------
  4009. INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
  4010.     AX = 0005h
  4011.     ES:BX -> prompt string (ES:0000h if no prompt)
  4012. Return: AX = key pressed
  4013.         0000h "J" (Dutch "Ja" = "Yes")
  4014.         FFFFh "N" (Dutch "Nee" = "No")
  4015. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4016.       published in the June/July 1990 issue of PC Thuis Power magazine
  4017. SeeAlso: AX=0008h"PC Thuis"
  4018. --------V-500006-----------------------------
  4019. INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
  4020.     AX = 0006h
  4021.     ES:BX -> text string
  4022.     CH = type of input (see below)
  4023.     DH,DL = row,column of upper left corner
  4024.     DI = window handle
  4025. Return: AX = key which terminated entry
  4026.         0000h Enter
  4027.         0001h Esc
  4028.         0002h Down arrow
  4029.         0003h Up arrow
  4030.         0004h F10
  4031.  
  4032. Values for type of input:
  4033.  00h    everything
  4034.  01h    uppercase only
  4035.  02h    positive numbers
  4036.  03h    Dutch postal code ("9999 AA")
  4037.  04h    'J' or 'N' (Dutch yes/no)
  4038.  05h    telephone or FAX number
  4039.  06h    positive or negative number
  4040.  07h    date (dd/mm/yy)
  4041.  08h    money
  4042.  09h    '1' through '8'
  4043.  0Ah    '1' through '4'
  4044.  0Bh    uppercase filenames
  4045. --------l-500006-----------------------------
  4046. INT 50 - PC Thuis Organizer Shell - ALERT USER
  4047.     AX = 0006h
  4048.     ES:BX -> string
  4049. --------l-500007-----------------------------
  4050. INT 50 - PC Thuis Organizer Shell - DO LINE
  4051.     AX = 0007h
  4052.     ES:BX -> text string
  4053.     CX = string length in bytes (0000h if NUL-terminated)
  4054.     DL = FFh to center string, else flush left
  4055.     DH = upper left row
  4056.     DI = window handle
  4057. Return: AX = status
  4058.         0000h successful
  4059.         FFFFh error
  4060. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4061.       published in the June/July 1990 issue of PC Thuis Power magazine
  4062. SeeAlso: AX=0008h
  4063. --------l-500008-----------------------------
  4064. INT 50 - PC Thuis Organizer Shell - DO MENU
  4065.     AX = 0008h
  4066.     ES:BX -> menu structure
  4067. Return: AL = index 1 or FFh if not selected
  4068.     AH = index 2 or FFh if not selected
  4069.     BL = index 3 or FFh if not selected
  4070.     BH = index 4 or FFh if not selected
  4071. SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
  4072. --------l-500009-----------------------------
  4073. INT 50 - PC Thuis Organizer Shell - MESSAGE ON
  4074.     AX = 0009h
  4075.     ES:BX -> message string
  4076. SeeAlso: AX=000Ah
  4077. --------l-50000A-----------------------------
  4078. INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
  4079.     AX = 000Ah
  4080. SeeAlso: AX=0009h
  4081. --------l-50000B-----------------------------
  4082. INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
  4083.     AX = 000Bh
  4084.     BL = new attribute
  4085.     CH,CL = row,column of upper left corner
  4086.     DH,DL = row,column of lower right corner
  4087.     DI = window handle
  4088. --------l-50000C-----------------------------
  4089. INT 50 - PC Thuis Organizer Shell - DO REQUEST
  4090.     AX = 000Ch
  4091.     ES:BX -> request structure
  4092. Return: AX = status
  4093.         0000h confirmed
  4094.         FFFFh denied
  4095. SeeAlso: AX=0008h
  4096. --------l-50000D-----------------------------
  4097. INT 50 - PC Thuis Organizer Shell - EDIT LINE
  4098.     AX = 000Dh
  4099.     ES:BX -> text string
  4100.     CL = length
  4101.     CH = type
  4102.         bit 0: force uppercase
  4103.         bit 1: integer
  4104.         bit 2: no spaces allowed
  4105.         bit 3: no cursor keys
  4106.     DH,DL = row,column of upper left corner
  4107.     DI = window handle
  4108. Return: AX = result code
  4109. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4110.       published in the June/July 1990 issue of PC Thuis Power magazine
  4111. --------l-50000E-----------------------------
  4112. INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
  4113.     AX = 000Eh
  4114.     BL = character
  4115.     BH = attribute
  4116.     DH,DL = row,column at which to plot
  4117.     DI = window handle
  4118. Return: AX = status
  4119.         0000h successful
  4120.         FFFFh errror
  4121. --------l-50000F-----------------------------
  4122. INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
  4123.     AX = 000Fh
  4124.     BL = character
  4125.     BH = attribute
  4126.     DI = window handle
  4127. --------l-500010-----------------------------
  4128. INT 50 - PC Thuis Organizer Shell - TRACE MENU
  4129.     AX = 0010h
  4130.     ES:BX -> first menu structure
  4131.     CL = hotkey to look up
  4132. Return: AL = index 1 or FFh if not selected
  4133.     AH = index 2 or FFh if not selected
  4134.     BL = index 3 or FFh if not selected
  4135.     BH = index 4 or FFh if not selected
  4136. Index:    hotkeys;PC Thuis Organizer Shell
  4137. --------l-500011-----------------------------
  4138. INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
  4139.     AX = 0011h
  4140.     DS:SI -> source
  4141.     ES:DI -> destination
  4142.     CX = number of bytes to move (0000h = until NUL string terminator???)
  4143. SeeAlso: AX=0012h
  4144. --------l-500012-----------------------------
  4145. INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
  4146.     AX = 0012h
  4147.     DS:SI -> source
  4148.     ES:DI -> destination
  4149.     CX = number of bytes to compare (0000h=until NUL string terminator???)
  4150. Return: AX = status
  4151.         0000h same
  4152.         FFFFh different
  4153. SeeAlso: AX=0011h
  4154. --------l-500013-----------------------------
  4155. INT 50 - PC Thuis Organizer Shell - GET KEY
  4156.     AX = 0013h
  4157.     CH = type flags
  4158.         bit 0: force uppercase
  4159.         bit 1: integer
  4160.         bit 2: no spaces
  4161. Return: AX = keystroke
  4162. --------l-500014-----------------------------
  4163. INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
  4164.     AX = 0014h
  4165.     BL = direction
  4166.         06h up
  4167.         07h down
  4168.     BH = attribute
  4169.     DI = window handle
  4170. SeeAlso: INT 10/AH=06h,INT 10/AH=07h
  4171. --------l-500015-----------------------------
  4172. INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
  4173.     AX = 0015h
  4174.     BL = handle size
  4175.         00h 65536 bytes (64K)
  4176.         01h 65535 bytes (64K-1)
  4177.         02h 32768 bytes (32K)
  4178.         03h 32767 bytes (32K-1)
  4179. Return: AX = segment
  4180. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4181.       published in the June/July 1990 issue of PC Thuis Power magazine
  4182. SeeAlso: INT 21/AH=48h
  4183. --------H-51---------------------------------
  4184. INT 51 - IRQ1 relocated by DESQview
  4185. Note:    this is the default location for older versions; see INT 50"DESQview"
  4186.       for details of interrupt relocation
  4187. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4188. --------H-51---------------------------------
  4189. INT 51 - IRQ1 relocated by IBM 3278 emulation control program
  4190. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  4191. --------H-51---------------------------------
  4192. INT 51 - IRQ1 relocated by OS/2 v1.x
  4193. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  4194. --------H-52---------------------------------
  4195. INT 52 - IRQ2 relocated by DESQview
  4196. Note:    this is the default location for older versions; see INT 50"DESQview"
  4197.       for details of interrupt relocation
  4198. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4199. --------H-52---------------------------------
  4200. INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4201. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4202. --------H-53---------------------------------
  4203. INT 53 - IRQ3 relocated by DESQview
  4204. Note:    this is the default location for older versions; see INT 50"DESQview"
  4205.       for details of interrupt relocation
  4206. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4207. --------H-53---------------------------------
  4208. INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4209. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4210. --------N-53---------------------------------
  4211. INT 53 - WEB??? - API
  4212.     BX = function
  4213.         0000h ???
  4214.         AX = ???
  4215.         Return: AX = ???
  4216.         0004h ???
  4217.         0009h ???
  4218.         0015h
  4219.         AX = ???
  4220.         DX = ???
  4221.         0017h
  4222. Return: ???
  4223. Notes:    the installation check consists of looking for the signature "WEBCO"
  4224.       immediately prior to the interrupt handler
  4225.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  4226. Index:    installation check;unknown|installation check;WEBCO
  4227. --------H-54---------------------------------
  4228. INT 54 - IRQ4 relocated by DESQview
  4229. Note:    this is the default location for older versions; see INT 50"DESQview"
  4230.       for details of interrupt relocation
  4231. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4232. --------H-54---------------------------------
  4233. INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4234. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4235. ----------545400-----------------------------
  4236. INT 54 U - Toshiba PCMCIA2 - INSTALLATION CHECK
  4237.     AX = 5400h
  4238. Return: AX = 0054h if installed
  4239.         CX:DX -> INT function handler
  4240. --------H-55---------------------------------
  4241. INT 55 - IRQ5 relocated by DESQview
  4242. Note:    this is the default location for older versions; see INT 50"DESQview"
  4243.       for details of interrupt relocation
  4244. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4245. --------H-55---------------------------------
  4246. INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4247. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4248. --------H-56---------------------------------
  4249. INT 56 - IRQ6 relocated by DESQview
  4250. Note:    this is the default location for older versions; see INT 50"DESQview"
  4251.       for details of interrupt relocation
  4252. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4253. --------H-56---------------------------------
  4254. INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4255. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4256. --------H-57---------------------------------
  4257. INT 57 - IRQ7 relocated by DESQview
  4258. Note:    this is the default location for older versions; see INT 50"DESQview"
  4259.       for details of interrupt relocation
  4260. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4261. --------H-57---------------------------------
  4262. INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4263. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4264. --------H-58---------------------------------
  4265. INT 58 - IRQ8 relocated by DESQview 2.26+
  4266. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4267. SeeAlso: INT 50"DESQview",INT 70
  4268. --------H-58---------------------------------
  4269. INT 58 - IRQ0 relocated by DoubleDOS
  4270. SeeAlso: INT 08
  4271. --------H-59---------------------------------
  4272. INT 59 - IRQ9 relocated by DESQview 2.26+
  4273. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4274. SeeAlso: INT 50"DESQview",INT 71
  4275. --------H-59---------------------------------
  4276. INT 59 - IRQ1 relocated by DoubleDOS
  4277. SeeAlso: INT 09
  4278. --------V-59---------------------------------
  4279. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  4280.     DS:DX -> block of 5 array pointers
  4281. Return: CF set on error
  4282.         AX = error code
  4283.     CF clear if successful
  4284.         AX = return code
  4285. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  4286.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  4287.     also used by the IBM Graphic Development Toolkit
  4288. --------H-5A---------------------------------
  4289. INT 5A - IRQ10 relocated by DESQview 2.26+
  4290. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4291. SeeAlso: INT 50"DESQview",INT 72
  4292. --------H-5A---------------------------------
  4293. INT 5A - IRQ2 relocated by DoubleDOS
  4294. SeeAlso: INT 0A
  4295. --------N-5A---------------------------------
  4296. INT 5A - Cluster adapter BIOS entry address
  4297.     ???
  4298. --------H-5B---------------------------------
  4299. INT 5B - IRQ11 relocated by DESQview 2.26+
  4300. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4301. SeeAlso: INT 50"DESQview",INT 73
  4302. --------H-5B---------------------------------
  4303. INT 5B - IRQ3 relocated by DoubleDOS
  4304. SeeAlso: INT 0B
  4305. --------N-5B---------------------------------
  4306. INT 5B - Used by cluster adapter
  4307. --------N-5B---------------------------------
  4308. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  4309.     ES:BX -> Network Control Block (see below)
  4310. Return: AL = status (see INT 5C)
  4311. SeeAlso: INT 5C
  4312.  
  4313. Format of Network Control Block
  4314. Offset    Size    Description
  4315.  00h    BYTE    ncb_command (see below)
  4316.  01h    BYTE    ncb_retcode
  4317.  02h    BYTE    ncb_lsn
  4318.  03h    BYTE    ncb_num
  4319.  04h    DWORD    -> ncb_buffer
  4320.  08h    WORD    ncb_length
  4321.  0Ah 16 BYTEs    ncb_callname
  4322.  1Ah 16 BYTEs    ncb_name
  4323.  2Ah    BYTE    ncb_rto
  4324.  2Bh    BYTE    ncb_sto
  4325.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  4326.  30h    BYTE    ncb_lana_num
  4327.  31h    BYTE    ncb_cmd_cplt
  4328.  32h    DWORD    -> ncb_vname
  4329.  36h    BYTE    ncb_vnamelen
  4330.  37h  9 BYTEs    ncb_reserve
  4331. Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
  4332.  
  4333. Values for ncb_command field same as for INT 5C, except
  4334.  70h    send net Break
  4335. --------N-5B---------------------------------
  4336. INT 5B - Microsoft Network Transport Layer Interface
  4337. Note:    used by MS-NET for executing network commands
  4338. SeeAlso: INT 5C"NetBIOS"
  4339. --------N-5B---------------------------------
  4340. INT 5B - used by Alloy NTNX
  4341. --------N-5B---------------------------------
  4342. INT 5B - ISOLAN Multi Protocol Software
  4343.     ES:BX -> Transfer Control Block
  4344. Return: AL = status
  4345. Note:    this software interface allows multiple protocols/software packages
  4346.       to access a BICC 411x network card
  4347.  
  4348. Format of Transfer Control Block:
  4349. Offset    Type    Description
  4350.  00h    BYTE    command code
  4351.         B3h Status
  4352.         F2h Activate
  4353.         F3h Deactivate
  4354.         F4h Send Data
  4355.  01h    BYTE    command identity
  4356.  02h    BYTE    virtual circuit ID
  4357.  03h    WORD    buffer length
  4358.  05h    DWORD    buffer pointer
  4359.  09h    BYTE    expedited data flag
  4360.  0Ah    BYTE    cancelable flag
  4361.  0Bh 16 BYTEs    local network address
  4362.  1Bh 16 BYTEs    remote network address
  4363.  2Bh    DWORD    asynchronous notification routine
  4364.  30h    DWORD    local network number
  4365.  34h    DWORD    remote network number
  4366.  38h    BYTE    call timeout
  4367.  39h    BYTE    not used
  4368.  3Ah  8 BYTEs    reserved
  4369.  42h    BYTE    command code extension
  4370.  43h    WORD    Blue Book MAC type
  4371. --------U-5B5254DL04-------------------------
  4372. INT 5B U - SitBack v3.02R - GET ???
  4373.     AX = 5254h
  4374.     DL = 04h
  4375. Return: ES:BX -> ??? in resident portion
  4376. Program: SitBack is a background file backup utility by SitBack Technologies,
  4377.       Inc. which initiates backups whenever the system is idle
  4378. SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
  4379. --------U-5B8485DL70-------------------------
  4380. INT 5B U - SitBack v3.02R - INSTALLATION CHECK
  4381.     AX = 8485h
  4382.     DL = 70h
  4383. Return: CX = 8485h if installed
  4384.         DX:AX -> ??? (configuration data?)
  4385. Program: SitBack is a background file backup utility by SitBack Technologies,
  4386.       Inc. which initiates backups whenever the system is idle
  4387. SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
  4388. --------U-5B8485DL71-------------------------
  4389. INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
  4390.     AX = 8485h
  4391.     DL = 71h
  4392. Return: ES:BX -> FAR entry point to ???
  4393. Note:    the flag which is modified is located at the address returned by
  4394.        AX=5254h/DL=04h
  4395. SeeAlso: AX=8485h/DL=72h
  4396. --------U-5B8485DL72-------------------------
  4397. INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
  4398.     AX = 8485h
  4399.     DL = 72h
  4400. Note:    the flag which is modified is located at the address returned by
  4401.        AX=5254h/DL=04h
  4402. SeeAlso: AX=8485h/DL=71h
  4403. --------U-5B8485DL73-------------------------
  4404. INT 5B U - SitBack v3.02R - ???
  4405.     AX = 8485h
  4406.     DL = 73h
  4407.     ???
  4408. Return: ???
  4409. --------U-5B8485DL74-------------------------
  4410. INT 5B U - SitBack v3.02R - ???
  4411.     AX = 8485h
  4412.     DL = 74h
  4413.     ???
  4414. Return: ???
  4415. --------U-5B8485DL75-------------------------
  4416. INT 5B U - SitBack v3.02R - ???
  4417.     AX = 8485h
  4418.     DL = 75h
  4419.     CX = ???
  4420. Return: ???
  4421. SeeAlso: AX=8485h/DL=76h
  4422. --------U-5B8485DL76-------------------------
  4423. INT 5B U - SitBack v3.02R - ???
  4424.     AX = 8485h
  4425.     DL = 76h
  4426.     CX = ???
  4427. Return: ???
  4428. Note:    conditionally calls the code for AX=8485h/DL=75h
  4429. SeeAlso: AX=8485h/DL=75h
  4430. --------U-5B8485DL77-------------------------
  4431. INT 5B U - SitBack v3.02R - SET ??? FLAG
  4432.     AX = 8485h
  4433.     DL = 77h
  4434. --------U-5B8485DL78-------------------------
  4435. INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
  4436.     AX = 8485h
  4437.     DL = 78h
  4438. Return: CX = 5342h if supported
  4439.         ES = AX = segment of TSR data
  4440. SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
  4441. --------U-5B8485DL79-------------------------
  4442. INT 5B U - SitBack v3.02R - GET DTA
  4443.     AX = 8485h
  4444.     DL = 79h
  4445. Return: CX = 5342h if supported
  4446.         ES:BX -> DTA set by last INT 21/AH=1Ah
  4447. Note:    this function is provided by SBOS.EXE rather than SB.EXE
  4448. SeeAlso: INT 21/AH=1Ah
  4449. --------U-5B8485DL7A-------------------------
  4450. INT 5B U - SitBack v3.02R - TOGGLE ???
  4451.     AX = 8485h
  4452.     DL = 7Ah
  4453. Return: CX = 5342h if supported
  4454.         AL = new value of ??? (00h or 01h)
  4455. --------H-5C---------------------------------
  4456. INT 5C - IRQ12 relocated by DESQview 2.26+
  4457. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4458. SeeAlso: INT 50"DESQview",INT 74
  4459. --------H-5C---------------------------------
  4460. INT 5C - IRQ4 relocated by DoubleDOS
  4461. SeeAlso: INT 0C
  4462. --------N-5C---------------------------------
  4463. INT 5C - NetBIOS INTERFACE
  4464.     ES:BX -> network control block (NCB) (see below)
  4465. Return: AL = status (see below)
  4466. Program: NetBIOS was developed by Sytek, Inc. in 1984 as a high-level
  4467.       programming interface to the IBM PC Network; the first implementation
  4468.       was a ROM BIOS extension on Sytek's PCnet LAN adapter card, but many
  4469.       current networks support NetBIOS as the session layer.
  4470. Note:    The Sytek PCnet card uses DMA 3.
  4471. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  4472.  
  4473. Values for NetBIOS status:
  4474.  00h    successful
  4475.  01h    bad buffer size
  4476.  03h    invalid NETBIOS command
  4477.  05h    timeout
  4478.  06h    receive buffer too small
  4479.  07h    No-ACK command failed
  4480.  08h    bad session number
  4481.  09h    LAN card out of memory
  4482.  0Ah    session closed
  4483.  0Bh    command has been cancelled
  4484.  0Dh    name already exists
  4485.  0Eh    local name table full
  4486.  0Fh    name still in use, can't delete
  4487.  11h    local session table full
  4488.  12h    remote PC not listening
  4489.  13h    bad NCB_NUM field
  4490.  14h    no answer to CALL or no such remote
  4491.  15h    name not in local name table
  4492.  16h    duplicate name
  4493.  17h    bad delete
  4494.  18h    abnormal end
  4495.  19h    name error, multiple identical names in use
  4496.  1Ah    bad packet
  4497.  21h    network card busy
  4498.  22h    too many commands queued
  4499.  23h    bad LAN card number
  4500.  24h    command finished while cancelling
  4501.  26h    command can't be cancelled
  4502.  30h    name defined by another process (OS/2)
  4503.  34h    NetBIOS environment not defined, must issue reset (OS/2)
  4504.  35h    required operating system resources exhausted (OS/2)
  4505.  36h    maximum applications exceeded (OS/2)
  4506.  37h    no SAPs available for NetBIOS (OS/2)
  4507.  38h    requested resources not available (OS/2)
  4508.  40h    Lana System Error
  4509.  41h    Lana Remote Hot Carrier
  4510.  42h    Lana Local Hot Carrier
  4511.  43h    Lana No Carrier Detected
  4512.  44h    unusual network condition
  4513.  45h-4Dh hardware error
  4514.  4Eh    token ring is broken
  4515.  4Fh    token ring error
  4516.  50h    adapter malfunction
  4517.  F7h    error in explicit INITIALIZE
  4518.  F8h    error in implicit OPEN
  4519.  F9h    TOKREUI internal error
  4520.  FAh    hardware adapter testing
  4521.  FBh    NetBIOS emulator not found
  4522.  FCh    OPEN or OPEN_SAP failure
  4523.  FDh    unexpected adapter closure
  4524.  FFh    NetBIOS busy (command pending)
  4525.  
  4526. Format of Network Control Block:
  4527. Offset    Size    Description
  4528.  00h    BYTE    command code (see below)
  4529.  01h    BYTE    return code
  4530.  02h    BYTE    local session number (LSN)
  4531.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  4532.  04h    DWORD    -> I/O buffer
  4533.  08h    WORD    length of data in buffer
  4534.  0Ah 16 BYTEs    remote system to call
  4535.  1Ah 16 BYTEs    network name of local machine
  4536.  2Ah    BYTE    receive timeout in 1/2 seconds
  4537.  2Bh    BYTE    send timeout in 1/2 seconds
  4538.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  4539.  30h    BYTE    network adapter number on which to execute command
  4540.         00h-03h IBM NetBIOS specs
  4541.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  4542.  31h    BYTE    command completion code (see returned status above)
  4543.  32h 14 BYTEs    reserved for network card
  4544.  
  4545. Values for command code field in NCB (OR with 80h for non-waiting call):
  4546.  10h    start session with NCB_NAME name (call)
  4547.  11h    listen for call
  4548.  12h    end session with NCB_NAME name (hangup)
  4549.  14h    send data via NCB_LSN
  4550.  15h    receive data from a session
  4551.  16h    receive data from any session
  4552.  17h    send multiple data buffers
  4553.  20h    send unACKed message (datagram)
  4554.  21h    receive datagram
  4555.  22h    send broadcast datagram
  4556.  23h    receive broadcast datagram
  4557.  30h    add name to name table
  4558.  31h    delete name from name table
  4559.  32h    reset adapter card and tables
  4560.  33h    get adapter status (see structure "astatus" below)
  4561.  34h    status of all sessions for name (see structure "sstatus" below)
  4562.  35h    cancel
  4563.  36h    add group name to name table
  4564.  48h    send data and receive data (LAN Manager NETBEUI.DOS)
  4565.  70h    unlink from IBM remote program (no F0h function)
  4566.  71h    send data without ACK
  4567.  72h    send multiple buffers without ACK
  4568.  72h    UngermannBass Register (conflicts with above function)
  4569.  73h    UngermannBass SendNmc
  4570.  74h    UngermannBass Callniu
  4571.  75h    UngermannBass Calladdr
  4572.  76h    UngermannBass Listenaddr
  4573.  77h    UngermannBass SendPkt
  4574.  78h    find name
  4575.  78h    UngermannBass RcvPkt (conflicts with above function)
  4576.  79h    token-ring protocol trace
  4577.  79h    UngermannBass SendAttn (conflicts with above function)
  4578.  7Ah    UngermannBass RcvAttn
  4579.  7Bh    UngermannBass Listenniu
  4580.  7Ch    UngermannBass RcvRaw
  4581.  7Dh    UngermannBass SendNmc2
  4582.  7Fh    Beame&Whiteside BWNB installation check (returns with return code and
  4583.       completion code both set to 03h, while invalid functions return only
  4584.       return code field set to 03h)
  4585.  
  4586. Format of structure "name":
  4587. Offset    Size    Description
  4588.  00h 16 BYTEs "nm_name" symbolic name
  4589.  10h    BYTE  "nm_num" number associated with name
  4590.  11h    BYTE  nm_status
  4591.  
  4592. Format of structure "astatus":
  4593. Offset    Size    Description
  4594.  00h  6 BYTEs as_id
  4595.  06h    BYTE  as_jumpers
  4596.  07h    BYTE  as_post
  4597.  08h    BYTE  as_major
  4598.  09h    BYTE  as_minor
  4599.  0Ah    WORD  as_interval
  4600.  0Ch    WORD  as_crcerr
  4601.  0Eh    WORD  as_algerr
  4602.  10h    WORD  as_colerr
  4603.  12h    WORD  as_abterr
  4604.  14h    DWORD as_tcount
  4605.  18h    DWORD as_rcount
  4606.  1Ch    WORD  as_retran
  4607.  1Eh    WORD  as_xresrc
  4608.  20h  8 BYTEs as_res0
  4609.  28h    WORD  as_ncbfree
  4610.  2Ah    WORD  as_ncbmax
  4611.  2Ch    WORD  as_ncbx
  4612.  2Eh  4 BYTEs as_res1
  4613.  32h    WORD  as_sespend
  4614.  34h    WORD  as_msp
  4615.  36h    WORD  as_sesmax
  4616.  38h    WORD  as_bufsize
  4617.  3Ah    WORD  as_names
  4618.  3Ch 16 name structures     as_name
  4619.  
  4620. Format of structure "sstatus":
  4621. Offset    Size    Description
  4622.  00h    BYTE    number of sessions being reported
  4623.  01h    BYTE    number of sessions with this name
  4624.  02h    BYTE    number of outstanding receive datagrams
  4625.  03h    BYTE    number of outstanding ReceiveAnys
  4626.  04h    var    session structures (see below)
  4627.  
  4628. Format of structure "session":
  4629. Offset    Size    Description
  4630.  00h    BYTE    local session number
  4631.  01h    BYTE    state
  4632.         01h listen pending
  4633.         02h call pending
  4634.         03h session established
  4635.         04h hangup pending
  4636.         05h hangup done
  4637.         06h session aborted
  4638.  02h 16 BYTEs    local name
  4639.  12h 16 BYTEs    remote name
  4640.  22h    BYTE    number of outstanding receives
  4641.  23h    BYTE    number of outstanding sends/chainsends
  4642. --------N-5C---------------------------------
  4643. INT 5C - TOPS INTERFACE
  4644.     ES:BX -> Network Control Block
  4645. Note:    TOPS card uses DMA 1, 3 or none.
  4646. --------N-5C---------------------------------
  4647. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  4648.     DX:BX -> control block (see below)
  4649. Return: none
  4650. Notes:    this driver can use any interrupt from 5Ch to 70h
  4651.     the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  4652.       handler; this serves as the installation check
  4653. Index:    installation check;ATALK.SYS|installation check;AppleTalk interface
  4654.  
  4655. Values for command code:
  4656.  01h    "AT_INIT"        initialize the driver
  4657.  02h    "AT_KILL"
  4658.  03h    "AT_GETNETINFO" get current network info incl init status
  4659.  04h    "AT_GETCLOCKTICKS"
  4660.  05h    "AT_STARTTIMER"
  4661.  06h    "AT_RESETTIMER"
  4662.  07h    "AT_CANCELTIMER"
  4663.  10h    "LAP_INSTALL"
  4664.  11h    "LAP_REMOVE"
  4665.  12h    "LAP_WRITE"
  4666.  13h    "LAP_READ"
  4667.  14h    "LAP_CANCEL"
  4668.  20h    "DDP_OPENSOCKET"
  4669.  21h    "DDP_CLOSESOCKET"
  4670.  22h    "DDP_WRITE"
  4671.  23h    "DDP_READ"
  4672.  24h    "DDP_CANCEL"
  4673.  30h    "NBP_REGISTER"
  4674.  31h    "NBP_REMOVE"
  4675.  32h    "NBP_LOOKUP"
  4676.  33h    "NBP_CONFIRM"
  4677.  34h    "NBP_CANCEL"
  4678.  35h    "ZIP_GETZONELIST"
  4679.  36h    "ZIP_GETMYZONE"
  4680.  37h    "ZIP_TAKEDOWN"
  4681.  38h    "ZIP_BRINGUP"
  4682.  40h    "ATP_OPENSOCKET"
  4683.  41h    "ATP_CLOSESOCKET"
  4684.  42h    "ATP_SENDREQUEST"
  4685.  43h    "ATP_GETREQUEST"
  4686.  44h    "ATP_SENDRESPONSE"
  4687.  45h    "ATP_ADDRESPONSE"
  4688.  46h    "ATP_CANCELTRANS"
  4689.  47h    "ATP_CANCELRESPONSE"
  4690.  48h    "ATP_CANCELREQUEST"
  4691.  50h    "ASP_GETPARMS"
  4692.  51h    "ASP_CLOSESESSION"
  4693.  52h    "ASP_CANCEL"
  4694.  53h    "ASP_INIT"
  4695.  54h    "ASP_KILL"
  4696.  55h    "ASP_GETSESSION"
  4697.  56h    "ASP_GETREQUEST"
  4698.  57h    "ASP_CMDREPLY"
  4699.  58h    "ASP_WRTCONTINUE"
  4700.  59h    "ASP_WRTREPLY"
  4701.  5Ah    "ASP_CLOSEREPLY"
  4702.  5Bh    "ASP_NEWSTATUS"
  4703.  5Ch    "ASP_ATTENTION"
  4704.  5Dh    "ASP_GETSTATUS"
  4705.  5Eh    "ASP_OPENSESSION"
  4706.  5Fh    "ASP_COMMAND"
  4707.  60h    "ASP_WRITE"
  4708.  61h    "ASP_GETATTENTION"
  4709.  70h    "PAP_OPEN"
  4710.  71h    "PAP_CLOSE"
  4711.  72h    "PAP_READ"
  4712.  73h    "PAP_WRITE"
  4713.  74h    "PAP_STATUS"
  4714.  75h    "PAP_REGNAME"
  4715.  76h    "PAP_REMNAME"
  4716.  77h    "PAP_INIT"
  4717.  78h    "PAP_NEWSTATUS"
  4718.  79h    "PAP_GETNEXTJOB"
  4719.  7Ah    "PAP_KILL"
  4720.  7Bh    "PAP_CANCEL"
  4721.  
  4722. Format of AppleTalk control block:
  4723. Offset    Size    Description
  4724.  00h    WORD    command code (see above)
  4725.         OR with the following flags
  4726.         8000h start command then return
  4727.         4000h wait for interrupt service to complete
  4728.  02h    WORD    returned status
  4729.         0000h success (already initialized if func 01h)
  4730.  04h    DWORD    pointer to completion function
  4731.  08h    WORD    network number
  4732.  0Ah    BYTE    node ID
  4733. ---if general func (01h,03h), control block continues:
  4734.  0Bh    BYTE    "inf_abridge"
  4735.  0Ch    WORD    "inf_config"
  4736.  0Eh    DWORD    pointer to buffer
  4737.  12h    WORD    buffer size
  4738. ---if DDP function (20h-24h), control block continues:
  4739.  0Bh    BYTE    "ddp_addr_socket"
  4740.  0Ch    BYTE    "ddp_socket"
  4741.  0Dh    BYTE    "ddp_type"
  4742.  0Eh    DWORD    pointer to buffer
  4743.  12h    WORD    buffer size
  4744.  14h    BYTE    "ddp_chksum"
  4745. ---if Name Binding Protocol (30h-34h), control block continues:
  4746.  0Bh    BYTE    "nbp_addr_socket"
  4747.  0Ch    WORD    "nbp_toget"
  4748.  0Eh    DWORD    pointer to buffer
  4749.  12h    WORD    buffer size
  4750.  14h    BYTE    "nbp_interval"
  4751.  15h    BYTE    "nbp_retry"
  4752.  16h    DWORD    "nbp_entptr"
  4753. ---if AppleTalk Transaction Protocol (42h), control block continues:
  4754.  0Bh    BYTE    "atp_addr_socket"
  4755.  0Ch    WORD    "atp_socket"
  4756.  0Eh    DWORD    pointer to buffer
  4757.  12h    WORD    buffer size
  4758.  14h    BYTE    "atp_interval"
  4759.  15h    BYTE    "atp_retry"
  4760.  16h    BYTE    ATP flags
  4761.         bit 5: exactly one transaction
  4762.  17h    BYTE    "atp_seqbit"
  4763.  18h    BYTE    transaction ID
  4764.  19h  4 BYTEs    ATP user bytes
  4765.  1Dh    BYTE    number of BDS buffers
  4766.  1Eh    BYTE    number of BDS responses
  4767.  1Fh    DWORD    pointer to BDS buffers (see below)
  4768.  
  4769. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  4770. Offset    Size    Description
  4771.  00h    WORD    "tup_address_network"
  4772.  02h    BYTE    "tup_address_notid"
  4773.  03h    BYTE    "tup_address_socket"
  4774.  04h    BYTE    "tup_enum"
  4775.  05h 99 BYTEs    name
  4776.  
  4777. Format of BDS entries:
  4778. Offset    Size    Description
  4779.  00h    DWORD    pointer to buffer
  4780.  04h    WORD    size of buffer
  4781.  06h    WORD    BDS data size
  4782.  08h  4 BYTEs    "bds_userbytes"
  4783. --------N-5C---------------------------------
  4784. INT 5C - IBM 802.2 INTERFACE (LLC)
  4785.     ES:BX -> CCB (see below)
  4786. Return: none
  4787.  
  4788. Format of CCB:
  4789. Offset    Size    Description
  4790.  00h    BYTE    adapter
  4791.  01h    BYTE    command code
  4792.  02h    BYTE    return code
  4793.  03h    BYTE    work
  4794.  04h    DWORD    pointer to ???
  4795.  08h    DWORD    pointer to completion function???
  4796.  0Ch    DWORD    pointer to parameters???
  4797. --------N-5C---------------------------------
  4798. INT 5C - $25 LAN - INSTALLATION CHECK
  4799. Notes:    current versions only check whether the vector is 0000h:0000h or not
  4800.     future versions are supposed to have the signature "NET" in the three
  4801.       bytes preceding the INT 5C handler
  4802. --------N-5C04-------------------------------
  4803. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  4804.     AH = 04h
  4805.     AL = COM port (0 = default)
  4806.     CX = wait count in character times (should be at least 100)
  4807. Return: ZF set if link alive
  4808. --------H-5D---------------------------------
  4809. INT 5D - IRQ13 relocated by DESQview 2.26+
  4810. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4811. SeeAlso: INT 50"DESQview",INT 75
  4812. --------H-5D---------------------------------
  4813. INT 5D - IRQ5 relocated by DoubleDOS
  4814. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  4815. --------H-5E---------------------------------
  4816. INT 5E - IRQ14 relocated by DESQview 2.26+
  4817. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4818. SeeAlso: INT 50"DESQview",INT 76
  4819. --------H-5E---------------------------------
  4820. INT 5E - IRQ6 relocated by DoubleDOS
  4821. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  4822. --------H-5F---------------------------------
  4823. INT 5F - IRQ15 relocated by DESQview 2.26+
  4824. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4825. SeeAlso: INT 50"DESQview",INT 77
  4826. --------H-5F---------------------------------
  4827. INT 5F - IRQ7 relocated by DoubleDOS
  4828. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  4829. --------b-5F00-------------------------------
  4830. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  4831.     AH = 00h
  4832.     AL = video mode
  4833.         07h text, system manager compliant
  4834.         20h 240x128 mono graphics, system manager compliant
  4835.         87h text, not system manager compliant
  4836.         A0h 240x128 mono graphics, not system manager compliant
  4837. Note:    the defaults after setting the mode to graphics are (0,0) logical
  4838.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  4839.       pixel replacement FORCE, line type and fill mask all bits set
  4840. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  4841. --------b-5F01-------------------------------
  4842. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
  4843.     AH = 01h
  4844.     ES:DI -> 8-byte fill mask
  4845. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  4846.       when drawing filled rectangles; it is always aligned with the byte
  4847.       boundaries of video memory, regardless of the actual boundaries of
  4848.       the rectangle
  4849. SeeAlso: AH=02h
  4850. --------b-5F02-------------------------------
  4851. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
  4852.     AH = 02h
  4853.     ES:DI -> graphics info record (see below)
  4854. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  4855.  
  4856. Format of graphics info record:
  4857. Offset    Size    Description
  4858.  00h    BYTE    current video mode
  4859.  01h    BYTE    default video mode
  4860.  02h    WORD    display width in pixels
  4861.  04h    WORD    display height in pixels
  4862.  06h    WORD    current pen column
  4863.  08h    WORD    current pen row
  4864.  0Ah    WORD    current line type
  4865.  0Ch    WORD    current replacement rule
  4866.  0Eh    WORD    current pen color
  4867.  10h    WORD    current leftmost column of clip region
  4868.  12h    WORD    current rightmost column of clip region
  4869.  14h    WORD    current topmost row of clip region
  4870.  16h    WORD    current bottommost row of clip region
  4871.  18h    WORD    current column of logical origin
  4872.  1Ah    WORD    current row of logical origin
  4873.  1Ch  8 BYTEs    current fill mask
  4874. --------b-5F03-------------------------------
  4875. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  4876.     AH = 03h
  4877.     CX = column
  4878.     DX = row
  4879. SeeAlso: AH=04h
  4880. --------b-5F04-------------------------------
  4881. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
  4882.     AH = 04h
  4883.     CX = left-most column
  4884.     DX = top-most row
  4885.     SI = right-most column
  4886.     DI = bottom-most row
  4887. SeeAlso: AH=03h
  4888. --------b-5F05-------------------------------
  4889. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  4890.     AH = 05h
  4891.     AL = fill type
  4892.         00h outline, using current line type and color
  4893.         01h solid, using current color
  4894.         02h pattern, using current fill mask and color
  4895.     DX,CX = row,column of other corner of rectangle
  4896. Note:    the rectangle is drawn starting at the current pen position
  4897. SeeAlso: AH=01h,AH=06h,AH=07h
  4898. --------b-5F06-------------------------------
  4899. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
  4900.     AH = 06h
  4901.     DX,CX = row,column of end point
  4902. Note:    the line is drawn starting at the current pen position
  4903. SeeAlso: AH=05h,AH=07h
  4904. --------b-5F07-------------------------------
  4905. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
  4906.     AH = 07h
  4907.     DX,CX = row,column of point
  4908. Note:    also sets pen position to the specified point
  4909. SeeAlso: AH=06h,AH=08h,AH=0Ch
  4910. --------b-5F08-------------------------------
  4911. INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
  4912.     AH = 08h
  4913.     DX,CX = row,column of new pen position
  4914. SeeAlso: AH=07h,AH=09h
  4915. --------b-5F09-------------------------------
  4916. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
  4917.     AH = 09h
  4918.     AL = new color (00h = white, 01h = black)
  4919. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  4920. --------b-5F0A-------------------------------
  4921. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  4922.     AH = 0Ah
  4923.     AL = new replacement rule
  4924.         00h force
  4925.         01h AND
  4926.         02h OR
  4927.         03h XOR
  4928. SeeAlso: AH=01h,AH=09h,AH=0Bh
  4929. --------b-5F0B-------------------------------
  4930. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
  4931.     AH = 0Bh
  4932.     CX = new line type
  4933. Note:    the line type specifies 16 bits which are repeated over and over while
  4934.       drawing the pixels of a line
  4935. SeeAlso: AH=09h,AH=0Ah
  4936. --------b-5F0C-------------------------------
  4937. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
  4938.     AH = 0Ch
  4939.     DX,CX = row,column of pixel to read
  4940. Return: AX = pixel color
  4941. SeeAlso: AH=07h
  4942. --------b-5F0D-------------------------------
  4943. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
  4944.     AH = 0Dh
  4945.     DX,CX = row,column of first corner
  4946.     BP,SI = row,column of second corner
  4947.     ES:DI -> image buffer (see below)
  4948. Note:    the specified corners are included in the saved image
  4949. SeeAlso: AH=0Eh
  4950.  
  4951. Format of image buffer:
  4952. Offset    Size    Description
  4953.  00h    WORD    number of planes (always 01h on HP 95LX)
  4954.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  4955.  04h    WORD    image width in pixels
  4956.  06h    WORD    image height in pixels
  4957.  08h  N BYTEs    image data
  4958.         requires (WIDTH+7)/8 * HEIGHT bytes
  4959. --------b-5F0E-------------------------------
  4960. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
  4961.     AH = 0Eh
  4962.     AL = replacement rule
  4963.         bit 2: invert image before applying rule
  4964.         bits 1-0:  00 force
  4965.                01 AND
  4966.                10 OR
  4967.                11 XOR
  4968.     DX,CX = row,column of top left corner
  4969.     ES:DI -> image buffer (see AH=0Dh)
  4970. Note:    if the specified image does not fit completely on the screen, this call
  4971.       does nothing
  4972. SeeAlso: AH=0Dh
  4973. --------b-5F0F-------------------------------
  4974. INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
  4975.     AH = 0Fh
  4976.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  4977.     DX,CX = row,column of first character's top left corner
  4978.     ES:DI -> ASCIZ text
  4979. --------*-60---------------------------------
  4980. INT 60 - reserved for user interrupt
  4981. --------v-60---------------------------------
  4982. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  4983.    The "Zero Bug" virus hooks this vector.  It considers itself installed if
  4984.    offset 103h of the handler's segment contains the bytes "ZE"
  4985. SeeAlso: INT 32,INT 44"VIRUS",INT 61"SEMTEX"
  4986. --------d-60---------------------------------
  4987. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  4988. SeeAlso: INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  4989. Notes:    this vector stores the first four bytes of the parameter table for
  4990.       hard disk 0
  4991.     these vectors are used by the following Adaptec controllers:
  4992.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  4993.     these vectors are NOT used by the following Adaptec controllers:
  4994.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  4995. --------b-60---------------------------------
  4996. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  4997.    supplies a number of subfunctions which perform such functions as drawing
  4998.    boxes and menus, and provide input line editing
  4999. SeeAlso: INT 61"Atari"
  5000. --------V-60---------------------------------
  5001. INT 60 - Nabbit v2.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  5002. Program: Nabbit is a shareware resident screen data grabber by RSE Inc.
  5003. Note:    Nabbit searches INT 60 through INT 66 for a vector which points at
  5004.       its ASCIZ signature string "iG" (69h 47h 00h), and uses the first
  5005.       free vector in that range it is it not already installed
  5006. --------V-60---------------------------------
  5007. INT 60 U - Buffit v3.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  5008. Program: Buffit is a shareware scrollback utility by D.T. Hamilton
  5009. Notes:    Buffit searches INT 60 through INT 6F for a vector which points at
  5010.       the ASCII signature "Buffit  ", and uses the first free vector in
  5011.       that range if it is not already installed
  5012.     there is a private entry point immediately following the signature
  5013.       string, i.e. eight bytes beyond the address pointed at by the
  5014.       interrupt
  5015.  
  5016. Call private entry point with:
  5017.     AH = function
  5018.         00h get information and hotkey state
  5019.         01h get information and toggle hotkey state
  5020. Return: AH = new hotkey state (00h enabled, 01h disabled)
  5021.     AL = hotkey scan code
  5022.     BH = hotkey shift states
  5023.     BL = ??? (01h)
  5024.     CX = segment of resident code
  5025.     DH = niterrupt number used for signature pointer
  5026.     DL = ??? (00h)
  5027.     SI = INT 09 handler offset
  5028.     DI = INT 21 handler offset
  5029. Index:    hotkeys;Buffit
  5030. --------r-60---------------------------------
  5031. INT 60 - PC-IPC API
  5032.     STACK:    DWORD    pointer to parameter block (see below)
  5033. Return: STACK:    unchanged
  5034. Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
  5035.       allows communication between independent programs
  5036. Note:    INT 60 is the default, any interrupt vector may be used by specifying
  5037.       the vector on the commandline
  5038.  
  5039. Format of parameter block:
  5040. Offset    Size    Description
  5041.  00h    WORD    caller's ID
  5042.  02h    WORD    to ID
  5043.  04h    WORD    command code (see below)
  5044.  06h    WORD    returned status (see below)
  5045.  08h    WORD    returned error code (see below)
  5046.  0Ah    WORD    size of data
  5047.  0Ch    DWORD    pointer to data buffer
  5048.  
  5049. Values for command code:
  5050.  01h "IPC_CMND_INQUIRE"     inquire current status
  5051.         set status field, writes WORD to data buffer containing free
  5052.           message space in bytes, and sets the "size" field to the
  5053.           number of messages waiting
  5054.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  5055.         ignored unless called with the same ID that disabled PC-IPC
  5056.  03h "IPC_CMND_DISABLE" disable PC-IPC
  5057.  04h "IPC_CMND_INSTALL" reset PC-IPC
  5058.  06h "IPC_CMND_RDATA"    read data
  5059.         returns first message in data buffer, sets "size" to message
  5060.           length and "to ID" field to sender's ID
  5061.         if no messages available, bit 4 of status is cleared and "size"
  5062.           is set to zero
  5063.  07h "IPC_CMND_SDATA"    send data
  5064.  08h "IPC_CMND_REQID"    require user ID
  5065.         create a new recognized ID and return in "caller's ID" field
  5066.  09h "IPC_CMND_DELID"    cancel user ID
  5067.         delete caller's ID from pool of recognized IDs
  5068.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  5069.  0Bh "IPC_CMND_VERS"    get PC-IPC version
  5070.         string representing version returned in data buffer, "size"
  5071.           field set to length of string
  5072.  
  5073. Bitfields for returned status:
  5074.  bit 0    unused
  5075.  bit 1    IPC enabled
  5076.  bit 2    IPC installed
  5077.  bit 3    error
  5078.  bit 4    message(s) available
  5079.  
  5080. Values for error code:
  5081.  00h    no error
  5082.  01h    invalid command or parameter
  5083.  02h    only process 0 can install/reset IPC
  5084.  03h    process can not install/reset IPC
  5085.  04h    IPC is not enabled
  5086.  05h    process can not disable IPC
  5087.  06h    invalid destination process ID
  5088.  07h    invalid sending process ID
  5089.  08h    invalid data destination
  5090.  09h    no more process IDs available
  5091.  0Ah    can not relinquish that process ID
  5092.  0Bh    message space is full
  5093.  0Ch    IPC is not installed
  5094. --------R-60---------------------------------
  5095. INT 60 - Tangram Arbiter - API
  5096. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  5097.     identified by string "@ARB_API" immediately following a short jump at
  5098.       the interrupt handler address
  5099.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  5100.       IBM mainframe
  5101. --------N-60---------------------------------
  5102. INT 60 - Excelan LAN Workplace for DOS 3.5 - API
  5103.     ES:BX -> request packet
  5104. Return: request packet updated
  5105. Notes:    this interrupt is also supported by Beame&Whiteside's BWLWP35 shim,
  5106.       which was used in creating this description
  5107.     the installation check consists of testing for the WORD 4142h ('AB')
  5108.       immediately preceding the interrupt handler
  5109. BUG:    because BWLWP35 range-checks only the low byte of the function number,
  5110.       and has a fencepost error even in that test, functions 000Bh and
  5111.       XX01h-XX0Bh (XX nonzero) branch to random locations
  5112. SeeAlso: INT 2F/AX=7A40h
  5113.  
  5114. Format of request packet:
  5115. Offset    Size    Description
  5116.  00h 12 BYTEs    ???
  5117.  0Ch    WORD    (return) error code (see below)
  5118.  0Eh    DWORD    -> FAR function for ???
  5119.  12h    WORD    function number
  5120.         0001h ???
  5121.         0002h NOP
  5122.         0003h NOP
  5123.         0004h NOP
  5124.         0005h ???
  5125.         0006h get ??? record
  5126.         0007h NOP
  5127.         0008h reset ???
  5128.         0009h NOP
  5129.         000Ah set ???
  5130.     ???
  5131. ---function 01h---
  5132.  20h    BYTE    (call) subfunction (32h-3Bh)
  5133.         3Bh non-blocking I/O request (will be tested every clock tick)
  5134.  21h    BYTE    (return) error code
  5135.         00h successful
  5136.         09h invalid connection number
  5137.         2Ah bad connection type
  5138.         45h ???
  5139. ---function 01h, subfunction 32h---
  5140.  3Ah    WORD    (call) connection type (01h stream, 02h datagram)
  5141. ---function 01h, subfunction 34h---
  5142.  26h    WORD    (call) ???
  5143.  28h    WORD    (call) ???
  5144.  2Ah    WORD    (call) ???
  5145. ---function 01h, subfunction 35h---
  5146.  1Ah    WORD    (call) connection number???
  5147.  26h    WORD    (return) ???
  5148. ---function 01h, subfunction 36h---
  5149.  1Ah    WORD    (call) connection number???
  5150.  38h    WORD    ???
  5151. ---function 01h, subfunction 37h---
  5152.  24h    WORD    (return) ???
  5153.  26h    WORD    (return) ???
  5154. ---function 01h, subfunction 38h---
  5155.  1Ah    WORD    (call) connection number???
  5156. ---function 01h, subfunction 3Ah---
  5157.  22h    WORD    (call) ???
  5158.         667Eh ???
  5159.         667Fh ???
  5160.  24h    BYTE    (call 667Eh) ???
  5161.  24h    WORD    (return 667Fh) ???
  5162. ---function 01h, subfunction 3Bh---
  5163.  0Eh    DWORD    (call) -> function to invoke for I/O or 0000h:0000h
  5164.         function called with AX = 0000h
  5165.                      STACK: DWORD -> request packet
  5166.                         WORD 0000h
  5167.             should return STACK unchanged
  5168.  1Ah    WORD    (call) connection number???
  5169.  21h    BYTE    (return) set to 01h when I/O becomes possible
  5170.  22h    BYTE    (call) direction (00h write, 01h read)
  5171.  34h    DWORD    (return) -> next pending request packet
  5172. ---function 05h---
  5173.  1Eh    WORD    (call) ???
  5174.  20h    WORD    (call) ???
  5175.  34h    DWORD    (call) -> ???
  5176. ---function 06h---
  5177.  16h    DWORD    (call) -> buffer for ??? record (see below)
  5178.  1Ah    WORD    (call) number of bytes to copy
  5179.  22h    WORD    (return) number of bytes transferred
  5180. ---function 08h---
  5181.  14h    WORD    (return) ??? (0001h)
  5182. ---function 0Ah---
  5183.  16h    DWORD    (call) -> WORD ???
  5184.  1Ch    WORD    (call) must be 000Ah for BWLWP35
  5185.  
  5186. Values for error code:
  5187.  0000h    successful
  5188.  002Dh    invalid function
  5189.  0050h    ???
  5190.  
  5191. Format of ??? record:
  5192. Offset    Size    Description
  5193.  00h    WORD    offset of ???
  5194.  02h  4 BYTEs    ???
  5195.  06h    DWORD    IP address (big-endian)
  5196.  0Ah  6 BYTEs    physical address (big-endian)
  5197.     ???
  5198. --------G-60---------------------------------
  5199. INT 60 U - INTRSPY/CMDSPY API
  5200. Program: INTRSPY is a script-driven debugger included with the book
  5201.       _Undocumented_DOS_.
  5202. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  5203.     The installation check is to
  5204.       a) determine that the handler is an IRET instruction
  5205.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  5206.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  5207.       its entry point.
  5208. Index:    installation check;INTRSPY
  5209.  
  5210. Call INTRSPY entry point with:
  5211.     AH = function
  5212.         00h ???
  5213.         01h set current directory (for use in reporting)
  5214.         ES:DI -> counted string containing directory name (max 79 char)
  5215.         02h set name of script file
  5216.         ES:DI -> counted string containing file name (max 79 chars)
  5217.         03h set script arguments
  5218.         ES:DI -> counted string containing arguments (max 79 chars)
  5219.         04h get directory set with function 01h
  5220.         ES:DI -> 80-byte buffer for directory name
  5221.         05h get name of script file
  5222.         ES:DI -> 80-byte buffer for script filename
  5223.         06h get script arguments
  5224.         ES:DI -> 80-byte buffer for script arguments
  5225.         07h get ???
  5226.         CL = 00h-15h specifies what to get
  5227.         ES:DI -> WORD to be set with desired value on return
  5228.         08h get ???
  5229.         ES:DI -> WORD to be set with returned value
  5230.         09h get ???
  5231.         ES:DI -> WORD to be set with returned value
  5232.         0Bh store code for interrupt handler???
  5233.         ES:DI -> data
  5234.         CX = number of bytes
  5235.         0Ch ???
  5236.         ES:DI -> ???
  5237.         0Dh get ???
  5238.         ES:DI -> BYTE to be set with returned value
  5239.         0Eh set ??? flag
  5240.         0Fh clear ??? flag
  5241.         10h ???
  5242.         Return: AL = 04h or 05h if failed
  5243.         11h ???
  5244.         Return: AL = 05h if failed
  5245.         12h get ???
  5246.         ES:DI -> buffer
  5247.         Return: CX = number of bytes returned in buffer
  5248.         13h ???
  5249. Return: AH = 00h
  5250.     AL = status
  5251.         00h successful
  5252.         01h invalid function
  5253.         02h ???
  5254.         03h ???
  5255.         04h ???
  5256.         05h ???
  5257. --------u-60---------------------------------
  5258. INT 60 U - PC/370 v4.2 - ???
  5259.     ???
  5260. Return: ???
  5261. Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
  5262. Note:    this is the default interrupt, however the documentation includes
  5263.       instructions for patching the system for another interrupt
  5264. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  5265. --------r-60---------------------------------
  5266. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  5267. SeeAlso: INT 61"JPI"
  5268. --------N-60---------------------------------
  5269. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  5270. Notes:    The handler for the interrupt will start with a 3-byte jump
  5271.       instruction, followed by the ASCIZ string "PKT DRVR" (the
  5272.       terminating NUL is significant).
  5273.     To find the interrupt being used by the driver, an application should
  5274.       scan through interrupt vectors 60h to 80h (20h through FFh for
  5275.       v1.10+ of the specification) until it finds one with the "PKT DRVR"
  5276.       string.
  5277.     AH values of 80h to FFh have been reserved for user-defined additions.
  5278. --------b-60----DI0100-----------------------
  5279. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  5280.     DI = 0100h
  5281.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5282.         DWORD    pointer to event record (see below)
  5283. Return: event record filled
  5284.     STACK unchanged
  5285. Note:    this call will timeout after about 500ms
  5286. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  5287.  
  5288. Values for event type:
  5289.  00h    no events
  5290.  01h    keystroke available
  5291.  02h    Ctrl-Break
  5292.  03h    reactivation (always follows deactivation event)
  5293.  04h    about to deactivate (sleep)
  5294.     next get-event call will not return until reactivated
  5295.  05h    forced application termination
  5296.  06h    1-2-3 bridge service request (only given to 1-2-3)
  5297.  07h    request to grow
  5298.  08h    request to shrink
  5299.  09h    application's alarm expired
  5300.  0Ah    daily chance to set an alarm
  5301.  0Bh    system date or time has been changed
  5302.  
  5303. Format of event record:
  5304. Offset    Size    Description
  5305.  00h    WORD    event type (see above)
  5306.  02h    WORD    ASCII code page 850 translation of keystroke
  5307.         or grow/shrink amount in paragraphs or 0000h if error
  5308.         or alarm expiration data
  5309.  04h    BYTE    scan code from BIOS
  5310.  05h    BYTE    shift key states at time keystroke is retrieved
  5311.  06h    WORD    LICS translation of keystroke
  5312.  08h    BYTE    function key number (1-2-3 only)
  5313.  09h    DWORD    pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
  5314.         or pointer to time change structure (see below)
  5315. Note:    if the System Manager is awaiting the conclusion of a bridge service
  5316.       or grow/shrink call and the event type field is set to FFFFh on
  5317.       entry, the SysMgr will resume
  5318.  
  5319. Format of time change structure:
  5320. Offset    Size    Description
  5321.  00h    WORD    old year
  5322.  02h    BYTE    old month
  5323.  03h    BYTE    old date
  5324.  04h    BYTE    old day
  5325.  05h    BYTE    old hour
  5326.  06h    BYTE    old minute
  5327.  07h    BYTE    old second
  5328.  08h    BYTE    old hundredth of a second
  5329.  09h  9 BYTEs    new time in same format as old time
  5330. --------b-60----DI0101-----------------------
  5331. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  5332.     DI = 0101h
  5333.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5334.         DWORD pointer to event record (INT 60/DI=0100h)
  5335. Return: event record filled
  5336.     STACK unchanged
  5337. Note:    this call returns immediately if no event is available
  5338. SeeAlso: INT 60/DI=0100h
  5339. --------b-60----DI0102-----------------------
  5340. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  5341.     DI = 0102h
  5342.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5343. Return: ???
  5344.     STACK unchanged
  5345. --------b-60----DI0104-----------------------
  5346. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  5347.     DI = 0104h
  5348.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5349.         DWORD pointer to bridge record (see below)
  5350. Return: ???
  5351.     STACK unchanged
  5352.  
  5353. Values for function code:
  5354.  00h    test
  5355.  01h    get range
  5356.  02h    "GETRANGE_ADDR"
  5357.  03h    "SETRANGE_ADDR"
  5358.  04h    "GETRANGE_DATA"
  5359.  05h    "SETRANGE_DATA"
  5360.  06h    recalculate
  5361.  07h    get cursor
  5362.  08h    set cursor
  5363.  09h    redisplay
  5364.  0Ah    cell type
  5365.  0Bh    "CALCTYPE"
  5366.  
  5367. Format of bridge record:
  5368. Offset    Size    Description
  5369.  00h    WORD    function code (see above)
  5370.  02h    WORD    return code from 1-2-3
  5371.  04h 16 BYTEs    ASCII range name
  5372.  14h    WORD    start column of range
  5373.  16h    WORD    start row of range
  5374.  18h    WORD    end column of range
  5375.  1Ah    WORD    end row of range
  5376.  1Ch    WORD    order in which data is placed in buffer
  5377.  1Eh    WORD    buffer size
  5378.  20h    WORD    offset within bridge record's segment of buffer for cell data
  5379. --------b-60----DI0105-----------------------
  5380. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  5381.     DI = 0105h
  5382.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5383. Return: ???
  5384.     STACK unchanged
  5385. --------b-60----DI0106-----------------------
  5386. INT 60 u - HP 95LX System Manager - YIELD CPU
  5387.     DI = 0106h
  5388.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5389.         DWORD pointer to ???
  5390. Return: ???
  5391.     STACK unchanged
  5392. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  5393. --------b-60----DI0107-----------------------
  5394. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  5395.     DI = 0107h
  5396.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5397.         DWORD pointer to ???
  5398. Return: ???
  5399.     STACK unchanged
  5400. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5401. --------b-60----DI0200-----------------------
  5402. INT 60 u - HP 95LX System Manager - SETUP MENU
  5403.     DI = 0200h
  5404.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5405.         DWORD    pointer to menu data (see below)
  5406.         DWORD    pointer to ???
  5407.         WORD    number of items on menu???
  5408.         WORD    ???
  5409.         DWORD    pointer to ???
  5410.         WORD    ???
  5411.         DWORD    pointer to ???
  5412. Return: ???
  5413.     STACK unchanged
  5414. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  5415.  
  5416. Format of menu data:
  5417. Offset    Size    Description
  5418.  00h 80 BYTEs    first line of menu text
  5419.  50h 80 BYTEs    second line of menu text
  5420.  A0h 80 BYTEs    third line of menu text
  5421.  F0h    WORD    number of keywords
  5422.  F2h    WORD    index of currently highlighted keyword or FFFFh
  5423.  F4h    WORD    single prompt on top line if nonzero
  5424.  F6h 20 BYTEs    which line each of 20 keywords is located on
  5425. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  5426. 11Eh 20 BYTEs    length of each of 20 keywords
  5427. 132h 20 BYTEs    first letter of each of 20 keywords
  5428. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  5429. --------b-60----DI0201-----------------------
  5430. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  5431.     DI = 0201h
  5432.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5433.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5434. Return: ???
  5435.     STACK unchanged
  5436. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  5437. --------b-60----DI0202-----------------------
  5438. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  5439.     DI = 0202h
  5440.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5441.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5442. Return: ???
  5443.     STACK unchanged
  5444. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  5445. --------b-60----DI0203-----------------------
  5446. INT 60 u - HP 95LX System Manager - REMOVE MENU
  5447.     DI = 0203h
  5448.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5449.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5450. Return: ???
  5451.     STACK unchanged
  5452. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  5453. --------b-60----DI0204-----------------------
  5454. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  5455.     DI = 0204h
  5456.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5457.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5458.         WORD    keystroke
  5459.         DWORD    pointer to WORD to receive selection number
  5460. Return: buffer for selection number filled with index of selected menu item or
  5461.       FFFFh if no final selection yet
  5462.     STACK unchanged
  5463. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  5464. --------b-60----DI0205-----------------------
  5465. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  5466.     DI = 0205h
  5467.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5468.         DWORD    pointer to file menu structure (see below)
  5469.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5470.         DWORD    pointer to wildcard filespec for initial file list
  5471.         WORD    row???
  5472.         WORD    column???
  5473. Return: ???
  5474.     STACK unchanged
  5475. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  5476.  
  5477. Format of file menu structure:
  5478. Offset    Size    Description
  5479.  00h    DWORD    pointer to ASCIZ base directory name
  5480.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  5481.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see below)
  5482.  0Ch    WORD    size of file list workspace in bytes
  5483.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  5484.  10h    WORD    starting column
  5485.  12h    WORD    number of lines
  5486.  14h    WORD    number of columns
  5487.  16h    WORD    number of files displayed on each line
  5488. ---the remaining fields are initialized by the System Manager---
  5489.  18h    WORD    0000h if first edit character, else multiline
  5490.  1Ah    WORD    number of files in file list
  5491.  1Ch    WORD    max files workspace has room for
  5492.  1Eh    WORD    file at top of list
  5493.  20h    WORD    index of file to highlight
  5494.  22h    WORD    index of file to unhighlight
  5495.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  5496.  
  5497. Format of file list workspace entry:
  5498. Offset    Size    Description
  5499.  00h    BYTE    file attributes
  5500.  01h    WORD    file time (see INT 21/AX=5700h)
  5501.  03h    WORD    file date (see INT 21/AX=5700h)
  5502.  05h    DWORD    file size
  5503.  09h 13 BYTEs    ASCIZ filename
  5504. --------b-60----DI0206-----------------------
  5505. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  5506.     DI = 0206h
  5507.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5508.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5509.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5510. Return: ???
  5511.     STACK unchanged
  5512. SeeAlso: INT 60/DI=0205h
  5513. --------b-60----DI0207-----------------------
  5514. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  5515.     DI = 0207h
  5516.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5517.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5518.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5519.         WORD    keystroke
  5520. Return: AX = status
  5521.         0000h keystroke processed, call INT 60/DI=0206h to refresh menu
  5522.         0001h redisplay application area before refreshing menu
  5523.         0002h user confirmed selection, filename is in edit record's buffer
  5524.         0003h user aborted menu
  5525.         FFFBh bad filename
  5526.         FFFCh bad directory
  5527.         FFFDh bad drive
  5528.         FFFEh unknown keystroke
  5529.         FFFFh keystroke known but invalid in current context
  5530.     STACK unchanged
  5531. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  5532. --------b-60----DI0208-----------------------
  5533. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  5534.     DI = 0208h
  5535.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5536.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5537.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5538. Return: ???
  5539.     STACK unchanged
  5540. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  5541. --------b-60----DI0300-----------------------
  5542. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  5543.     DI = 0300h
  5544.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5545.         WORD    starting row (-3 is topmost, 0 is first user line)
  5546.         WORD    starting column
  5547.         DWORD    pointer to string
  5548.         WORD    length of string
  5549.         WORD    display style: 0000h normal, 0001h reverse video
  5550.         WORD    "OSTYLE"
  5551. Return: ???
  5552.     STACK unchanged
  5553. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  5554. --------b-60----DI0301-----------------------
  5555. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  5556.     DI = 0301h
  5557.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5558.         WORD    starting row (-3 is topmost, 0 is first user line)
  5559.         WORD    starting column
  5560.         WORD    number of rows
  5561.         WORD    number of columns
  5562. Return: ???
  5563.     STACK unchanged
  5564. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  5565. --------b-60----DI0302-----------------------
  5566. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  5567.     DI = 0302h
  5568.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5569.         WORD    starting row???
  5570.         WORD    starting column???
  5571.         WORD    height of scroll region???
  5572.         WORD    width of scroll region???
  5573.         WORD    number of lines to scroll region???
  5574. Return: ???
  5575.     STACK unchanged
  5576. SeeAlso: INT 60/DI=0301h
  5577. --------b-60----DI0303-----------------------
  5578. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  5579.     DI = 0303h
  5580.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5581.         WORD    ???
  5582.         WORD    ???
  5583.         WORD    ???
  5584.         WORD    ???
  5585.         DWORD    pointer to ???
  5586. Return: ???
  5587.     STACK unchanged
  5588. --------b-60----DI0304-----------------------
  5589. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  5590.     DI = 0304h
  5591.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5592.         DWORD    pointer to ???
  5593.         WORD    ???
  5594. Return: ???
  5595.     STACK unchanged
  5596. --------b-60----DI0305-----------------------
  5597. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  5598.     DI = 0305h
  5599.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5600.         WORD    ???
  5601.         WORD    ???
  5602.         DWORD    pointer to ???
  5603.         WORD    ???
  5604. Return: ???
  5605.     STACK unchanged
  5606. --------b-60----DI0307-----------------------
  5607. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  5608.     DI = 0307h
  5609.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5610.         WORD    ???
  5611.         WORD    ???
  5612.         WORD    ???
  5613. Return: ???
  5614.     STACK unchanged
  5615. --------b-60----DI0308-----------------------
  5616. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  5617.     DI = 0308h
  5618.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5619. Return: ???
  5620.     STACK unchanged
  5621. --------b-60----DI0309-----------------------
  5622. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  5623.     DI = 0309h
  5624.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5625.         WORD    new mode
  5626. Return: ???
  5627.     STACK unchanged
  5628. --------b-60----DI030A-----------------------
  5629. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  5630.     DI = 030Ah
  5631.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5632. Return: ???
  5633.     STACK unchanged
  5634. --------b-60----DI030B-----------------------
  5635. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  5636.     DI = 030Bh
  5637.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5638.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  5639.         WORD    column
  5640. Return: ???
  5641.     STACK unchanged
  5642. Note:    cursor is hidden if the specified position is not on the physical
  5643.       display
  5644. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5645. --------b-60----DI0400-----------------------
  5646. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  5647.     DI = 0400h
  5648.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5649.         DWORD    pointer to edit record (see below)
  5650.         DWORD    pointer to string to be edited
  5651.         WORD    initial length of string being edited
  5652.         WORD    maximum length of edited string
  5653.         WORD    row of edit field
  5654.         WORD    leftmost column of edit field
  5655. Return: ???
  5656.     STACK unchanged
  5657.  
  5658. Format of edit record:
  5659. Offset    Size    Description
  5660.  00h    WORD    current length of edit buffer
  5661.  02h    BYTE    flag for special processing on first character
  5662.  03h    BYTE    flags
  5663.         bit 0: tab handling
  5664.  04h    WORD    editing in prompt window?
  5665.  06h    DWORD    pointer to top line of prompt window message
  5666.  0Ah    WORD    length of top line of prompt
  5667.  0Ch    DWORD    pointer to second line of prompt window message
  5668.  10h    WORD    length of second line of prompt
  5669.  12h 80 BYTEs    workspace for editing
  5670.  62h  2 WORDs    line array needed for multi-line editing
  5671.  66h 36 BYTEs    multi-line edit record (see below)
  5672.  8Ah    WORD    displayable columns
  5673.  
  5674. Format of multi-line edit record:
  5675. Offset    Size    Description
  5676.  00h    DWORD    pointer to user-supplied edit buffer
  5677.  04h    WORD    length of edit buffer
  5678.  06h    WORD    current cursor position
  5679.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  5680.  0Ah    WORD    starting column of edit area
  5681.  0Ch    WORD    height of edit area
  5682.  0Eh    WORD    width of edit area
  5683.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  5684.  12h    WORD    number of rows displayable
  5685.  14h    BYTE    cursor column
  5686.  15h    BYTE    01h if buffer has been modified
  5687.  16h    BYTE    first displayable column (ticker fields only)
  5688.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  5689.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  5690.           area is high)
  5691.  1Ch    BYTE    currently marking?
  5692.  1Dh    BYTE    flag
  5693.  1Eh    WORD    offset of mark start
  5694.  20h    WORD    offset of mark end (inclusive)
  5695.  22h    WORD    displayable columns
  5696. --------b-60----DI0401-----------------------
  5697. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  5698.     DI = 0401h
  5699.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5700.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5701.         DWORD    pointer to string to edit
  5702.         WORD    initial length of string being edited
  5703.         WORD    maximum length of edited string
  5704.         DWORD    pointer to first line of prompt
  5705.         WORD    length of first line
  5706.         DWORD    pointer to second line of prompt
  5707.         WORD    length of second line
  5708. Return: ???
  5709.     STACK unchanged
  5710. --------b-60----DI0402-----------------------
  5711. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  5712.     DI = 0402h
  5713.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5714.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5715. Return: ???
  5716.     STACK unchanged
  5717. --------b-60----DI0403-----------------------
  5718. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  5719.     DI = 0403h
  5720.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5721.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5722.         WORD    keystroke
  5723.         DWORD    pointer to WORD buffer for result code
  5724. Return: result code buffer filled with 0001h if editing complete
  5725.     STACK unchanged
  5726. --------b-60----DI0404-----------------------
  5727. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  5728.     DI = 0404h
  5729.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5730.         DWORD    pointer to ???
  5731.         WORD    ???
  5732.         WORD    ???
  5733.         WORD    ???
  5734.         WORD    ???
  5735.         DWORD    pointer to ???
  5736.         WORD    ???
  5737.         WORD    ???
  5738.         WORD    ???
  5739.         DWORD    pointer to ???
  5740. Return: ???
  5741.     STACK unchanged
  5742. --------b-60----DI0405-----------------------
  5743. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  5744.     DI = 0405h
  5745.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5746.         DWORD    pointer to ???
  5747. Return: ???
  5748.     STACK unchanged
  5749. --------b-60----DI0406-----------------------
  5750. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  5751.     DI = 0406h
  5752.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5753.         DWORD    pointer to ???
  5754.         WORD    ???
  5755. Return: ???
  5756.     STACK unchanged
  5757. --------b-60----DI0407-----------------------
  5758. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  5759.     DI = 0407h
  5760.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5761.         DWORD    pointer to ???
  5762.         DWORD    pointer to ???
  5763. Return: ???
  5764.     STACK unchanged
  5765. --------b-60----DI0408-----------------------
  5766. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  5767.     DI = 0408h
  5768.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5769.         DWORD    pointer to ???
  5770. Return: ???
  5771.     STACK unchanged
  5772. --------b-60----DI0409-----------------------
  5773. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  5774.     DI = 0409h
  5775.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5776.         DWORD    pointer to ???
  5777. Return: ???
  5778.     STACK unchanged
  5779. --------b-60----DI040A-----------------------
  5780. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  5781.     DI = 040Ah
  5782.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5783.         DWORD    pointer to ???
  5784. Return: ???
  5785.     STACK unchanged
  5786. --------b-60----DI040B-----------------------
  5787. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  5788.     DI = 040Bh
  5789.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5790.         DWORD    pointer to ???
  5791.         DWORD    pointer to ???
  5792.         WORD    ???
  5793. Return: ???
  5794.     STACK unchanged
  5795. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5796. --------b-60----DI0500-----------------------
  5797. INT 60 u - HP 95LX System Manager - OPEN FILE
  5798.     DI = 0500h
  5799.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5800.         DWORD    pointer to file state record (see below)
  5801.         DWORD    pointer to filename
  5802.         WORD    length of filename
  5803.         WORD    ???
  5804.         WORD    suppress buffering if nonzero
  5805. Return: AX = status
  5806.     STACK unchanged
  5807. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  5808.  
  5809. Format of file state record:
  5810. Offset    Size    Description
  5811.  00h    WORD    DOS file handle
  5812.  02h    WORD    flags
  5813.         bit 0: buffer contents valid
  5814.         bit 1: buffer is dirty and must be written
  5815.         bit 2: unbuffered I/O
  5816.         bit 3: file is a character device
  5817.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  5818.  08h    DWORD    DOS file offset of start of buffer
  5819.  0Ch    DWORD    effective file offset as seen by caller
  5820.  10h    WORD    number of bytes in file buffer
  5821. ---buffered I/O only---
  5822.  12h 512 BYTEs    file buffer
  5823. --------b-60----DI0501-----------------------
  5824. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  5825.     DI = 0501h
  5826.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5827.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5828.         DWORD    pointer to filename
  5829.         WORD    length of filename
  5830.         WORD    ???
  5831.         WORD    suppress buffering if nonzero
  5832. Return: AX = status
  5833.     STACK unchanged
  5834. SeeAlso: INT 60/DI=0500h
  5835. --------b-60----DI0502-----------------------
  5836. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  5837.     DI = 0502h
  5838.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5839.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5840.         DWORD    pointer to filename
  5841.         WORD    length of filename
  5842.         WORD    ???
  5843.         WORD    suppress buffering if nonzero
  5844. Return: AX = status
  5845.     STACK unchanged
  5846. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  5847. --------b-60----DI0503-----------------------
  5848. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  5849.     DI = 0503h
  5850.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5851.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5852.         DWORD    pointer to filename
  5853.         WORD    length of filename
  5854.         WORD    ???
  5855.         WORD    suppress buffering if nonzero
  5856. Return: AX = status
  5857.     STACK unchanged
  5858. SeeAlso: INT 60/DI=0502h
  5859. --------b-60----DI0504-----------------------
  5860. INT 60 u - HP 95LX System Manager - READ FROM FILE
  5861.     DI = 0504h
  5862.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5863.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5864.         DWORD    pointer to data buffer
  5865.         WORD    number of bytes to read
  5866.         DWORD    pointer to WORD in which to return actual bytes read
  5867. Return: ???
  5868.     STACK unchanged
  5869. SeeAlso: INT 60/DI=0505h
  5870. --------b-60----DI0505-----------------------
  5871. INT 60 - HP 95LX System Manager - WRITE TO FILE
  5872.     DI = 0505h
  5873.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5874.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5875.         DWORD    pointer to data
  5876.         WORD    length of data
  5877. Return: AX = status
  5878.     STACK unchanged
  5879. SeeAlso: INT 60/DI=0504h
  5880. --------b-60----DI0506-----------------------
  5881. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  5882.     DI = 0506h
  5883.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5884.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5885.         WORD    ???
  5886.         WORD    ???
  5887. Return: ???
  5888.     STACK unchanged
  5889. SeeAlso: INT 60/DI=0507h
  5890. --------b-60----DI0507-----------------------
  5891. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  5892.     DI = 0507h "M_TELL"
  5893.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5894.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5895.         DWORD    pointer to DWORD buffer for file position???
  5896. Return: ???
  5897.     STACK unchanged
  5898. SeeAlso: INT 60/DI=0506h
  5899. --------b-60----DI0508-----------------------
  5900. INT 60 u - HP 95LX System Manager - CLOSE FILE
  5901.     DI = 0508h
  5902.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5903.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5904. Return: ???
  5905.     STACK unchanged
  5906. SeeAlso: INT 60/DI=0500h
  5907. --------b-60----DI0509-----------------------
  5908. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  5909.     DI = 0509h
  5910.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5911.         DWORD    pointer to ???
  5912.         DWORD    pointer to ???
  5913.         WORD    ???
  5914.         WORD    ???
  5915. Return: ???
  5916.     STACK unchanged
  5917. --------b-60----DI050A-----------------------
  5918. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  5919.     DI = 050Ah
  5920.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5921.         DWORD    pointer to ???
  5922.         DWORD    pointer to ???
  5923. Return: ???
  5924.     STACK unchanged
  5925.  
  5926. Format of pattern match control block:
  5927. Offset    Size    Description
  5928.  00h 43 BYTEs    FindFirst data block (see INT 21/AH=4Eh)
  5929.  2Bh 80 BYTEs    full path name
  5930.  7Bh    BYTE    offset of last component of filename
  5931.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  5932. --------b-60----DI050B-----------------------
  5933. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  5934.     DI = 050Bh
  5935.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5936.         DWORD    pointer to ???
  5937.         WORD    ???
  5938.         WORD    ???
  5939.         DWORD    pointer to ???
  5940. Return: ???
  5941.     STACK unchanged
  5942.  
  5943. Values returned:
  5944.  0000h nonexistent
  5945.  0001h file
  5946.  0002h directory
  5947.  0003h character device
  5948. --------b-60----DI050C-----------------------
  5949. INT 60 u - HP 95LX System Manager - DELETE FILE
  5950.     DI = 050Ch "M_DELETE"
  5951.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5952.         DWORD    pointer to ???
  5953.         WORD    ???
  5954.         WORD    ???
  5955. Return: ???
  5956.     STACK unchanged
  5957. --------b-60----DI050D-----------------------
  5958. INT 60 u - HP 95LX System Manager - RENAME FILE
  5959.     DI = 050Dh
  5960.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5961.         DWORD    pointer to ???
  5962.         WORD    ???
  5963.         WORD    ???
  5964.         DWORD    pointer to ???
  5965.         WORD    ???
  5966.         WORD    ???
  5967. Return: ???
  5968.     STACK unchanged
  5969. --------b-60----DI050E-----------------------
  5970. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  5971.     DI = 050Eh
  5972.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5973.         WORD    ???
  5974.         DWORD    pointer to ???
  5975.         DWORD    pointer to ???
  5976. Return: ???
  5977.     STACK unchanged
  5978. --------b-60----DI050F-----------------------
  5979. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  5980.     DI = 050Fh
  5981.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5982.         DWORD    pointer to ???
  5983.         WORD    ???
  5984. Return: ???
  5985.     STACK unchanged
  5986. --------b-60----DI0510-----------------------
  5987. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  5988.     DI = 0510h
  5989.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5990.         DWORD    pointer to ???
  5991.         DWORD    pointer to ???
  5992. Return: ???
  5993.     STACK unchanged
  5994. --------b-60----DI0511-----------------------
  5995. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  5996.     DI = 0511h
  5997.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5998.         DWORD    pointer to ???
  5999.         WORD    ???
  6000.         WORD    ???
  6001. Return: ???
  6002.     STACK unchanged
  6003. --------b-60----DI0512-----------------------
  6004. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  6005.     DI = 0512h
  6006.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6007.         DWORD    pointer to ???
  6008.         WORD    ???
  6009.         WORD    ???
  6010. Return: ???
  6011.     STACK unchanged
  6012. --------b-60----DI0513-----------------------
  6013. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  6014.     DI = 0513h
  6015.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6016.         DWORD    pointer to ??? buffer for current drive
  6017. Return: ???
  6018.     STACK unchanged
  6019. --------b-60----DI0514-----------------------
  6020. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  6021.     DI = 0514h
  6022.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6023.         WORD    new drive
  6024. Return: ???
  6025.     STACK unchanged
  6026. --------b-60----DI0515-----------------------
  6027. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  6028.     DI = 0515h
  6029.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6030.         DWORD    pointer to ???
  6031.         DWORD    pointer to ???
  6032. Return: ???
  6033.     STACK unchanged
  6034. --------b-60----DI0516-----------------------
  6035. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  6036.     DI = 0516h
  6037.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6038.         DWORD    pointer to ???
  6039. Return: ???
  6040.     STACK unchanged
  6041. --------b-60----DI0517-----------------------
  6042. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  6043.     DI = 0517h
  6044.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6045.         DWORD    pointer to ???
  6046.         WORD    ???
  6047.         WORD    ???
  6048.         DWORD    pointer to ??? buffer for file's attributes???
  6049. Return: ???
  6050.     STACK unchanged
  6051. --------b-60----DI0518-----------------------
  6052. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  6053.     DI = 0518h
  6054.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6055.         DWORD    pointer to ???
  6056.         WORD    ???
  6057.         WORD    ???
  6058.         WORD    new attributes???
  6059. Return: ???
  6060.     STACK unchanged
  6061. --------b-60----DI0519-----------------------
  6062. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  6063.     DI = 0519h
  6064.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6065.         DWORD    pointer to ???
  6066.         DWORD    pointer to ???
  6067.         WORD    ???
  6068.         WORD    ???
  6069.         WORD    ???
  6070.         WORD    ???
  6071.         WORD    ???
  6072. Return: ???
  6073.     STACK unchanged
  6074. --------b-60----DI051A-----------------------
  6075. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  6076.     DI = 051Ah
  6077.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6078.         DWORD    pointer to ???
  6079.         DWORD    pointer to ???
  6080. Return: ???
  6081.     STACK unchanged
  6082. --------b-60----DI051B-----------------------
  6083. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  6084.     DI = 051Bh
  6085.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6086.         DWORD    pointer to ???
  6087.         DWORD    pointer to ???
  6088. Return: ???
  6089.     STACK unchanged
  6090. --------b-60----DI051C-----------------------
  6091. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  6092.     DI = 051Ch
  6093.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6094.         DWORD    pointer to ???
  6095.         WORD    ???
  6096. Return: ???
  6097.     STACK unchanged
  6098. --------b-60----DI0600-----------------------
  6099. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  6100.     DI = 0600h
  6101.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6102. Return: ???
  6103.     STACK unchanged
  6104. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  6105. --------b-60----DI0601-----------------------
  6106. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  6107.     DI = 0601h
  6108.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6109. Return: never
  6110.     STACK unchanged
  6111. SeeAlso: INT 21/AH=4Ch,INT 60/DI=0600h
  6112. --------b-60----DI0602-----------------------
  6113. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  6114.     DI = 0602h
  6115.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6116. Return: ???
  6117.     STACK unchanged
  6118. SeeAlso: INT 15/AX=101Bh,INT 60/DI=0603h
  6119. --------b-60----DI0603-----------------------
  6120. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  6121.     DI = 0603h
  6122.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6123. Return: ???
  6124.     STACK unchanged
  6125. SeeAlso: INT 15/AX=101Ch,INT 60/DI=0602h
  6126. --------b-60----DI0604-----------------------
  6127. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  6128.     DI = 0604h
  6129.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6130.         DWORD    pointer to ???
  6131.         WORD    ???
  6132.         WORD    ???
  6133.         DWORD    pointer to ???
  6134. Return: ???
  6135.     STACK unchanged
  6136. --------b-60----DI0605-----------------------
  6137. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  6138.     DI = 0605h
  6139.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6140. Return: ???
  6141.     STACK unchanged
  6142. --------b-60----DI0606-----------------------
  6143. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  6144.     DI = 0606h
  6145.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6146. Return: ???
  6147.     STACK unchanged
  6148. --------b-60----DI0607-----------------------
  6149. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  6150.     DI = 0607h
  6151.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6152.         DWORD    pointer to ???
  6153.         WORD    ???
  6154.         DWORD    pointer to ???
  6155.         WORD    ???
  6156. Return: ???
  6157.     STACK unchanged
  6158. --------b-60----DI0608-----------------------
  6159. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  6160.     DI = 0608h
  6161.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6162.         DWORD    pointer to ???
  6163. Return: ???
  6164.     STACK unchanged
  6165. --------b-60----DI0609-----------------------
  6166. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  6167.     DI = 0609h
  6168.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6169.         DWORD    pointer to ???
  6170. Return: DX:AX -> ???
  6171.     STACK unchanged
  6172. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6173. --------b-60----DI0700-----------------------
  6174. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  6175.     DI = 0700h
  6176.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6177. Return: ???
  6178.     STACK unchanged
  6179. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  6180.  
  6181. Values for error code:
  6182.  0000h    successful
  6183.  FFF8h    transfer request out of bounds
  6184.  FFF9h    no such representation
  6185.  FFFAh    no representation open
  6186.  FFFBh    a representation is already open
  6187.  FFFCh    representation already exists
  6188.  FFFDh    heap allocation failure
  6189.  FFFEh    clipboard not open
  6190.  FFFFh    clipboard access denied
  6191. --------b-60----DI0701-----------------------
  6192. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  6193.     DI = 0701h
  6194.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6195. Return: ???
  6196.     STACK unchanged
  6197. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  6198. --------b-60----DI0702-----------------------
  6199. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  6200.     DI = 0702h
  6201.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6202.         DWORD    pointer to ???
  6203. Return: ???
  6204.     STACK unchanged
  6205. SeeAlso: INT 60/DI=0700h
  6206. --------b-60----DI0704-----------------------
  6207. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  6208.     DI = 0704h
  6209.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6210.         DWORD    pointer to ???
  6211. Return: ???
  6212.     STACK unchanged
  6213. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  6214. --------b-60----DI0705-----------------------
  6215. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  6216.     DI = 0705h
  6217.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6218. Return: ???
  6219.     STACK unchanged
  6220. SeeAlso: INT 60/DI=0704h
  6221. --------b-60----DI0706-----------------------
  6222. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  6223.     DI = 0706h
  6224.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6225.         WORD    ???
  6226.         DWORD    pointer to ???
  6227.         DWORD    pointer to ???
  6228. Return: ???
  6229.     STACK unchanged
  6230. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  6231. --------b-60----DI0707-----------------------
  6232. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  6233.     DI = 0707h
  6234.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6235.         DWORD    pointer to ???
  6236.         DWORD    pointer to ???
  6237.         DWORD    pointer to ???
  6238. Return: ???
  6239.     STACK unchanged
  6240. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  6241. --------b-60----DI0708-----------------------
  6242. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  6243.     DI = 0708h
  6244.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6245.         DWORD    pointer to data to be written???
  6246.         WORD    length of data???
  6247. Return: ???
  6248.     STACK unchanged
  6249. SeeAlso: INT 60/DI=0709h
  6250. --------b-60----DI0709-----------------------
  6251. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  6252.     DI = 0709h
  6253.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6254.         WORD    ???
  6255.         WORD    ???
  6256.         DWORD    pointer to buffer for data???
  6257.         WORD    length of buffer???
  6258. Return: ???
  6259.     STACK unchanged
  6260. SeeAlso: INT 60/DI=0708h
  6261. --------b-60----DI0800-----------------------
  6262. INT 60 u - HP 95LX System Manager - BEEP
  6263.     DI = 0800h
  6264.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6265. Return: ???
  6266.     STACK unchanged
  6267. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  6268. --------b-60----DI0801-----------------------
  6269. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  6270.     DI = 0801h
  6271.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6272. Return: ???
  6273.     STACK unchanged
  6274. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  6275. --------b-60----DI0802-----------------------
  6276. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  6277.     DI = 0802h
  6278.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6279.         WORD    pattern number (00h-06h)
  6280. Return: ???
  6281.     STACK unchanged
  6282. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  6283. --------b-60----DI0803-----------------------
  6284. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  6285.     DI = 0803h
  6286.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6287. Return: ???
  6288.     STACK unchanged
  6289. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  6290. --------b-60----DI0900-----------------------
  6291. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  6292.     DI = 0900h
  6293.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6294.         WORD    size of block in bytes
  6295. Return: AX -> memory block
  6296.     STACK unchanged
  6297. Note:    System Manager-compliant applications are always small-model (64K code,
  6298.       64K data)
  6299. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  6300. --------b-60----DI0902-----------------------
  6301. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  6302.     DI = 0902h
  6303.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6304.         WORD    offset of memory block???
  6305. Return: ???
  6306.     STACK unchanged
  6307. Note:    System Manager-compliant applications are always small-model (64K code,
  6308.       64K data)
  6309. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  6310. --------b-60----DI0903-----------------------
  6311. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  6312.     DI = 0903h
  6313.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6314.         WORD    size of block in bytes???
  6315. Return: AX -> memory block???
  6316.     STACK unchanged
  6317. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  6318. --------b-60----DI0904-----------------------
  6319. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  6320.     DI = 0904h
  6321.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6322.         WORD    segment of memory block???
  6323. Return: AX -> ???
  6324.     STACK unchanged
  6325. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  6326. --------b-60----DI0B00-----------------------
  6327. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  6328.     DI = 0B00h
  6329.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6330.         DWORD    pointer to ???
  6331. Return: ???
  6332.     STACK unchanged
  6333. --------b-60----DI0B01-----------------------
  6334. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  6335.     DI = 0B01h
  6336.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6337.         DWORD    pointer to ???
  6338. Return: ???
  6339.     STACK unchanged
  6340. --------b-60----DI0B02-----------------------
  6341. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  6342.     DI = 0B02h
  6343.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6344.         DWORD    pointer to ???
  6345. Return: ???
  6346.     STACK unchanged
  6347. --------b-60----DI0B03-----------------------
  6348. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  6349.     DI = 0B03h
  6350.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6351.         WORD    ???
  6352. Return: ???
  6353.     STACK unchanged
  6354. --------b-60----DI0B04-----------------------
  6355. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  6356.     DI = 0B04h
  6357.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6358.         DWORD    pointer to alarm record???
  6359.         WORD    ???
  6360. Return: ???
  6361.     STACK unchanged
  6362.  
  6363. Format of alarm record:
  6364. Offset    Size    Description
  6365.  00h    BYTE    hour
  6366.  01h    BYTE    minute
  6367.  02h    BYTE    second
  6368.  03h    BYTE    unused padding
  6369.  04h    WORD    rescheduling interval, in seconds
  6370.  06h    BYTE    are seconds significant?
  6371.  07h    BYTE    alarm sound
  6372.  08h 40 BYTEs    message displayed when alarm activates
  6373.  30h    BYTE    task ID of owner
  6374.  31h    BYTE    application's own use for sub-class
  6375.  32h  4 BYTEs    application's own use for private data
  6376. --------b-60----DI0B05-----------------------
  6377. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  6378.     DI = 0B05h
  6379.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6380.         DWORD    pointer to ???
  6381. Return: ???
  6382.     STACK unchanged
  6383. --------b-60----DI0B06-----------------------
  6384. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  6385.     DI = 0B06h
  6386.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6387.         DWORD    pointer to ???
  6388.         DWORD    pointer to ???
  6389.         DWORD    pointer to ???
  6390. Return: ???
  6391.     STACK unchanged
  6392. --------b-60----DI0B07-----------------------
  6393. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  6394.     DI = 0B07h
  6395.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6396.         DWORD    pointer to ???
  6397. Return: ???
  6398.     STACK unchanged
  6399. --------b-60----DI0B08-----------------------
  6400. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  6401.     DI = 0B08h
  6402.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6403.         WORD    timestamp format (see below)
  6404.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  6405.         WORD    column
  6406. Return: ???
  6407.     STACK unchanged
  6408.  
  6409. Bitfields for timestamp format:
  6410.  bits 1-0  timestamp components
  6411.     00 date only
  6412.     01 time only
  6413.     10 date and time
  6414.     11 day and date
  6415.  bit 4    supply am/pm
  6416.  bit 5    supply seconds
  6417.  bit 6    show year
  6418.  bit 7    four-digit year
  6419. --------b-60----DI0B09-----------------------
  6420. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  6421.     DI = 0B09h
  6422.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6423.         DWORD    pointer to ???
  6424.         DWORD    pointer to ???
  6425. Return: ???
  6426.     STACK unchanged
  6427. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  6428.  
  6429. Format of system settings:
  6430. Offset    Size    Description
  6431.  00h    WORD    country code
  6432.  02h    WORD    speaker volume (00h-03h or FFh for off)
  6433.  04h    WORD    contrast level (00h-0Fh)
  6434.  06h    WORD    week start (00h Sunday, 01h Monday)
  6435.  08h    WORD    punctuation format
  6436.         code    decimal arg    thousands
  6437.         00h    .    ,    ,
  6438.         01h    ,    .    .
  6439.         02h    .    ;    ;
  6440.         03h    ,    ;    .
  6441.         04h    .    ,    " "
  6442.         05h    ,    .    " "
  6443.         06h    .    ;    " "
  6444.         07h    ,    ;    " "
  6445.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  6446.  0Ch    WORD    current date format (see below)
  6447.  0Eh    WORD    current time format (see below)
  6448.  10h    WORD    collating sequence
  6449.         00h numbers first, 01h letters first, 02h ASCII
  6450.  12h 80 BYTEs    name of picture file
  6451.  62h 30 BYTEs    name
  6452.  80h 30 BYTEs    title
  6453.  9Eh 28 BYTEs    company name
  6454.  BAh    WORD    number of languages
  6455.  BCh  6 BYTEs    available languages
  6456.  C2h 66 BYTEs    language menu
  6457. 104h  2 BYTEs    ASCIZ date separator
  6458. 106h  2 BYTEs    ASCIZ time separator
  6459. 108h    BYTE    date order
  6460. 109h    BYTE    use 24 hour time?
  6461. 10Ah 16 BYTEs    currency string
  6462. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  6463. 11Ch    WORD    keyboard (see below)
  6464. 11Eh    WORD    printer baud rate
  6465.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  6466. 120h    WORD    printer driver code
  6467.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  6468. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  6469. 124h    WORD    system manager interrupt (60h by default)
  6470. 126h    WORD    code page (01h CP850, 02h CP437)
  6471. 128h    WORD    active exit key
  6472. 12Ah    WORD    active menu key
  6473. 12Ch    WORD    active CHAR key toggle
  6474. 12Eh  6 BYTEs    alarm
  6475.  
  6476. Values for current date format:
  6477.  00h    dd-mmm-yy
  6478.  01h    dd-mmm
  6479.  02h    mmm-yy
  6480.  03h    mm/dd/yy
  6481.  04h    dd/mm/yy
  6482.  05h    dd.mm.yy
  6483.  06h    yy-mm-dd
  6484.  07h    mm/dd
  6485.  08h    dd/mm
  6486.  09h    dd.mm
  6487.  0Ah    mm-dd
  6488.  
  6489. Values for current time format:
  6490.  00h    HH:MM:SS am/pm
  6491.  01h    HH:MM am/pm
  6492.  02h    HH:MM:SS
  6493.  03h    HH.MM.SS
  6494.  04h    HH,MM,SS
  6495.  05h    HHhMMmSSs
  6496.  06h    HH:MM
  6497.  07h    HH.MM
  6498.  08h    HH,MM
  6499.  09h    HHhMMm
  6500.  
  6501. Values for keyboard:
  6502.  0001h    Belgium
  6503.  0002h    French Canadian
  6504.  0004h    Denmark
  6505.  0008h    Finland
  6506.  0010h    French
  6507.  0020h    Finland
  6508.  0040h    Italy
  6509.  0080h    Netherlands
  6510.  0100h    Norway
  6511.  0200h    Portugal
  6512.  0400h    Spain
  6513.  0800h    Sweden
  6514.  1000h    Swiss French
  6515.  2000h    Swiss German
  6516.  4000h    United Kingdom
  6517.  8000h    USA
  6518. --------b-60----DI0B0A-----------------------
  6519. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  6520.     DI = 0B0Ah
  6521.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6522.         DWORD    pointer to ???
  6523.         DWORD    pointer to ???
  6524. Return: ???
  6525.     STACK unchanged
  6526. SeeAlso: INT 60/DI=0B09h
  6527. --------b-60----DI0B0B-----------------------
  6528. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  6529.     DI = 0B0Bh
  6530.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6531.         DWORD    pointer to ???
  6532. Return: ???
  6533.     STACK unchanged
  6534. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  6535. --------b-60----DI0B0C-----------------------
  6536. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  6537.     DI = 0B0Ch
  6538.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6539.         DWORD    pointer to ???
  6540. Return: ???
  6541.     STACK unchanged
  6542. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  6543. --------b-60----DI0B0D-----------------------
  6544. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  6545.     DI = 0B0Dh
  6546.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6547.         DWORD    pointer to ???
  6548.         DWORD    pointer to ???
  6549.         DWORD    pointer to ???
  6550. Return: ???
  6551.     STACK unchanged
  6552. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  6553. --------b-60----DI0B0E-----------------------
  6554. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  6555.     DI = 0B0Eh
  6556.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6557.         WORD    ???
  6558.         WORD    ???
  6559.         WORD    ???
  6560.         DWORD    pointer to ???
  6561.         DWORD    pointer to ???
  6562. Return: DX:AX -> ???
  6563.     STACK unchanged
  6564. --------b-60----DI0B0F-----------------------
  6565. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  6566.     DI = 0B0Fh
  6567.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6568. Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
  6569.     STACK unchanged
  6570. SeeAlso: INT 60/DI=0B09h
  6571. --------b-60----DI0B10-----------------------
  6572. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  6573.     DI = 0B10h
  6574.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6575.         WORD    ???
  6576.         DWORD    pointer to ???
  6577.         DWORD    pointer to ???
  6578. Return: ???
  6579.     STACK unchanged
  6580. --------b-60----DI0B11-----------------------
  6581. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  6582.     DI = 0B11h
  6583.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6584.         WORD    ???
  6585.         DWORD    pointer to ???
  6586.         DWORD    pointer to ???
  6587. Return: ???
  6588.     STACK unchanged
  6589. --------b-60----DI0B12-----------------------
  6590. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  6591.     DI = 0B12h
  6592.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6593.         WORD    new parsing rule (see below)
  6594. Return: ???
  6595.     STACK unchanged
  6596. SeeAlso: INT 60/DI=0B13h
  6597.  
  6598. Values for new parsing rule:
  6599.  01h    day-month-year
  6600.  02h    month-day-year
  6601.  03h    year-month-day
  6602.  04h    "DMYO"
  6603.  05h    "MDYO"
  6604.  OR with 08h to get any year
  6605. --------b-60----DI0B13-----------------------
  6606. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  6607.     DI = 0B13h
  6608.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6609.         WORD    new parsing rule (see below)
  6610. Return: ???
  6611.     STACK unchanged
  6612. SeeAlso: INT 60/DI=0B12h
  6613.  
  6614. Values for new parsing rule:
  6615.  01h    HH:MM:SS (am/pm)
  6616.  02h    HH:MM:SS (24hr)
  6617.  03h    HHMM:SS (24hr)
  6618.  04h    HH:MM:SS.hh (24hr)
  6619.  05h    HH:MM (am/pm)
  6620.  06h    HH:MM (24hr)
  6621.  07h    HHMM (24hr)
  6622. --------b-60----DI0B14-----------------------
  6623. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  6624.     DI = 0B14h
  6625.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6626. Return: ???
  6627.     STACK unchanged
  6628. --------b-60----DI0B15-----------------------
  6629. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  6630.     DI = 0B15h
  6631.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6632.         WORD    ???
  6633. Return: ???
  6634.     STACK unchanged
  6635. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6636. --------b-60----DI0C00-----------------------
  6637. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  6638.     DI = 0C00h
  6639.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6640. Return: ???
  6641.     STACK unchanged
  6642. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  6643. --------b-60----DI0C01-----------------------
  6644. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  6645.     DI = 0C01h
  6646.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6647. Return: ???
  6648.     STACK unchanged
  6649. Note:    relinquishes control of printer
  6650. SeeAlso: INT 60/DI=0C00h
  6651. --------b-60----DI0C02-----------------------
  6652. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  6653.     DI = 0C02h
  6654.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6655.         DWORD    pointer to data to be written
  6656.         WORD    length of data
  6657. Return: ???
  6658.     STACK unchanged
  6659. SeeAlso: INT 60/DI=0C00h
  6660. --------b-60----DI0C03-----------------------
  6661. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  6662.     DI = 0C03h
  6663.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6664. Return: ???
  6665.     STACK unchanged
  6666. SeeAlso: INT 60/DI=0C00h
  6667. --------b-60----DI0C04-----------------------
  6668. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  6669.     DI = 0C04h
  6670.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6671.         WORD    ???
  6672.         DWORD    pointer to ???
  6673. Return: ???
  6674.     STACK unchanged
  6675. --------b-60----DI0C05-----------------------
  6676. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  6677.     DI = 0C05h
  6678.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6679.         WORD    ???
  6680.         DWORD    pointer to ???
  6681. Return: ???
  6682.     STACK unchanged
  6683. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6684. --------b-60----DI0E00-----------------------
  6685. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  6686.     DI = 0E00h
  6687.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6688.         DWORD    pointer to ???
  6689. Return: ???
  6690.     STACK unchanged
  6691. SeeAlso: INT 60/DI=0E01h,INT 60/DI=0E02h
  6692.  
  6693. Values for error code:
  6694.  0000h    successful
  6695.  FFF1h    "E_BUSY"
  6696.  FFF2h    timeout
  6697.  FFF3h    framing error
  6698.  FFF4h    parity error
  6699.  FFF5h    overrun error
  6700.  FFF6h    "E_EMPTY"
  6701.  FFF7h    "E_CONECT"
  6702.  FFF8h    not open
  6703.  FFF9h    out of memory
  6704.  FFFAh    buffer overflow
  6705.  FFFBh    "E_NOFIT"
  6706.  FFFCh    unsupported
  6707.  FFFDh    "E_IVOPR"
  6708.  FFFEh    "E_IVCHN"
  6709.  FFFFh    "E_REOPEN"
  6710. --------b-60----DI0E01-----------------------
  6711. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  6712.     DI = 0E01h
  6713.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6714.         DWORD    pointer to WORD buffer for comm channel handle
  6715.         WORD    communications line number (01h-04h)
  6716. Return: ???
  6717.     STACK unchanged
  6718. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  6719. --------b-60----DI0E02-----------------------
  6720. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  6721.     DI = 0E02h
  6722.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6723.         WORD    comm channel handle
  6724. Return: ???
  6725.     STACK unchanged
  6726. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  6727. --------b-60----DI0E03-----------------------
  6728. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  6729.     DI = 0E03h
  6730.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6731.         WORD    ???
  6732. Return: ???
  6733.     STACK unchanged
  6734. --------b-60----DI0E04-----------------------
  6735. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  6736.     DI = 0E04h
  6737.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6738.         WORD    ???
  6739.         WORD    ???
  6740. Return: ???
  6741.     STACK unchanged
  6742. --------b-60----DI0E05-----------------------
  6743. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  6744.     DI = 0E05h
  6745.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6746.         WORD    ???
  6747.         DWORD    pointer to ???
  6748. Return: ???
  6749.     STACK unchanged
  6750. --------b-60----DI0E06-----------------------
  6751. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  6752.     DI = 0E06h
  6753.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6754.         WORD    comm channel handle
  6755.         WORD    reset options (see below)
  6756. Return: ???
  6757.     STACK unchanged
  6758.  
  6759. Bitfields for reset options:
  6760.  bit 0    reset line
  6761.  bit 1    flush transmit buffer
  6762.  bit 2    flush receive buffer
  6763.  bit 3    reset modem
  6764.  bit 4    reset receiver's ^S state
  6765.  bit 5    reset transmitter's ^S state
  6766. --------b-60----DI0E07-----------------------
  6767. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  6768.     DI = 0E07h
  6769.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6770.         WORD    ???
  6771. Return: ???
  6772.     STACK unchanged
  6773. --------b-60----DI0E08-----------------------
  6774. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  6775.     DI = 0E08h
  6776.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6777.         WORD    comm channel handle
  6778.         DWORD    pointer to data to be sent
  6779.         WORD    option flags
  6780.             bit 0: send partial buffer
  6781.             bit 1: turn on receiver after sending
  6782.         DWORD    pointer to WORD containing length of data to be sent
  6783. Return: length WORD updated to contain number of bytes actually sent???
  6784.     STACK unchanged
  6785. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  6786. --------b-60----DI0E09-----------------------
  6787. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  6788.     DI = 0E09h
  6789.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6790.         WORD    ???
  6791.         DWORD    pointer to ??? WORD
  6792.         DWORD    pointer to ??? WORD
  6793. Return: ???
  6794.     STACK unchanged
  6795. SeeAlso: INT 60/DI=0E0Ah
  6796. --------b-60----DI0E0A-----------------------
  6797. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  6798.     DI = 0E0Ah
  6799.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6800.         WORD    comm channel handle
  6801.         DWORD    pointer to WORD to get receive buffer size
  6802.         DWORD    pointer to WORD to get free bytes in receive buffer
  6803. Return: ???
  6804.     STACK unchanged
  6805. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  6806. --------b-60----DI0E0B-----------------------
  6807. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  6808.     DI = 0E0Bh
  6809.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6810.         WORD    comm channel handle
  6811.         DWORD    pointer to data buffer
  6812.         DWORD    pointer to WORD (input) length of data buffer
  6813.                     (output) number of bytes received
  6814. Return: ???
  6815.     STACK unchanged
  6816. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  6817. --------b-60----DI0E0C-----------------------
  6818. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  6819.     DI = 0E0Ch
  6820.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6821.         WORD    ???
  6822.         DWORD    pointer to ???
  6823.         WORD    ???
  6824. Return: ???
  6825.     STACK unchanged
  6826. --------b-60----DI0E0D-----------------------
  6827. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  6828.     DI = 0E0Dh
  6829.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6830.         WORD    ???
  6831.         DWORD    pointer to ???
  6832.         WORD    ???
  6833. Return: ???
  6834.     STACK unchanged
  6835. --------b-60----DI0E0E-----------------------
  6836. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  6837.     DI = 0E0Eh
  6838.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6839.         WORD    ???
  6840.         WORD    ???
  6841. Return: ???
  6842.     STACK unchanged
  6843. --------b-60----DI0E0F-----------------------
  6844. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  6845.     DI = 0E0Fh
  6846.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6847.         WORD    ???
  6848. Return: ???
  6849.     STACK unchanged
  6850. --------b-60----DI0E10-----------------------
  6851. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  6852.     DI = 0E10h
  6853.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6854.         WORD    ???
  6855. Return: ???
  6856.     STACK unchanged
  6857. --------b-60----DI0E11-----------------------
  6858. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  6859.     DI = 0E11h
  6860.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6861.         WORD    ???
  6862.         WORD    ???
  6863. Return: ???
  6864.     STACK unchanged
  6865. --------b-60----DI0E12-----------------------
  6866. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  6867.     DI = 0E12h
  6868.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6869.         WORD    ???
  6870. Return: ???
  6871.     STACK unchanged
  6872. --------b-60----DI0E13-----------------------
  6873. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  6874.     DI = 0E13h
  6875.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6876.         WORD    ???
  6877. Return: ???
  6878.     STACK unchanged
  6879. --------b-60----DI0E14-----------------------
  6880. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  6881.     DI = 0E14h
  6882.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6883.         WORD    comm channel handle
  6884.         DWORD    pointer to comm settings (see below)
  6885. Return: ???
  6886.     STACK unchanged
  6887. SeeAlso: INT 60/DI=0E15h
  6888.  
  6889. Format of comm settings:
  6890. Offset    Size    Description
  6891.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  6892.  01h    WORD    baud rate divisor (115200/baud_rate)
  6893.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  6894.  04h    BYTE    stop bits (00h one, 04h two)
  6895.  05h    BYTE    data bits - 5
  6896.  06h    BYTE    software handshake
  6897.         01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  6898.  07h    BYTE    infrared (01h off, 02h on)
  6899.  08h    BYTE    duplex (01h half, 02h full)
  6900.  09h    BYTE    echo (01h echo, 02h no echo)
  6901. --------b-60----DI0E15-----------------------
  6902. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  6903.     DI = 0E15h
  6904.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6905.         WORD    ???
  6906.         DWORD    pointer to buffer for settings (see INT 60/DI=0E14h)
  6907. Return: ???
  6908.     STACK unchanged
  6909. SeeAlso: INT 60/DI=0E14h
  6910. --------b-60----DI0E16-----------------------
  6911. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  6912.     DI = 0E16h
  6913.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6914.         WORD    ???
  6915.         WORD    ???
  6916.         WORD    ???
  6917.         WORD    ???
  6918.         WORD    ???
  6919. Return: ???
  6920.     STACK unchanged
  6921. --------b-60----DI0E17-----------------------
  6922. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  6923.     DI = 0E17h
  6924.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6925.         WORD    ???
  6926. Return: ???
  6927.     STACK unchanged
  6928. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6929. --------b-60----DI0F00-----------------------
  6930. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  6931.     DI = 0F00h
  6932.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6933.         WORD    ???
  6934.         DWORD    pointer to ???
  6935.         WORD    ???
  6936.         DWORD    pointer to ???
  6937. Return: ???
  6938.     STACK unchanged
  6939. --------b-60----DI0F01-----------------------
  6940. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  6941.     DI = 0F01h
  6942.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6943.         DWORD    pointer to ASCIZ title string
  6944. Return: ???
  6945.     STACK unchanged
  6946. --------b-60----DI0F02-----------------------
  6947. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  6948.     DI = 0F02h
  6949.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6950.         DWORD    pointer to ???
  6951. Return: ???
  6952.     STACK unchanged
  6953. --------b-60----DI0F03-----------------------
  6954. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  6955.     DI = 0F03h
  6956.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6957.         DWORD    pointer to first line of message
  6958.         WORD    length of first line
  6959.         DWORD    pointer to second line of message
  6960.         WORD    length of second line
  6961. Return: ???
  6962.     STACK unchanged
  6963. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  6964. --------b-60----DI0F04-----------------------
  6965. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  6966.     DI = 0F04h
  6967.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6968. Return: ???
  6969.     STACK unchanged
  6970. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  6971. --------b-60----DI0F05-----------------------
  6972. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  6973.     DI = 0F05h
  6974.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6975. Return: DX:AX -> ???
  6976.     STACK unchanged
  6977. --------b-60----DI0F06-----------------------
  6978. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  6979.     DI = 0F06h
  6980.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6981. Return: DX:AX -> ???
  6982.     STACK unchanged
  6983. --------b-60----DI0F07-----------------------
  6984. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  6985.     DI = 0F07h
  6986.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6987. Return: DX:AX -> ???
  6988.     STACK unchanged
  6989. --------b-60----DI0F08-----------------------
  6990. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  6991.     DI = 0F08h
  6992.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6993.         ???
  6994. Return: ???
  6995.     STACK unchanged
  6996. --------b-60----DI0F09-----------------------
  6997. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  6998.     DI = 0F09h
  6999.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7000.         DWORD    pointer to first line of message
  7001.         WORD    length of first line
  7002.         DWORD    pointer to second line of message
  7003.         WORD    length of second line
  7004.         DWORD    pointer to third line of message
  7005.         WORD    length of third line
  7006. Return: ???
  7007.     STACK unchanged
  7008. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  7009. --------b-60----DI0F0A-----------------------
  7010. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  7011.     DI = 0F0Ah
  7012.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7013. Return: ???
  7014.     STACK unchanged
  7015. SeeAlso: INT 60/DI=0F0Bh
  7016. --------b-60----DI0F0B-----------------------
  7017. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  7018.     DI = 0F0Bh
  7019.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7020. Return: ???
  7021.     STACK unchanged
  7022. SeeAlso: INT 60/DI=0F0Ah
  7023. --------b-60----DI0F0C-----------------------
  7024. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  7025.     DI = 0F0Ch
  7026.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7027.         ???
  7028. Return: ???
  7029.     STACK unchanged
  7030. --------b-60----DI0F0D-----------------------
  7031. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  7032.     DI = 0F0Dh
  7033.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7034.         DWORD    pointer to ???
  7035. Return: DX:AX -> ???
  7036.     STACK unchanged
  7037. --------b-60----DI0F0E-----------------------
  7038. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  7039.     DI = 0F0Eh
  7040.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7041.         DWORD    pointer to ???
  7042. Return: DX:AX -> ???
  7043.     STACK unchanged
  7044. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7045. --------b-60----DI1005-----------------------
  7046. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  7047.     DI = 1005h
  7048.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7049. Return: ???
  7050.     STACK unchanged
  7051. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  7052. --------b-60----DI1200-----------------------
  7053. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  7054.     DI = 1200h
  7055.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7056.         DWORD    pointer to ???
  7057. Return: ???
  7058.     STACK unchanged
  7059. --------b-60----DI1201-----------------------
  7060. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  7061.     DI = 1201h
  7062.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7063.         WORD    ???
  7064. Return: DX:AX -> ???
  7065.     STACK unchanged
  7066. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7067. --------b-60----DI1202-----------------------
  7068. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  7069.     DI = 1202h
  7070.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7071. Return: DX:AX -> ???
  7072.     STACK unchanged
  7073. --------b-60----DI1203-----------------------
  7074. INT 60 u - HP 95LX System Manager - "INIT_SYSMGR_RSRCS"
  7075.     DI = 1203h
  7076.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7077. Return: ???
  7078.     STACK unchanged
  7079. --------b-60----DI1300-----------------------
  7080. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  7081.     DI = 1300h
  7082.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7083.         DWORD    pointer to ???
  7084.         DWORD    pointer to ???
  7085.         WORD    ???
  7086. Return: ???
  7087.     STACK unchanged
  7088. --------b-60----DI1301-----------------------
  7089. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  7090.     DI = 1301h
  7091.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7092.         DWORD    pointer to ???
  7093. Return: ???
  7094.     STACK unchanged
  7095. --------b-60----DI1302-----------------------
  7096. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  7097.     DI = 1302h
  7098.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7099.         DWORD    pointer to ???
  7100.         WORD    ???
  7101. Return: ???
  7102.     STACK unchanged
  7103. --------b-60----DI1303-----------------------
  7104. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  7105.     DI = 1303h
  7106.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7107.         DWORD    pointer to ???
  7108. Return: ???
  7109.     STACK unchanged
  7110. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7111. --------b-60----DI1400-----------------------
  7112. INT 60 u - HP 95LX System Manager - "M_ColInit"
  7113.     DI = 1400h
  7114.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7115. Return: AX = ???
  7116.     STACK unchanged
  7117. --------b-60----DI1401-----------------------
  7118. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  7119.     DI = 1401h
  7120.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7121.         DWORD    pointer to ???
  7122.         WORD    ???
  7123.         DWORD    pointer to ???
  7124.         WORD    ???
  7125. Return: ???
  7126.     STACK unchanged
  7127. --------b-60----DI1402-----------------------
  7128. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  7129.     DI = 1402h
  7130.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7131.         ???
  7132. Return: ???
  7133.     STACK unchanged
  7134. --------b-60----DI1403-----------------------
  7135. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  7136.     DI = 1403h
  7137.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7138.         ???
  7139. Return: ???
  7140.     STACK unchanged
  7141. --------b-60----DI1404-----------------------
  7142. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  7143.     DI = 1404h
  7144.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7145.         DWORD    pointer to ???
  7146.         WORD    ???
  7147. Return: ???
  7148.     STACK unchanged
  7149. --------b-60----DI1405-----------------------
  7150. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  7151.     DI = 1405h
  7152.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7153.         DWORD    pointer to ???
  7154.         WORD    ???
  7155.         DWORD    pointer to ???
  7156.         WORD    ???
  7157.         WORD    ???
  7158. Return: ???
  7159.     STACK unchanged
  7160. --------b-60----DI1406-----------------------
  7161. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  7162.     DI = 1406h
  7163.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7164.         DWORD    pointer to ???
  7165.         WORD    ???
  7166. Return: ???
  7167.     STACK unchanged
  7168. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7169. --------b-60----DI1500-----------------------
  7170. INT 60 u - HP 95LX System Manager - "GrDispInit"
  7171.     DI = 1500h
  7172.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7173.         ???
  7174. Return: ???
  7175.     STACK unchanged
  7176. --------b-60----DI1501-----------------------
  7177. INT 60 u - HP 95LX System Manager - "GrDispClear"
  7178.     DI = 1501h
  7179.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7180.         ???
  7181. Return: ???
  7182.     STACK unchanged
  7183. --------b-60----DI1502-----------------------
  7184. INT 60 u - HP 95LX System Manager - "GrDispDot"
  7185.     DI = 1502h
  7186.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7187.         ???
  7188. Return: ???
  7189.     STACK unchanged
  7190. --------b-60----DI1503-----------------------
  7191. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  7192.     DI = 1503h
  7193.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7194.         ???
  7195. Return: ???
  7196.     STACK unchanged
  7197. --------b-60----DI1504-----------------------
  7198. INT 60 u - HP 95LX System Manager - "GrDispFill"
  7199.     DI = 1504h
  7200.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7201.         ???
  7202. Return: ???
  7203.     STACK unchanged
  7204. --------b-60----DI1505-----------------------
  7205. INT 60 u - HP 95LX System Manager - "GrDispRead"
  7206.     DI = 1505h
  7207.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7208.         ???
  7209. Return: ???
  7210.     STACK unchanged
  7211. --------b-60----DI1506-----------------------
  7212. INT 60 u - HP 95LX System Manager - "GrDispString"
  7213.     DI = 1506h
  7214.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7215.         ???
  7216. Return: ???
  7217.     STACK unchanged
  7218. --------b-60----DI1507-----------------------
  7219. INT 60 u - HP 95LX System Manager - "GrDispPan"
  7220.     DI = 1507h
  7221.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7222.         ???
  7223. Return: ???
  7224.     STACK unchanged
  7225. --------b-60----DI1508-----------------------
  7226. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  7227.     DI = 1508h
  7228.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7229.         ???
  7230. Return: ???
  7231.     STACK unchanged
  7232. --------b-60----DI1509-----------------------
  7233. INT 60 u - HP 95LX System Manager - "GrDispSave"
  7234.     DI = 1509h
  7235.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7236.         ???
  7237. Return: ???
  7238.     STACK unchanged
  7239. --------b-60----DI150A-----------------------
  7240. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  7241.     DI = 150Ah
  7242.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7243.         ???
  7244. Return: ???
  7245.     STACK unchanged
  7246. --------b-60----DI150B-----------------------
  7247. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  7248.     DI = 150Bh
  7249.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7250.         ???
  7251. Return: ???
  7252.     STACK unchanged
  7253. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7254. --------b-60----DI1604-----------------------
  7255. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  7256.     DI = 1604h
  7257.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7258.         ???
  7259. Return: ???
  7260.     STACK unchanged
  7261. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7262. --------G-6000-------------------------------
  7263. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  7264.     AH = 00h
  7265. Return: AX = 0000h    profiling is off
  7266.         otherwise profiling is on
  7267. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  7268. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  7269. --------G-6000-------------------------------
  7270. INT 60 - MDEBUG - GET STATUS
  7271.     AH = 00h
  7272.     DS:SI -> password or a null byte
  7273. Return: AX = return code
  7274.         FFFEh password is invalid
  7275.         FFFDh display mode is invalid
  7276.        else successful
  7277.         ES = value of the monitor register SE
  7278.         DI = value of the monitor register OF
  7279.         CH = monitor color
  7280.         CL = interpreter color
  7281.         BH = monitor start line
  7282.         BL = interpreter start line
  7283.         AH = makecode of the hotkey
  7284.         AL = ASCII code of the hotkey
  7285.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  7286.             hotkey (coded as for the keyboard flag at 0040h:0017h)
  7287.         DH = basic process number for the communication with drivers
  7288.             process number for the display driver, DH+1 = process
  7289.             number for the command driver(s)
  7290.     DS:SI -> MDEBUG identification table
  7291. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  7292.       Schemmer, including a memory monitor, an interpreter, and a
  7293.       disassembler
  7294. Notes:    MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  7295.       through INT 67; the interrupt handler is preceded by the signature
  7296.       "USERINT" and is not chained
  7297.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  7298.       passwords are active; enough stack space must be provided for an
  7299.       INT 10h call (which MDEBUG uses while prompting for the password)
  7300. SeeAlso: AH=02h"MDEBUG"
  7301. Index:    hotkeys;MDEBUG
  7302.  
  7303. Format of MDEBUG identification table:
  7304. Offset    Size    Description
  7305.  -2    WORD    entry offset
  7306.  00h    WORD    CS of MDEBUG
  7307.  02h    DWORD    old INT 08h vector
  7308.  06h    DWORD    old INT 09h vector
  7309.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  7310.  0Eh    BYTE    length of version string
  7311.  0Fh  N BYTEs    version string
  7312. --------G-6001-------------------------------
  7313. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  7314.     AH = 01h
  7315.     DS:SI -> password or a null byte
  7316. Return: AX = return code
  7317.         FFFEh password is invalid
  7318.         FFFDh display mode is invalid
  7319.        else successful
  7320.         ES:DI point to the help registers of MDEBUG
  7321.            ES:DI-02h  -> R0 (WORD)
  7322.            ES:DI      -> R1 (WORD)
  7323.            ES:DI+02h  -> R2 (WORD)
  7324.            ES:DI+04h  -> R3 (WORD)
  7325.            ...
  7326.            ES:DI+0Eh  -> R8 (WORD)
  7327. --------G-6001-------------------------------
  7328. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  7329.     AH = 01h
  7330. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  7331. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  7332. --------N-6001FF-----------------------------
  7333. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  7334.     AX = 01FFh
  7335.     BX = handle returned by function 02h
  7336. Return: CF set on error
  7337.         DH = error code (see below)
  7338.     CF clear if successful
  7339.         BX = version
  7340.         CH = network interface class (see below)
  7341.         DX = interface type (see below)
  7342.         CL = number
  7343.         DS:SI -> name
  7344.         AL = driver functions supported
  7345.         01h basic
  7346.         02h basic and extended
  7347.         05h basic and high-performance
  7348.         06h basic, high-performance, and extended
  7349.         FFh not installed
  7350. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  7351.       the packet driver specification
  7352.  
  7353. Values for error code:
  7354.  01h "BAD_HANDLE"    invalid handle number
  7355.  02h "NO_CLASS"        no interfaces of the specified class found
  7356.  03h "NO_TYPE"        no interfaces of the specified type found
  7357.  04h "NO_NUMBER"    no interfaces of the specified number found
  7358.  05h "BAD_TYPE"        bad packet type
  7359.  06h "NO_MULTICAST"    interface does not support multicast messages
  7360.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  7361.  08h "BAD_MODE"        invalid receiver mode
  7362.  09h "NO_SPACE"        insufficient space
  7363.  0Ah "TYPE_INUSE"    type accessed but never released
  7364.  0Bh "BAD_COMMAND"    bad command
  7365.  0Ch "CANT_SEND"    packet could not be sent
  7366.  0Dh "CANT_SET"        hardware address could not be changed
  7367.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  7368.  0Fh "CANT_RESET"    could not reset interface
  7369.  
  7370. Values for Network Interface classes/types:
  7371.     Class 01h  Ethernet/IEEE 802.3
  7372.     01h 3COM 3C500/3C501
  7373.     02h 3COM 3C505
  7374.     03h MICOM-Interlan NI5010
  7375.     04h BICC Data Networks 4110
  7376.     05h BICC Data Networks 4117
  7377.     06h MICOM-Interlan NP600
  7378.     08h Ungermann-Bass PC-NIC
  7379.     09h Univation NC-516
  7380.     0Ah TRW PC-2000
  7381.     0Bh MICOM-Interlan NI5210
  7382.     0Ch 3COM 3C503
  7383.     0Dh 3COM 3C523
  7384.     0Eh Western Digital WD8003
  7385.     0Fh Spider Systems S4
  7386.     10h Torus Frame Level
  7387.     11h 10Net Communications
  7388.     12h Gateway PC-bus
  7389.     13h Gateway AT-bus
  7390.     14h Gateway MCA-bus
  7391.     15h IMC PCnic
  7392.     16h IMC PCnic II
  7393.     17h IMC PCnic 8-bit
  7394.     18h Tigan Communications
  7395.     19h Micromatic Research
  7396.     1Ah Clarkson "Multiplexor"
  7397.     1Bh D-Link 8-bit
  7398.     1Ch D-Link 16-bit
  7399.     1Dh D-Link PS/2
  7400.     1Eh Research Machines 8
  7401.     1Fh Research Machines 16
  7402.     20h Research Machines MCA
  7403.     21h Radix Microsystems EXM1 16-bit
  7404.     22h Interlan Ni9210
  7405.     23h Interlan Ni6510
  7406.     24h Vestra LANMASTER 16-bit
  7407.     25h Vestra LANMASTER 8-bit
  7408.     26h Allied Telesis PC/XT/AT
  7409.     27h Allied Telesis NEC PC-98
  7410.     28h Allied Telesis Fujitsu FMR
  7411.     29h Ungermann-Bass NIC/PS2
  7412.     2Ah Tiara LANCard/E AT
  7413.     2Bh Tiara LANCard/E MC
  7414.     2Ch Tiara LANCard/E TP
  7415.     2Dh Spider Communications SpiderComm 8
  7416.     2Eh Spider Communications SpiderComm 16
  7417.     2Fh AT&T Starlan NAU
  7418.     30h AT&T Starlan-10 NAU
  7419.     31h AT&T Ethernet NAU
  7420.     32h Intel smart card
  7421.     33h Xircom Packet Adapter
  7422.     34h Aquila Ethernet
  7423.     35h Novell NE1000
  7424.     36h Novell NE2000
  7425.     37h SMC PC-510
  7426.     38h AT&T Fiber NAU
  7427.     39h NDIS to Packet Driver adapter
  7428.     3Ah Racal-InterLan ES3210
  7429.     3Bh General Systems ISDN simulated Ethernet
  7430.     3Ch Hewlett-Packard
  7431.     3Dh IMC EtherNic-8
  7432.     3Eh IMC EtherNic-16
  7433.     3Fh IMC EtherNic-MCA
  7434.     40h NetWorth EtherNext
  7435.     41h Dataco Scanet
  7436.     42h DEC DEPCA
  7437.     43h C-Net
  7438.     44h Gandalf LANLine
  7439.     45h Apricot built-in
  7440.     46h David Systems Ether-T
  7441.     47h ODI to Packet Driver adapter
  7442.     48h AMD Am21110-16
  7443.     49h Intel ICD Network controller family
  7444.     4Ah Intel ICD PCL2
  7445.     4Bh Intel ICD PCL2A
  7446.     4Ch AT&T LANPacer
  7447.     4Dh AT&T LANPacer+
  7448.     4Eh AT&T EVB
  7449.     4Fh AT&T StarStation
  7450.     50h SLIP simulated ethernet
  7451.     51h Racal-Interlan NIA310
  7452.     52h Racal-Interlan NISE
  7453.     53h Racal-Interlan NISE30
  7454.     54h Racal-Interlan NI6610
  7455.     55h Ethernet over IP/UDP
  7456.     56h ICL EtherTeam 16
  7457.     57h David Systems
  7458.     58h NCR WaveLAN
  7459.     59h Thomas Contrad TC5045
  7460.     5Ah Russ Nelson's Parallel Port driver
  7461.     5Bh Intell EtherExpress 16
  7462.     5Ch IBMTOKEN
  7463.     5Dh Zenith Z-Note
  7464.     5Eh 3Com 3C509
  7465.     5Fh Mylex LNE390
  7466.     60h Madge Smart Ringnode
  7467.     61h Novell NE2100
  7468.     62h Allied Telesis 1500
  7469.     63h Allied Telesis 1700
  7470.     64h Fujitsu EtherCoupler
  7471.     Class 02h  ProNET-10
  7472.     01h Proteon p1300
  7473.     02h Proteon p1800
  7474.     Class 03h  IEEE 802.5/ProNet-4 (without expanded RIFs)
  7475.     01h IBM Token-Ring Adapter
  7476.     02h Proteon p1340
  7477.     03h Proteon p1344
  7478.     04h Gateway PC-bus
  7479.     05h Gateway AT-bus
  7480.     06h Gateway MCA-bus
  7481.     07h Madge board
  7482.     39h NDIS to Packet Driver adapter
  7483.     47h ODI to Packet Driver adapter
  7484.     Class 04h  Omninet
  7485.     Class 05h  Appletalk
  7486.     01h ATALK.SYS adapter
  7487.     Class 06h  Serial Line
  7488.     01h Clarkson 8250-SLIP
  7489.     02h Clarkson "Multiplexor"
  7490.     03h Eicon Technologies
  7491.     Class 07h  StarLAN (subsumed by Ethernet class)
  7492.     Class 08h  ARCnet
  7493.     01h Datapoint RIM
  7494.     Class 09h  AX.25
  7495.     01h Ottawa PI card
  7496.     02h Eicon Technologies
  7497.     Class 0Ah  KISS
  7498.     Class 0Bh  IEEE 802.3 with 802.2 headers
  7499.     types same as for class 01h
  7500.     Class 0Ch  FDDI with 802.2 headers
  7501.     01h Western Digital
  7502.     02h Frontier Technology
  7503.     Class 0Dh  Internet X.25
  7504.     01h Western Digital
  7505.     02h Frontier Technology
  7506.     03h Emerging Technologies
  7507.     04h The Software Forge
  7508.     05h Link Data Intelligent X.25
  7509.     06h Eicon Technologies
  7510.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  7511.     01h NT LANSTAR/8
  7512.     02h NT LANSTAR/MC
  7513.     Class 0Fh  SLFP (MIT serial specification)
  7514.     01h MERIT
  7515.     Class 10h  PPP (Point-to-Point Protocol)
  7516.     01h 8250/16550 UART
  7517.     02h Niwot Networks synch
  7518.     03h Eicon Technologies
  7519.     Class 11h  802.5 with expanded RIFs
  7520.     types same as for class 3
  7521.     Class 12h  reserved for LCP/NCPs
  7522. Note: class and type numbers are cleared through FTP Software
  7523. --------G-6002-------------------------------
  7524. INT 60 - MDEBUG - SET STATUS
  7525.     AH = 02h
  7526.     DS:SI -> password or a null byte
  7527.     ES = new value for the register SE
  7528.     DI = new value for the register OF
  7529.     CH = new monitor color if nonzero
  7530.     CL = new interpreter color if nonzero
  7531.     BH = new monitor start line if nonzero
  7532.     BL = new interpreter start line if nonzero
  7533.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  7534.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  7535.         if nonzero
  7536.     DH = if nonzero, new basic process number for communication with the
  7537.         drivers (DH = multiplex number for the display driver,
  7538.         DH+1 = multiplex number for the command driver or drivers)
  7539. Return: AX = return code
  7540.         FFFFh call not allowed
  7541.         FFFEh password is invalid
  7542.         FFFDh display mode is invalid
  7543.         0000h successful, status changed
  7544.        else AL = error reasons (see below)
  7545. Note:    the values of the registers SE and OF are always changed, the other
  7546.       values are only changed if they are valid
  7547. SeeAlso: AH=00h"MDEBUG"
  7548. Index:    hotkeys;MDEBUG
  7549.  
  7550. Bitfields for error reasons:
  7551.  bit 0    invalid monitor start line
  7552.  bit 1    invalid interpreter start line
  7553.  bit 2    invalid hotkey
  7554.  bit 3    invalid process number
  7555.  bits 4-7 reserved
  7556. --------N-6002-------------------------------
  7557. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  7558.     AH = 02h
  7559.     AL = interface class
  7560.     BX = interface type
  7561.     DL = interface number
  7562.     DS:SI -> type
  7563.     CX = length of type (0000h for all packets)
  7564.     ES:DI -> receiver
  7565. Return: CF set on error
  7566.         DH = error code (see AX=01FFh)
  7567.     CF clear if successful
  7568.         AX = handle
  7569. SeeAlso: AH=03h"FTP"
  7570.  
  7571. Receiver is called with:
  7572.     AX = subfunction
  7573.         00h get packet buffer
  7574.         DX = lookahead length (v1.10+)
  7575.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  7576.         DI = error flags (class dependent) (v1.10+)
  7577.         Return: ES:DI -> packet buffer
  7578.                 0000h:0000h means throw away packet
  7579.             CX = size of buffer (v1.10+), may be smaller than
  7580.                 incoming data
  7581.         01h copy completed
  7582.         DS:SI -> buffer
  7583.         CX = bytes actually copied (v1.10+)
  7584.     BX = handle
  7585.     CX = buffer length
  7586. when a packet is received
  7587. --------G-6002-------------------------------
  7588. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  7589.     AH = 02h
  7590. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  7591. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  7592. --------G-6003-------------------------------
  7593. INT 60 - MDEBUG - POP UP
  7594.     AH = 03h
  7595.     DS:SI -> password or a null byte
  7596.     ES -> new value for the register SE
  7597.     DI -> new value for the register OF
  7598. Return: AX = return code
  7599.         FFFFh call not allowed
  7600.         FFFEh password is invalid
  7601.         FFFDh display mode is invalid
  7602.        else successful
  7603. SeeAlso: AH=04h"MDEBUG"
  7604. --------N-6003-------------------------------
  7605. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  7606.     AH = 03h
  7607.     BX = handle
  7608. Return: CF set on error
  7609.        DH = error code (see AX=01FFh)
  7610.     CF clear if successful
  7611. SeeAlso: AH=02h"FTP"
  7612. --------G-6003-------------------------------
  7613. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  7614.     AH = 03h
  7615. Return: ES:BX -> profiling table
  7616. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  7617. SeeAlso: AH=04h"SYS_PROF"
  7618. --------N-6004-------------------------------
  7619. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  7620.     AH = 04h
  7621.     DS:SI -> buffer
  7622.     CX = length
  7623. Return: CF set on error
  7624.         DH = error code (see AX=01FFh)
  7625.     CF clear if successful
  7626. Note:    the buffer may be modified immediately upon return from this call
  7627. SeeAlso: AH=0Bh
  7628. --------G-6004-------------------------------
  7629. INT 60 - MDEBUG - POP UP
  7630.     AH = 04h
  7631.     DS:SI -> password or a null byte
  7632. Return: AX = return code
  7633.         FFFFh call not allowed
  7634.         FFFEh password is invalid
  7635.         FFFDh display mode is invalid
  7636.        else successful
  7637. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  7638. --------G-6004-------------------------------
  7639. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  7640.     AH = 04h
  7641. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  7642. SeeAlso: AH=03h"SYS_PROF"
  7643. --------N-6005-------------------------------
  7644. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  7645.     AH = 05h
  7646.     BX = handle (optional for v1.10+)
  7647. Return: CF set on error
  7648.        DH = error code (see AX=01FFh)
  7649.     CF clear if successful
  7650. --------G-6005-------------------------------
  7651. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  7652.     AH = 05h
  7653.     DS:SI -> password or a null byte
  7654.     BL = new value for the semaphor of MDEBUG
  7655.          00h  enable popup of MDEBUG
  7656.          else disable popup of MDEBUG
  7657. Return: AX = return code
  7658.         FFFEh password is invalid
  7659.         FFFDh display mode is invalid
  7660.        else successful
  7661.         BL = old value of the semaphor of MDEBUG
  7662.         BH = old value of the INT 08h semaphor
  7663.             (this semaphor is always reset after this function)
  7664. --------N-6006-------------------------------
  7665. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  7666.     AH = 06h
  7667.     BX = handle (optional for v1.10+)
  7668.     ES:DI -> buffer
  7669.     CX = length
  7670. Return: CF set on error
  7671.         DH = error code (see AX=01FFh)
  7672.     CF clear if successful
  7673.         CX = length
  7674. Note:    copies the local net address associated with the handle into the buffer
  7675. --------G-6006-------------------------------
  7676. INT 60 - MDEBUG - GET PASSWORD STATUS
  7677.     AH = 06h
  7678. Return: AL = status
  7679.         00h password inactive
  7680.         01h password active
  7681. --------N-6007-------------------------------
  7682. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  7683.     AH = 07h
  7684.     BX = handle (optional for v1.10+)
  7685. Return: CF set on error
  7686.         DH = error code (see AX=01FFh)
  7687.     CF clear if successful
  7688. --------G-6007-------------------------------
  7689. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  7690.     AH = 07h
  7691. Return: AL = active part for the next popup session of MDEBUG:
  7692.         bit 0: the next popup session will start in the interpreter rather
  7693.             than in the monitor
  7694.         bit 1: the next popup session will sart in the online-help
  7695. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  7696. --------G-6008-------------------------------
  7697. INT 60 - MDEBUG - UNUSED
  7698.     AH = 08h-FFh
  7699. Return: AX = FFFCh
  7700. --------N-600A-------------------------------
  7701. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  7702.     AH = 0Ah
  7703. Return: CF set on error
  7704.         DH = error code (0Bh) (see AX=01FFh)
  7705.     CF clear if successful
  7706.         ES:DI -> parameter table (see below)
  7707.  
  7708. Format of parameter table:
  7709. Offset    Size    Description
  7710.  00h    BYTE    major revision of packet driver spec driver conforms to
  7711.  01h    BYTE    minor revision of packet driver spec
  7712.  02h    BYTE    length of this structure in bytes
  7713.  03h    BYTE    length of a MAC-layer address
  7714.  04h    WORD    maximum transfer unit, including MAC headers
  7715.  06h    WORD    buffer size for multicast addr
  7716.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  7717.  0Ah    WORD    number of transmit buffers
  7718.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  7719. --------N-600B-------------------------------
  7720. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  7721.     AH = 0Bh
  7722.     DS:SI -> buffer
  7723.     CX = length of buffer
  7724.     ES:DI -> FAR function to call when buffer becomes available
  7725. Return: CF set on error
  7726.         DH = error code (0Bh,0Ch) (see AX=01FFh)
  7727.     CF clear if successful
  7728. Notes:    unlike function 04h, the buffer is not available for modification as
  7729.       soon as the call returns; the buffer may be queued by the driver and
  7730.       not processed until later
  7731.     this function has been dropped from v1.10+ of the specification and
  7732.       replaced by function 0Ch
  7733. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  7734.  
  7735. Completion function called with:
  7736.     AX = result
  7737.         00h copy OK
  7738.         nonzero error
  7739.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  7740. --------N-600C-------------------------------
  7741. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  7742.     AH = 0Ch
  7743.     ES:DI -> pointer to IOCB
  7744. Return: CF set on error
  7745.         DH = error code (see AX=01FFh)
  7746.     CF clear if successful
  7747. SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
  7748.  
  7749. Format of IOCB:
  7750. Offset    Size    Description
  7751.  00h    DWORD    pointer to buffer
  7752.  04h    WORD    length of buffer
  7753.  06h    BYTE    flags
  7754.         bit 0: packet driver is finished with IOCB
  7755.         bit 1: application requests upcall when driver completes
  7756.  07h    DWORD    function address for upcall
  7757.  0Bh  4 BYTEs    future gather write
  7758.  0Fh    BYTE    ???
  7759.  10h  8 BYTEs    private driver workspace
  7760.  
  7761. Completion function called with:
  7762.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  7763. --------N-600C-------------------------------
  7764. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  7765.     AH = 0Ch
  7766. Return: AL = status
  7767.         00h successful
  7768.         ES:SI -> 6-byte station address
  7769.         02h semaphore service is unavailable
  7770. --------N-600D-------------------------------
  7771. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  7772.     AH = 0Dh
  7773.     ES:DI -> IOCB
  7774. Return: CF set on error
  7775.         DH = error code (see AX=01FFh)
  7776.     CF clear if successful
  7777. SeeAlso: AH=0Ch"Packet Driver"
  7778. --------N-6011-------------------------------
  7779. INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
  7780.     AH = 11h
  7781.     AL = drive number or 0
  7782.     DX = number of seconds to wait
  7783.     ES:SI = Ethernet address or 0
  7784.     DS:BX -> 31-byte ASCIZ semaphore name
  7785. Return: AL = status (see below)
  7786. SeeAlso: AH=12h,AH=13h
  7787.  
  7788. Values for status:
  7789.  00h    successful
  7790.  01h    timeout
  7791.  02h    server not responding
  7792.  03h    invalid semaphore name
  7793.  04h    semaphore list is full
  7794.  05h    invalid drive ID
  7795.  06h    invalid Ethernet address
  7796.  07h    not logged in
  7797.  08h    write to network failed
  7798.  09h    semaphore already logged for this CPU
  7799. --------N-6012-------------------------------
  7800. INT 60 - 3com, 10NET, Banyan VINES - LOCK
  7801.     AH = 12h
  7802.     AL = drive number or 00h
  7803.     ES:SI = Ethernet address or 0000h:0000h
  7804.     DS:BX -> 31-byte ASCIZ semaphore name
  7805. Return: AL = status (see also AH=11h)
  7806.         01h semaphore currently locked by another PC
  7807. Note:    unlike function 11h, this function returns immediately
  7808. SeeAlso: AH=11h,AH=13h
  7809. --------N-6013-------------------------------
  7810. INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
  7811.     AH = 13h
  7812.     AL = drive number or 00h
  7813.     ES:SI = Ethernet address or 0000h:0000h
  7814.     DS:BX -> 31-byte ASCIZ semaphore name
  7815. Return: AL = status (see also AH=11h)
  7816.         01h semaphore not locked
  7817. SeeAlso: AH=11h,AH=12h
  7818. --------N-6014-------------------------------
  7819. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  7820.     AH = 14h
  7821.     BX = handle (optional for v1.10+)
  7822.     CX = mode
  7823.         01h turn off receiver
  7824.         02h receive only packets sent to this interface
  7825.         03h mode 2 plus broadcast packets
  7826.         04h mode 3 plus limited multicast packets
  7827.         05h mode 3 plus all multicast packets
  7828.         06h all packets
  7829.         07h raw mode for serial line only (v1.10+)
  7830. Return: CF set on error
  7831.        DH = error code (01h,08h) (see AX=01FFh)
  7832.     CF clear if successful
  7833. SeeAlso: AH=15h
  7834. --------N-6015-------------------------------
  7835. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  7836.     AH = 15h
  7837.     BX = handle (optional for v1.10+)
  7838. Return: CF set on error
  7839.         DH = error code (01h) (see AX=01FFh)
  7840.     CF clear if successful
  7841.         AX = mode
  7842. SeeAlso: AH=14h
  7843. --------N-6016-------------------------------
  7844. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  7845.     AH = 16h
  7846.     ES:DI -> multicast list
  7847.     CX = length of list in bytes
  7848. Return: CF set on error
  7849.         DH = error code (06h,09h,0Eh) (see AX=01FFh)
  7850.     CF clear if successful
  7851. SeeAlso: AH=17h
  7852. --------N-6017-------------------------------
  7853. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  7854.     AH = 17h
  7855. Return: CF set on error
  7856.         DH = error code (06h,09h) (see AX=01FFh)
  7857.     CF clear if successful
  7858.         ES:DI -> multicast addresses (do not modify)
  7859.         CX = bytes of multicast addresses currently in use
  7860. SeeAlso: AH=16h
  7861. --------N-6018-------------------------------
  7862. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  7863.     AH = 18h
  7864.     BX = handle (optional for v1.10+)
  7865. Return: CF set on error
  7866.         DH = error code (01h) (see AX=01FFh)
  7867.     CF clear if successful
  7868.         DS:SI -> statistics (see below)
  7869.  
  7870. Format of statistics:
  7871. Offset    Size    Description
  7872.  00h    DWORD    packets in
  7873.  04h    DWORD    packets out
  7874.  08h    DWORD    bytes in
  7875.  0Ch    DWORD    bytes out
  7876.  10h    DWORD    errors in
  7877.  14h    DWORD    errors out
  7878.  18h    DWORD    packets dropped
  7879. --------N-6019-------------------------------
  7880. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  7881.     AH = 19h
  7882.     ES:DI -> address
  7883.     CX = length of address
  7884. Return: CF set on error
  7885.         DH = error code (0Dh,0Eh) (see AX=01FFh)
  7886.     CF clear if successful
  7887.         CX = length
  7888. --------N-601A-------------------------------
  7889. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  7890.     AH = 1Ah
  7891.     DS:SI -> buffer
  7892.     CX = length of buffer
  7893. Return: CF set on error
  7894.         DH = error code (see AX=01FFh)
  7895.     CF clear if successful
  7896. SeeAlso: AH=1Ch
  7897. --------N-601B-------------------------------
  7898. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  7899.     AH = 1Bh
  7900. Return: CF set on error
  7901.         DH = error code (see AX=01FFh)
  7902.     CF clear if successful
  7903. SeeAlso: AH=1Ch
  7904. --------N-601C-------------------------------
  7905. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  7906.     AH = 1Ch
  7907.     DS:SI -> buffer
  7908.     CX = length of buffer
  7909.     DX = timeout in clock ticks
  7910. Return: CF set on error
  7911.         DH = error code (see AX=01FFh)
  7912.     CF clear if successful
  7913.         CX = number of bytes transferred to buffer
  7914. SeeAlso: AH=1Ah,AH=1Bh
  7915. --------a-60AD-------------------------------
  7916. INT 60 - AccessDOS - API
  7917.     AH = ADh
  7918.     AL = function
  7919.         E1h ???
  7920.         Return: AX = ???
  7921.         E2h get configuration
  7922.         Return: BX:AX -> configuration data
  7923. Program: AccessDOS is a public domain TSR developed at The Trace Research and
  7924.       Development Center which provides extensions for keyboard, mouse,
  7925.       and sound access by the visually, hearing, or motor-control
  7926.       impaired.
  7927. Note:    INT 60 is the default vector; AccessDOS will use the first 0000h:0000h
  7928.       vector in the range 60h through 66h.
  7929. --------N-60E9-------------------------------
  7930. INT 60 - FTP Packet Driver - Crynwr Software - AUTOSELECT TRANSCEIVER
  7931.     AH = E9h
  7932.     ???
  7933. Return: ???
  7934. --------!------------------------------------
  7935.