home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / inter42.doc / interrup.i < prev    next >
Encoding:
Text File  |  1994-08-07  |  291.2 KB  |  8,170 lines

  1. Interrupt List, part 9 of 12
  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 #1637)
  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. (Table 1637)
  35. Values for DPMI 1.0 error code:
  36.  0000h-7FFFh DOS error passed through by DPMI
  37.  8001h    unsupported function
  38.  8002h    object in wrong state for function
  39.  8003h    system integrity would be endangered
  40.  8004h    deadlock detected
  41.  8005h    pending serialization request cancelled
  42.  8010h    out of DPMI internal resources
  43.  8011h    descriptor unavailable
  44.  8012h    linear memory unavailable
  45.  8013h    physical memory unavailable
  46.  8014h    backing store unavailable
  47.  8015h    callback unavailable
  48.  8016h    handle unavailable
  49.  8017h    maximum lock count exceeded
  50.  8018h    shared memory already serialized exclusively by another
  51.  8019h    shared memory already serialized shared by another client
  52.  8021h    invalid value for numeric or flag parameter
  53.  8022h    invalid segment selector
  54.  8023h    invalid handle
  55.  8024h    invalid callback
  56.  8025h    invalid linear address
  57.  8026h    request not supported by hardware
  58. --------E-310001-----------------------------
  59. INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
  60.     AX = 0001h
  61.     BX = selector to free
  62. Return: CF clear if successful
  63.     CF set on error
  64.         AX = error code (DPMI 1.0+) (8022h) (see #1637)
  65. Notes:    only one descriptor is freed per call
  66.     the program's initial CS, DS, and SS descriptors may be freed
  67.     (DPMI 1.0+) any segment registers containing the freed selector are
  68.       set to 0000h
  69.     not supported by MS Windows 3.0 in Standard mode
  70. SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
  71. --------E-310002-----------------------------
  72. INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
  73.     AX = 0002h
  74.     BX = real mode segment
  75. Return: CF clear if successful
  76.         AX = selector corresponding to real mode segment (64K limit)
  77.     CF set on error
  78.         AX = error code (DPMI 1.0+) (8011h) (see #1637)
  79. Notes:    multiple calls for the same real mode segment return the same selector
  80.     the returned descriptor can never be modified or freed
  81.     not supported by MS Windows 3.0 in Standard mode
  82. --------E-310003-----------------------------
  83. INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
  84.     AX = 0003h
  85. Return: CF clear
  86.         AX = value to add to get next sequential selector
  87. Notes:    the increment will be a power of two
  88.     not supported by MS Windows 3.0 in Standard mode
  89. SeeAlso: AX=0000h
  90. --------E-310004-----------------------------
  91. INT 31 P - DPMI 0.9+ - LOCK SELECTOR
  92.     AX = 0004h
  93.     BX = selector to lock (prevent paging)
  94. Return: ???
  95. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  96.       specification, this function is called by MS Windows TASKMAN,
  97.       PROGMAN, and KERNEL
  98. SeeAlso: AX=0005h,AX=0600h
  99. --------E-310005-----------------------------
  100. INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
  101.     AX = 0005h
  102.     BX = selector to unlock (permit paging)
  103. Return: ???
  104. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  105.       specification, this function is called by MS Windows TASKMAN,
  106.       PROGMAN, and KERNEL
  107. SeeAlso: AX=0004h,AX=0601h
  108. --------E-310006-----------------------------
  109. INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
  110.     AX = 0006h
  111.     BX = selector
  112. Return: CF clear if successful
  113.         CX:DX = linear base address of segment
  114.     CF set on error
  115.         AX = error code (DPMI 1.0+) (8022h) (see #1637)
  116. Note:    not supported by MS Windows 3.0 in Standard mode
  117. SeeAlso: AX=0007h,INT 21/AX=3504h
  118. --------E-310007-----------------------------
  119. INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
  120.     AX = 0007h
  121.     BX = selector
  122.     CX:DX = linear base address
  123. Return: CF clear if successful
  124.     CF set on error
  125.         AX = error code (DPMI 1.0+) (8022h,8025h) (see #1637)
  126. Notes:    only modify descriptors allocated with INT 31/AX=0000h
  127.     only the low 24 bits of the address will be used by 16-bit DPMI
  128.       implementations even on a 386 or higher
  129.     DPMI 1.0+ automatically reloads any segment registers containing the
  130.       selector being modified
  131.     not supported by MS Windows 3.0 in Standard mode
  132. SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
  133. SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
  134. --------E-310008-----------------------------
  135. INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
  136.     AX = 0008h
  137.     BX = selector
  138.     CX:DX = segment limit
  139. Return: CF clear if successful
  140.     CF set on error
  141.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #1637)
  142. Notes:    CX must be zero for 16-bit DPMI implementations
  143.     limits greater than 1MB must be page aligned (low 12 bits set)
  144.     only modify descriptors allocated with INT 31/AX=0000h
  145.     DPMI 1.0+ automatically reloads any segment registers containing the
  146.       selector being modified
  147.     not supported by MS Windows 3.0 in Standard mode
  148. SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
  149. SeeAlso: INT 2C/AX=0003h
  150. --------E-310009-----------------------------
  151. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
  152.     AX = 0009h
  153.     BX = selector
  154.     CL = access rights/type byte
  155.     CH = 80386 extended rights/type byte (32-bit DPMI implementations only)
  156. Return: CF clear if successful
  157.     CF set on error
  158.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #1637)
  159. Notes:    if the Present bit is clear, CL bits 0-3 may have any value
  160.     DPMI 1.0+ automatically reloads any segment registers containing the
  161.       selector being modified
  162.     not supported by MS Windows 3.0 in Standard mode
  163. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
  164. SeeAlso: INT 2C/AX=0005h
  165. --------E-31000A-----------------------------
  166. INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
  167.     AX = 000Ah
  168.     BX = selector
  169. Return: CF clear if successful
  170.         AX = new data selector
  171.     CF set on error
  172.         AX = error code (DPMI 1.0+) (8011h,8022h) (see #1637)
  173. Notes:    fails if selector in BX is not a code segment or is invalid
  174.     use INT 31/AX=0001h to free new selector
  175.     future changes to the original selector will not be reflected in the
  176.       returned alias selector
  177.     not supported by MS Windows 3.0 in Standard mode
  178. SeeAlso: AX=0001h
  179. --------E-31000B-----------------------------
  180. INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
  181.     AX = 000Bh
  182.     BX = LDT selector
  183.     ES:(E)DI -> 8-byte buffer for copy of descriptor
  184. Return: CF clear if successful
  185.         buffer filled
  186.     CF set on error
  187.         AX = error code (DPMI 1.0+) (8022h) (see #1637)
  188. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  189.     not supported by MS Windows 3.0 in Standard mode
  190. SeeAlso: AX=000Ch
  191. --------E-31000C-----------------------------
  192. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
  193.     AX = 000Ch
  194.     BX = LDT selector
  195.     ES:(E)DI -> 8-byte buffer containing descriptor
  196. Return: CF clear if successful
  197.     CF set on error
  198.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #1637)
  199. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  200.     only modify descriptors allocated with INT 31/AX=0000h
  201.     DPMI 1.0+ automatically reloads any segment registers containing the
  202.       selector being modified
  203.     not supported by MS Windows 3.0 in Standard mode
  204. SeeAlso: AX=000Bh
  205. --------E-31000D-----------------------------
  206. INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
  207.     AX = 000Dh
  208.     BX = LDT selector
  209. Return: CF clear if successful
  210.         descriptor allocated
  211.     CF set on error
  212.         AX = error code (DPMI 1.0+) (8011h,8022h) (see #1637)
  213. Notes:    free descriptor with INT 31/AX=0001h
  214.     the first 16 descriptors (04h-7Ch) are reserved for this function, but
  215.       some may already be in use by other applications under DPMI 0.9;
  216.       DPMI 1.0 guarantees 16 descriptors per client
  217.     not supported by MS Windows 3.0 in Standard mode
  218. SeeAlso: AX=0000h,AX=0001h
  219. --------E-31000E-----------------------------
  220. INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
  221.     AX = 000Eh
  222.     CX = number of descriptors to copy
  223.     ES:(E)DI -> descriptor buffer (see #1638)
  224. Return: CF clear if successful
  225.         descriptors copied
  226.     CF set on error
  227.         AX = error code (8022h) (see #1637)
  228.         CX = number of descriptors successfully copied
  229. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  230.     if the function fails, the first CX descriptors are valid; the
  231.       remainder are not modified
  232. SeeAlso: AX=000Bh,AX=000Fh
  233.  
  234. Format of DPMI descriptor buffer entry (one per descriptor to get):
  235. Offset    Size    Description    (Table 1638)
  236.  00h    WORD    selector (set by client)
  237.  02h    QWORD    descriptor (set by host)
  238. --------E-31000F-----------------------------
  239. INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
  240.     AX = 000Fh
  241.     CX = number of descriptors to copy
  242.     ES:(E)DI -> descriptor buffer (see #1639)
  243. Return: CF clear if successful
  244.         descriptors copied
  245.     CF set on error
  246.         AX = error code (8021h,8022h,8025h) (see #1637)
  247.         CX = number of descriptors successfully copied
  248. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  249.     if the function fails, the first CX descriptors are valid; the
  250.       remainder are not modified
  251.     DPMI 1.0+ automatically reloads any segment registers containing a
  252.       selector being modified
  253. SeeAlso: AX=000Ch,AX=000Eh
  254.  
  255. Format of DPMI descriptor buffer entry (one per descriptor to set):
  256. Offset    Size    Description    (Table 1639)
  257.  00h    WORD    selector
  258.  02h    QWORD    descriptor
  259. --------E-310100-----------------------------
  260. INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
  261.     AX = 0100h
  262.     BX = number of paragraphs to allocate
  263. Return: CF clear if successful
  264.         AX = real mode segment of allocated block
  265.         DX = first selector for allocated block
  266.     CF set on error
  267.         AX = DOS error code (07h,08h) (see #0789 at INT 21/AH=59h)
  268.         (DPMI 1.0+) DPMI error code (8011h) (see #1637)
  269.         BX = size (in paragraphs) of largest available block
  270. Notes:    multiple contiguous selectors are allocated for blocks of more than 64K
  271.       if the caller is a 16-bit program
  272.     never modify or deallocate returned descriptors
  273.     not supported by MS Windows 3.0 in Standard mode
  274. SeeAlso: AX=0101h,AX=0501h
  275. --------E-310101-----------------------------
  276. INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
  277.     AX = 0101h
  278.     DX = selector of block
  279. Return: CF set if successful
  280.     CF set on error
  281.         AX = DOS error code (07h,09h) (see #0789 at INT 21/AH=59h)
  282. Notes:    all descriptors allocated for the block are automatically freed
  283.     DPMI 1.0+ automatically zeros any segment registers containing a
  284.       selector freed by this function
  285.     not supported by MS Windows 3.0 in Standard mode
  286. SeeAlso: AX=0100h,AX=0102h,AX=0502h
  287. --------E-310102-----------------------------
  288. INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
  289.     AX = 0102h
  290.     BX = new block size in paragraphs
  291.     DX = selector of block
  292. Return: CF clear if successful
  293.     CF set on error
  294.         AX = DOS error code (07h,08h,09h) (see #0789 at INT 21/AH=59h)
  295.         (DPMI 1.0+) DPMI error code (8011h,8022h) (see #1637)
  296.         BX = maximum block size (in paragraphs) possible
  297. Notes:    increasing the size of a block past a 64K boundary will fail if the
  298.       next descriptor in the LDT is already in use
  299.     shrinking a block past a 64K boundary will cause some selectors to be
  300.       freed; DPMI 1.0+ automatically zeros any segment registers containing
  301.       a selector freed by this function
  302.     not supported by MS Windows 3.0 in Standard mode
  303. SeeAlso: AX=0100h
  304. --------E-310200-----------------------------
  305. INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
  306.     AX = 0200h
  307.     BL = interrupt number
  308. Return: CF clear
  309.     CX:DX = segment:offset of real mode interrupt handler
  310. Note:    the DPMI implementation is required to support all 256 vectors
  311. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
  312. --------E-310201-----------------------------
  313. INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
  314.     AX = 0201h
  315.     BL = interrupt number
  316.     CX:DX = segment:offset of real mode handler
  317. Return: CF clear
  318. Note:    all memory that may be touched by a hardware interrupt handler must be
  319.       locked down with INT 31/AX=0600h
  320. SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
  321. --------E-310202-----------------------------
  322. INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
  323.     AX = 0202h
  324.     BL = exception number (00h-1Fh)
  325. Return: CF clear if successful
  326.         CX:(E)DX = selector:offset of handler
  327.     CF set on error
  328.         AX = error code (DPMI 1.0+) (8021h) (see #1637)
  329. Notes:    16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
  330.     DPMI 1.0+ supports this function only for backward compatibility; use
  331.        AX=0210h or AX=0211h instead
  332.     not supported by MS Windows 3.0 in Standard mode
  333. SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
  334. --------E-310203-----------------------------
  335. INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
  336.     AX = 0203h
  337.     BL = exception number (00h-1Fh)
  338.     CX:(E)DX = selector:offset of handler
  339. Return: CF clear if successful
  340.     CF set on error
  341.         AX = error code (DPMI 1.0+) (8021h,8022h) (see #1637)
  342. Notes:    32-bit programs must supply an offset in EDX and use a 32-bit interrupt
  343.       stack frame on chaining to the next exception handler
  344.     the handler should return using a FAR return
  345.     all fault stack frames contain an error code, but it is only valid for
  346.       exceptions 08h and 0Ah-0Eh
  347.     handlers will only be called if the exception occurs in protected mode,
  348.       and the DPMI host does not transparently handle the exception
  349.     the handler may change certain values on the stack frame
  350.       (see #1640,#1641)
  351.     DPMI 1.0+ supports this function only for backward compatibility; use
  352.        AX=0212h or AX=0213h instead
  353.     not supported by MS Windows 3.0 in Standard mode
  354. SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
  355.  
  356. Format of stack frame for 16-bit programs: (offset from SS:SP)
  357. Offset    Size    Description    (Table 1640)
  358.  00h    DWORD    return CS:IP (do not change)
  359.  04h    WORD    error code
  360.  06h    DWORD    CS:IP of exception
  361.  0Ah    WORD    flags
  362.  0Ch    DWORD    SS:SP
  363.  
  364. Format of stack frame for 32-bit programs: (offset from SS:ESP)
  365. Offset    Size    Description    (Table 1641)
  366.  00h    DWORD    return EIP (do not change)
  367.  04h    WORD    return CS selector (do not change)
  368.  06h    WORD    reserved (do not change)
  369.  08h    DWORD    error code
  370.  0Ch    DWORD    EIP of exception
  371.  10h    WORD    CS selector of exception
  372.  12h    WORD    reserved (do not change)
  373.  14h    DWORD    EFLAGS
  374.  18h    DWORD    ESP
  375.  1Ch    WORD    SS
  376.  1Eh    WORD    reserved (do not change)
  377. --------E-310204-----------------------------
  378. INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
  379.     AX = 0204h
  380.     BL = interrupt number
  381. Return: CF clear
  382.     CX:(E)DX = selector:offset of handler
  383. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  384.     DPMI implementations are required to support all 256 vectors
  385.     not supported by MS Windows 3.0 in Standard mode
  386. SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2C/AX=0006h
  387. SeeAlso: INT 2F/AX=FB42h/BX=0024h
  388. --------E-310205-----------------------------
  389. INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
  390.     AX = 0205h
  391.     BL = interrupt number
  392.     CX:(E)DX = selector:offset of handler
  393. Return: CF clear if successful
  394.     CF set on error
  395.         AX = error code (DPMI 1.0+) (8022h) (see #1637)
  396. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  397.     32-bit programs must use a 32-bit interrupt stack frame when chaining
  398.       to the next handler
  399.     DPMI implementations are required to support all 256 vectors
  400.     hardware interrupts are reflected to the virtual machine's primary
  401.       client, software interrupts to the current client
  402.     not supported by MS Windows 3.0 in Standard mode
  403. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2C/AX=0007h
  404. SeeAlso: INT 2F/AX=FB42h/BX=0025h
  405. --------E-310210-----------------------------
  406. INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  407.     AX = 0210h
  408.     BL = exception number (00h-1Fh)
  409. Return: CF clear if successful
  410.         CX:(E)DX = selector:offset of exception handler
  411.     CF set on error
  412.         AX = error code (8021h) (see #1637)
  413. Note:    DPMI host reflects exception to current client's handler
  414. SeeAlso: AX=0202h,AX=0211h,AX=0212h
  415. --------E-310211-----------------------------
  416. INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  417.     AX = 0211h
  418.     BL = exception number (00h-1Fh)
  419. Return: CF clear if successful
  420.         CX:(E)DX = selector:offset of exception handler
  421.     CF set on error
  422.         AX = error code (8021h) (see #1637)
  423. Notes:    returns address of protected-mode handler for real-mode exception
  424.     DPMI host performs a switch to protected mode, reflects the exception
  425.       to the virtual machine's primary client, and returns to real mode
  426.       on the handler's completion
  427. SeeAlso: AX=0202h,AX=0210h,AX=0213h
  428. --------E-310212-----------------------------
  429. INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  430.     AX = 0212h
  431.     BL = exception or fault number (00h-1Fh)
  432.     CX:(E)DX = exception handler selector:offset
  433. Return: CF clear if successful
  434.     CF set on error
  435.         AX = error code (8021h,8022h) (see #1637)
  436. Note:    DPMI host sends exception to current client's handler
  437. SeeAlso: AX=0203h,AX=0210h,AX=0213h
  438. --------E-310213-----------------------------
  439. INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  440.     AX = 0213h
  441.     BL = exception or fault number (00h-1Fh)
  442.     CX:(E)DX = exception handler selector:offset
  443. Return: CF clear if successful
  444.     CF set on error
  445.         AX = error code (8021h,8022h) (see #1637)
  446. Notes:    specifies address of protected-mode handler for real-mode exception
  447.     DPMI host performs a switch to protected mode, reflects the exception
  448.       to the virtual machine's primary client, and returns to real mode
  449.       on the handler's completion
  450. SeeAlso: AX=0203h,AX=0211h,AX=0212h
  451. --------E-310300-----------------------------
  452. INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
  453.     AX = 0300h
  454.     BL = interrupt number
  455.     BH = flags
  456.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  457.             reserved, must be 0 (DPMI 1.0+)
  458.         others: reserved, must be 0
  459.     CX = number of words to copy from protected mode to real mode stack
  460.     ES:(E)DI = selector:offset of real mode call structure (see #1642)
  461. Return: CF clear if successful
  462.         real mode call structure modified (all fields except SS:SP, CS:IP
  463.           filled with return values from real mode interrupt)
  464.     CF set on error
  465.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #1637)
  466.     protected mode stack unchanged
  467. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  468.     CS:IP in the real mode call structure is ignored for this call,
  469.       instead, the indicated interrupt vector is used for the address
  470.     the flags in the call structure are pushed on the real mode stack to
  471.       form an interrupt stack frame, and the trace and interrupt flags are
  472.       clear on entry to the handler
  473.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  474.     the real mode handler must return with the stack in the same state as
  475.       it was on being called
  476. SeeAlso: AX=0302h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286",INT 2C/AX=0026h
  477. SeeAlso: INT 2F/AX=FB42h/BX=000Dh
  478.  
  479. Format of DPMI real mode call structure:
  480. Offset    Size    Description    (Table 1642)
  481.  00h    DWORD    EDI
  482.  04h    DWORD    ESI
  483.  08h    DWORD    EBP
  484.  0Ch    DWORD    reserved (00h)
  485.  10h    DWORD    EBX
  486.  14h    DWORD    EDX
  487.  18h    DWORD    ECX
  488.  1Ch    DWORD    EAX
  489.  20h    WORD    flags
  490.  22h    WORD    ES
  491.  24h    WORD    DS
  492.  26h    WORD    FS
  493.  28h    WORD    GS
  494.  2Ah    WORD    IP
  495.  2Ch    WORD    CS
  496.  2Eh    WORD    SP
  497.  30h    WORD    SS
  498. --------E-310301-----------------------------
  499. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
  500.     AX = 0301h
  501.     BH = flags
  502.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  503.             reserved, must be 0 (DPMI 1.0+)
  504.         others: reserved must be 0
  505.     CX = number of words to copy from protected mode to real mode stack
  506.     ES:(E)DI = selector:offset of real mode call structure
  507.           (see INT 31/AX=0300h)
  508. Return: CF clear if successful
  509.         real mode call structure modified (all fields except SS:SP, CS:IP
  510.           filled with return values from real mode interrupt)
  511.     CF set on error
  512.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #1637)
  513.     protected mode stack unchanged
  514. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  515.     the real mode procedure must exit with a FAR return
  516.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  517.     the real mode handler must return with the stack in the same state as
  518.       it was on being called
  519. SeeAlso: AX=0300h,AX=0302h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
  520. SeeAlso: INT 2C/AX=0025h
  521. --------E-310302-----------------------------
  522. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
  523.     AX = 0302h
  524.     BH = flags
  525.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  526.             reserved, must be 0 (DPMI 1.0+)
  527.         others: reserved, must be 0
  528.     CX = number of words to copy from protected mode to real mode stack
  529.     ES:(E)DI = selector:offset of real mode call structure
  530.           (see INT 31/AX=0300h)
  531. Return: CF clear if successful
  532.         real mode call structure modified (all fields except SS:SP, CS:IP
  533.           filled with return values from real mode interrupt)
  534.     CF set on error
  535.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #1637)
  536.     protected mode stack unchanged
  537. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  538.     the flags in the call structure are pushed on the real mode stack to
  539.       form an interrupt stack frame, and the trace and interrupt flags are
  540.       clear on entry to the handler
  541.     the real mode procedure must exit with an IRET
  542.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  543.     the real mode handler must return with the stack in the same state as
  544.       it was on being called
  545. SeeAlso: AX=0300h
  546. --------E-310303-----------------------------
  547. INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
  548.     AX = 0303h
  549.     DS:(E)SI = selector:offset of procedure to call
  550.     ES:(E)DI = selector:offset of real mode call structure (see #1642)
  551. Return: CF clear if successful
  552.         CX:DX = segment:offset of real mode call address
  553.     CF set on error
  554.         AX = error code (DPMI 1.0+) (8015h) (see #1637)
  555. Notes:    the real mode call structure is static, causing reentrancy problems;
  556.       its contents are only valid at the time of a callback
  557.     the called procedure must modify the real mode CS:IP before returning
  558.     values are returned to real mode by modifying the real mode call struc
  559.     DPMI hosts must provide at least 16 callbacks per client
  560.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  561.       not support this function
  562. SeeAlso: AX=0304h,AX=0C00h
  563.  
  564. (Table 1643)
  565. Values DPMI real-mode callback procedure is called with:
  566.     DS:(E)SI = selector:offset of real mode SS:SP
  567.     ES:(E)DI = selector:offset of real mode call structure
  568.     SS:(E)SP = locked protected mode API stack
  569.     interrupts disabled
  570. Return: (with IRET)
  571.     ES:(E)DI = selector:offset of real mode call structure to restore
  572. --------E-310304-----------------------------
  573. INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
  574.     AX = 0304h
  575.     CX:DX = real mode callback address
  576. Return: CF clear if successful
  577.     CF set on error
  578.         AX = error code (DPMI 1.0+) (8024h) (see #1637)
  579. Note:    the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  580.       not support this function
  581. SeeAlso: AX=0303h
  582. --------E-310305-----------------------------
  583. INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
  584.     AX = 0305h
  585. Return: CF clear
  586.     AX = size in bytes of state buffer
  587.     BX:CX = real mode address of procedure to save/restore state
  588.     SI:(E)DI = protected mode procedure to save/restore state
  589. Notes:    the buffer size will be zero if it is not necessary to preserve state
  590.     16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
  591.     this function is only needed if using the raw mode switch service
  592. SeeAlso: AX=0306h
  593.  
  594. (Table 1644)
  595. Call DPMI state-save procedures with:
  596.     AL = direction
  597.         00h save state
  598.         01h restore state
  599.     ES:(E)DI -> state buffer
  600. Return: all registers preserved
  601. --------E-310306-----------------------------
  602. INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
  603.     AX = 0306h
  604. Return: CF clear
  605.     BX:CX -> procedure to switch from real to protected mode
  606.     SI:(E)DI -> procedure to switch from protected to real mode
  607. Notes:    16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
  608.     the caller must save and restore the state of the task with AX=0305h
  609.     not supported by MS Windows 3.0 in Standard mode
  610. SeeAlso: AX=0305h
  611.  
  612. (Table 1645)
  613. Values to JUMP at mode-switch procedures with:
  614.     AX = new DS
  615.     CX = new ES
  616.     DX = new SS
  617.     (E)BX = new (E)SP
  618.     SI:(E)DI = new CS:(E)IP
  619. Notes:    BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
  620.       DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
  621.     interrupts will stay disabled during the entire mode switch if they
  622.       are disabled on entry to the mode-switch procedure
  623. --------E-310400-----------------------------
  624. INT 31 P - DPMI 0.9+ - GET DPMI VERSION
  625.     AX = 0400h
  626. Return: CF clear
  627.     AH = major version of DPMI spec supported
  628.     AL = two-digit minor version of DPMI spec supported
  629.     BX = DPMI host flags (see #1646)
  630.     CL = processor type (02h=80286, 03h=80386, 04h=80486)
  631.     DH = curr value of virtual master interrupt controller base interrupt
  632.     DL = curr value of virtual slave interrupt controller base interrupt
  633. BUG:    Windows NT versions from the March 1993 beta to at least the Final
  634.       release with fixes to CSD002 report version 0090h (0.144); this has
  635.       reportedly been corrected in the Windows NT 3.5 beta
  636. SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 67/AX=DE0Ah
  637.  
  638. Bitfields for DPMI host flags:
  639. Bit(s)    Description    (Table 1646)
  640.  0    running under an 80386 (32-bit) implementation
  641.  1    processor returns to real mode for reflected interrupts instead of V86
  642.       mode
  643.  2    virtual memory supported
  644.  3    reserved (undefined)
  645.  4-15    reserved (zero)
  646. --------E-310401-----------------------------
  647. INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
  648.     AX = 0401h
  649.     ES:(E)DI -> 128-byte buffer for host description (see #1647)
  650. Return: CF clear if successful
  651.         AX = capabilities (see #1648)
  652.         CX = reserved (00h)
  653.         DX = reserved (00h)
  654.         buffer filled
  655.     CF set on error (DPMI 0.9 only)
  656. SeeAlso: AX=0400h
  657.  
  658. Format of DPMI host description:
  659. Offset    Size    Description    (Table 1647)
  660.  00h    BYTE    host major version number
  661.  01h    BYTE    host minor version number
  662.  02h 126 BYTEs    ASCIZ host vendor name
  663.  
  664. Bitfields for DPMI capabilities:
  665. Bit(s)    Description    (Table 1648)
  666.  0    paged accessed/dirty supported (see AX=0506h,AX=0507h)
  667.  1    exceptions restartability supported
  668.  2    device mapping supported (see AX=0508h)
  669.  3    conventional memory mapping supported (see AX=0509h)
  670.  4    demand zero-fill supported
  671.  5    write-protect client capability supported
  672.  6    write-protect host capability supported
  673.  7-15    reserved
  674. --------E-310500-----------------------------
  675. INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
  676.     AX = 0500h
  677.     ES:(E)DI -> buffer for memory information (see #1649)
  678. Return: CF clear
  679. Notes:    16-bit programs use ES:DI, 32-bit programs use ES:EDI
  680.     this function must be considered advisory because other applications
  681.       may affect the results at any time after the call
  682.     fields not supported by the DPMI implementation are filled with
  683.       FFFFFFFFh
  684.     DPMI 1.0+ supports this function solely for backward compatibility; use
  685.       AX=050Bh instead
  686.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 only
  687.       returns the first field in the memory information record
  688. SeeAlso: AX=0501h,AX=050Bh,AX=0604h
  689.  
  690. Format of DPMI memory information:
  691. Offset    Size    Description    (Table 1649)
  692.  00h    DWORD    largest available block in bytes
  693.  04h    DWORD    maximum unlocked page allocation
  694.  08h    DWORD    maximum locked page allocation
  695.  0Ch    DWORD    total linear address space in pages
  696.  10h    DWORD    total unlocked pages
  697.  14h    DWORD    free pages
  698.  18h    DWORD    total physical pages
  699.  1Ch    DWORD    free linear address space in pages
  700.  20h    DWORD    size of paging file/partition in pages
  701.  24h 12 BYTEs    reserved
  702. --------E-310501-----------------------------
  703. INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
  704.     AX = 0501h
  705.     BX:CX = size in bytes
  706. Return: CF clear if successful
  707.         BX:CX = linear address of block
  708.         SI:DI = memory block handle for resizing and freeing block
  709.     CF set on error
  710.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see #1637)
  711. Notes:    no selectors are allocated
  712.     the memory block is allocated unlocked (can be locked with AX=0600h)
  713.     allocations are often page granular (see AX=0604h)
  714.     under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
  715.       for this function to fail even if AX=0500h indicates that enough
  716.       memory is available
  717. SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
  718. SeeAlso: INT 2F/AX=FB42h/BX=0002h
  719. --------E-310502-----------------------------
  720. INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
  721.     AX = 0502h
  722.     SI:DI = handle of memory block
  723. Return: CF clear if successful
  724.     CF set on error
  725.         AX = error code (DPMI 1.0+) (8023h) (see #1637)
  726. Note:    any selectors allocated for the memory block must also be freed,
  727.       preferably before freeing the memory block
  728. SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
  729. --------E-310503-----------------------------
  730. INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
  731.     AX = 0503h
  732.     BX:CX = new size in bytes (nonzero)
  733.     SI:DI = handle of memory block
  734. Return: CF clear if successful
  735.         BX:CX = new linear address
  736.         SI:DI = new handle of memory block
  737.     CF set on error
  738.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
  739.         (see #1637)
  740. Notes:    any selectors pointing at the block must be updated
  741.     the previous memory block handle becomes invalid
  742.     an error is returned if the new size is 0
  743. SeeAlso: AX=0102h,AX=0501h,AX=0505h
  744. --------E-310504-----------------------------
  745. INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
  746.     AX = 0504h
  747.     EBX = page-aligned linear address of memory block (00000000h if any
  748.           address is acceptable)
  749.     ECX = size in bytes (nonzero)
  750.     EDX = flags
  751.         bit 0: set to create committed pages instead of uncommitted pages
  752.         bits 1-31 reserved (0)
  753. Return: CF clear if successful
  754.         EBX = linear address of memory block
  755.         ESI = memory block handle
  756.     CF set on error
  757.         AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see #1637)
  758. Note:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  759. SeeAlso: AX=0501h,AX=0505h
  760. --------E-310505-----------------------------
  761. INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
  762.     AX = 0505h
  763.     ESI = memory block handle
  764.     ECX = new size in bytes (nonzero)
  765.     EDX = flags
  766.         bit 0: create committed pages rather than uncommitted pages
  767.         bit 1: segment descriptor update required
  768.         ES:EBX -> buffer containing array of WORDs with selectors
  769.         EDI = number of selectors in array
  770.         bits 2-31 reserved (0)
  771. Return: CF clear if successful
  772.         EBX = new linear base address
  773.         ESI = new memory block handle
  774.     CF set on error
  775.         AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see #1637)
  776. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  777.     the old memory block handle becomes invalid
  778.     if EDX bit 1 set and the block's base address is changed, DPMI updates
  779.       all descriptors for selectors in the update buffer which fall within
  780.       the memory block
  781. SeeAlso: AX=0503h,AX=0504h
  782. --------E-310506-----------------------------
  783. INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
  784.     AX = 0506h
  785.     ESI = memory block handle
  786.     EBX = offset in memory block of first page
  787.     ECX = number of pages
  788.     ES:EDX -> array of WORDs to hold page attributes (see #1650)
  789. Return: CF clear if successful
  790.         buffer filled
  791.     CF set on error
  792.         AX = error code (8001h,8023h,8025h) (see #1637)
  793. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  794.     if EBX is not page-aligned, it will be rounded down
  795. SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
  796.  
  797. Bitfields for DPMI page attribute word:
  798. Bit(s)    Description    (Table 1650)
  799.  0-2    page type
  800.     000 uncommitted
  801.     001 committed
  802.     010 mapped (see AX=0508h,AX=0509h)
  803.     other currently unused
  804.  3    page is read/write rather than read-only
  805.  4    accessed/dirty bits supplied in bits 5 and 6
  806.  5    page has been accessed (only valid if bit 4 set)
  807.  6    page has been written (only valid if bit 4 set)
  808.  7-15    reserved (0)
  809. --------E-310507-----------------------------
  810. INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
  811.     AX = 0507h
  812.     ESI = memory block handle
  813.     EBX = offset in memory block of first page
  814.     ECX = number of pages
  815.     ES:EDX -> array of WORDs with new page attributes (see #1650)
  816. Return: CF clear if successful
  817.     CF set on error
  818.         AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
  819.         (see #1637)
  820.         ECX = number of pages which have been set
  821. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  822.     if EBX is not page-aligned, it will be rounded down
  823. SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
  824. --------E-310508-----------------------------
  825. INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
  826.     AX = 0508h
  827.     ESI = memory block handle
  828.     EBX = page-aligned offset within memory block of page(s) to be mapped
  829.     ECX = number of pages to map
  830.     EDX = page-aligned physical address of device
  831. Return: CF clear if successful
  832.     CF set on error
  833.         AX = error code (8001h,8003h,8023h,8025h) (see #1637)
  834. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  835.     support of this function is optional; hosts are also allowed to support
  836.       the function for some devices but not others
  837. SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
  838. --------E-310509-----------------------------
  839. INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
  840.     AX = 0509h
  841.     ESI = memory block handle
  842.     EBX = page-aligned offset within memory block of page(s) to map
  843.     ECX = number of pages to map
  844.     EDX = page-aligned linear address of conventional (below 1M) memory
  845. Return: CF clear if successful
  846.     CF set on error
  847.         AX = error code (8001h,8003h,8023h,8025h) (see #1637)
  848. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  849.     support of this function is optional
  850. SeeAlso: AX=0504h,AX=0508h,AX=0801h
  851. --------E-31050A-----------------------------
  852. INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
  853.     AX = 050Ah
  854.     SI:DI = memory block handle
  855. Return: CF clear if successful
  856.         SI:DI = size in bytes
  857.         BX:CX = base address
  858.     CF set on error
  859.         AX = error code (8023h) (see #1637)
  860. SeeAlso: AX=0501h,AX=0504h
  861. --------E-31050B-----------------------------
  862. INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
  863.     AX = 050Bh
  864.     ES:(E)DI -> 128-byte buffer for memory information (see #1651)
  865. Return: CF clear if successful
  866.     CF set on error (DPMI 0.9 only)
  867. Note:    16-bit programs use ES:DI, 32-bit programs must use ES:EDI
  868. SeeAlso: AX=0500h
  869.  
  870. Format of DPMI memory information:
  871. Offset    Size    Description    (Table 1651)
  872.  00h    DWORD    total allocated bytes of physical memory controlled by host
  873.  04h    DWORD    total allocated bytes of virtual memory controlled by host
  874.  08h    DWORD    total available bytes of virtual memory controlled by host
  875.  0Ch    DWORD    total allocated bytes of virtual memory for curr virtual mach
  876.  10h    DWORD    total available bytes of virtual memory for curr virtual mach
  877.  14h    DWORD    total allocated bytes of virtual memory for current client
  878.  18h    DWORD    total available bytes of virtual memory for current client
  879.  1Ch    DWORD    total locked bytes for current client
  880.  20h    DWORD    maximum locked bytes for current client
  881.  24h    DWORD    highest linear address available to current client
  882.  28h    DWORD    largest available memory block in bytes
  883.  2Ch    DWORD    minimum allocation unit in bytes
  884.  30h    DWORD    allocation alignment unit size in bytes
  885.  34h 76 BYTEs    reserved (00h)
  886. --------E-310600-----------------------------
  887. INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
  888.     AX = 0600h
  889.     BX:CX = starting linear address
  890.     SI:DI = size of region in bytes
  891. Return: CF clear if successful
  892.     CF set on error
  893.         none of the memory is locked
  894.         AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see #1637)
  895. Notes:    pages at beginning and end will be locked if the region overlaps them
  896.     may be called multiple times for a given page; the DPMI host keeps a
  897.       lock count for each page
  898. SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
  899. --------E-310601-----------------------------
  900. INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
  901.     AX = 0601h
  902.     BX:CX = starting linear address
  903.     SI:DI = size of region in bytes
  904. Return: CF clear if successful
  905.     CF set on error
  906.         none of the memory is unlocked
  907.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #1637)
  908. Notes:    pages at beginning and end will be unlocked if the region overlaps them
  909.     memory whose lock count has not reached zero remains locked
  910. SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
  911. --------E-310602-----------------------------
  912. INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
  913.     AX = 0602h
  914.     BX:CX = starting linear address
  915.     SI:DI = size of region in bytes
  916. Return: CF clear if successful
  917.     CF set on error
  918.         none of the memory is made pageable
  919.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #1637)
  920. Notes:    must relock all unlocked real mode memory before terminating process
  921.       for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
  922.     pages at beginning and end will be unlocked if the region overlaps them
  923.     pageability of real mode pages is binary, not a count
  924. SeeAlso: AX=0600h,AX=0603h
  925. --------E-310603-----------------------------
  926. INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
  927.     AX = 0603h
  928.     BX:CX = starting linear address
  929.     SI:DI = size of region in bytes
  930. Return: CF clear if successful
  931.     CF set on error
  932.         none of the memory is relocked
  933.         AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see #1637)
  934. Notes:    pages at beginning and end will be relocked if the region overlaps them
  935.     pageability of real mode pages is binary, not a count
  936. SeeAlso: AX=0602h
  937. --------E-310604-----------------------------
  938. INT 31 P - DPMI 0.9+ - GET PAGE SIZE
  939.     AX = 0604h
  940. Return: CF clear if successful
  941.         BX:CX = page size in bytes
  942.     CF set on error
  943.         AX = error code (DPMI 1.0+) (see also #1637)
  944.         8001h unsupported, 16-bit host
  945. BUG:    the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
  946.       unchanged
  947. --------E-310700-----------------------------
  948. INT 31 Pu - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
  949.     AX = 0700h
  950.     BX:CX = starting linear page number
  951.     SI:DI = number of pages to mark as paging candidates
  952. Return: ???
  953. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  954.       specification, this function is called by MS Windows TASKMAN,
  955.       PROGMAN, and KERNEL
  956. SeeAlso: AX=0701h,AX=0702h
  957. --------E-310701-----------------------------
  958. INT 31 Pu - DPMI 0.9+ - DISCARD PAGES
  959.     AX = 0701h
  960.     BX:CX = starting linear page number
  961.     SI:DI = number of pages to discard
  962. Return: ???
  963. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  964.       specification, this function is called by MS Windows TASKMAN,
  965.       PROGMAN, and KERNEL
  966. SeeAlso: AX=0700h,AX=0703h
  967. --------E-310702-----------------------------
  968. INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
  969.     AX = 0702h
  970.     BX:CX = starting linear address
  971.     SI:DI = number of bytes to mark as paging candidates
  972. Return: CF clear if successful
  973.     CF set on error
  974.         AX = error code (DPMI 1.0+) (8025h) (see #1637)
  975. Notes:    this function is advisory, and does not force immediate paging
  976.     partial pages will not be discarded
  977. SeeAlso: AX=0700h,AX=0703h
  978. --------E-310703-----------------------------
  979. INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
  980.     AX = 0703h
  981.     BX:CX = starting linear address
  982.     SI:DI = number of bytes to mark as discarded
  983. Return: CF clear if successful
  984.     CF set on error
  985.         AX = error code (DPMI 1.0+) (8025h) (see #1637)
  986. Notes:    this function is advisory, and may be ignored by DPMI implementations
  987.     partial pages will not be discarded
  988. SeeAlso: AX=0701h,AX=0702h
  989. --------E-310800-----------------------------
  990. INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
  991.     AX = 0800h
  992.     BX:CX = physical address (should be above 1 MB)
  993.     SI:DI = size in bytes
  994. Return: CF clear if successful
  995.         BX:CX = linear address which maps the requested physical memory
  996.     CF set on error
  997.         AX = error code (DPMI 1.0+) (8003h,8021h) (see #1637)
  998. Notes:    implementations may refuse this call because it can circumvent protects
  999.     the caller must build an appropriate selector for the memory
  1000.     do not use for memory mapped in the first megabyte
  1001. SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
  1002. --------E-310801-----------------------------
  1003. INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
  1004.     AX = 0801h
  1005.     BX:CX = linear address returned by AX=0800h
  1006. Return: CF clear if successful
  1007.     CF set on error
  1008.         AX = error code (8025h) (see #1637)
  1009. Note:    should be called at end of access to device mapped with AX=0800h
  1010. SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
  1011. --------E-310900-----------------------------
  1012. INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
  1013.     AX = 0900h
  1014. Return: CF clear
  1015.     virtual interrupts disabled
  1016.     AL = previous interrupt state (00h disabled, 01h enabled)
  1017.     AH preserved
  1018. Notes:    the previous state may be restored simply by executing another INT 31
  1019.     a CLI instruction may be used if the previous state is unimportant,
  1020.       but should be assumed to be very slow due to trapping by the host
  1021. SeeAlso: AX=0901h,AX=0902h
  1022. --------E-310901-----------------------------
  1023. INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
  1024.     AX = 0901h
  1025. Return: CF clear
  1026.     virtual interrupts enabled
  1027.     AL = previous interrupt state (00h disabled, 01h enabled)
  1028.     AH preserved
  1029. Notes:    the previous state may be restored simply by executing another INT 31
  1030.     a STI instruction may be used if the previous state is unimportant,
  1031.       but should be assumed to be very slow due to trapping by the host
  1032. SeeAlso: AX=0900h,AX=0902h
  1033. --------E-310902-----------------------------
  1034. INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
  1035.     AX = 0902h
  1036. Return: CF clear
  1037.     AL = current interrupt state (00h disabled, 01h enabled)
  1038. Note:    should be used rather than PUSHF because that instruction yields the
  1039.       physical interrupt state rather than the per-client virtualized
  1040.       interrupt flag
  1041. SeeAlso: AX=0900h,AX=0901h
  1042. --------E-310A00-----------------------------
  1043. INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
  1044.     AX = 0A00h
  1045.     DS:(E)SI -> case-sensitive ASCIZ vendor name or identifier
  1046. Return: CF clear if successful
  1047.         ES:(E)DI -> FAR extended API entry point
  1048.         DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
  1049.     CF set on error
  1050.         AX = error code (DPMI 1.0+) (8001h) (see #1637)
  1051. Notes:    extended API parameters are vendor-specific
  1052.     DPMI 1.0+ supports this function solely for backward compatibility; use
  1053.       INT 2F/AX=168Ah instead
  1054.     this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
  1055.       or QDPMI v1.0x; use INT 2F/AX=168Ah instead.    It is supported by
  1056.       386MAX v7.01.
  1057. SeeAlso: INT 2F/AX=168Ah
  1058. --------E-310B00-----------------------------
  1059. INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
  1060.     AX = 0B00h
  1061.     BX:CX = linear address
  1062.     DL = size (1,2,4 bytes)
  1063.     DH = type (00h execute, 01h write, 02h read/write)
  1064. Return: CF clear if successful
  1065.         BX = watchpoint handle
  1066.     CF set on error
  1067.         AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see #1637)
  1068. SeeAlso: AX=0212h,AX=0601h
  1069. --------E-310B01-----------------------------
  1070. INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
  1071.     AX = 0B01h
  1072.     BX = watchpoint handle
  1073. Return: CF clear if successful
  1074.     CF set on error
  1075.         AX = error code (DPMI 1.0+) (8023h) (see #1637)
  1076. Note:    the watchpoint handle is freed
  1077. SeeAlso: AX=0B00h
  1078. --------E-310B02-----------------------------
  1079. INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
  1080.     AX = 0B02h
  1081.     BX = watchpoint handle
  1082. Return: CF clear if successful
  1083.         AX = status flags
  1084.         bit 0: watch point has been executed since AX=0B00h or AX=0B03h
  1085.     CF set on error
  1086.         AX = error code (DPMI 1.0+) (8023h) (see #1637)
  1087. SeeAlso: AX=0B00h,AX=0B03h
  1088. --------E-310B03-----------------------------
  1089. INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
  1090.     AX = 0B03h
  1091.     BX = watchpoint handle
  1092. Return: CF clear if successful
  1093.     CF set on error
  1094.         AX = error code (DPMI 1.0+) (8023h) (see #1637)
  1095. SeeAlso: AX=0B02h
  1096. --------E-310C00-----------------------------
  1097. INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
  1098.     AX = 0C00h
  1099.     ES:(E)DI -> resident service provider structure (see #1652)
  1100. Return: CF clear if successful
  1101.     CF set on error
  1102.         AX = error code (8015h,8021h,8025h) (see #1637 at AX=0000h)
  1103. Note:    calling this function declares an intent to provide resident
  1104.       protected mode services after terminating with AX=0C01h
  1105. SeeAlso: AX=0303h,AX=0C01h
  1106.  
  1107. Format of DPMI resident service provider structure:
  1108. Offset    Size    Description    (Table 1652)
  1109.  00h    QWORD    descriptor for 16-bit data segment
  1110.  08h    QWORD    descriptor for 16-bit code segment (zeros if not supported)
  1111.  10h    WORD    offset of 16-bit callback procedure
  1112.  12h  2 BYTEs    reserved
  1113.  14h    QWORD    descriptor for 32-bit data segment
  1114.  1Ch    QWORD    descriptor for 32-bit code segment (zeros if not supported)
  1115.  24h    DWORD    offset of 32-bit callback procedure
  1116. --------E-310C01-----------------------------
  1117. INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
  1118.     AX = 0C01h
  1119.     BL = return code
  1120.     DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
  1121. Return: never
  1122. Notes:    should only be used if the program will only provide services to
  1123.       other DPMI programs
  1124.     any protected mode memory remains allocated to the program unless
  1125.       explicitly freed before this call
  1126.     must first call AX=0C00h or program will simply be terminated
  1127. SeeAlso: AX=0C00h,INT 21/AH=31h
  1128. --------E-310D00-----------------------------
  1129. INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
  1130.     AX = 0D00h
  1131.     ES:(E)DI -> shared memory allocation request structure (see #1653)
  1132. Return: CF clear if successful
  1133.         request structure updated
  1134.     CF set on error
  1135.         AX = error code (8012h,8013h,8014h,8016h,8021h) (see #1637)
  1136. Note:    first 16 bytes of memory block will be initialized to zeros on the
  1137.       first allocation
  1138. SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
  1139.  
  1140. Format of DPMI shared memory allocation request structure:
  1141. Offset    Size    Description    (Table 1653)
  1142.  00h    DWORD    requested length of shared memory block in bytes
  1143.  04h    DWORD    (return) allocated length of block
  1144.  08h    DWORD    (return) shared memory handle
  1145.  0Ch    DWORD    (return) linear address of memory block
  1146.  10h    PWORD    selector:offset32 of ASCIZ name for memory block
  1147.         (name max 128 bytes)
  1148.  16h  2 BYTEs    reserved
  1149.  18h  4 BYTEs    reserved (00h)
  1150. --------E-310D01-----------------------------
  1151. INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
  1152.     AX = 0D01h
  1153.     SI:DI = shared memory block handle
  1154. Return: CF clear if successful
  1155.     CF set on error
  1156.         AX = error code (8023h) (see #1637)
  1157. Notes:    handle becomes invalid after this call
  1158.     DPMI maintains separate global and virtual machine use counts for each
  1159.       shared memory block; when the global use counts reaches zero, the
  1160.       block is finally destroyed
  1161. SeeAlso: AX=0502h,AX=0D00h
  1162. --------E-310D02-----------------------------
  1163. INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
  1164.     AX = 0D02h
  1165.     SI:DI = shared memory block handle
  1166.     DX = flags
  1167.         bit 0: return immediately rather than suspending if serialization
  1168.           unavailable
  1169.         bit 1: shared rather than exclusive serialization
  1170.         bits 2-15 reserved (0)
  1171. Return: CF clear if successful
  1172.     CF set on error
  1173.         AX = error code (8004h,8005h,8017h-8019h,8023h) (see #1637)
  1174. Notes:    an exclusive serialization blocks any other serialization attempts for
  1175.       the same block by another virtual machine; a shared serialization
  1176.       blocks attempts at exclusive serialization by another virtual machine
  1177.     hosts are not required to detect deadlock
  1178.     a client's interrupt handler can cancel a serialization call which
  1179.       caused it to block by calling AX=0D03h
  1180. SeeAlso: AX=0D00h,AX=0D03h
  1181. --------E-310D03-----------------------------
  1182. INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
  1183.     AX = 0D03h
  1184.     SI:DI = shared memory block handle
  1185.     DX = flags
  1186.         bit 0: release shared serialization rather than exclusive serialztn
  1187.         bit 1: free pending serialization
  1188.         bits 2-15 reserved (0)
  1189. Return: CF clear if successful
  1190.     CF set on error
  1191.         AX = error code (8002h,8023h) (see #1637 at AX=0000h)
  1192. SeeAlso: AX=0D00h,AX=0D02h
  1193. --------E-310E00-----------------------------
  1194. INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
  1195.     AX = 0E00h
  1196. Return: CF clear
  1197.     AX = coprocessor status (see #1654)
  1198. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1199. SeeAlso: AX=0E01h
  1200.  
  1201. Bitfields for DPMI coprocessor status:
  1202. Bit(s)    Description    (Table 1654)
  1203.  0    numeric coprocessor enabled for current client
  1204.  1    client is emulating coprocessor
  1205.  2    numeric coprocessor is present
  1206.  3    host is emulating coprocessor instructions
  1207.  4-7    coprocessor type
  1208.     0000 none
  1209.     0010 80287
  1210.     0011 80387
  1211.     0100 80486 with numeric coprocessor
  1212.     other reserved
  1213.  8-15    not used
  1214. --------E-310E01-----------------------------
  1215. INT 31 P - DPMI 1.0+ - SET EMULATION
  1216.     AX = 0E01h
  1217.     BX = coprocessor flag bits (see #1655)
  1218. Return: CF clear if successful
  1219.     CF set on error
  1220.         AX = error code (8026h) (see #1637 at AX=0000h)
  1221. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1222. SeeAlso: AX=0E00h
  1223.  
  1224. Bitfields for DPMI coprocessor flags:
  1225. Bit(s)    Description    (Table 1655)
  1226.  0    enable numeric coprocessor for current client
  1227.  1    client will emulate coprocessor
  1228.  2-15    not used
  1229. --------E-3157-------------------------------
  1230. INT 31 - Netroom3 DPMI.EXE v3.00 - ???
  1231.     AH = 57h
  1232.     AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
  1233.     ???
  1234. Return: ???
  1235. SeeAlso: INT 2C/AX=0000h"RM386"
  1236. --------E-315702-----------------------------
  1237. INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
  1238.     AX = 5702h
  1239.     DX = PSP segment of caller
  1240.     STACK: WORD    ???
  1241.            WORD    flags (bit 0 set if 32-bit program)
  1242. Return: as for DPMI mode-switch entry point (see INT 2F/AX=1687h)
  1243. Note:    this function is called by the real-mode DPMI mode-switch entry point
  1244. SeeAlso: INT 2F/AX=1687h
  1245. --------v-32---------------------------------
  1246. INT 32 - VIRUS - reportedly used by "Tiny" Viruses
  1247. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
  1248. --------v-32---------------------------------
  1249. INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
  1250. SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
  1251. --------M-330000-----------------------------
  1252. INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
  1253.     AX = 0000h
  1254. Return: AX = status
  1255.         0000h hardware/driver not installed
  1256.         FFFFh hardware/driver installed
  1257.     BX = number of buttons
  1258.         0000h other than two
  1259.         0002h two buttons (many drivers)
  1260.         0003h Mouse Systems/Logitech three-button mouse
  1261.         FFFFh two buttons
  1262. Notes:    to use mouse on a Hercules-compatible monographics card in graphics
  1263.       mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
  1264.       and then call this function.    Logitech drivers v5.01 and v6.00
  1265.       reportedly do not correctly use Hercules graphics in dual-monitor
  1266.       systems, while version 4.10 does.
  1267.     the Logitech mouse driver contains the signature string "LOGITECH"
  1268.       three bytes past the interrupt handler; many of the Logitech mouse
  1269.       utilities check for this signature.
  1270. SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
  1271. --------M-330001-----------------------------
  1272. INT 33 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
  1273.     AX = 0001h
  1274. SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh
  1275. --------M-330002-----------------------------
  1276. INT 33 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
  1277.     AX = 0002h
  1278. Note:    multiple calls to hide the cursor will require multiple calls to
  1279.       function 01h to unhide it.
  1280. SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
  1281. --------M-330003-----------------------------
  1282. INT 33 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
  1283.     AX = 0003h
  1284. Return: BX = button status (see #1656)
  1285.     CX = column
  1286.     DX = row
  1287. Note:    in text modes, all coordinates are specified as multiples of the cell
  1288.       size, typically 8x8 pixels
  1289. SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
  1290.  
  1291. Bitfields for mouse button status:
  1292. Bit(s)    Description    (Table 1656)
  1293.  0    left button pressed if 1
  1294.  1    right button pressed if 1
  1295.  2    middle button pressed if 1 (Mouse Systems/Logitech/Genius)
  1296. --------M-330004-----------------------------
  1297. INT 33 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
  1298.     AX = 0004h
  1299.     CX = column
  1300.     DX = row
  1301. Note:    the row and column are truncated to the next lower multiple of the cell
  1302.       size (typically 8x8 in text modes); however, some versions of the
  1303.       Microsoft documentation incorrectly state that the coordinates are
  1304.       rounded
  1305. SeeAlso: AX=0003h,INT 62/AX=0081h
  1306. --------M-330005-----------------------------
  1307. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
  1308.     AX = 0005h
  1309.     BX = button number (see #1657)
  1310. Return: AX = button states (see #1656)
  1311.     BX = number of times specified button has been pressed since last call
  1312.     CX = column at time specified button was last pressed
  1313.     DX = row at time specified button was last pressed
  1314. Note:    at least for the Genius mouse driver, the number of button presses
  1315.       returned is limited to 7FFFh
  1316. SeeAlso: AX=0006h,INT 62/AX=007Ch
  1317.  
  1318. (Table 1657)
  1319. Values for mouse button number:
  1320.  0000h    left
  1321.  0001h    right
  1322.  0002h    middle (Mouse Systems/Logitech/Genius mouse)
  1323. --------M-330006-----------------------------
  1324. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
  1325.     AX = 0006h
  1326.     BX = button number (see #1657)
  1327. Return: AX = button states (see #1656)
  1328.     BX = number of times specified button has been released since last call
  1329.     CX = column at time specified button was last released
  1330.     DX = row at time specified button was last released
  1331. Note:    at least for the Genius mouse driver, the number of button releases
  1332.       returned is limited to 7FFFh
  1333. SeeAlso: AX=0005h,INT 62/AX=007Ch
  1334. --------M-330007-----------------------------
  1335. INT 33 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
  1336.     AX = 0007h
  1337.     CX = minimum column
  1338.     DX = maximum column
  1339. Note:    in text modes, the minimum and maximum columns are truncated to the
  1340.       next lower multiple of the cell size, typically 8x8 pixels
  1341. SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1342. --------M-330008-----------------------------
  1343. INT 33 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
  1344.     AX = 0008h
  1345.     CX = minimum row
  1346.     DX = maximum row
  1347. Note:    in text modes, the minimum and maximum rows are truncated to the
  1348.       next lower multiple of the cell size, typically 8x8 pixels
  1349. SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1350. --------M-330009-----------------------------
  1351. INT 33 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
  1352.     AX = 0009h
  1353.     BX = column of cursor hot spot in bitmap (-16 to 16)
  1354.     CX = row of cursor hot spot (-16 to 16)
  1355.     ES:DX -> mask bitmap (see #1658)
  1356. Notes:    in graphics modes, the screen contents around the current mouse cursor
  1357.       position are ANDed with the screen mask and then XORed with the
  1358.       cursor mask
  1359.     the Microsoft mouse driver v7.04 and v8.20 uses only BL and CL, so the
  1360.       hot spot row/column should be limited to -128..127
  1361.     Microsoft KnowledgeBase article Q19850 states that the high bit is
  1362.       right-most, but that statement is contradicted by all other available
  1363.       documentation
  1364. SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh
  1365.  
  1366. Format of mouse mask bitmap:
  1367. Offset    Size    Description    (Table 1658)
  1368.  00h 16 WORDs    screen mask
  1369.  10h 16 WORDs    cursor mask
  1370. Note:    each word defines the sixteen pixels of a row, low bit rightmost
  1371. --------M-33000A-----------------------------
  1372. INT 33 - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
  1373.     AX = 000Ah
  1374.     BX = hardware/software text cursor
  1375.         0000h software
  1376.         CX = screen mask
  1377.         DX = cursor mask
  1378.         0001h hardware
  1379.         CX = start scan line
  1380.         DX = end scan line
  1381. Note:    when the software cursor is selected, the character/attribute data at
  1382.       the current screen position is ANDed with the screen mask and then
  1383.       XORed with the cursor mask
  1384. SeeAlso: AX=0009h,INT 62/AX=007Eh
  1385. --------M-33000B-----------------------------
  1386. INT 33 - MS MOUSE v1.0+ - READ MOTION COUNTERS
  1387.     AX = 000Bh
  1388. Return: CX = number of mickeys mouse moved horizontally since last call
  1389.     DX = number of mickeys mouse moved vertically
  1390. Notes:    a mickey is the smallest increment the mouse can sense
  1391.     positive values indicate down/right
  1392. SeeAlso: AX=0003h,AX=001Bh,AX=0027h
  1393. --------M-33000C-----------------------------
  1394. INT 33 - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
  1395.     AX = 000Ch
  1396.     CX = call mask (see #1659)
  1397.     ES:DX -> FAR routine (see #1660)
  1398. SeeAlso: AX=0018h
  1399.  
  1400. Bitfields for mouse call mask:
  1401. Bit(s)    Description    (Table 1659)
  1402.  0    call if mouse moves
  1403.  1    call if left button pressed
  1404.  2    call if left button released
  1405.  3    call if right button pressed
  1406.  4    call if right button released
  1407.  5    call if middle button pressed (Mouse Systems/Logitech/Genius mouse)
  1408.  6    call if middle button released (Mouse Systems/Logitech/Genius mouse)
  1409.  7-15    unused
  1410. Note:    some versions of the Microsoft documentation incorrectly state that CX
  1411.       bit 0 means call if mouse cursor moves
  1412.  
  1413. (Table 1660)
  1414. Values interrupt routine is called with:
  1415.     AX = condition mask (same bit assignments as call mask)
  1416.     BX = button state
  1417.     CX = cursor column
  1418.     DX = cursor row
  1419.     SI = horizontal mickey count
  1420.     DI = vertical mickey count
  1421. Notes:    some versions of the Microsoft documentation erroneously swap the
  1422.       meanings of SI and DI
  1423.     in text modes, the row and column will be reported as a multiple of
  1424.       the character cell size, typically 8x8 pixels
  1425. --------M-33000D-----------------------------
  1426. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
  1427.     AX = 000Dh
  1428. SeeAlso: AX=000Eh,INT 10/AH=04h
  1429. --------M-33000E-----------------------------
  1430. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
  1431.     AX = 000Eh
  1432. SeeAlso: AX=000Dh
  1433. --------M-33000F-----------------------------
  1434. INT 33 - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
  1435.     AX = 000Fh
  1436.     CX = number of mickeys per 8 pixels horizontally (default 8)
  1437.     DX = number of mickeys per 8 pixels vertically (default 16)
  1438. SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
  1439. --------M-330010-----------------------------
  1440. INT 33 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
  1441.     AX = 0010h
  1442.     CX,DX = X,Y coordinates of upper left corner
  1443.     SI,DI = X,Y coordinates of lower right corner
  1444. Note:    mouse cursor is hidden in the specified region, and needs to be
  1445.       explicitly turned on again
  1446. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
  1447. --------M-330010-----------------------------
  1448. INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
  1449.     AX = 0010h
  1450.     ES:DX -> update region list (see #1661)
  1451. Notes:    mouse cursor is hidden in the specified region, and needs to be
  1452.       explicitly turned on again
  1453.     this version of the call is described in an August 1988 version of the
  1454.       Genius Mouse programmer's reference; it has been changed to conform
  1455.       to the Microsoft version shown above by version 9.06 (and possibly
  1456.       earlier versions)
  1457. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
  1458.  
  1459. Format of Genius Mouse update region list:
  1460. Offset    Size    Description    (Table 1661)
  1461.  00h    WORD    left-most column
  1462.  02h    WORD    top-most row
  1463.  04h    WORD    right-most column
  1464.  06h    WORD    bottom-most row
  1465. --------M-330011-----------------------------
  1466. INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
  1467.     AX = 0011h
  1468. Return: AX = FFFFh
  1469.     BX = number of buttons
  1470. SeeAlso: AX=0000h
  1471. --------M-330012-----------------------------
  1472. INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
  1473.     AX = 0012h
  1474.     BH = cursor width in words
  1475.     CH = rows in cursor
  1476.     BL = horizontal hot spot (-16 to 16)
  1477.     CL = vertical hot spot (-16 to 16)
  1478.     ES:DX -> bit map of screen and cursor maps
  1479. Return: AX = FFFFh if successful
  1480. SeeAlso: AX=0009h,AX=002Ah,AX=0035h
  1481. --------M-330013-----------------------------
  1482. INT 33 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
  1483.     AX = 0013h
  1484.     DX = threshold speed in mickeys/second, 0000h = default of 64/second
  1485. Note:    if speed exceeds threshold, the cursor's on-screen motion is doubled
  1486. SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
  1487. --------M-330014-----------------------------
  1488. INT 33 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
  1489.     AX = 0014h
  1490.     CX = call mask (see #1659)
  1491.     ES:DX -> FAR routine
  1492. Return: CX = call mask of previous interrupt routine
  1493.     ES:DX = FAR address of previous interrupt routine
  1494. SeeAlso: AX=000Ch,AX=0018h
  1495. --------M-330015-----------------------------
  1496. INT 33 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
  1497.     AX = 0015h
  1498. Return: BX = size of buffer needed to store driver state
  1499. SeeAlso: AX=0016h,AX=0017h,AX=0042h
  1500. --------M-330016-----------------------------
  1501. INT 33 - MS MOUSE v6.0+ - SAVE DRIVER STATE
  1502.     AX = 0016h
  1503.     BX = size of buffer (see AX=0015h)
  1504.     ES:DX -> buffer for driver state
  1505. Note:    although not documented (since the Microsoft driver does not use it),
  1506.       many drivers appear to require BX on input
  1507. SeeAlso: AX=0015h,AX=0017h
  1508. --------M-330017-----------------------------
  1509. INT 33 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
  1510.     AX = 0017h
  1511.     BX = size of buffer (see AX=0015h)
  1512.     ES:DX -> buffer containing saved state
  1513. Notes:    although not documented (since the Microsoft driver does not use it),
  1514.       many drivers appear to require BX on input
  1515.     some mouse drivers range-check the values in the saved state based on
  1516.       the current video mode; thus, the video mode should be restored
  1517.       before the mouse driver's state is restored
  1518. SeeAlso: AX=0015h,AX=0016h
  1519. --------M-330018-----------------------------
  1520. INT 33 - MS MOUSE v6.0+ - SET ALTERNATE MOUSE USER HANDLER
  1521.     AX = 0018h
  1522.     CX = call mask (see #1662)
  1523.     ES:DX -> FAR routine to be invoked on mouse events (see #1663)
  1524. Return: AX = status
  1525.         0018h if successful
  1526.         FFFFh on error
  1527. Notes:    up to three handlers can be defined by separate calls to this function,
  1528.       each with a different combination of shift states in the call mask;
  1529.       calling this function again with a call mask of 0000h undefines the
  1530.       specified handler (official documentation); specifying the same
  1531.       call mask and an address of 0000h:0000h undefines the handler (real
  1532.       life)
  1533.     some versions of the documentation erroneously reverse the order of
  1534.       the bits in the call mask
  1535. SeeAlso: AX=000Ch,AX=0014h,AX=0019h
  1536.  
  1537. Bitfields for mouse call mask:
  1538. Bit(s)    Description    (Table 1662)
  1539.  0    call if mouse moves
  1540.  1    call if left button pressed
  1541.  2    call if left button released
  1542.  3    call if right button pressed
  1543.  4    call if right button released
  1544.  5    call if shift button pressed during event
  1545.  6    call if ctrl key pressed during event
  1546.  7    call if alt key pressed during event
  1547. Note:    at least one of 5-7 must be set
  1548.  
  1549. (Table 1663)
  1550. Values user handler is called with:
  1551.     AX = condition mask (same bit assignments as call mask)
  1552.     BX = button state
  1553.     CX = cursor column
  1554.     DX = cursor row
  1555.     SI = horizontal mickey count
  1556.     DI = vertical mickey count
  1557. Return: registers preserved
  1558. Note:    in text modes, the row and column will be reported as a multiple of
  1559.       the cell size, typically 8x8 pixels
  1560. --------M-330019-----------------------------
  1561. INT 33 - MS MOUSE v6.0+ - RETURN USER ALTERNATE INTERRUPT VECTOR
  1562.     AX = 0019h
  1563.     CX = call mask (see #1662)
  1564. Return: BX:DX = user interrupt vector
  1565.     CX = call mask (0000h if not found)
  1566. Note:    attempts to find a user event handler (defined by function 18h)
  1567.       whose call mask matches CX
  1568. SeeAlso: AX=0018h
  1569. --------M-33001A-----------------------------
  1570. INT 33 - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
  1571.     AX = 001Ah
  1572.     BX = horizontal speed \
  1573.     CX = vertical speed   / (see AX=000Fh)
  1574.     DX = double speed threshold (see AX=0013h)
  1575. SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
  1576. --------M-33001B-----------------------------
  1577. INT 33 - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
  1578.     AX = 001Bh
  1579. Return: BX = horizontal speed
  1580.     CX = vertical speed
  1581.     DX = double speed threshold
  1582. SeeAlso: AX=000Bh,AX=001Ah
  1583. --------M-33001C-----------------------------
  1584. INT 33 - MS MOUSE v6.0+ - SET INTERRUPT RATE
  1585.     AX = 001Ch
  1586.     BX = rate (see #1664)
  1587. Notes:    only available on InPort mouse
  1588.     values greater than 4 may cause unpredictable driver behavior
  1589.  
  1590. (Table 1664)
  1591. Values for mouse interrupt rate:
  1592.  00h    no interrupts allowed
  1593.  01h    30 per second
  1594.  02h    50 per second
  1595.  03h    100 per second
  1596.  04h    200 per second
  1597. --------M-33001D-----------------------------
  1598. INT 33 - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
  1599.     AX = 001Dh
  1600.     BX = display page number
  1601. Note:    the cursor will be displayed on the specified page
  1602. SeeAlso: AX=001Eh
  1603. --------M-33001E-----------------------------
  1604. INT 33 - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
  1605.     AX = 001Eh
  1606. Return: BX = display page number
  1607. SeeAlso: AX=001Dh
  1608. --------M-33001F-----------------------------
  1609. INT 33 - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
  1610.     AX = 001Fh
  1611. Return: AX = status
  1612.         001Fh successful
  1613.         ES:BX = INT 33 vector before mouse driver was first installed
  1614.         FFFFh unsuccessful
  1615. Notes:    restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
  1616.     if you restore INT 33 to ES:BX, driver will be completely disabled
  1617.     many drivers return AX=001Fh even though the driver has been disabled
  1618. SeeAlso: AX=0020h
  1619. --------M-330020-----------------------------
  1620. INT 33 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
  1621.     AX = 0020h
  1622. Return: AX = status
  1623.         0020h successful
  1624.         FFFFh unsuccessful
  1625. Notes:    restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
  1626.       which were removed by function 1Fh
  1627.     Microsoft's documentation states that no value is returned
  1628. SeeAlso: AX=001Fh
  1629. --------M-330021-----------------------------
  1630. INT 33 - MS MOUSE v6.0+ - SOFTWARE RESET
  1631.     AX = 0021h
  1632. Return: AX = status
  1633.         FFFFh if mouse driver installed
  1634.         BX = number of buttons (FFFFh = two buttons)
  1635.         0021h if mouse driver not installed
  1636. Note:    this call is identical to funtion 00h, but does not reset the mouse
  1637. SeeAlso: AX=0000h
  1638. --------M-330022-----------------------------
  1639. INT 33 - MS MOUSE v6.0+ - SET LANGUAGE FOR MESSAGES
  1640.     AX = 0022h
  1641.     BX = language (see #1665)
  1642. Note:    only available on international versions of the driver; US versions
  1643.       ignore this call
  1644. SeeAlso: AX=0023h
  1645.  
  1646. (Table 1665)
  1647. Values for mouse driver language:
  1648.  00h    English
  1649.  01h    French
  1650.  02h    Dutch
  1651.  03h    German
  1652.  04h    Swedish
  1653.  05h    Finnish
  1654.  06h    Spanish
  1655.  07h    Portugese
  1656.  08h    Italian
  1657. --------M-330023-----------------------------
  1658. INT 33 - MS MOUSE v6.0+ - GET LANGUAGE FOR MESSAGES
  1659.     AX = 0023h
  1660. Return: BX = language (see #1665)
  1661. Note:    the US version of the driver always returns zero
  1662. SeeAlso: AX=0022h
  1663. --------M-330024-----------------------------
  1664. INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
  1665.     AX = 0024h
  1666. Return: AX = FFFFh on error
  1667.     otherwise,
  1668.         BH = major version
  1669.         BL = minor version
  1670.         CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
  1671.         CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7)
  1672. SeeAlso: AX=004Dh,AX=006Dh
  1673. --------M-330025-----------------------------
  1674. INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
  1675.     AX = 0025h
  1676. Return: AX = general information (see #1666)
  1677.     BX = cursor lock flag for OS/2 to prevent reentrancy problems
  1678.     CX = mouse code active flag (for OS/2)
  1679.     DX = mouse driver busy flag (for OS/2)
  1680.  
  1681. Bitfields for general mouse driver information:
  1682. Bit(s)    Description    (Table 1666)
  1683.  15    driver loaded as device driver rather than TSR
  1684.  14    driver is newer integrated type
  1685.  13,12    current cursor type
  1686.     00 software text cursor
  1687.     01 hardware text cursor (CRT Controller's cursor)
  1688.     1X graphics cursor
  1689.  11-8    interrupt rate (see #1664)
  1690.  7-0    count of currently-active Mouse Display Drivers (MDD), the newer
  1691.       integrated driver type
  1692. --------M-330026-----------------------------
  1693. INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
  1694.     AX = 0026h
  1695. Return: BX = mouse-disabled flag (0000h mouse enabled, nonzero disabled)
  1696.     CX = maximum virtual X (for current video mode)
  1697.     DX = maximum virtual Y
  1698. Note:    for driver versions before 7.05, this call returns the currently-set
  1699.       maximum coordinates; v7.05+ returns the absolute maximum coordinates
  1700. SeeAlso: AX=0031h
  1701. --------M-330026-----------------------------
  1702. INT 33 - Genius Mouse 9.06 - ???
  1703.     AX = 0026h
  1704. Return: CX = 0204h if CX was 0105h on entry, else unchanged
  1705. --------M-330027-----------------------------
  1706. INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
  1707.     AX = 0027h
  1708. Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
  1709.     BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
  1710.     CX = horizontal mickeys moved since last call
  1711.     DX = vertical mickeys moved since last call
  1712. SeeAlso: AX=000Bh
  1713. --------M-330028-----------------------------
  1714. INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
  1715.     AX = 0028h
  1716.     CX = new video mode (call is NOP if 0000h)
  1717.     DH = Y font size (00h = default)
  1718.     DL = X font size (00h = default)
  1719. Return: CL = status (00h = successful)
  1720. Notes:    DX is ignored unless the selected video mode supports font size control
  1721.     when CX=0000h, an internal flag that had been set by a previous call
  1722.       is cleared; this is required before a mouse reset
  1723. SeeAlso: AX=0029h,INT 10/AH=00h
  1724. --------M-330029-----------------------------
  1725. INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
  1726.     AX = 0029h
  1727.     CX = previous video mode
  1728.         0000h get first supported video mode
  1729.         other get next supported mode after mode CX
  1730. Return: CX = first/next video mode (0000h = no more video modes)
  1731.     DS:DX -> description of video mode or 0000h:0000h if none
  1732. Notes:    the enumerated video modes may be in any order and may repeat
  1733.     the description string (if available) is terminated by '$' followed by
  1734.       a NUL byte
  1735. SeeAlso: AX=0028h
  1736. --------M-33002A-----------------------------
  1737. INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
  1738.     AX = 002Ah
  1739. Return: AX = internal counter controlling cursor visibility
  1740.     BX = cursor hot spot column
  1741.     CX = cursor hot spot row
  1742.     DX = mouse type (see #1667)
  1743. Note:    the hot spot location is relative to the upper left corner of the
  1744.       cursor block and may range from -128 to +127 both horizontally and
  1745.       vertically
  1746. SeeAlso: AX=0009h,AX=0012h,AX=0035h
  1747.  
  1748. (Table 1667)
  1749. Values for mouse type:
  1750.  00h    none
  1751.  01h    bus
  1752.  02h    serial
  1753.  03h    InPort
  1754.  04h    IBM
  1755.  05h    Hewlett-Packard
  1756. --------M-33002B-----------------------------
  1757. INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
  1758.     AX = 002Bh
  1759.     BX = active acceleration profile
  1760.         0001h-0004h or FFFFh to restore default curves
  1761.     ES:SI -> buffer containing acceleration profile data (see #1668)
  1762. Return: AX = success flag
  1763. SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
  1764.  
  1765. Format of acceleration profile data:
  1766. Offset    Size    Description    (Table 1668)
  1767.  00h    BYTE    length of acceleration profile 1
  1768.  01h    BYTE    length of acceleration profile 2
  1769.  02h    BYTE    length of acceleration profile 3
  1770.  03h    BYTE    length of acceleration profile 4
  1771.  04h 32 BYTEs    threshold speeds for acceleration profile 1
  1772.  24h 32 BYTEs    threshold speeds for acceleration profile 2
  1773.  44h 32 BYTEs    threshold speeds for acceleration profile 3
  1774.  64h 32 BYTEs    threshold speeds for acceleration profile 4
  1775.  84h 32 BYTEs    speedup factor for acceleration profile 1
  1776.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1777.  A4h 32 BYTEs    speedup factor for acceleration profile 2
  1778.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1779.  C4h 32 BYTEs    speedup factor for acceleration profile 3
  1780.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1781.  E4h 32 BYTEs    speedup factor for acceleration profile 4
  1782.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1783. 104h 16 BYTEs    name of acceleration profile 1 (blank-padded)
  1784. 114h 16 BYTEs    name of acceleration profile 2 (blank-padded)
  1785. 124h 16 BYTEs    name of acceleration profile 3 (blank-padded)
  1786. 134h 16 BYTEs    name of acceleration profile 4 (blank-padded)
  1787. Note:    unused bytes in the threshold speed fields are filled with 7Fh and
  1788.       unused bytes in the speedup factor fields are filled with 10h
  1789. --------M-33002C-----------------------------
  1790. INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
  1791.     AX = 002Ch
  1792. Return: AX = status (0000h success)
  1793.     BX = currently-active acceleration profile
  1794.     ES:SI -> acceleration profile data (see #1668)
  1795. SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
  1796. --------M-33002D-----------------------------
  1797. INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
  1798.     AX = 002Dh
  1799.     BX = acceleration level
  1800.         0001h-0004h to set profile, or FFFFh to get current profile
  1801. Return: AX = status
  1802.         0000h successful
  1803.         ES:SI -> 16-byte blank-padded name of acceleration profile
  1804.         FFFEh invalid acceleration curve number
  1805.         ES:SI destroyed
  1806.     BX = active acceleration curve number
  1807. SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
  1808. --------M-33002E-----------------------------
  1809. INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
  1810.     AX = 002Eh
  1811.     BL = flag (if nonzero, fill ES:SI buffer with default names on return)
  1812.     ES:SI -> 64-byte buffer for profile names (16 bytes per name)
  1813. Return: AX = status (0000h success)
  1814.     ES:SI buffer filled with default names if BL nonzero on entry
  1815. Note:    not supported by Logitech driver v6.10
  1816. SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
  1817. --------M-33002F-----------------------------
  1818. INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
  1819.     AX = 002Fh
  1820. Return: AX = status
  1821. Note:    invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
  1822. SeeAlso: INT 2F/AH=53h
  1823. --------M-330030-----------------------------
  1824. INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
  1825.     AX = 0030h
  1826.     CX = command
  1827.         0000h get status of BallPoint device
  1828.         other set rotation angle and masks
  1829.         BX = rotation angle (-32768 to 32767 degrees)
  1830.         CH = primary button mask
  1831.         CL = secondary button mask
  1832. Return: AX = button status (FFFFh if no BallPoint) (see #1669)
  1833.     BX = rotation angle (0-360 degrees)
  1834.     CH = primary button mask
  1835.     CL = secondary button mask
  1836.  
  1837. Bitfields for BallPoint mouse button status:
  1838. Bit(s)    Description    (Table 1669)
  1839.  5    button 1
  1840.  4    button 2
  1841.  3    button 3
  1842.  2    button 4
  1843.  other    zero
  1844. --------M-330031-----------------------------
  1845. INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
  1846.     AX = 0031h
  1847. Return: AX = virtual X minimum
  1848.     BX = virtual Y minimum
  1849.     CX = virtual X maximum
  1850.     DX = virtual Y maximum
  1851. Note:    the minimum and maximum values are those set by AX=0007h and AX=0008h;
  1852.       the default is minimum = 0 and maximum = absolute maximum
  1853.       (see AX=0026h)
  1854. SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
  1855. --------M-330032-----------------------------
  1856. INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
  1857.     AX = 0032h
  1858. Return: AX = active function flags (FFFFh for v8.10)
  1859.         bit 15: function 0025h supported
  1860.         bit 14: function 0026h supported
  1861.         ...
  1862.         bit 0:  function 0034h supported
  1863.     BX = ??? (0000h) officially unused
  1864.     CX = ??? (E000h) officially unused
  1865.     DX = ??? (0000h) officially unused
  1866. --------M-330033-----------------------------
  1867. INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
  1868.     AX = 0033h
  1869.     CX = size of buffer
  1870.         0000h get required buffer size
  1871.         Return: AX = 0000h
  1872.             CX = required size (0154h for Logitech v6.10, 0159h
  1873.                 for MS v8.10-8.20)
  1874.         other
  1875.         ES:DX -> buffer of CX bytes for mouse settings
  1876.         Return: AX = 0000h
  1877.             CX = number of bytes returned
  1878.             ES:DX buffer filled (see #1670)
  1879. SeeAlso: AX=002Bh
  1880.  
  1881. Format of mouse settings data buffer:
  1882. Offset    Size    Description    (Table 1670)
  1883.  00h    BYTE    mouse type
  1884.  01h    BYTE    current language
  1885.  02h    BYTE    horizontal sensitivity (00h-64h)
  1886.  03h    BYTE    vertical sensitivity (00h-64h)
  1887.  04h    BYTE    double-speed threshold (00h-64h)
  1888.  05h    BYTE    ballistic curve (01h-04h)
  1889.  06h    BYTE    interrupt rate (01h-04h)
  1890.  07h    BYTE    cursor override mask
  1891.  08h    BYTE    laptop adjustment
  1892.  09h    BYTE    memory type (00h-02h)
  1893.  0Ah    BYTE    SuperVGA support (00h,01h)
  1894.  0Bh    BYTE    rotation angle
  1895.  0Ch    BYTE    ???
  1896.  0Dh    BYTE    primary button (01h-04h)
  1897.  0Eh    BYTE    secondary button (01h-04h)
  1898.  0Fh    BYTE    click lock enabled (00h,01h)
  1899.  10h 324 BYTEs    acceleration profile data (see #1668)
  1900. 154h  5 BYTEs    ??? (Microsoft driver, but not Logitech)
  1901. --------M-330034-----------------------------
  1902. INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
  1903.     AX = 0034h
  1904. Return: AX = status (0000h successful)
  1905.     ES:DX -> ASCIZ initialization (.INI) file name
  1906. --------M-330035-----------------------------
  1907. INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
  1908.     AX = 0035h
  1909.     BX = function
  1910.         FFFFh get current settings
  1911.         Return: AX = 0000h
  1912.             BH = style (see #1671)
  1913.             BL = size (see below)
  1914.             CH = threshold
  1915.             CL = active flag (00h disabled, 01h enabled)
  1916.             DX = delay
  1917.         other
  1918.         BH = pointer style (see #1671)
  1919.         BL = size (00h small "1", 01h medium "1.5", 02h large "2")
  1920.         CH = threshold (00h-64h)
  1921.         CL = active flag (00h disable size change, 01h enable)
  1922.         DX = delay (0000h-0064h)
  1923.         Return: AX = 0000h
  1924. Note:    not supported by Logitech driver v6.10
  1925. SeeAlso: AX=0012h,AX=002Ah
  1926.  
  1927. (Table 1671)
  1928. Values for pointer style:
  1929.  00h    normal
  1930.  01h    reverse
  1931.  02h    transparent
  1932. --------M-330042-----------------------------
  1933. INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
  1934.     AX = 0042h
  1935. Return: AX = status
  1936.         0000h MSMOUSE not installed
  1937.         0042h functions 42h, 50h, and 52h not supported
  1938.         FFFFh successful
  1939.         BX = buffer size in bytes for functions 50h and 52h
  1940. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1941. SeeAlso: AX=0015h,AX=0050h,AX=0052h
  1942. --------M-330043-----------------------------
  1943. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CONFIGURE MOUSE???
  1944.     AX = 0043h
  1945.     CX:BX -> configuration buffer (see #1672)
  1946.     DL = ???
  1947. Return: ???
  1948. Notes:    also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
  1949.     this function is also supported by the Genius Mouse 9.06 driver
  1950.  
  1951. Format of Mouse Systems configuration buffer:
  1952. Offset    Size    Description    (Table 1672)
  1953.  00h    WORD    I/O port address
  1954.  02h    BYTE    ???
  1955.  03h    BYTE    interrupt number
  1956.  04h    BYTE    interrupt mask for interrupt controller
  1957.  05h  5 BYTEs    ???
  1958. --------M-330044CXCDEF-----------------------
  1959. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE IGNORE ACCELERATION CMDS
  1960.     AX = 0044h
  1961.     CX = CDEFh
  1962. Return: AX = new state of "Ignore Application Acceleration Commands" flag
  1963. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1964. SeeAlso: AX=0045h
  1965. --------M-330045CXCDEF-----------------------
  1966. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE RESOLUTION DOUBLING
  1967.     AX = 0045h
  1968.     CX = CDEFh
  1969. Return: AX = new state of resolution doubling flag
  1970. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1971. SeeAlso: AX=0044h
  1972. --------M-330047-----------------------------
  1973. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET BUTTON ASSIGNMENTS
  1974.     AX = 0047h
  1975.     ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
  1976. Return: ???
  1977. Note:    also supported by Genius Mouse 9.06 driver
  1978. SeeAlso: AX=0067h
  1979. --------M-330048BXCDEF-----------------------
  1980. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET ???
  1981.     AX = 0048h
  1982.     BX = CDEFh
  1983. Return: CX = ???
  1984.     BH = ???
  1985.     BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
  1986. Note:    also supported by Genius Mouse 9.06 driver
  1987. --------M-33004B-----------------------------
  1988. INT 33 - Z-NIX MOUSE DRIVER v7.04d - INSTALLATION CHECK
  1989.     AX = 004Bh
  1990. Return: ES:DI -> signature/description string if installed
  1991. Note:    the signature string in v7.04d is
  1992.       "Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
  1993. --------M-33004CBXCDEF-----------------------
  1994. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ??? FLAG
  1995.     AX = 004Ch
  1996.     BX = CDEFh
  1997. Note:    also supported by Genius Mouse 9.06
  1998. SeeAlso: AX=006Ch
  1999. --------M-33004D-----------------------------
  2000. INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
  2001.     AX = 004Dh
  2002. Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft"
  2003. Notes:    also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
  2004.       mouse drivers
  2005.     in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
  2006.       follows the above copyright message (KYE Corp. manufactures the
  2007.       driver)
  2008. SeeAlso: AX=0024h,AX=006Dh,AX=0666h
  2009. --------M-33004F-----------------------------
  2010. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ENABLE MOUSE
  2011.     AX = 004Fh
  2012. Return: nothing
  2013. Note:    also supported by Genius Mouse 9.06
  2014. SeeAlso: AX=0043h,AX=0053h
  2015. --------M-330050-----------------------------
  2016. INT 33 - PCMOUSE - SAVE MSMOUSE STATE
  2017.     AX = 0050h
  2018.     BX = buffer size (ignored by some driver versions)
  2019.     ES:DX -> buffer
  2020. Return: AX = FFFFh if successful
  2021. Notes:    the buffer must be large enough to hold the entire state, or following
  2022.       data will be overwritten by state data in versions which ignore BX;
  2023.       use INT 33/AX=0042h to get the required size
  2024.     this function is also supported by the Genius Mouse 9.06 driver
  2025. SeeAlso: AX=0042h,AX=0052h
  2026. --------M-330052-----------------------------
  2027. INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
  2028.     AX = 0052h
  2029.     BX = buffer size (ignored by some driver versions)
  2030.     ES:DX -> buffer
  2031. Return: AX = FFFFh if successful
  2032. Note:    also supported by Genius Mouse 9.06 driver
  2033. SeeAlso: AX=0050h
  2034. --------M-330053-----------------------------
  2035. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - DISABLE MOUSE
  2036.     AX = 0053h
  2037. Return: nothing
  2038. Note:    also supported by Genius Mouse 9.06
  2039. SeeAlso: AX=0043h,AX=004Fh
  2040. --------M-330054CXCDEF-----------------------
  2041. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SELECT ULTRARES ACCELERATION LEVEL
  2042.     AX = 0054h
  2043.     CX = CDEFh
  2044.     BX = new acceleration level (0-9)
  2045. Return: ???
  2046. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2047. SeeAlso: AX=005Ah
  2048. --------M-330055-----------------------------
  2049. INT 33 - Kraft Mouse - GET ???
  2050.     AX = 0055h
  2051. Return: CX = ???
  2052.     DX = ???
  2053.     ES = ???
  2054. --------M-330058-----------------------------
  2055. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2056.     AX = 0058h
  2057. Return: AX = CS of driver
  2058.     CX:BX = original INT 33 vector
  2059.     DX = ???
  2060. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2061. --------M-33005A-----------------------------
  2062. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ULTRARES ACCELERATIONS
  2063.     AX = 005Ah
  2064.     CX = number of WORDs to copy (max 0014h, but not range-checked)
  2065.     DX:SI -> buffer containing thresholds??? (CX words)
  2066.     DX:BX -> buffer containing acceleration values???
  2067.         (9*14h words, only first CX of each 14h used)
  2068.     ???
  2069. Return: CF clear
  2070.     ???
  2071. Note:    this function is also supported by Genius Mouse 9.06
  2072. SeeAlso: AX=0054h
  2073. --------M-330061BXCDEF-----------------------
  2074. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2075.     AX = 0061h
  2076.     BX = CDEFh
  2077. Return: CX = ???
  2078. Note:    also supported by Genius Mouse 9.06
  2079. --------M-330067-----------------------------
  2080. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET MOUSE BUTTONS???
  2081.     AX = 0067h
  2082. Return: BL = number of buttons???
  2083. Note:    also supported by Genius Mouse 9.06
  2084. SeeAlso: AX=0047h
  2085. --------M-33006C-----------------------------
  2086. INT 33 U - TRUEDOX Mouse driver v4.01 - GET/SET HARDWARE PARAMETERS
  2087.     AX = 006Ch
  2088.     BX = new IRQ (0003h or 0004h), or 0000h to get current values only
  2089.     CL = new IRQmask (sent to 8259)
  2090.     DX = new base I/O port
  2091. Return: BX = current IRQ
  2092.     DX = light pen state???
  2093. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2094.       TRUEDOX Technology Corporation
  2095. SeeAlso: AX=00A1h,AX=0666h
  2096. --------M-33006CBXCDEF-----------------------
  2097. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CLEAR ??? FLAG
  2098.     AX = 006Ch
  2099.     BX = CDEFh
  2100. Note:    also supported by Genius Mouse 9.06
  2101. SeeAlso: AX=004Ch
  2102. --------M-33006D-----------------------------
  2103. INT 33 - MS MOUSE - GET VERSION STRING
  2104.     AX = 006Dh
  2105. Return: ES:DI -> Microsoft version number of resident driver (see #1673)
  2106. Notes:    also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
  2107.       drivers
  2108.     the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
  2109.       Microsoft version as 7.00 even though they do not support any of the
  2110.       functions from 0025h through 002Dh supported by the MS 7.00 driver
  2111.       (the Genius Mouse driver supports function 0026h, but it differs
  2112.       from the Microsoft function)
  2113.     the TRUEDOX 4.01 driver reports its version as 6.26 through this call,
  2114.       but as 6.24 through AX=0024h
  2115. SeeAlso: AX=0024h,AX=004Dh,AX=266Ch
  2116.  
  2117. Format of Microsoft version number:
  2118. Offset    Size    Description    (Table 1673)
  2119.  00h    BYTE    major version
  2120.  01h    BYTE    minor version (BCD)
  2121. --------M-330070BXABCD-----------------------
  2122. INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
  2123.     AX = 0070h
  2124.     BX = ABCDh
  2125. Return: AX = ABCDh if installed
  2126.         BX:CX -> data structure (see #1674)
  2127. Notes:    this function is also supported by the Genius Mouse 9.06 driver
  2128.     the v7.01 POPUP.COM and menu drivers also check for the signature
  2129.       CDh ABh BAh DCh at offset -2Ch from the interrupt handler
  2130.     if POPUP is not loaded, the returned data structure contains the proper
  2131.       signature at offset 00h, but not at offset 08h
  2132.  
  2133. Format of Mouse Systems POPUP.COM data structure:
  2134. Offset    Size    Description    (Table 1674)
  2135.  00h    WORD    signature ABCDh
  2136.  02h    DWORD    pointer to info structure??? (see #1675)
  2137.  06h  2 BYTEs    ???
  2138.  08h    WORD    signature ABCDh
  2139.  
  2140. Format of Mouse Systems POPUP.COM info structure:
  2141. Offset    Size    Description    (Table 1675)
  2142.  00h    WORD    driver version
  2143.  02h  8 BYTEs    ???
  2144.  0Ah    WORD    segment of ???
  2145.     ???
  2146. --------M-330072BXABCD-----------------------
  2147. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2148.     AX = 0072h
  2149.     BX = ABCDh
  2150. Return: ???
  2151. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2152. --------M-330073BXCDEF-----------------------
  2153. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET BUTTON ASSIGNMENTS
  2154.     AX = 0073h
  2155.     BX = CDEFh
  2156.     ES:DX -> 3-byte buffer for button assignments
  2157. Return: CX = number of buttons???
  2158.     ES:DX buffer filled (default is "LMR")
  2159. Note:    also supported by Genius Mouse 9.06
  2160. SeeAlso: AX=0067h
  2161. --------M-3300A1-----------------------------
  2162. INT 33 U - TRUEDOX Mouse driver - SET HARDWARE PC MODE (3 button)
  2163.     AX = 00A0h
  2164. Return: nothing
  2165. Note:    this function is only available if the mouse mode is switchable
  2166.       through the power pins
  2167. SeeAlso: AX=006Ch"TRUEDOX",AX=00A1h"TRUEDOX"
  2168. --------M-3300A1-----------------------------
  2169. INT 33 U - TRUEDOX Mouse driver - SET HARDWARE MS MODE (2 button)
  2170.     AX = 00A1h
  2171. Return: nothing
  2172. Notes:    this function is only available if the mouse mode is switchable
  2173.       through the power pins
  2174.     this is the mouse driver for the Dell Dimension series of computers, by
  2175.       TRUEDOX Technology Corporation
  2176. SeeAlso: AX=006Ch"TRUEDOX",AX=00A0h"TRUEDOX",AX=00A6h,AX=0666h
  2177. --------M-3300A6-----------------------------
  2178. INT 33 U - TRUEDOX Mouse driver - SET RESOLUTION
  2179.     AX = 00A6h
  2180.     BX = new software resolution
  2181.         0001h 50-200 dpi
  2182.         0002h 200-400 dpi
  2183.         0003h 400-800 dpi
  2184. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2185.       TRUEDOX Technology Corporation
  2186. SeeAlso: AX=00A0h,AX=00A1h,AX=0666h
  2187. --------M-33012E-----------------------------
  2188. INT 33 - MS MOUSE v8.10+ - ???
  2189.     AX = 012Eh
  2190.     BL = ???
  2191. Return: AX = 0000h
  2192. Note:    not supported by Logitech driver v6.10
  2193. SeeAlso: AX=002Eh,AX=022Eh
  2194. --------M-33022E-----------------------------
  2195. INT 33 - MS MOUSE v8.10+ - ???
  2196.     AX = 022Eh
  2197.     BL = ???
  2198. Return: AX = 0000h
  2199. Note:    not supported by Logitech driver v6.10
  2200. SeeAlso: AX=002Eh,AX=012Eh
  2201. --------M-330666-----------------------------
  2202. INT 33 U - TRUEDOX Mouse driver v4.01 - GET COPYRIGHT STRING
  2203.     AX = 0666h
  2204. Return: DX:AX -> ASCII "Copyright 1987-1992 TRUEDOX Technology Corporation"
  2205. Note:    this is the mouse driver for the Dell Dimension series of computers,
  2206.       by TRUEDOX Technology Corporation
  2207. SeeAlso: AX=004Dh,AX=00A6h,AX=0666h
  2208. --------M-33136C-----------------------------
  2209. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2210.     AX = 136Ch
  2211.     BX = ???
  2212. Return: AX = ???
  2213.     BX = ???
  2214. --------M-33146C-----------------------------
  2215. INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
  2216.     AX = 146Ch
  2217.     BL = function
  2218.         00h set ???
  2219.         BH = new value (zero/nonzero to clear/set)
  2220.         else get ???
  2221.         Return: ???
  2222. --------M-33156C-----------------------------
  2223. INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
  2224.     AX = 156Ch
  2225. Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
  2226.     ES:SI -> version string, terminated with CRLF
  2227. --------M-33166C-----------------------------
  2228. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2229.     AX = 166Ch
  2230.     BL = ???
  2231.         00h ???
  2232.         01h ???
  2233.         other ???
  2234.         BH = new value of ???
  2235.         Return: AX = FFFFh
  2236. --------M-33176C-----------------------------
  2237. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2238.     AX = 176Ch
  2239.     ???
  2240. Return: ???
  2241. --------M-33186C-----------------------------
  2242. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2243.     AX = 186Ch
  2244.     ???
  2245. Return: ???
  2246. --------M-33196C-----------------------------
  2247. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2248.     AX = 196Ch
  2249.     ???
  2250. Return: ???
  2251. --------M-331A6C-----------------------------
  2252. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2253.     AX = 1A6Ch
  2254. Return: AX = FFFFh
  2255.     BX = ???
  2256.     CX = ???
  2257. SeeAlso: AX=1B6Ch
  2258. --------M-331B6C-----------------------------
  2259. INT 33 - LOGITECH MOUSE v6.10+ - SET ???
  2260.     AX = 1B6Ch
  2261.     BX = new value for ??? (0000h-0003h)
  2262. Return: AX = FFFFh
  2263. SeeAlso: AX=1A6Ch
  2264. --------M-331C6C-----------------------------
  2265. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2266.     AX = 1C6Ch
  2267.     BX = ???
  2268.         <42h ???
  2269.         =42h ???
  2270.         >42h ???
  2271.         ES:DI -> ???
  2272.         Return: AX = ???
  2273. --------M-331D6C-----------------------------
  2274. INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
  2275.     AX = 1D6Ch
  2276. Return: BX = direction (0=north, 1=south, 2=east, 3=west)
  2277. SeeAlso: AX=1E6Ch
  2278. --------M-331E6C-----------------------------
  2279. INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
  2280.     AX = 1E6Ch
  2281.     BX = direction (0=north, 1=south, 2=east, 3=west)
  2282. SeeAlso: AX=1D6Ch
  2283. --------M-331F6C-----------------------------
  2284. INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
  2285.     AX = 1F6Ch
  2286. Return: BX = 0=off, 1=on
  2287.     CX = 1=low, 2=high
  2288. SeeAlso: AX=002Ch,AX=236Ch
  2289. --------M-33206C-----------------------------
  2290. INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
  2291.     AX = 206Ch
  2292.     BX = parameter (00h = right, FFh = left)
  2293. SeeAlso: AX=216Ch
  2294. --------M-33216C-----------------------------
  2295. INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
  2296.     AX = 216Ch
  2297. Return: BX = parameter (00h = right, FFh = left)
  2298. SeeAlso: AX=206Ch
  2299. --------M-33226C-----------------------------
  2300. INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
  2301.     AX = 226Ch
  2302. Note:    this only frees memory; does not restore hooked interrupts
  2303. --------M-33236C-----------------------------
  2304. INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
  2305.     AX = 236Ch
  2306.     BX = 0=off, 1=on
  2307.     CX = 1=low, 2=high
  2308. SeeAlso: AX=002Ch,AX=1F6Ch
  2309. --------M-33246C-----------------------------
  2310. INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
  2311.     AX = 246Ch
  2312.     ES:DX -> parameter table buffer (see #1676)
  2313. Return: AX = FFFFh if driver installed for serial mouse
  2314. SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
  2315.  
  2316. Format of Logitech Mouse parameter table:
  2317. Offset    Size    Description    (Table 1676)
  2318.  00h    WORD    baud rate divided by 100  (serial mouse only)
  2319.  02h    WORD    emulation          (serial mouse only)
  2320.  04h    WORD    report rate          (serial mouse only)
  2321.  06h    WORD    firmware revision      (serial mouse only)
  2322.  08h    WORD    00h              (serial mouse only)
  2323.  0Ah    WORD    port              (serial mouse only)
  2324.  0Ch    WORD    physical buttons
  2325.  0Eh    WORD    logical buttons
  2326. --------M-33256CBX0000-----------------------
  2327. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
  2328.     AX = 256Ch
  2329.     BX = 0000h
  2330.     CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
  2331. Return: AX = FFFFh if driver installed for serial mouse
  2332. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
  2333. --------M-33256CBX0001-----------------------
  2334. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
  2335.     AX = 256Ch
  2336.     BX = 0001h
  2337.     CX = emulation type (see #1677)
  2338. Return: AX = FFFFh if driver installed for serial mouse
  2339. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
  2340.  
  2341. (Table 1677)
  2342. Values for Logitech mouse emulation type:
  2343.  00h    5 byte packed binary
  2344.  01h    3 byte packed binary
  2345.  02h    hexadecimal
  2346.  03h    relative bit pad
  2347.  04h    not supported
  2348.  05h    MM Series
  2349.  06h    not supported
  2350.  07h    Microsoft
  2351. --------M-33256CBX0002-----------------------
  2352. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
  2353.     AX = 256Ch
  2354.     BX = 0002h
  2355.     CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
  2356. Return: AX = FFFFh if driver installed for serial mouse
  2357. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
  2358. --------M-33256CBX0003-----------------------
  2359. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
  2360.     AX = 256Ch
  2361.     BX = 0003h
  2362.     CX = port (1, 2)
  2363. Return: AX = FFFFh if driver installed for serial mouse
  2364. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
  2365. --------M-33256CBX0004-----------------------
  2366. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
  2367.     AX = 256Ch
  2368.     BX = 0004h
  2369.     CX = buttons (2, 3)
  2370. Return: AX = FFFFh if driver installed for serial mouse
  2371. SeeAlso: AX=246Ch,AX=276Ch
  2372. --------M-33266C-----------------------------
  2373. INT 33 - LOGITECH MOUSE - GET VERSION???
  2374.     AX = 266Ch
  2375. Return: BX = 'SS'
  2376.     CH = '4'  major version number
  2377.     CL = '1'  minor version number
  2378. SeeAlso: AX=006Dh
  2379. --------M-33276C-----------------------------
  2380. INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
  2381.     AX = 276Ch
  2382. SeeAlso: AX=256Ch
  2383. --------M-333000-----------------------------
  2384. INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
  2385.     AX = 3000h
  2386. Return: AX = FFFFh if installed
  2387.         BX = version number (BH = major, BL = minor)
  2388. Program: SMD is a programmer's library by Andy Hakim which provides a
  2389.       graphics-style mouse cursor in text mode.  PrecisePoint is an
  2390.       SMD-based TSR which replaces the block mouse cursor in text
  2391.       applications.
  2392. SeeAlso: AX=0000h,AX=3001h,AX=3003h
  2393. --------M-333001-----------------------------
  2394. INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
  2395.     AX = 3001h
  2396. Return: AX = status (0000h = disabled, 0001h = enabled)
  2397. Note:    SMD remains disabled if running under Desqview or in graphics mode
  2398. SeeAlso: AX=0001h,AX=0002h,AX=3002h
  2399. --------M-333002-----------------------------
  2400. INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
  2401.     AX = 3002h
  2402. Return: AX = status (0000h = disabled, 0001h = enabled)
  2403. SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
  2404. --------M-333003-----------------------------
  2405. INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
  2406.     AX = 3003h
  2407.     BL = data structure selector
  2408.         00h Primary Bitmap (used for 25 line mode)
  2409.         01h Secondary Bitmap (used for 43/50 line modes)
  2410.         02h Sacrifice Character Map
  2411.         03h Program Information
  2412. Return: ES:DX -> selected data structure
  2413. SeeAlso: AX=3000h
  2414.  
  2415. Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]:
  2416. Offset    Size    Description    (Table 1678)
  2417.  00h    BYTE    vertical size of bitmap (00h - 10h)
  2418.  01h    BYTE    horizontal size of bitmap (00h - 10h)
  2419.  02h    BYTE    vertical hotspot position (00h - 10h)
  2420.  03h    BYTE    horizontal hotspot position (00h - 10h)
  2421.  04h 16 WORDs    cursor bitmap data
  2422.  14h 16 WORDs    screen bitmap data
  2423.  
  2424. Format of Sacrifice Character Map [SMD_SMAP_STRUCT]:
  2425. Offset    Size    Description    (Table 1679)
  2426.  00h    BYTE    bytes are character values (00h-FFh) used in place of the
  2427.  01h    BYTE    actual character for the corresponding position on the screen
  2428.  02h    BYTE         +--------------+      occupied by part or all of the mouse
  2429.  03h    BYTE         | 0h | 1h | 2h |      cursor
  2430.  04h    BYTE         |----+----+----|
  2431.  05h    BYTE         | 3h | 4h | 5h |
  2432.  06h    BYTE         |----+----+----|
  2433.  07h    BYTE         | 6h | 7h | 8h |
  2434.  08h    BYTE         +--------------+
  2435.  
  2436. Format of Program Information [SMD_INFO_STRUCT]:
  2437. Offset    Size    Description    (Table 1680)
  2438.  00h    WORD    segment of old interrupt 33h handler
  2439.  02h    WORD    offset of old interrupt 33h handler
  2440.  04h    WORD    PSP of SMD
  2441.  06h    BYTE    ENABLE/DISABLE manual setting status
  2442.  07h    BYTE    ENABLE/DISABLE internal usage status
  2443. --------M-333004-----------------------------
  2444. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2445.     AX = 3004h
  2446. SeeAlso: AX=3000h
  2447. --------M-333005-----------------------------
  2448. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2449.     AX = 3005h
  2450. SeeAlso: AX=3000h
  2451. --------M-334F00-----------------------------
  2452. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2453.     AX = 4F00h
  2454. Return: AX = 004Fh if supported
  2455.     BX = ???
  2456.     ES:DI -> ???
  2457. SeeAlso: AX=4F01h
  2458. --------M-334F01-----------------------------
  2459. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2460.     AX = 4F01h
  2461.     ES = ???
  2462. Return: AX = 004Fh if supported
  2463.     ES:DI -> ???
  2464. SeeAlso: AX=4F00h
  2465. --------T-33FFE6-----------------------------
  2466. INT 33 - Switch-It v3.23 - GET ??? PROGRAM
  2467.     AX = FFE6h
  2468.     CX = length of buffer
  2469.     ES:DI -> buffer for program name
  2470. Return: ES:DI buffer filled
  2471. Program: Switch-It is a task switcher supporting up to 100 programs
  2472.       simultaneously by Better Software Technology, Inc.
  2473. --------T-33FFE7-----------------------------
  2474. INT 33 - Switch-It v3.23 - GET ???
  2475.     AX = FFE7h
  2476. Return: AX = ???
  2477. --------T-33FFE8-----------------------------
  2478. INT 33 - Switch-It v3.23 - ???
  2479.     AX = FFE8h
  2480.     CX = length of name including terminating NUL
  2481.     DS:SI -> ASCIZ program pathname
  2482. --------T-33FFE9-----------------------------
  2483. INT 33 - Switch-It v3.23 - SET ???
  2484.     AX = FFE9h
  2485.     BX = ???
  2486. --------T-33FFEA-----------------------------
  2487. INT 33 - Switch-It v3.23 - SET ???
  2488.     AX = FFEAh
  2489.     BL = ???
  2490. --------T-33FFEB-----------------------------
  2491. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2492.     AX = FFEBh
  2493. --------T-33FFEC-----------------------------
  2494. INT 33 - Switch-It v3.23 - SET ???
  2495.     AX = FFECh
  2496.     BL = ???
  2497. --------T-33FFED-----------------------------
  2498. INT 33 - Switch-It v3.23 - GET ???
  2499.     AX = FFEDh
  2500. Return: AX = ??? (0001h)
  2501.     BX = ???
  2502. Program: Switch-It is a task switcher supporting up to 100 programs
  2503.       simultaneously by Better Software Technology, Inc.
  2504. --------T-33FFEE-----------------------------
  2505. INT 33 - Switch-It v3.23 - GET ???
  2506.     AX = FFEEh
  2507. Return: AX = ???
  2508. --------T-33FFEF-----------------------------
  2509. INT 33 - Switch-It v3.23 - GET ???
  2510.     AX = FFEFh
  2511. Return: BX:AX -> ???
  2512. --------T-33FFF0-----------------------------
  2513. INT 33 - Switch-It v3.23 - SET ???
  2514.     AX = FFF0h
  2515.     BL = ???
  2516. --------T-33FFF1-----------------------------
  2517. INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
  2518.     AX = FFF1h
  2519. Return: BX:AX -> ASCIZ pathname of configuration file
  2520. Program: Switch-It is a task switcher supporting up to 100 programs
  2521.       simultaneously by Better Software Technology, Inc.
  2522. --------T-33FFF2-----------------------------
  2523. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2524.     AX = FFF2h
  2525. Return: AL = 01h
  2526. --------T-33FFF3-----------------------------
  2527. INT 33 - Switch-It v3.23 - GET ???
  2528.     AX = FFF3h
  2529. Return: AX = ???
  2530. --------T-33FFF4-----------------------------
  2531. INT 33 - Switch-It v3.23 - SET ???
  2532.     AX = FFF4h
  2533.     BX = ???
  2534.     CX = ???
  2535. --------T-33FFF5-----------------------------
  2536. INT 33 - Switch-It v3.23 - GET ???
  2537.     AX = FFF5h
  2538. Return: AX = ???
  2539. --------T-33FFF6-----------------------------
  2540. INT 33 - Switch-It v3.23 - GET ???
  2541.     AX = FFF6h
  2542. Return: AX = ???
  2543. --------T-33FFF7-----------------------------
  2544. INT 33 - Switch-It v3.23 - GET ???
  2545.     AX = FFF7h
  2546.     BX = index of ???
  2547. Return: AX = ???
  2548. --------T-33FFF8-----------------------------
  2549. INT 33 - Switch-It v3.23 - ???
  2550.     AX = FFF8h
  2551.     BX = ???
  2552.     CX = length of program name, including terminating NUL
  2553.     DS:SI -> ASCIZ program pathname
  2554. Return: ???
  2555. Program: Switch-It is a task switcher supporting up to 100 programs
  2556.       simultaneously by Better Software Technology, Inc.
  2557. --------T-33FFF9-----------------------------
  2558. INT 33 - Switch-It v3.23 - NOP
  2559.     AX = FFF9h
  2560. --------T-33FFFA-----------------------------
  2561. INT 33 - Switch-It v3.23 - SET ???
  2562.     AX = FFFAh
  2563.     BX = index of program
  2564. SeeAlso: AX=FFFBh,AX=FFFCh
  2565. --------T-33FFFB-----------------------------
  2566. INT 33 - Switch-It v3.23 - GET ???
  2567.     AX = FFFBh
  2568.     BX = index of program
  2569. Return: AX = ??? (0000h or 0001h)
  2570. SeeAlso: AX=FFFAh,AX=FFFCh
  2571. --------T-33FFFC-----------------------------
  2572. INT 33 - Switch-It v3.23 - CLEAR ???
  2573.     AX = FFFCh
  2574.     BX = index of program
  2575. SeeAlso: AX=FFFAh,AX=FFFCh
  2576. --------T-33FFFD-----------------------------
  2577. INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
  2578.     AX = FFFDh
  2579. Return: AX = first available segment???
  2580.     BX = paragraph of top of conventional memory
  2581.     DX = PSP segment of SI.EXE
  2582. --------T-33FFFE-----------------------------
  2583. INT 33 - Switch-It v3.23 - INSTALLATION CHECK
  2584.     AX = FFFEh
  2585. Return: BX = ???
  2586.     DX = 5349h ("SI")
  2587. --------T-33FFFF-----------------------------
  2588. INT 33 - Switch-It v3.23 - ???
  2589.     AX = FFFFh
  2590.     BX = ???
  2591. Program: Switch-It is a task switcher supporting up to 100 programs
  2592.       simultaneously by Better Software Technology, Inc.
  2593. --------r-34---------------------------------
  2594. INT 34 - FLOATING POINT EMULATION - OPCODE D8h
  2595. Desc:    this interrupt is used to emulate floating-point instructions with
  2596.       an opcode of D8h
  2597. Note:    the floating-point emulators in Borland and Microsoft languages and
  2598.       Lahey FORTRAN use this interrupt
  2599. SeeAlso: INT 35,INT 3E
  2600. --------r-35---------------------------------
  2601. INT 35 - FLOATING POINT EMULATION - OPCODE D9h
  2602. Desc:    this interrupt is used to emulate floating-point instructions with
  2603.       an opcode of D9h
  2604. Note:    the floating-point emulators in Borland and Microsoft languages and
  2605.       Lahey FORTRAN use this interrupt
  2606. SeeAlso: INT 34,INT 36
  2607. --------r-36---------------------------------
  2608. INT 36 - FLOATING POINT EMULATION - OPCODE DAh
  2609. Desc:    this interrupt is used to emulate floating-point instructions with
  2610.       an opcode of DAh
  2611. Note:    the floating-point emulators in Borland and Microsoft languages and
  2612.       Lahey FORTRAN use this interrupt
  2613. SeeAlso: INT 35,INT 37
  2614. --------r-37---------------------------------
  2615. INT 37 - FLOATING POINT EMULATION - OPCODE DBh
  2616. Desc:    this interrupt is used to emulate floating-point instructions with
  2617.       an opcode of DBh
  2618. Note:    the floating-point emulators in Borland and Microsoft languages and
  2619.       Lahey FORTRAN use this interrupt
  2620. SeeAlso: INT 36,INT 38
  2621. --------r-38---------------------------------
  2622. INT 38 - FLOATING POINT EMULATION - OPCODE DCh
  2623. Desc:    this interrupt is used to emulate floating-point instructions with
  2624.       an opcode of DCh
  2625. Note:    the floating-point emulators in Borland and Microsoft languages and
  2626.       Lahey FORTRAN use this interrupt
  2627. SeeAlso: INT 37,INT 39
  2628. --------O-38---------------------------------
  2629. INT 38 - PC-MOS/386 v3.0 - API
  2630. Note:    this API was been moved to INT D4h sometime between versions 3.0 and
  2631.       5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
  2632.       12h
  2633. SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
  2634. --------r-39---------------------------------
  2635. INT 39 - FLOATING POINT EMULATION - OPCODE DDh
  2636. Desc:    this interrupt is used to emulate floating-point instructions with
  2637.       an opcode of DDh
  2638. Note:    the floating-point emulators in Borland and Microsoft languages and
  2639.       Lahey FORTRAN use this interrupt
  2640. SeeAlso: INT 38,INT 3A
  2641. --------r-3A---------------------------------
  2642. INT 3A - FLOATING POINT EMULATION - OPCODE DEh
  2643. Desc:    this interrupt is used to emulate floating-point instructions with
  2644.       an opcode of DEh
  2645. Note:    the floating-point emulators in Borland and Microsoft languages and
  2646.       Lahey FORTRAN use this interrupt
  2647. SeeAlso: INT 39,INT 3B
  2648. --------r-3B---------------------------------
  2649. INT 3B - FLOATING POINT EMULATION - OPCODE DFh
  2650. Desc:    this interrupt is used to emulate floating-point instructions with
  2651.       an opcode of DFh
  2652. Note:    the floating-point emulators in Borland and Microsoft languages and
  2653.       Lahey FORTRAN use this interrupt
  2654. SeeAlso: INT 3A,INT 3C
  2655. --------r-3C---------------------------------
  2656. INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
  2657. Notes:    the floating-point emulators in Borland and Microsoft languages and
  2658.       Lahey FORTRAN use this interrupt
  2659.     the generated code is  CD 3C xy mm ....
  2660.       where xy is a modified ESC instruction and mm is the modR/M byte.
  2661.       The xy byte appears to be encoded as
  2662.         s s 0 1 1 x x x      or    s s 0 0 0 x x x
  2663.       where "ss" specifies the segment override:
  2664.         00 -> DS:
  2665.         01 -> SS:
  2666.         10 -> CS:
  2667.         11 -> ES:
  2668. SeeAlso: INT 3B,INT 3D
  2669. --------r-3D---------------------------------
  2670. INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
  2671. Notes:    the floating-point emulators in Borland and Microsoft languages and
  2672.       Lahey FORTRAN use this interrupt
  2673.     this vector is modified but not restored by Direct Access v4.0, and
  2674.       may be left dangling by other programs written with the same version
  2675.       of compiled BASIC
  2676. SeeAlso: INT 3C,INT 3E
  2677. --------r-3E---------------------------------
  2678. INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
  2679. Notes:    the two bytes following the INT 3E instruction are the subcode and
  2680.       a NOP (90h), except for subcodes DCh and DEh, where the second byte
  2681.       is a register count (01h-08h)
  2682.     this vector is modified but not restored by Direct Access v4.0, and
  2683.       may be left dangling by other programs written with the same version
  2684.       of compiled BASIC
  2685. SeeAlso: INT 3D
  2686.  
  2687. (Table 1681)
  2688. Values for Borland floating-point shortcut subcode:
  2689. Subcode        Function
  2690.  DCh    load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
  2691.       top of the stack prior to the INT 3E with the 8087 register contents
  2692.  DEh    load 8087 registers from top of 8086 stack; ST0 is furthest from top
  2693.       of 8086 stack
  2694.  E0h    round TOS and R1 to single precision, compare, pop twice
  2695.       returns AX=8087 status word, FLAGS=8087 condition bits
  2696.  E2h    round TOS and R1 to double precision, compare, pop twice
  2697.       returns AX=8087 status word, FLAGS=8087 condition bits
  2698.     Note: buggy in TPas5.5, because it sets the 8087 precision control
  2699.       field to the undocumented value 01h; this results in actually
  2700.       rounding to single precision
  2701.  E4h    compare TOS/R1 with two POP's
  2702.       returns FLAGS=8087 condition bits
  2703.  E6h    compare TOS/R1 with POP
  2704.       returns FLAGS=8087 condition bits
  2705.  E8h    FTST (check TOS value)
  2706.       returns FLAGS=8087 condition bits
  2707.  EAh    FXAM (check TOS value)
  2708.       returns AX=8087 status word
  2709.  ECh    sine(ST0)
  2710.  EEh    cosine(ST0)
  2711.  F0h    tangent(ST0)
  2712.  F2h    arctangent(ST0)
  2713.  F4h    ST0 = ln(ST0)
  2714.  F6h    ST0 = log2(ST0)
  2715.  F8h    ST0 = log10(ST0)
  2716.  FAh    ST0 = e**ST0
  2717.  FCh    ST0 = 2**ST0
  2718.  FEh    ST0 = 10**ST0
  2719. --------r-3F---------------------------------
  2720. INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
  2721. Notes:    INT 3F is the default, and may be overridden while linking
  2722.     this vector is modified but not restored by Direct Access v4.0, and
  2723.       may be left dangling by other programs written with the same version
  2724.       of compiled BASIC
  2725. SeeAlso: INT FE"OVERLAY"
  2726. --------r-3F---------------------------------
  2727. INT 3F - Microsoft Dynamic Link Library manager
  2728. SeeAlso: INT 21/AH=4Bh
  2729. --------B-40---------------------------------
  2730. INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
  2731. SeeAlso: INT 13,INT 47"SuperBIOS",INT 63
  2732. --------h-40---------------------------------
  2733. INT 40 - Z100 - Master 8259 - Parity error or S100 error
  2734. SeeAlso: INT 41"Z100",INT FF"Z100"
  2735. --------O-40---------------------------------
  2736. INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
  2737.     AL = operation
  2738.         00h close file
  2739.         40h open file for reading
  2740.         80h open file for writing
  2741.         C0h open file for random access
  2742.     DS:BX -> CR-terminated filename
  2743. Return: AL = file handle (00h if file closed or could not be opened)
  2744. Note:    the Acorn BBC Master 512 is an 80186-based add-on board for the
  2745.       6502-based Master 128 which uses the original CPU as an I/O processor
  2746. SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
  2747. --------B-41---------------------------------
  2748. INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
  2749. Note:    the default parameter table array is located at F000h:E401h in 100%
  2750.       compatible BIOSes; the pointer may be overridden by the hard disk
  2751.       controller's BIOS to support drive formats unknown to the ROM BIOS
  2752. SeeAlso: INT 13/AH=09h,INT 1E,INT 46,INT 60"Adaptec",INT C0"AMI"
  2753.  
  2754. Format of fixed disk parameters:
  2755. Offset    Size    Description    (Table 1682)
  2756.  00h    WORD    number of cylinders
  2757.  02h    BYTE    number of heads
  2758.  03h    WORD    starting reduced write current cylinder (XT only, 0 for others)
  2759.  05h    WORD    starting write precompensation cylinder number
  2760.  07h    BYTE    maximum ECC burst length (XT only)
  2761.  08h    BYTE    control byte (see #1683,#1684)
  2762.  09h    BYTE    standard timeout (XT only, 0 for others)
  2763.  0Ah    BYTE    formatting timeout (XT and WD1002 only, 0 for others)
  2764.  0Bh    BYTE    timeout for checking drive (XT and WD1002 only, 0 for others)
  2765.  0Ch    WORD    cylinder number of landing zone (AT and later only)
  2766.  0Eh    BYTE    number of sectors per track (AT and later only)
  2767.  0Fh    BYTE    reserved
  2768.  
  2769. Bitfields for XT fixed disk control byte:
  2770. Bit(s)    Description    (Table 1683)
  2771.  2-0    drive step speed
  2772.     000  3ms
  2773.     100  200ms
  2774.     101  70ms (default)
  2775.     110  3ms
  2776.     111  3ms
  2777.  5-3    unused
  2778.  6    disable ECC retries
  2779.  7    disable access retries
  2780.  
  2781. Bitfields for AT fixed disk control byte:
  2782. Bit(s)    Description    (Table 1684)
  2783.  0    unused
  2784.  1    reserved (0)  (disable IRQ)
  2785.  2    reserved (0)  (no reset)
  2786.  3    set if more than 8 heads
  2787.  4    always 0
  2788.  5    set if manufacturer's defect map on max cylinder+1  (AT and later only)
  2789.  6    disable ECC retries
  2790.  7    disable access retries
  2791. --------h-41---------------------------------
  2792. INT 41 - Z100 - Master 8259 - Processor Swap
  2793. SeeAlso: INT 40"Z100",INT 42"Z100"
  2794. --------O-41---------------------------------
  2795. INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
  2796.     AL = function
  2797.         01h put bytes sequentially
  2798.         02h put bytes, ignoring sequential pointer
  2799.         03h get bytes sequentially
  2800.         04h get bytes, ignoring sequential pointer
  2801.         05h get media title and boot option
  2802.         06h get current device and directory
  2803.         07h get current library and device
  2804.         08h search directory
  2805.     DS:BX -> control block (see #1685)
  2806. Return: CF clear if successful
  2807.     CF set on error
  2808.     AL = 00h if operation attempted
  2809.     AL unchanged if unsupported function
  2810. SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
  2811.  
  2812. Format of BBC Master control block:
  2813. Offset    Size    Description    (Table 1685)
  2814.  00h    BYTE    file handle
  2815.  01h    DWORD    pointer to data in either I/O processor or Tube processor
  2816.  05h    DWORD    number of bytes to be transferred
  2817.  09h    DWORD    transfer address
  2818. --------G-410000-----------------------------
  2819. INT 41 CPU - MS Windows debugging kernel - OUTPUT CHARACTER FOR USER
  2820.     AX = 0000h
  2821.     DS:DX -> character
  2822. Note:    the kernel calls this function when it wants the user program to
  2823.       output a character
  2824. SeeAlso: AX=0001h
  2825. --------G-410001-----------------------------
  2826. INT 41 CPU - MS Windows debugging kernel - INPUT CHARACTER
  2827.     AX = 0001h
  2828. Return: AL = character    
  2829. Note:    the kernel calls this function when it needs to input a character
  2830. SeeAlso: AX=0000h
  2831. --------G-41000D-----------------------------
  2832. INT 41 CPU - MS Windows debugging kernel - TASK GOING OUT
  2833.     AX = 000Dh
  2834. SeeAlso: AX=000Eh
  2835. --------G-41000E-----------------------------
  2836. INT 41 CPU - MS Windows debugging kernel - TASK COMING IN
  2837.     AX = 000Eh
  2838. SeeAlso: AX=000Dh
  2839. --------G-410012-----------------------------
  2840. INT 41 CPU - MS Windows debugging kernel - "OutputDebugString"
  2841.     AX = 0012h
  2842.     DS:SI -> string (Windows 3.0)
  2843.     ES:SI -> string (Windows 3.1)
  2844. Return: nothing???
  2845. Note:    this function is called by the kernel when it wants to output a
  2846.       string through the debugger
  2847. SeeAlso: AH=50h,INT 68/AH=47h
  2848. --------G-41004F-----------------------------
  2849. INT 41 CPU - MS Windows debugging kernel - DEBUGGER INSTALLATION CHECK
  2850.     AX = 004Fh
  2851. Return: AX = F386h if debugger is present
  2852. SeeAlso: INT 68/AX=4400h
  2853. --------G-410050-----------------------------
  2854. INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
  2855.     AX = 0050h
  2856.     BX = segment number in executable (0-based)
  2857.     CX = selector
  2858.     DX = instance handle
  2859.     SI = segment flags (0=code, 1=data)
  2860.     ES:DI -> module name of owner
  2861. Return: ???
  2862. SeeAlso: AX=0012h,AX=004Fh
  2863. --------G-410051-----------------------------
  2864. INT 41 CPU - MS Windows debugging kernel - MOVE SEGMENT
  2865.     AX = 0051h
  2866.     ???
  2867. Return: ???
  2868. SeeAlso: AX=050h,AX=0052h
  2869. --------G-410052-----------------------------
  2870. INT 41 CPU - MS Windows debugging kernel - FREE SEGMENT
  2871.     AX = 0052h
  2872.     BX = freed selector
  2873. SeeAlso: AX=0050h,AX=0051h,AX=005Ch
  2874. --------G-410059-----------------------------
  2875. INT 41 CPU - MS Windows debugging kernel - LOAD TASK
  2876.     AX = 0059h
  2877.     ???:BX = CS:IP of new task's starting point
  2878. --------G-41005C-----------------------------
  2879. INT 41 CPU - MS Windows debugging kernel - FREE INITIAL SEGMENT
  2880.     AX = 005Ch
  2881.     BX = freed selector
  2882. Note:    called only when KERNEL starts, once for CS and once for the DS alias
  2883.       to CS
  2884. SeeAlso: AX=0052h
  2885. --------G-410060-----------------------------
  2886. INT 41 CPU - MS Windows debugging kernel -  END OF SEGMENT LOAD
  2887.     AX = 0060h
  2888.     ???
  2889. Return: ???
  2890. SeeAlso: AX=0061h
  2891. --------G-410061-----------------------------
  2892. INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT DISCARD
  2893.     AX = 0061h
  2894.     ???
  2895. Return: ???
  2896. SeeAlso: AX=0060h
  2897. --------G-410062-----------------------------
  2898. INT 41 CPU - MS Windows debugging kernel - APPLICATION TERMINATING
  2899.     AX = 0062h
  2900. STACK:    BYTE    exit code
  2901. Return: ???
  2902.     STACK unchanged???
  2903. SeeAlso: AX=0064h
  2904. --------G-410063-----------------------------
  2905. INT 41 CPU - MS Windows debugging kernel - ASYNCHRONOUS STOP (Ctrl-Alt-SysReq)
  2906.     AX = 0063h
  2907. --------G-410064-----------------------------
  2908. INT 41 CPU - MS Windows debugging kernel - DLL LOADED
  2909.     AX = 0064h
  2910.     CX:BX = DLL entry point CS:IP
  2911.     SI = module handle
  2912. SeeAlso: AX=0062h,AX=0065h
  2913. --------G-410065-----------------------------
  2914. INT 41 CPU - MS Windows debugging kernel - MODULE REMOVED
  2915.     AX = 0065h
  2916.     ES = module handle
  2917. SeeAlso: AX=0064h
  2918. --------V-42---------------------------------
  2919. INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
  2920. Desc:    contains the address of the original INT 10 handler which an EGA+
  2921.       video adapter replaces with its own on-board BIOS code
  2922. SeeAlso: INT 10
  2923. Note:    not used by PS/2 built-in VGA or XGA
  2924. --------h-42---------------------------------
  2925. INT 42 - Z100 - Master 8259 - Timer
  2926. SeeAlso: INT 41"Z100",INT 43"Z100"
  2927. --------b-42---------------------------------
  2928. INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
  2929. Note:    if the second WD1002 controller in the system finds INT 40 already in
  2930.       use, it uses this vector to cascade to the first controller's BIOS
  2931. SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
  2932. --------O-42---------------------------------
  2933. INT 42 - Acorn BBS Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
  2934.     AL = byte to be written
  2935.     BH = file handle
  2936. Return: flags destroyed
  2937. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  2938. --------V-427500-----------------------------
  2939. INT 42 U - Toshiba laptops - ???
  2940.     AX = 7500h
  2941.     BL = ??? (00h or 01h)
  2942. Return: ???
  2943. Note:    used by Toshiba utility VCHAD.EXE
  2944. SeeAlso: AX=7501h,AX=7503h
  2945. --------V-427501-----------------------------
  2946. INT 42 U - Toshiba laptop - GET ??? DATA
  2947.     AX = 7501h
  2948.     DS:DI -> data area to be filled ???
  2949. Return: area filled with data ???
  2950. Note:    used by Toshiba utility VCHAD.EXE
  2951. SeeAlso: AX=7500h,AX=7502h,AX=7503h
  2952. --------V-427502-----------------------------
  2953. INT 42 U - Toshiba laptops - SET ??? DATA
  2954.     AX = 7502h
  2955.     DS:DI -> data area ???
  2956. Return: ???
  2957. Note:    used by Toshiba utility VCHAD.EXE
  2958. SeeAlso: AX=7501h,AX=7503h
  2959. --------V-427503-----------------------------
  2960. INT 42 - Toshiba laptops - GET DISPLAY STATUS
  2961.     AX = 7503h
  2962. Return: AX = 7575h if supported
  2963.     CX = 0001h if supported
  2964.     BH = display type (00h color, 03h monochrome)
  2965.     BL = display state
  2966.         01h internal LCD display is active
  2967.         02h external VGA display is active
  2968.         03h both displays active / DeskStation display mode enabled
  2969.         (not possible on all machines)
  2970. Note:    used by VCHAD.EXE and supported by all Toshiba VGA laptops
  2971.       (string "TOSHIBA " at F000:E010h should be checked before call)
  2972.     INT 42 normally points to F000:F065h but may be redirected by QEMM386
  2973. SeeAlso: AX=7500h,AX=7504h,INT 15/AH=C0h
  2974. --------V-427504-----------------------------
  2975. INT 42 U - Toshiba laptops - ???
  2976.     AX = 7504h
  2977.     BL = ???
  2978. Return: BH = ???
  2979. Note:    used by Toshiba utility VCHAD.EXE
  2980. SeeAlso: AX=7500h,AX=7503h
  2981. --------V-43---------------------------------
  2982. INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
  2983. Desc:    points at graphics data for characters 00h-7Fh of the current font
  2984.       in 8x8 dot modes, graphics data for all characters in 8x14 and 8x16
  2985.       modes
  2986. SeeAlso: INT 1F,INT 44"VIDEO"
  2987. --------h-43---------------------------------
  2988. INT 43 - Z100 - Master 8259 - Slave 8259 input
  2989. Note:    slave runs in special fully nested mode
  2990. SeeAlso: INT 42"Z100",INT 44"Z100"
  2991. --------O-43---------------------------------
  2992. INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
  2993.     BH = file handle
  2994. Return: CF clear if successful
  2995.         AL = byte read from file
  2996.     CF set on error
  2997. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
  2998. --------V-44---------------------------------
  2999. INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
  3000. Desc:    this vector points at graphics data for current character font
  3001. SeeAlso: INT 1F,INT 43"VIDEO"
  3002. --------N-44---------------------------------
  3003. INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
  3004. --------I-44---------------------------------
  3005. INT 44 - IBM 3270-PC High Level Language API
  3006.     DS:SI -> parameter control block
  3007. --------h-44---------------------------------
  3008. INT 44 - Z100 - Master 8259 - Serial A
  3009. SeeAlso: INT 43"Z100",INT 45"Z100"
  3010. --------v-44---------------------------------
  3011. INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
  3012. SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
  3013. --------O-4400-------------------------------
  3014. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  3015.     AH = 00h
  3016.     AL = function
  3017.         00h get current filing system
  3018.         Return: AL = filing system (see #1686)
  3019.         01h get address of commandline tail
  3020.         Return: BX buffer filled with address of command tail in I/O
  3021.                   processor address space (use INT 4A/AL=05h to
  3022.                   retrieve)
  3023.         FFh flush all files onto secondary storage
  3024.     BX -> 4-byte data buffer
  3025. Note:    the commandline tail is terminated with a carriage return (0Dh)
  3026. SeeAlso: INT 40"Acorn",INT 45"Acorn"
  3027.  
  3028. (Table 1686)
  3029. Values for BBC Master filing system:
  3030.  00h    none
  3031.  01h    1200 bps cassette
  3032.  02h    300 bps cassette
  3033.  03h    ROM FS
  3034.  04h    DFS
  3035.  05h    ANFS/NFS
  3036.  06h    TFS
  3037.  08h    ADFS
  3038. --------O-44---------------------------------
  3039. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  3040.     AH = nonzero file handle
  3041.     AL = function
  3042.         00h get sequential pointer for file
  3043.         01h set sequential pointer for file
  3044.         02h get length of file
  3045.     BX -> 4-byte data buffer
  3046. Return: BX buffer updated if appropriate
  3047. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
  3048. --------h-45---------------------------------
  3049. INT 45 - Z100 - Master 8259 - Serial B
  3050. SeeAlso: INT 44"Z100",INT 46"Z100"
  3051. --------O-45---------------------------------
  3052. INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
  3053.     AL = function
  3054.         00h save block of memory as file
  3055.         01h update directory entry for existing file
  3056.         02h set load address for existing file
  3057.         03h set execution address for existing file
  3058.         04h set attributes for existing file
  3059.         05h read directory
  3060.         06h delete file
  3061.         FFh load file
  3062.     DS:BX -> control block (see #1687)
  3063. Return: FLAGS destroyed
  3064.     AL = file type
  3065.         00h not found
  3066.         01h file found
  3067.         02h directory found
  3068.         FFh protected file
  3069. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
  3070.  
  3071. Format of BBC Master control block:
  3072. Offset    Size    Description    (Table 1687)
  3073.  00h    WORD    address of CR-terminated filename
  3074.  02h    DWORD    load address of file
  3075.  06h    DWORD    execution address of file
  3076.  0Ah    DWORD    start address of data to save
  3077.  0Eh    DWORD    end address of data to save, or file attributes
  3078.         file attributes in low byte (see #1688)
  3079.         other three bytes are filing-system specific file attributes
  3080.  
  3081. Bitfields for BBC Master file attributes:
  3082. Bit(s)    Description    (Table 1688)
  3083.  0    no owner read access
  3084.  1    no owner write access
  3085.  2    not executable by owner
  3086.  3    not deletable by owner
  3087.  4    no public read access
  3088.  5    no public write access
  3089.  6    not executable with public access
  3090.  7    not deletable with public access
  3091. --------B-46---------------------------------
  3092. INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
  3093. SeeAlso: INT 13/AH=09h,INT 41,INT 60"Adaptec",INT C0"AMI"
  3094. --------h-46---------------------------------
  3095. INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
  3096. SeeAlso: INT 45"Z100",INT 47"Z100"
  3097. --------O-46---------------------------------
  3098. INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
  3099. Return: CF clear if successful
  3100.         AL = character read
  3101.     CF set on error
  3102.         AL = error code
  3103. SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  3104. --------h-47---------------------------------
  3105. INT 47 - Z100 - Master 8259 - Printer
  3106. SeeAlso: INT 46"Z100",INT 48"Z100"
  3107. --------O-47---------------------------------
  3108. INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
  3109.     AL = character to be written
  3110. Return: FLAGS destroyed
  3111. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
  3112. --------b-47---------------------------------
  3113. INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
  3114. Desc:    used by the second WD1002-27X controller to cascade to the first
  3115.       controller's INT 40
  3116. SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
  3117. ----------478000-----------------------------
  3118. INT 47 - SQL Base - DATABASE ENGINE API
  3119.     AX = 8000h
  3120.     DS:BX -> parameter block, first word is function number
  3121. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  3122. SeeAlso: AX=8001h
  3123.  
  3124. (Table 1689)
  3125. Values for SQL Base function number:
  3126.  01h    "SQLFINI" initalialize application's use of the database
  3127.  02h    "SQLFDON" application is done using the database
  3128.  03h    "SQLFCON" connect to a cursor/database
  3129.  04h    "SQLFDIS" disconnect from a cursor/database
  3130.  05h    "SQLFCOM" compile a SQL command
  3131.  06h    "SQLFEXE" execute a SQL command
  3132.  07h    "SQLFCEX" compile and execute a SQL command
  3133.  08h    "SQLFCMT" commit a transaction to the database
  3134.  09h    "SQLFDES" describe the items of a SELECT statement
  3135.  0Ah    "SQLFGFI" get fetch information
  3136.  0Bh    "SQLFFBK" fetch previous result row from SELECT statement
  3137.  0Ch    "SQLFFET" fetch next result row from SELECT statement
  3138.  0Dh    "SQLFEFB" enable fetch backwards
  3139.  0Eh    "SQLFPRS" position in result set
  3140.  0Fh    "SQLFURS" undo result set
  3141.  10h    "SQLFNBV" get number of bind variables
  3142.  11h    "SQLFBND" bind data variables
  3143.  12h    "SQLFBNN" bind numerics
  3144.  13h    "SQLFBLN" bind long number
  3145.  14h    "SQLFBLD" bind long data variables
  3146.  15h    "SQLFSRS" start restriction set processing
  3147.  16h    "SQLFRRS" restart restriction set processing
  3148.  17h    "SQLFCRS" close restriction set
  3149.  18h    "SQLFDRS" drop restriction set
  3150.  19h    "SQLFARF" apply Roll Forward journal
  3151.  1Ah    "SQLFERF" end Roll Forward journal
  3152.  1Bh    "SQLFSRF" start Roll Forward journal
  3153.  1Ch    "SQLFSTO" store a compiled SQL command
  3154.  1Dh    "SQLFRET" retrieve a compiled SQL command
  3155.  1Eh    "SQLFDST" drop a stored command
  3156.  1Fh    "SQLFCTY" get command type
  3157.  20h    "SQLFEPO" get error position
  3158.  21h    "SQLFGNR" get number of rows
  3159.  22h    "SQLFNSI" get number of select items
  3160.  23h    "SQLFRBF" get Roll Back flag
  3161.  24h    "SQLFRCD" get return code
  3162.  25h    "SQLFROW" get number of ROWs
  3163.  26h    "SQLFSCN" set cursor name
  3164.  27h    "SQLFSIL" set isolation level
  3165.  28h    "SQLFSLP" set log parameters
  3166.  29h    "SQLFSSB" set select buffer
  3167.  2Ah    "SQLFSSS" set sort space
  3168.  2Bh    "SQLFRLO" read long
  3169.  2Ch    "SQLFWLO" write long
  3170.  2Dh    "SQLFLSK" long seek
  3171.  2Eh    "SQLFGLS" get long size
  3172.  2Fh    "SQLFELO" end long operation
  3173.  30h    "SQLFRBK" roll back a transaction from the database
  3174.  31h    "SQLFERR" error message
  3175.  32h    "SQLFCPY" copy
  3176.  33h    "SQLFR01" reserved
  3177.  34h    "SQLFSYS" system
  3178.  35h    "SQLFSTA" statistics
  3179.  36h    "SQLFR02" reserved
  3180.  37h    "SQLFXAD" extra add
  3181.  38h    "SQLFXCN" extra character to number
  3182.  39h    "SQLFXDA" extra date add
  3183.  3Ah    "SQLFXDP" extra date picture
  3184.  3Bh    "SQLFXDV" extra divide
  3185.  3Ch    "SQLFXML" extra multiply
  3186.  3Dh    "SQLFXNP" extra number picture
  3187.  3Eh    "SQLFXPD" extra picture date
  3188.  3Fh    "SQLFXSB" extra subtract
  3189.  40h    "SQLFINS" install database
  3190.  41h    "SQLFDIN" deinstall database
  3191.  42h    "SQLFDIR" directory of databases
  3192.  43h    "SQLFTIO" timeout
  3193.  44h    "SQLFFQN" get fully qualified column name
  3194.  45h    "SQLFEXP" explain execution plan
  3195.  46h    "SQLFFER" get full error
  3196.  47h    "SQLFBKP" begin online backup
  3197.  48h    "SQLFRDC" read backup data chunk
  3198.  49h    "SQLFEBK" end backup
  3199.  4Ah    "SQLFRES" begin restore from backup
  3200.  4Bh    "SQLFWDC" write backup data chunk for restore
  3201.  4Ch    "SQLFRRD" recover restored database to consistent state
  3202.  4Dh    "SQLFERS" end restore
  3203.  4Eh    "SQLFNRR" return number of result set rows
  3204.  4Fh    "SQLFSTR" start restriction mode
  3205.  50h    "SQLFSPR" stop restriction mode
  3206.  51h    "SQLFCNC" connect 2
  3207.  52h    "SQLFCNR" connect with no recovery
  3208.  53h    "SQLFOMS" set output message size
  3209.  54h    "SQLFIMS" set input message size
  3210.  55h    "SQLFSCP" set cache pages
  3211.  56h    "SQLFDSC" describe items of a SELECT statement (external)
  3212.  57h    "SQLFLAB" get label info for items in SELECT statement
  3213.  58h    "SQLFCBV" clear bind variables
  3214.  59h    "SQLFGET" get database information
  3215.  5Ah    "SQLFSET" set database information
  3216.  5Bh    "SQLFTEC" translate error code
  3217. ----------478001-----------------------------
  3218. INT 47 - SQL Base - GET VERSION NUMBER
  3219.     AX = 8001h
  3220. Return: ???
  3221. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  3222. SeeAlso: AX=8000h
  3223. --------B-48---------------------------------
  3224. INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
  3225. SeeAlso: INT 49"PCjr"
  3226. --------h-48---------------------------------
  3227. INT 48 - Z100 - Slave 8259 - S100 vectored line 0
  3228. SeeAlso: INT 47"Z100",INT 49"Z100"
  3229. --------N-48---------------------------------
  3230. INT 48 - Watstar PC Network data pointer 1
  3231. SeeAlso: INT 49"Watstar"
  3232. --------O-48---------------------------------
  3233. INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
  3234. Return: FLAGS destroyed
  3235. Note:    writes a carriage return (0Dh) followed by a linefeed (0Ah)
  3236. SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
  3237. --------b-48---------------------------------
  3238. INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
  3239. Note:    the second WD1002-27X controller in a system uses the low byte to
  3240.       store the number of drives controlled by the second controller,
  3241.       and the high word for temporary storage during track recalculation;
  3242.       the first controller uses offsets 74h-77h in the BIOS data area
  3243.       (see MEMORY.LST) to store data
  3244. SeeAlso: INT 47"SuperBIOS"
  3245. --------V-48---------------------------------
  3246. INT 48 U - Compaq UILIB.EXE - API
  3247.     AX = function (see #1690)
  3248.     BX = call type (0002h) (see #1691)
  3249.     ???
  3250. Return: ???
  3251. Note:    returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
  3252.       listed below
  3253. SeeAlso: AX=1A70h
  3254.  
  3255. (Table 1690)
  3256. Values for valid UILIB function number:
  3257.  1000h    1160h    12D0h    1430h    1570h    1680h    17F0h    1920h    1A90h
  3258.  1010h    1170h    12E0h    1440h    1578h    1690h    1800h    1930h    1AA0h
  3259.  1020h    1180h    12F0h    1450h    1580h    16A0h    1810h    1940h
  3260.  1030h    1190h    1300h    1460h    1590h    16B0h    1820h    1950h
  3261.  1040h    11A0h    1310h    1470h    1594h    16C0h    1830h    1960h
  3262.  1050h    11B0h    1320h    1480h    1598h    16D0h    1840h    1970h
  3263.  1060h    11C0h    1330h    1490h    15A0h    16E0h    1848h    1980h
  3264.  1070h    11D0h    1340h    14A0h    15B0h    16F0h    1850h    1990h
  3265.  1080h    11E0h    1350h    14B0h    15C0h    1700h    1860h    19A0h
  3266.  1090h    11F0h    1360h    14B8h    15D0h    1710h    1870h    19B0h
  3267.  1095h    1200h    1370h    14BBh    15D4h    1720h    1878h    19C0h
  3268.  1098h    1210h    1380h    14C0h    15D8h    1730h    1880h    19D0h
  3269.  10A0h    1220h    1390h    14D0h    15E0h    1735h    1890h    19E0h
  3270.  10C0h    1230h    13A0h    14E0h    15F0h    1740h    1898h    19F0h
  3271.  10D0h    1240h    13B0h    14F0h    1600h    1750h    18A0h    1A00h
  3272.  10E0h    1250h    13B8h    1500h    1610h    1770h    18B0h    1A10h
  3273.  10F0h    1260h    13C0h    1508h    1620h    1780h    18C0h    1A20h
  3274.  1100h    1270h    13D0h    1510h    1630h    1790h    18D0h    1A30h
  3275.  1110h    1280h    13E0h    1520h    1640h    17A0h    18E0h    1A40h
  3276.  1120h    1290h    13F0h    1530h    1650h    17B0h    18F0h    1A50h
  3277.  1130h    12A0h    1400h    1540h    1660h    17C0h    1900h    1A60h
  3278.  1140h    12B0h    1410h    1550h    1664h    17D0h    1909h    1A70h
  3279.  1150h    12C0h    1420h    1560h    1670h    17E0h    1910h    1A80h
  3280. --------V-481A70-----------------------------
  3281. INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
  3282.     AX = 1A70h
  3283.     BX = call type (see #1691)
  3284. Return: CX = 5649h ('VI') if installed
  3285.     DX = 4557h ('EW') if installed
  3286.         AX = version??? (0106h)
  3287.  
  3288. (Table 1691)
  3289. Values for UILIB call type:
  3290.  0000h    near
  3291.  0001h    far
  3292.  0002h    INT (only valid call type when using INT 48)
  3293.  0003h    near
  3294. --------B-49---------------------------------
  3295. INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
  3296. SeeAlso: #1692,INT 48"PCjr"
  3297.  
  3298. Format of PCjr scan-code translation table:
  3299. Offset    Size    Description    (Table 1692)
  3300.  00h    BYTE    number of non-keyboard scancodes in the table
  3301.  01h  N WORDs    high byte 00h (NUL) byte scancode with low order byte
  3302.           representing the scancode mapped values relative to their
  3303.           input values within the range of 56h through 7Eh
  3304. --------h-49---------------------------------
  3305. INT 49 - Z100 - Slave 8259 - S100 vectored line 1
  3306. SeeAlso: INT 48"Z100",INT 4A"Z100"
  3307. --------V-49---------------------------------
  3308. INT 49 - Texas Instruments PC - VIDEO I/O???
  3309.     apparently provides direct video display on the TI Professional PC
  3310. --------N-49---------------------------------
  3311. INT 49 - Watstar PC Network data pointer 2
  3312. SeeAlso: INT 48"Watstar"
  3313. --------O-49---------------------------------
  3314. INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
  3315.     AL = character to be written
  3316. Return: FLAGS destroyed
  3317. Note:    converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
  3318. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
  3319. --------a-490001-----------------------------
  3320. INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
  3321.     AX = 0001h
  3322. Return: AX = status (see #1693)
  3323.     BX,CX,DX destroyed
  3324. Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
  3325.       providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
  3326. Note:    INT 49 is the default, but may be overridden on the commandline.  The
  3327.       actual interrupt in use may be found by searching for the signature
  3328.       "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
  3329.       the interrupt handler (this is also the installation check).    MAGic
  3330.       uses CodeRunneR, which places the signature "RT" at offset 0000h in
  3331.       the interrupt handler's segment, followed by MAGic's TSR ID of
  3332.       "VMAG".
  3333. SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
  3334. Index:    installation check;MAGic
  3335.  
  3336. (Table 1693)
  3337. Values for MAGic status:
  3338.  0000h    cannot magnify current video mode
  3339.  0002h    magnified (text mode)
  3340.  0003h    magnified (graphics mode)
  3341.  FFFDh    function works only in magnified mode
  3342.  FFFFh    MAGic busy, retry later
  3343. --------a-490002-----------------------------
  3344. INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
  3345.     AX = 0002h
  3346. Return: AX = status (see #1693)
  3347.     BX,CX,DX destroyed
  3348. SeeAlso: AX=0001h
  3349. --------a-490003-----------------------------
  3350. INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
  3351.     AX = 0003h
  3352.     BX = vertical position (character row [text] or pixel row [graphics])
  3353.     DX = horizontal position (char column [text] or 8-pixel units [gr])
  3354. Return: AX = status
  3355.         0000h successful
  3356.         FFFFh MAGic busy, retry later
  3357.     BX,CX,DX destroyed
  3358. Note:    window is not moved if the position is inside the current window
  3359. SeeAlso: AX=0001h,AX=0004h,AX=0005h
  3360. --------a-490004-----------------------------
  3361. INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
  3362.     AX = 0004h
  3363.     BX = vertical position of upper left corner
  3364.     DX = horizontal position
  3365. Return: AX = status (see AX=0003h)
  3366.     BX,CX,DX destroyed
  3367. SeeAlso: AX=0001h,AX=0003h,AX=0005h
  3368. --------a-490005-----------------------------
  3369. INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
  3370.     AX = 0005h
  3371. Return: AX = status
  3372.         0000h successful
  3373.         BX = vertical position (char row or pixel row)
  3374.         DX = horizontal position (char column or 8-pixel units)
  3375.         FFFFh MAGic busy, retry later
  3376.         BX,DX destroyed
  3377.     CX destroyed
  3378. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
  3379. --------a-490006-----------------------------
  3380. INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
  3381.     AX = 0006h
  3382. Return: AX = status
  3383.         0000h successful
  3384.         BX = vertical size (char rows or pixel rows)
  3385.         DX = horizontal size (char cols or 8-pixel units)
  3386.         FFFFh MAGic busy, retry later
  3387.         BX,DX destroyed
  3388.     CX destroyed
  3389. SeeAlso: AX=0001h,AX=0005h,AX=0007h
  3390. --------a-490007-----------------------------
  3391. INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
  3392.     AX = 0007h
  3393. Return: AX = status
  3394.         0000h successful
  3395.         BX = vertical size (char rows or pixel rows)
  3396.         DX = horizontal size (char cols or 8-pixel units)
  3397.         FFFEh invalid function
  3398.         FFFFh MAGic busy, retry later
  3399.         BX,DX destroyed
  3400.     CX destroyed
  3401. BUG:    in v1.16 and v1.17, this function is not recognized as valid, but
  3402.       AX=0000h is accepted and will branch into hyperspace
  3403. SeeAlso: AX=0001h,AX=0006h
  3404. --------a-490008-----------------------------
  3405. INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
  3406.     AX = 0008h
  3407.     BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
  3408. Return: AX = status
  3409.         0000h successful
  3410.         FFFBh scaling factor only available in MAGic Deluxe
  3411.         FFFCh already in magnified state, can't set size
  3412. Notes:    this call specifies the amount a subsequent call to AX=0001h should
  3413.       magnify the display
  3414.     scaling factors greater than 2 are only available in MAGic Deluxe
  3415. SeeAlso: AX=0001h
  3416. --------B-4A---------------------------------
  3417. INT 4A C - SYSTEM - USER ALARM HANDLER
  3418. Desc:    This interrupt is invoked by the BIOS when a real-time clock alarm
  3419.       occurs; an application may use it to perform an action at a
  3420.       predetermined time.
  3421. Note:    this interrupt is called from within a hardware interrupt handler,
  3422.       so all usual precautions against reentering DOS must be taken
  3423. SeeAlso: INT 1A/AH=06h
  3424. --------h-4A---------------------------------
  3425. INT 4A - Z100 - Slave 8259 - S100 vectored line 2
  3426. SeeAlso: INT 49"Z100",INT 4B"Z100"
  3427. --------O-4A---------------------------------
  3428. INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
  3429.     AL = function code
  3430.         FAh transfer data between 80186 and 65C12 I/O processor
  3431.     DS:BX -> control block (see #1694)
  3432. Return: FLAGS destroyed
  3433.     control block updated
  3434. Note:    there are more functions than are listed here, but details are not
  3435.       available
  3436. SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
  3437.  
  3438. Format of BBC Master control block for function FAh:
  3439. Offset    Size    Description    (Table 1694)
  3440.  00h    BYTE    number of parameters sent to I/O processor (0Dh,0Eh)
  3441.  01h    BYTE    number of parameters read from I/O processor (01h)
  3442.  02h    DWORD    I/O processor address
  3443.  06h    DWORD    80186 segment:offset address
  3444.  0Ah    WORD    number of bytes to transfer
  3445.  0Ch    BYTE    operation type
  3446.         00h write to 65C12 at 24 us/byte
  3447.         01h read from 65C12 at 24 us/byte
  3448.         02h write to 65C12 at 26 us/word
  3449.         03h read from 65C12 at 26 us/word
  3450.         04h write to 65C12 at 10 us/byte using 256-byte blocks
  3451.         05h read from 65C12 at 10 us/byte using 256-byte blocks
  3452.  0Dh    BYTE    65C12 memory access control (only used if offset 00h = 0Eh)
  3453.         (see #1695)
  3454.  
  3455. Bitfields for 65C12 memory access control:
  3456. Bit(s)    Description    (Table 1695)
  3457.  7    unused
  3458.  6    always use main screen memory if I/O addr 3000h-7FFFh (overrides bit 5)
  3459.  5    use shadow screen memory if screen address specified
  3460.  4    use current ROM rather than ROM selected by bits 3-0 (only if I/O
  3461.       address between 8000h and BFFFh)
  3462.  3-0    paged ROM number
  3463. --------h-4B---------------------------------
  3464. INT 4B - Z100 - Slave 8259 - S100 vectored line 3
  3465. SeeAlso: INT 4A"Z100",INT 4C"Z100"
  3466. --------d-4B---------------------------------
  3467. INT 4B - Common Access Method SCSI interface (draft revision 1.9)
  3468.     ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
  3469. Notes:    the CAM committee moved the interface to INT 4F after revision 1.9
  3470.       to avoid conflicting with the IBM SCSI interface and the Virtual
  3471.       DMA specification
  3472.     the installation check for the driver is the string "SCSI_CAM" eight
  3473.       bytes past the INT 4Bh handler
  3474.     the only driver to date reported to use the CAM interface on INT 4B
  3475.       instead of INT 4F is from Future Domain (which has drivers for CAM
  3476.       on either interrupt)
  3477. SeeAlso: INT 4F/AX=8100h
  3478. Index:    installation check;Common Access Method SCSI interface
  3479. --------O-4B---------------------------------
  3480. INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
  3481.     AL = function code
  3482.     BL = first parameter
  3483.     BH = second parameter (if needed)
  3484. Return: BL = first return parameter
  3485.     BH = second return parameter
  3486.     CF depends on function
  3487. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
  3488. --------d-4B80-------------------------------
  3489. INT 4B - IBM SCSI interface
  3490.     AH = 80h
  3491.     AL = 00h-10h (Corel PowerSCSI INT4BCAM.SYS)
  3492.     further details not yet available
  3493. --------d-4B8102DX0000-----------------------
  3494. INT 4B - Virtual DMA Specification (VDS) - GET VERSION
  3495.     AX = 8102h
  3496.     DX = 0000h
  3497. Return: CF clear if successful
  3498.         AH = major version number
  3499.         AL = minor version number
  3500.         BX = product number (see #1696)
  3501.         CX = product revision number
  3502.         always 0000h for QMAPS and HPMM.SYS
  3503.         always 0001h for Microsoft's EMM386.EXE v4.20-4.41
  3504.         DX = flags (see #1698)
  3505.         SI:DI = maximum DMA buffer size
  3506.     CF set on error
  3507.         AL = error code (see #1697)
  3508. Note:    bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
  3509.       apparently not always the case
  3510. SeeAlso: INT 2C/AX=002Bh,INT 31
  3511. Index:    installation check;Virtual DMA Spec
  3512.  
  3513. (Table 1696)
  3514. Values for VDS product number:
  3515.  0000h    for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
  3516.  0001h    for Microsoft's EMM386.EXE
  3517.  0003h    for Windows 3.x WIN386.EXE
  3518.  0EDCh    for DR-DOS 6.0 EMM386.SYS
  3519.  4560h    ("E`") for Qualitas' 386MAX
  3520.  4D43h    ("MC") for V Communications' Memory Commander
  3521.  5145h    ("QE") for Quarterdeck's QEMM-386
  3522.  524Dh    ("RM") for Helix's Netroom RM386
  3523.  
  3524. (Table 1697)
  3525. Values for VDS error code:
  3526.  01h    region not in contiguous memory
  3527.  02h    region crossed a physical alignment boundary
  3528.  03h    unable to lock pages
  3529.  04h    no buffer available
  3530.  05h    region too large for buffer
  3531.  06h    buffer currently in use
  3532.  07h    invalid memory region
  3533.  08h    region was not locked
  3534.  09h    number of physical pages greater than table length
  3535.  0Ah    invalid buffer ID
  3536.  0Bh    copy out of buffer range
  3537.  0Ch    invalid DMA channel number
  3538.  0Dh    disable count overflow
  3539.  0Eh    disable count underflow
  3540.  0Fh    function not supported
  3541.  10h    reserved flag bits set in DX
  3542.  
  3543. Bitfields for VDS flags:
  3544. Bit(s)    Description    (Table 1698)
  3545.  0    PC/XT bus (DMA in first megabyte only)
  3546.  1    physical buffer/remap region in first megabyte
  3547.  2    automatic remap enabled
  3548.  3    all memory is physically contiguous
  3549.  4-15    reserved (zero)
  3550.  
  3551. Format of DMA descriptor structure (DDS):
  3552. Offset    Size    Description    (Table 1699)
  3553.  00h    DWORD    region size
  3554.  04h    DWORD    offset
  3555.  08h    WORD    segment/selector
  3556.  0Ah    WORD    buffer ID
  3557.  0Ch    DWORD    physical address
  3558.  
  3559. Format of Extended DMA descriptor structure (EDDS):
  3560. Offset    Size    Description    (Table 1700)
  3561.  00h    DWORD    region size
  3562.  04h    DWORD    offset
  3563.  08h    WORD    segment/selector
  3564.  0Ah    WORD    reserved
  3565.  0Ch    WORD    number available
  3566.  0Eh    WORD    number used
  3567.  10h    DWORD    region 0 physical address
  3568.  14h    DWORD    region 0 size in bytes
  3569.  18h    DWORD    region 1 physical address
  3570.  1Ch    DWORD    region 1 size in bytes
  3571.     ...
  3572.  
  3573. Format of Extended DMA descriptor structure (EDDS) with page table entries:
  3574. Offset    Size    Description    (Table 1701)
  3575.  00h    DWORD    region size
  3576.  04h    DWORD    offset
  3577.  08h    WORD    segment/selector
  3578.  0Ah    WORD    reserved
  3579.  0Ch    WORD    number available
  3580.  0Eh    WORD    number used
  3581.  10h    DWORD    page table entry 0 (same as 80386 page table entry)
  3582.  14h    DWORD    page table entry 1
  3583.     ...
  3584. Note:    bits 1-11 of the page table entries should be zero; bit 0 set if page
  3585.       is present and locked
  3586. --------d-4B8103-----------------------------
  3587. INT 4B - Virtual DMA Specification - LOCK DMA REGION
  3588.     AX = 8103h
  3589.     DX = flags (see #1702)
  3590.     ES:DI -> DMA descriptor structure (see #1699,#1700,#1701)
  3591. Return: CF clear if successful
  3592.         DDS physical address field filled in
  3593.         DDS buffer ID field filled (0000h if no buffer allocated)
  3594.     CF set on error
  3595.         AL = error code (see #1697)
  3596.         DDS region size field filled wth maximum contiguous length in bytes
  3597. BUGS:    Windows 3.0 does not correctly support automatic remapping or copying
  3598.       in enhanced mode
  3599.     Windows 3.0 in enhanced mode does not return a correct code on error
  3600. SeeAlso: AX=8104h,AX=8105h
  3601.  
  3602. Bitfields for VDS flags:
  3603. Bit(s)    Description    (Table 1702)
  3604.  0    reserved (zero)
  3605.  1    data should be copied into buffer (ignored if 2 set)
  3606.  2    buffer should not be allocated if region noncontiguous or crosses
  3607.       physical alignment boundary specified by 4-5
  3608.  3    don't attempt automatic remap
  3609.  4    region must not cross 64K physical alignment boundary
  3610.  5    region must not cross 128K physical alignment boundary
  3611.  6-15    reserved (zero)
  3612. --------d-4B8104-----------------------------
  3613. INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
  3614.     AX = 8104h
  3615.     DX = flags
  3616.         bit 0: reserved (zero)
  3617.         bit 1: data should be copied out of buffer
  3618.         bits 2-15 reserved (zero)
  3619.     ES:DI -> DMA descriptor structure (see #1699,#1700) with region size,
  3620.           physical address, and buffer ID fields set
  3621. Return: CF clear if successful
  3622.         DDS physical address field set
  3623.         DDS buffer ID field set (0000h if no buffer allocated)
  3624.     CF set on error
  3625.         AL = error code (see #1697)
  3626.         DDS region size field filled wth maximum contiguous length in bytes
  3627. Note:    Windows 3.0 does not check whether the region extends beyond the end of
  3628.       a segment
  3629. BUG:    Windows 3.0 in enhanced mode does not return a correct code on error
  3630. SeeAlso: AX=8103h,AX=8106h
  3631. --------d-4B8105-----------------------------
  3632. INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
  3633.     AX = 8105h
  3634.     DX = flags (see #1703)
  3635.     ES:DI -> Extended DMA descriptor structure (see #1700,#1701)
  3636.           region size, linear segment, linear offset, and number avail
  3637.           fields set
  3638. Return: CF clear if successful
  3639.         EDDS number used field set
  3640.         if DX bit 6 set, lower 12 bits of BX = offset in first page
  3641.     CF set on error
  3642.         AL = error code (see #1697)
  3643.         EDDS region size field filled with max length in bytes that can be
  3644.           locked and described in the EDDS table
  3645. BUG:    Windows 3.0 in enhanced mode may return zero instead of the physical
  3646.       page address for pages which were originally not present
  3647. SeeAlso: AX=8103h,AX=8106h
  3648.  
  3649. Bitfields for VDS flags:
  3650. Bit(s)    Description    (Table 1703)
  3651.  0-5    reserved (zero)
  3652.  6    EDDS should be returned with page table entries
  3653.  7    only present pages should be locked (not-present pages receive entry
  3654.       of 0000h)
  3655.  8-15    reserved (zero)
  3656. --------d-4B8106-----------------------------
  3657. INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
  3658.     AX = 8106h
  3659.     DX = flags (see #1704)
  3660.     ES:DI -> Extended DMA descriptor structure (see #1700,#1701) returned
  3661.           by AX=8105h
  3662. Return: CF clear if successful
  3663.     CF set on error
  3664.         AL = error code (see #1697)
  3665. Note:    according to the Microsoft version of the VDS specification, the
  3666.       actual scatter/gather list is ignored, while according to the IBM
  3667.       version of the specification, "the result of a LOCK operation"
  3668.       must be provided to this function
  3669. SeeAlso: AX=8104h,AX=8105h
  3670.  
  3671. Bitfields for VDS flags:
  3672. Bit(s)    Description    (Table 1704)
  3673.  0-5    reserved (zero)
  3674.  6    EDDS contains page table entries
  3675.  7    EDDS may contain not-present pages (entry = 0000h)
  3676.  8-15    reserved (zero)
  3677. --------d-4B8107-----------------------------
  3678. INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
  3679.     AX = 8107h
  3680.     DX = flags
  3681.         bit 0: reserved (zero)
  3682.         bit 1: data should be copied into buffer
  3683.         bits  2-15 reserved (zero)
  3684.     ES:DI -> DMA descriptor structure (see #1699) with region size set
  3685.           (also region offset and region segment if DX bit 1 set)
  3686. Return: CF clear if successful
  3687.         DDS physical address and buffer ID set
  3688.         DDS region size filled with length of buffer
  3689.     CF set on error
  3690.         AL = error code (see #1697)
  3691. SeeAlso: AX=8108h
  3692. --------d-4B8108-----------------------------
  3693. INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
  3694.     AX = 8108h
  3695.     DX = flags
  3696.         bit 0: reserved (zero)
  3697.         bit 1: data should be copied out of buffer
  3698.         bits 2-15 reserved (zero)
  3699.     ES:DI -> DMA descriptor structure (see #1699,#1700) with buffer ID set
  3700.           (also region size/region offset/segment if DX bit 1 set)
  3701. Return: CF clear if successful
  3702.     CF set on error
  3703.         AL = error code (see #1697)
  3704. BUG:    under Windows 3.0 Enhanced mode, you must specify that data be copied
  3705.       for this function to work correctly
  3706. SeeAlso: AX=8107h
  3707. --------d-4B8109DX0000-----------------------
  3708. INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
  3709.     AX = 8109h
  3710.     DX = 0000h
  3711.     ES:DI -> DMA descriptor structure (see #1699,#1700) with buffer ID,
  3712.           region segment/offset, and region size fields set
  3713.     BX:CX = starting offset into DMA buffer
  3714. Return: CF clear if successful
  3715.     CF set on error
  3716.         AL = error code (see #1697)
  3717. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3718. SeeAlso: AX=810Ah
  3719. --------d-4B810ADX0000-----------------------
  3720. INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
  3721.     AX = 810Ah
  3722.     DX = 0000h
  3723.     ES:DI -> DMA descriptor structure (see #1699,#1701) with buffer ID,
  3724.           region segment/offset, and region size fields set
  3725.     BX:CX = starting offset into DMA buffer
  3726. Return: CF clear if successful
  3727.     CF set on error
  3728.         AL = error code (see #1697)
  3729. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3730. SeeAlso: AX=8109h
  3731. --------d-4B810B-----------------------------
  3732. INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
  3733.     AX = 810Bh
  3734.     BX = DMA channel number
  3735.     DX = 0000h
  3736. Return: CF clear if successful
  3737.     CF set on error
  3738.         AL = error code (see #1697)
  3739. SeeAlso: AX=810Ch
  3740. --------d-4B810C-----------------------------
  3741. INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
  3742.     AX = 810Ch
  3743.     BX = DMA channel number
  3744.     DX = 0000h
  3745. Return: CF clear if successful
  3746.         ZF set if disable count decremented to zero
  3747.     CF set on error
  3748.         AL = error code (see #1697)
  3749. SeeAlso: AX=810Bh
  3750. --------Q-4B810D-----------------------------
  3751. INT 4B - QEMM-386 - BUG
  3752.     AX = 810Dh
  3753. Note:    the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
  3754.       call
  3755. --------h-4C---------------------------------
  3756. INT 4C - Z100 - Slave 8259 - S100 vectored line 4
  3757. SeeAlso: INT 4B"Z100",INT 4D"Z100"
  3758. --------O-4C---------------------------------
  3759. INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
  3760.     DS:BX -> CR-terminated command string
  3761. Return: FLAGS destroyed
  3762. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
  3763. --------h-4D---------------------------------
  3764. INT 4D - Z100 - Slave 8259 - S100 vectored line 5
  3765. SeeAlso: INT 4C"Z100",INT 4E"Z100"
  3766. --------d-4E---------------------------------
  3767. INT 4E - TI Professional PC - DISK I/O
  3768.     used instead of INT 13 on the TI Professional PC
  3769. SeeAlso: INT 13
  3770. --------h-4E---------------------------------
  3771. INT 4E - Z100 - Slave 8259 - S100 vectored line 6
  3772. SeeAlso: INT 4D"Z100",INT 4F"Z100"
  3773. --------h-4F---------------------------------
  3774. INT 4F - Z100 - Slave 8259 - S100 vectored line 7
  3775. SeeAlso: INT 4E"Z100"
  3776. --------d-4F8100-----------------------------
  3777. INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
  3778.     AX = 8100h
  3779.     ES:BX -> CAM Control Block (CCB) (see #1706)
  3780. Return: AH = status
  3781.         00h successful
  3782.         01h invalid CCB address (0000h:0000h)
  3783. Note:    the SCSI Interface Module (SIM) may complete the requested function
  3784.       and invoke the completion callback function before this call returns
  3785. SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
  3786.  
  3787. (Table 1705)
  3788. Values for CAM function code:
  3789.  00h    NOP
  3790.  01h    execute SCSI I/O
  3791.  02h    get device type
  3792.  03h    path inquiry
  3793.  04h    release SIM queue
  3794.  05h    set async callback
  3795.  06h    set device type
  3796.  07h-0Fh reserved
  3797.  10h    abort SCSI command
  3798.  11h    reset SCSI bus
  3799.  12h    reset SCSI device
  3800.  13h    terminate I/O process
  3801.  14h-1Fh reserved
  3802.  20h    engine inquiry
  3803.  21h    execute engine request
  3804.  22h-2Fh reserved
  3805.  30h    enable logical unit number
  3806.  31h    execute target I/O
  3807.  32h-7Fh reserved
  3808.  80h-FFh vendor-specific functions
  3809.  
  3810. Format of CAM Control Block:
  3811. Offset    Size    Description    (Table 1706)
  3812.  00h    DWORD    physical address of this CCB
  3813.  04h    WORD    CAM control block length
  3814.  06h    BYTE    function code (see #1705)
  3815.  07h    BYTE    CAM status (see #1709)
  3816.  08h    BYTE    SCSI status
  3817.  09h    BYTE    path ID (FFh = XPT)
  3818.  0Ah    BYTE    target ID
  3819.  0Bh    BYTE    logical unit number
  3820.  0Ch    WORD    CAM flags (see #1707)
  3821.  0Eh    BYTE    CAM address flags (see #1708)
  3822.  0Fh    BYTE    target-mode flags (see #1710)
  3823. ---function 02h---
  3824.  10h    DWORD    pointer to 36-byte buffer for inquiry data or 0000h:0000h
  3825.  14h    BYTE    peripheral device type of target logical unit number
  3826. ---function 03h---
  3827.  10h    BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
  3828.         09h-FFh = rev no, i.e. 23h = rev 2.3)
  3829.  11h    BYTE    SCSI capabilities (see #1711)
  3830.  12h    BYTE    target mode support
  3831.         bit 7: processor mode
  3832.         bit 6: phase-cognizant mode
  3833.         bit 5-0: reserved
  3834.  13h    BYTE    miscellaneous flags
  3835.         bit 7: scanned high to low instead of low to high
  3836.         bit 6: removables not included in scan
  3837.         bit 5: inquiry data not kept by XPT
  3838.         bits 4-0: reserved
  3839.  14h    WORD    engine count
  3840.  16h 14 BYTEs    vendor-specific data
  3841.  24h    DWORD    size of private data area
  3842.  28h    DWORD    asynchronous event capabilities (see #1712)
  3843.  2Ch    BYTE    highest path ID assigned
  3844.  2Dh    BYTE    SCSI device ID of initiator
  3845.  2Eh  2 BYTEs    reserved
  3846.  30h 16 BYTEs    SIM vendor ID
  3847.  40h 16 BYTEs    HBA (host bus adaptor) vendor ID
  3848.  50h  4 BYTEs    operating-system dependant usage
  3849. ---functions 00h,04h,11h,12h---
  3850.  no additional fields
  3851. ---function 05h---
  3852.  10h    DWORD    asynchronous event enables (see function 03h above)
  3853.  14h    DWORD    pointer to asynchronous callback routine
  3854.  18h    DWORD    pointer to peripheral driver buffer
  3855.  1Ch    BYTE    size of peripheral buffer
  3856. ---function 06h---
  3857.  10h    BYTE    peripheral device type of target
  3858. ---functions 10h,13h---
  3859.  10h    DWORD    pointer to CCB to be aborted
  3860. ---function 20h---
  3861.  10h    WORD    engine number
  3862.  12h    BYTE    engine type
  3863.         00h buffer memory
  3864.         01h lossless compression
  3865.         02h lossy compression
  3866.         03h encryption
  3867.  13h    BYTE    engine algorithm ID
  3868.         00h vendor-unique
  3869.         01h LZ1 variation 1 (STAC)
  3870.         02h LZ2 variation 1 (HP DCZL)
  3871.         03h LZ2 variation 2 (Infochip)
  3872.  14h    DWORD    engine memory size
  3873. ---function 21h---
  3874.  10h    DWORD    pointer to peripheral driver
  3875.  14h  4 BYTEs    reserved
  3876.  18h    DWORD    OS-dependent request-mapping info
  3877.  1Ch    DWORD    address of completion callback routine
  3878.  20h    DWORD    pointer to scatter/gather list or data buffer
  3879.  24h    DWORD    length of data transfer
  3880.  28h    DWORD    pointer to engine buffer data
  3881.  2Ch  2 BYTEs    reserved
  3882.  2Eh    WORD    number of scatter/gather entries
  3883.  30h    DWORD    maximum destination data length
  3884.  34h    DWORD    length of destination data
  3885.  38h    DWORD    source residual length
  3886.  3Ch 12 BYTEs    reserved
  3887.  48h    DWORD    OS-dependent timeout value
  3888.  4Ch  4 BYTEs    reserved
  3889.  50h    WORD    engine number
  3890.  52h    WORD    vendor-unique flags
  3891.  54h  4 BYTEs    reserved
  3892.  58h  N BYTEs    private data area for SIM
  3893. ---function 30h---
  3894.  10h    WORD    group 6 vendor-unique CDB length
  3895.  12h    WORD    group 7 vendor-unique CDB length
  3896.  14h    DWORD    pointer to target CCB list
  3897.  18h    WORD    number of target CCBs
  3898. ---other functions---
  3899.  10h    DWORD    pointer to peripheral driver
  3900.  14h    DWORD    pointer to next CCB
  3901.  18h    DWORD    OS-dependent request mapping information
  3902.  1Ch    DWORD    address of completion callback routine
  3903.  20h    DWORD    pointer to scatter/gather list or data buffer
  3904.  24h    DWORD    length of data transfer
  3905.  28h    DWORD    pointer to sense info buffer
  3906.  2Ch    BYTE    length of sense info buffer
  3907.  2Dh    BYTE    CDB length
  3908.  2Eh    WORD    number of scatter/gather entries
  3909.  30h  4 BYTEs    reserved
  3910.  34h    BYTE    SCSI status
  3911.  35h  3 BYTEs    reserved
  3912.  38h    DWORD    residual length
  3913.  40h 12 BYTEs    Command Descriptor Block (CDB)
  3914.  44h    DWORD    OS-dependent timeout value
  3915.  48h    DWORD    pointer to message buffer
  3916.  4Ch    WORD    length of message buffer
  3917.  4Eh    WORD    vendor-unique flags
  3918.  50h    BYTE    tag queue action
  3919.  51h  3 BYTEs    reserved
  3920.  54h  N BYTEs    private data area for SIM
  3921.  
  3922. Bitfields for CAM flags:
  3923. Bit(s)    Description    (Table 1707)
  3924.  0    CDB is a pointer
  3925.  1    tagged queue action enable
  3926.  2    linked CDB
  3927.  3    disable callback on completion
  3928.  4    scatter/gather
  3929.  5    disable autosense
  3930.  7-6    direction (00 reserved, 01 in, 10 out, 11 no data transfer)
  3931.  9-8    reserved
  3932.  10    engine synchronize
  3933.  11    SIM queue freeze
  3934.  12    SIM queue priority
  3935.     1 head insertion
  3936.     0 tail insertion (normal)
  3937.  13    disable synchronous transfers    / exclusive
  3938.  14    initiate synchronous transfers    \ mutually
  3939.  15    disable disconnect
  3940.  
  3941. Bitfields for CAM address flags:
  3942. Bit(s)    Description    (Table 1708)
  3943.  7    SG list/data (0 = host, 1 = engine)
  3944.  6    CDB pointer    (6-1: 0=virtual addr, 1=phys addr)
  3945.  5    SG list/data
  3946.  4    sense buffer
  3947.  3    message buffer
  3948.  2    next CCB
  3949.  1    callback on completion
  3950.  0    reserved
  3951.  
  3952. (Table 1709)
  3953. Values for CAM status:
  3954.  00h    request in progress
  3955.  01h    request successful
  3956.  02h    host aborted request
  3957.  03h    unable to abort request
  3958.  04h    request completed with error
  3959.  05h    CAM is busy
  3960.  06h    invalid request
  3961.  07h    invalid path ID
  3962.  08h    no such SCSI device
  3963.  09h    unable to terminate I/O process
  3964.  0Ah    timeout on target selection
  3965.  0Bh    timeout on command
  3966.  0Dh    receive message rejection
  3967.  0Eh    sent/received SCSI bus reset
  3968.  0Fh    detected uncorrectable parity error
  3969.  10h    Autosense request failed
  3970.  11h    no HBA detected
  3971.  12h    data over/underrun
  3972.  13h    bus freed unexpectedly
  3973.  14h    target bus phase sequence failure
  3974.  15h    CCB too small
  3975.  16h    requested capability not available
  3976.  17h    sent bus device reset
  3977.  18h    terminate I/O process
  3978.  38h    invalid LUN
  3979.  39h    invalid target ID
  3980.  3Ah    unimplemented function
  3981.  3Bh    nexus not established
  3982.  3Ch    invalid initiator ID
  3983.  3Dh    received SCSI Command Descriptor Block
  3984.  3Eh    LUN already enabled
  3985.  3Fh    SCSI bus busy
  3986. Note:    bit 6 set to indicate frozen SIM queue
  3987.     bit 7 set to indicate valid autosense
  3988.  
  3989. Bitfields for CAM target-mode flags:
  3990. Bit(s)    Description    (Table 1710)
  3991.  7    data buffer valid
  3992.  6    status valid
  3993.  5    message buffer valid
  3994.  4    reserved
  3995.  3    phase-cognizant mode
  3996.  2    target CCB available
  3997.  1    disable autodisconnect
  3998.  0    disable autosave/restore
  3999.  
  4000. Bitfields for SCSI capabilities:
  4001. Bit(s)    Description    (Table 1711)
  4002.  7    modify data pointers
  4003.  6    wide bus (32 bits)
  4004.  5    wide bus (16 bits)
  4005.  4    synchronous transfers
  4006.  3    linked commands
  4007.  2    reserved
  4008.  1    tagged queueing
  4009.  0    soft reset
  4010.  
  4011. Bitfields for CAM asynchronous event capabilities:
  4012. Bit(s)    Description    (Table 1712)
  4013.  31-24    vendor-specific
  4014.  23-8    reserved
  4015.  7    new devices found during rescan
  4016.  6    SIM module deregistered
  4017.  5    SIM module registered
  4018.  4    sent bus device reset to target
  4019.  3    SCSI AEN
  4020.  2    reserved
  4021.  1    unsolicited reselection
  4022.  0    unsolicited SCSI bus reset
  4023.  
  4024. (Table 1713)
  4025. Values completion callback function is called with:
  4026.     interrupts disabled
  4027.     ES:BX -> completed CCB
  4028.  
  4029. (Table 1714)
  4030. Values asynchronous callback function is called with:
  4031.     AH = opcode
  4032.     AL = path ID generating callback
  4033.     DH = target ID causing event
  4034.     DL = LUN causing event
  4035.     CX = data byte count (if applicable)
  4036.     ES:BX -> data buffer (if applicable)
  4037. Return: all registers preserved
  4038. --------d-4F8200CX8765-----------------------
  4039. INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
  4040.     AX = 8200h
  4041.     CX = 8765h
  4042.     DX = CBA9h
  4043. Return: AH = 00h if installed
  4044.         CX = 9ABCh
  4045.         DX = 5678h
  4046.         ES:DI -> "SCSI_CAM"
  4047. SeeAlso: AX=8100h,INT 4B"Common Access Method"
  4048. --------N-50---------------------------------
  4049. INT 50 - TIL Xpert AIM (X.25)
  4050.     AH = function
  4051. --------H-50---------------------------------
  4052. INT 50 - IRQ0 relocated by DESQview
  4053. Range:    INT 50 to INT F8, selected automatically
  4054. Notes:    this is the default location for older versions; DESQview v2.26+
  4055.       searches for unused ranges of interrupts and uses the lowest
  4056.       available range in its list for relocating these IRQs and the next
  4057.       lowest for relocating IRQ8-IRQ15
  4058.     a range of eight interrupts starting at a multiple of 8 is considered
  4059.       available if all vectors are identical and it has not been excluded
  4060.       with an /XB:nn commandline switch
  4061.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  4062.       are available, F8h and then 50h are used anyway)
  4063.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  4064.       are available, F8h and then F0h are used anyway)
  4065. SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
  4066. SeeAlso: INT D8"Screen Thief"
  4067. --------H-50---------------------------------
  4068. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  4069. SeeAlso: INT 51"IBM 3278"
  4070. --------H-50---------------------------------
  4071. INT 50 - IRQ0 relocated by OS/2 v1.x
  4072. SeeAlso: INT 51"OS/2"
  4073. --------V-500000-----------------------------
  4074. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
  4075.     AX = 0000h
  4076.     ES:BX -> name string or ES:0000h if none
  4077.     CH,CL = row,column of upper left corner
  4078.     DH,DL = row,column of lower right corner
  4079. Return: AX = window handle or
  4080.         0000h if not installed
  4081.         FFFFh on error
  4082. SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
  4083. --------V-500001-----------------------------
  4084. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
  4085.     AX = 0001h
  4086.     DI = window handle
  4087. SeeAlso: AX=0000h
  4088. --------V-500002-----------------------------
  4089. INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
  4090.     AX = 0002h
  4091.     BL = character
  4092.     BH = attribute
  4093.     DL = column
  4094.     DH = row
  4095.     DI = window handle
  4096. Return: AX = status
  4097.         0000h if successful
  4098.         FFFFh if outside window
  4099. SeeAlso: AX=0000h
  4100. --------l-500002-----------------------------
  4101. INT 50 - PC Thuis Organizer Shell - PLOT TEXT
  4102.     AX = 0002h
  4103.     ES:BX -> text string
  4104.     DH,DL = row,column of upper left corner
  4105.     DI = window handle
  4106. Return: AX = status
  4107.         0000h successful (text fits in window)
  4108.         FFFFh error
  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. --------V-500003-----------------------------
  4112. INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
  4113.     AX = 0003h
  4114.     ES:BX -> text string
  4115.     CX = string length (0000h if ASCIZ string)
  4116.     DL = position (FFh centered, else flush left)
  4117.     DH = starting row
  4118.     DI = window handle
  4119. Return: AX = status
  4120.         0000h successful
  4121.         FFFFh did not fit in window
  4122. --------l-500003-----------------------------
  4123. INT 50 - PC Thuis Organizer Shell - WRITE FILE
  4124.     AX = 0003h
  4125.     ES:BX -> data to be written
  4126.     CX = number of bytes to write
  4127.     DS:SI -> filename
  4128. Return: AX = status
  4129.         0000h successful
  4130.         FFFFh error
  4131. SeeAlso: AX=0004h"Shell"
  4132. --------V-500004-----------------------------
  4133. INT 50 - Vanderaart TEXT WINDOWS - GET KEY
  4134.     AX = 0004h
  4135.     CH = type
  4136.         00h any key
  4137.         01h 'J' or 'N' (Dutch for yes/no)
  4138. Return: AX = key
  4139. SeeAlso: INT 16/AH=00h
  4140. --------l-500004-----------------------------
  4141. INT 50 - PC Thuis Organizer Shell - READ FILE
  4142.     AX = 0004h
  4143.     ES:BX -> buffer for data
  4144.     CX = number of bytes to read or 0000h for entire file
  4145.     DL = file type
  4146.         01h setting shell
  4147.         02h setting sterm
  4148.         03h INT21 file
  4149.     DS:SI -> filename
  4150. Return: AX = status
  4151.         0000h successful
  4152.         FFFFh error
  4153. Note:    file type numbers are maintained by John Vanderaart; if a new file type
  4154.       is needed, a type number should be requested from him through the
  4155.       magazine:
  4156.         PC Thuis BV
  4157.         Spaarne 55
  4158.         2011 CE HAARLEM
  4159.         The Netherlands
  4160. SeeAlso: AX=0003h"Shell"
  4161. --------V-500005-----------------------------
  4162. INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
  4163.     AX = 0005h
  4164.     BL = new attribute
  4165.     CH,CL = row,column of upper left corner
  4166.     DH,DL = row,column of lower right corner
  4167.     DI = window handle
  4168. --------l-500005-----------------------------
  4169. INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
  4170.     AX = 0005h
  4171.     ES:BX -> prompt string (ES:0000h if no prompt)
  4172. Return: AX = key pressed
  4173.         0000h "J" (Dutch "Ja" = "Yes")
  4174.         FFFFh "N" (Dutch "Nee" = "No")
  4175. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4176.       published in the June/July 1990 issue of PC Thuis Power magazine
  4177. SeeAlso: AX=0008h"PC Thuis"
  4178. --------V-500006-----------------------------
  4179. INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
  4180.     AX = 0006h
  4181.     ES:BX -> text string
  4182.     CH = type of input (see #1715)
  4183.     DH,DL = row,column of upper left corner
  4184.     DI = window handle
  4185. Return: AX = key which terminated entry
  4186.         0000h Enter
  4187.         0001h Esc
  4188.         0002h Down arrow
  4189.         0003h Up arrow
  4190.         0004h F10
  4191.  
  4192. (Table 1715)
  4193. Values for type of input to Vanderaart Text Windows:
  4194.  00h    everything
  4195.  01h    uppercase only
  4196.  02h    positive numbers
  4197.  03h    Dutch postal code ("9999 AA")
  4198.  04h    'J' or 'N' (Dutch yes/no)
  4199.  05h    telephone or FAX number
  4200.  06h    positive or negative number
  4201.  07h    date (dd/mm/yy)
  4202.  08h    money
  4203.  09h    '1' through '8'
  4204.  0Ah    '1' through '4'
  4205.  0Bh    uppercase filenames
  4206. --------l-500006-----------------------------
  4207. INT 50 - PC Thuis Organizer Shell - ALERT USER
  4208.     AX = 0006h
  4209.     ES:BX -> string
  4210. --------l-500007-----------------------------
  4211. INT 50 - PC Thuis Organizer Shell - DO LINE
  4212.     AX = 0007h
  4213.     ES:BX -> text string
  4214.     CX = string length in bytes (0000h if NUL-terminated)
  4215.     DL = FFh to center string, else flush left
  4216.     DH = upper left row
  4217.     DI = window handle
  4218. Return: AX = status
  4219.         0000h successful
  4220.         FFFFh error
  4221. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4222.       published in the June/July 1990 issue of PC Thuis Power magazine
  4223. SeeAlso: AX=0008h
  4224. --------l-500008-----------------------------
  4225. INT 50 - PC Thuis Organizer Shell - DO MENU
  4226.     AX = 0008h
  4227.     ES:BX -> menu structure
  4228. Return: AL = index 1 or FFh if not selected
  4229.     AH = index 2 or FFh if not selected
  4230.     BL = index 3 or FFh if not selected
  4231.     BH = index 4 or FFh if not selected
  4232. SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
  4233. --------l-500009-----------------------------
  4234. INT 50 - PC Thuis Organizer Shell - MESSAGE ON
  4235.     AX = 0009h
  4236.     ES:BX -> message string
  4237. SeeAlso: AX=000Ah
  4238. --------l-50000A-----------------------------
  4239. INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
  4240.     AX = 000Ah
  4241. SeeAlso: AX=0009h
  4242. --------l-50000B-----------------------------
  4243. INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
  4244.     AX = 000Bh
  4245.     BL = new attribute
  4246.     CH,CL = row,column of upper left corner
  4247.     DH,DL = row,column of lower right corner
  4248.     DI = window handle
  4249. --------l-50000C-----------------------------
  4250. INT 50 - PC Thuis Organizer Shell - DO REQUEST
  4251.     AX = 000Ch
  4252.     ES:BX -> request structure
  4253. Return: AX = status
  4254.         0000h confirmed
  4255.         FFFFh denied
  4256. SeeAlso: AX=0008h
  4257. --------l-50000D-----------------------------
  4258. INT 50 - PC Thuis Organizer Shell - EDIT LINE
  4259.     AX = 000Dh
  4260.     ES:BX -> text string
  4261.     CL = length
  4262.     CH = input type (see #1716)
  4263.     DH,DL = row,column of upper left corner
  4264.     DI = window handle
  4265. Return: AX = result code
  4266. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4267.       published in the June/July 1990 issue of PC Thuis Power magazine
  4268.  
  4269. Bitfields for input type:
  4270. Bit(s)    Description    (Table 1716)
  4271.  0    force uppercase
  4272.  1    integer
  4273.  2    no spaces allowed
  4274.  3    no cursor keys
  4275. --------l-50000E-----------------------------
  4276. INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
  4277.     AX = 000Eh
  4278.     BL = character
  4279.     BH = attribute
  4280.     DH,DL = row,column at which to plot
  4281.     DI = window handle
  4282. Return: AX = status
  4283.         0000h successful
  4284.         FFFFh errror
  4285. --------l-50000F-----------------------------
  4286. INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
  4287.     AX = 000Fh
  4288.     BL = character
  4289.     BH = attribute
  4290.     DI = window handle
  4291. --------l-500010-----------------------------
  4292. INT 50 - PC Thuis Organizer Shell - TRACE MENU
  4293.     AX = 0010h
  4294.     ES:BX -> first menu structure
  4295.     CL = hotkey to look up
  4296. Return: AL = index 1 or FFh if not selected
  4297.     AH = index 2 or FFh if not selected
  4298.     BL = index 3 or FFh if not selected
  4299.     BH = index 4 or FFh if not selected
  4300. Index:    hotkeys;PC Thuis Organizer Shell
  4301. --------l-500011-----------------------------
  4302. INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
  4303.     AX = 0011h
  4304.     DS:SI -> source
  4305.     ES:DI -> destination
  4306.     CX = number of bytes to move (0000h = until NUL string terminator???)
  4307. SeeAlso: AX=0012h
  4308. --------l-500012-----------------------------
  4309. INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
  4310.     AX = 0012h
  4311.     DS:SI -> source
  4312.     ES:DI -> destination
  4313.     CX = number of bytes to compare (0000h=until NUL string terminator???)
  4314. Return: AX = status
  4315.         0000h same
  4316.         FFFFh different
  4317. SeeAlso: AX=0011h
  4318. --------l-500013-----------------------------
  4319. INT 50 - PC Thuis Organizer Shell - GET KEY
  4320.     AX = 0013h
  4321.     CH = type flags
  4322.         bit 0: force uppercase
  4323.         bit 1: integer
  4324.         bit 2: no spaces
  4325. Return: AX = keystroke
  4326. --------l-500014-----------------------------
  4327. INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
  4328.     AX = 0014h
  4329.     BL = direction
  4330.         06h up
  4331.         07h down
  4332.     BH = attribute
  4333.     DI = window handle
  4334. SeeAlso: INT 10/AH=06h,INT 10/AH=07h
  4335. --------l-500015-----------------------------
  4336. INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
  4337.     AX = 0015h
  4338.     BL = handle size
  4339.         00h 65536 bytes (64K)
  4340.         01h 65535 bytes (64K-1)
  4341.         02h 32768 bytes (32K)
  4342.         03h 32767 bytes (32K-1)
  4343. Return: AX = segment
  4344. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4345.       published in the June/July 1990 issue of PC Thuis Power magazine
  4346. SeeAlso: INT 21/AH=48h
  4347. --------H-51---------------------------------
  4348. INT 51 - IRQ1 relocated by DESQview
  4349. Range:    INT 51 to INT F9, selected automatically
  4350. Note:    this is the default location for older versions; see INT 50"DESQview"
  4351.       for details of interrupt relocation
  4352. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4353. --------H-51---------------------------------
  4354. INT 51 - IRQ1 relocated by IBM 3278 emulation control program
  4355. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  4356. --------H-51---------------------------------
  4357. INT 51 - IRQ1 relocated by OS/2 v1.x
  4358. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  4359. --------H-52---------------------------------
  4360. INT 52 - IRQ2 relocated by DESQview
  4361. Range:    INT 52 to INT FA, selected automatically
  4362. Note:    this is the default location for older versions; see INT 50"DESQview"
  4363.       for details of interrupt relocation
  4364. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4365. --------H-52---------------------------------
  4366. INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4367. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4368. --------H-53---------------------------------
  4369. INT 53 - IRQ3 relocated by DESQview
  4370. Range:    INT 53 to INT FB, selected automatically
  4371. Note:    this is the default location for older versions; see INT 50"DESQview"
  4372.       for details of interrupt relocation
  4373. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4374. --------H-53---------------------------------
  4375. INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4376. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4377. --------N-53---------------------------------
  4378. INT 53 - WEB??? - API
  4379.     BX = function
  4380.         0000h ???
  4381.         AX = ???
  4382.         Return: AX = ???
  4383.         0004h ???
  4384.         0009h ???
  4385.         0015h
  4386.         AX = ???
  4387.         DX = ???
  4388.         0017h
  4389. Return: ???
  4390. Notes:    the installation check consists of looking for the signature "WEBCO"
  4391.       immediately prior to the interrupt handler
  4392.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  4393. Index:    installation check;unknown|installation check;WEBCO
  4394. --------H-54---------------------------------
  4395. INT 54 - IRQ4 relocated by DESQview
  4396. Range:    INT 54 to INT FC, selected automatically
  4397. Note:    this is the default location for older versions; see INT 50"DESQview"
  4398.       for details of interrupt relocation
  4399. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4400. --------H-54---------------------------------
  4401. INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4402. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4403. ----------545400-----------------------------
  4404. INT 54 U - Toshiba PCMCIA2 - INSTALLATION CHECK
  4405.     AX = 5400h
  4406. Return: AX = 0054h if installed
  4407.         CX:DX -> INT function handler
  4408. --------H-55---------------------------------
  4409. INT 55 - IRQ5 relocated by DESQview
  4410. Range:    INT 55 to INT FD, selected automatically
  4411. Note:    this is the default location for older versions; see INT 50"DESQview"
  4412.       for details of interrupt relocation
  4413. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4414. --------H-55---------------------------------
  4415. INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4416. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4417. --------H-56---------------------------------
  4418. INT 56 - IRQ6 relocated by DESQview
  4419. Range:    INT 56 to INT FE, selected automatically
  4420. Note:    this is the default location for older versions; see INT 50"DESQview"
  4421.       for details of interrupt relocation
  4422. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4423. --------H-56---------------------------------
  4424. INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4425. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4426. --------H-57---------------------------------
  4427. INT 57 - IRQ7 relocated by DESQview
  4428. Range:    INT 57 to INT FF, selected automatically
  4429. Note:    this is the default location for older versions; see INT 50"DESQview"
  4430.       for details of interrupt relocation
  4431. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4432. --------H-57---------------------------------
  4433. INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4434. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4435. --------H-58---------------------------------
  4436. INT 58 - IRQ8 relocated by DESQview 2.26+
  4437. Range:    INT 58 to INT F8, selected automatically
  4438. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4439. SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 70
  4440. --------H-58---------------------------------
  4441. INT 58 - IRQ0 relocated by DoubleDOS
  4442. SeeAlso: INT 08
  4443. --------H-59---------------------------------
  4444. INT 59 - IRQ9 relocated by DESQview 2.26+
  4445. Range:    INT 59 to INT F9, selected automatically
  4446. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4447. SeeAlso: INT 50"DESQview",INT 58"DESQview",INT 5A"DESQview",INT 71
  4448. --------H-59---------------------------------
  4449. INT 59 - IRQ1 relocated by DoubleDOS
  4450. SeeAlso: INT 09
  4451. --------V-59---------------------------------
  4452. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  4453.     DS:DX -> block of 5 array pointers
  4454. Return: CF set on error
  4455.         AX = error code
  4456.     CF clear if successful
  4457.         AX = return code
  4458. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  4459.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  4460.     also used by the IBM Graphic Development Toolkit
  4461. --------H-5A---------------------------------
  4462. INT 5A - IRQ10 relocated by DESQview 2.26+
  4463. Range:    INT 5A to INT FA, selected automatically
  4464. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4465. SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 5B"DESQview",INT 72
  4466. --------H-5A---------------------------------
  4467. INT 5A - IRQ2 relocated by DoubleDOS
  4468. SeeAlso: INT 0A
  4469. --------N-5A---------------------------------
  4470. INT 5A - PC Cluster adapter BIOS entry address
  4471.     ???
  4472. Return: ???
  4473. SeeAlso: INT 5B"PC Cluster"
  4474. --------H-5B---------------------------------
  4475. INT 5B - IRQ11 relocated by DESQview 2.26+
  4476. Range:    INT 5B to INT FB, selected automatically
  4477. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4478. SeeAlso: INT 50"DESQview",INT 5A"DESQview",INT 5C"DESQview",INT 73
  4479. --------H-5B---------------------------------
  4480. INT 5B - IRQ3 relocated by DoubleDOS
  4481. SeeAlso: INT 0B
  4482. --------N-5B---------------------------------
  4483. INT 5B - PC cluster adapter - RELOCATED INT 19
  4484. SeeAlso: INT 19,INT 5A"PC Cluster"
  4485. --------N-5B---------------------------------
  4486. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  4487.     ES:BX -> Network Control Block (see #1717)
  4488. Return: AL = status (see INT 5C)
  4489. SeeAlso: INT 5C
  4490.  
  4491. Format of Starlan Network Control Block:
  4492. Offset    Size    Description    (Table 1717)
  4493.  00h    BYTE    ncb_command (see also #1721)
  4494.         70h send net Break
  4495.  01h    BYTE    ncb_retcode
  4496.  02h    BYTE    ncb_lsn
  4497.  03h    BYTE    ncb_num
  4498.  04h    DWORD    -> ncb_buffer
  4499.  08h    WORD    ncb_length
  4500.  0Ah 16 BYTEs    ncb_callname
  4501.  1Ah 16 BYTEs    ncb_name
  4502.  2Ah    BYTE    ncb_rto
  4503.  2Bh    BYTE    ncb_sto
  4504.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  4505.  30h    BYTE    ncb_lana_num
  4506.  31h    BYTE    ncb_cmd_cplt
  4507.  32h    DWORD    -> ncb_vname
  4508.  36h    BYTE    ncb_vnamelen
  4509.  37h  9 BYTEs    ncb_reserve
  4510. Note:    fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
  4511. --------N-5B---------------------------------
  4512. INT 5B - Microsoft Network Transport Layer Interface
  4513. Note:    used by MS-NET for executing network commands
  4514. SeeAlso: INT 5C"NetBIOS"
  4515. --------N-5B---------------------------------
  4516. INT 5B - used by Alloy NTNX
  4517. --------N-5B---------------------------------
  4518. INT 5B - ISOLAN Multi Protocol Software
  4519.     ES:BX -> Transfer Control Block
  4520. Return: AL = status
  4521. Note:    this software interface allows multiple protocols/software packages
  4522.       to access a BICC 411x network card
  4523.  
  4524. Format of ISOLAN Transfer Control Block:
  4525. Offset    Type    Description    (Table 1718)
  4526.  00h    BYTE    command code
  4527.         B3h Status
  4528.         F2h Activate
  4529.         F3h Deactivate
  4530.         F4h Send Data
  4531.  01h    BYTE    command identity
  4532.  02h    BYTE    virtual circuit ID
  4533.  03h    WORD    buffer length
  4534.  05h    DWORD    buffer pointer
  4535.  09h    BYTE    expedited data flag
  4536.  0Ah    BYTE    cancelable flag
  4537.  0Bh 16 BYTEs    local network address
  4538.  1Bh 16 BYTEs    remote network address
  4539.  2Bh    DWORD    asynchronous notification routine
  4540.  30h    DWORD    local network number
  4541.  34h    DWORD    remote network number
  4542.  38h    BYTE    call timeout
  4543.  39h    BYTE    not used
  4544.  3Ah  8 BYTEs    reserved
  4545.  42h    BYTE    command code extension
  4546.  43h    WORD    Blue Book MAC type
  4547. --------U-5B5254DL04-------------------------
  4548. INT 5B U - SitBack v3.02R - GET ???
  4549.     AX = 5254h
  4550.     DL = 04h
  4551. Return: ES:BX -> ??? in resident portion
  4552. Program: SitBack is a background file backup utility by SitBack Technologies,
  4553.       Inc. which initiates backups whenever the system is idle
  4554. SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
  4555. --------U-5B8485DL70-------------------------
  4556. INT 5B U - SitBack v3.02R - INSTALLATION CHECK
  4557.     AX = 8485h
  4558.     DL = 70h
  4559. Return: CX = 8485h if installed
  4560.         DX:AX -> ??? (configuration data?)
  4561. Program: SitBack is a background file backup utility by SitBack Technologies,
  4562.       Inc. which initiates backups whenever the system is idle
  4563. SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
  4564. --------U-5B8485DL71-------------------------
  4565. INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
  4566.     AX = 8485h
  4567.     DL = 71h
  4568. Return: ES:BX -> FAR entry point to ???
  4569. Note:    the flag which is modified is located at the address returned by
  4570.        AX=5254h/DL=04h
  4571. SeeAlso: AX=8485h/DL=72h
  4572. --------U-5B8485DL72-------------------------
  4573. INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
  4574.     AX = 8485h
  4575.     DL = 72h
  4576. Note:    the flag which is modified is located at the address returned by
  4577.        AX=5254h/DL=04h
  4578. SeeAlso: AX=8485h/DL=71h
  4579. --------U-5B8485DL73-------------------------
  4580. INT 5B U - SitBack v3.02R - ???
  4581.     AX = 8485h
  4582.     DL = 73h
  4583.     ???
  4584. Return: ???
  4585. --------U-5B8485DL74-------------------------
  4586. INT 5B U - SitBack v3.02R - ???
  4587.     AX = 8485h
  4588.     DL = 74h
  4589.     ???
  4590. Return: ???
  4591. --------U-5B8485DL75-------------------------
  4592. INT 5B U - SitBack v3.02R - ???
  4593.     AX = 8485h
  4594.     DL = 75h
  4595.     CX = ???
  4596. Return: ???
  4597. SeeAlso: AX=8485h/DL=76h
  4598. --------U-5B8485DL76-------------------------
  4599. INT 5B U - SitBack v3.02R - ???
  4600.     AX = 8485h
  4601.     DL = 76h
  4602.     CX = ???
  4603. Return: ???
  4604. Note:    conditionally calls the code for AX=8485h/DL=75h
  4605. SeeAlso: AX=8485h/DL=75h
  4606. --------U-5B8485DL77-------------------------
  4607. INT 5B U - SitBack v3.02R - SET ??? FLAG
  4608.     AX = 8485h
  4609.     DL = 77h
  4610. --------U-5B8485DL78-------------------------
  4611. INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
  4612.     AX = 8485h
  4613.     DL = 78h
  4614. Return: CX = 5342h if supported
  4615.         ES = AX = segment of TSR data
  4616. SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
  4617. --------U-5B8485DL79-------------------------
  4618. INT 5B U - SitBack v3.02R - GET DTA
  4619.     AX = 8485h
  4620.     DL = 79h
  4621. Return: CX = 5342h if supported
  4622.         ES:BX -> DTA set by last INT 21/AH=1Ah
  4623. Note:    this function is provided by SBOS.EXE rather than SB.EXE
  4624. SeeAlso: INT 21/AH=1Ah
  4625. --------U-5B8485DL7A-------------------------
  4626. INT 5B U - SitBack v3.02R - TOGGLE ???
  4627.     AX = 8485h
  4628.     DL = 7Ah
  4629. Return: CX = 5342h if supported
  4630.         AL = new value of ??? (00h or 01h)
  4631. --------H-5C---------------------------------
  4632. INT 5C - IRQ12 relocated by DESQview 2.26+
  4633. Range:    INT 5C to INT FC, selected automatically
  4634. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4635. SeeAlso: INT 50"DESQview",INT 5B"DESQview",INT 5D"DESQview",INT 74
  4636. --------H-5C---------------------------------
  4637. INT 5C - IRQ4 relocated by DoubleDOS
  4638. SeeAlso: INT 0C
  4639. --------N-5C---------------------------------
  4640. INT 5C - NetBIOS INTERFACE
  4641.     ES:BX -> network control block (NCB) (see #1720)
  4642. Return: AL = status (see #1719)
  4643. Program: NetBIOS was developed by Sytek, Inc. in 1984 as a high-level
  4644.       programming interface to the IBM PC Network; the first implementation
  4645.       was a ROM BIOS extension on Sytek's PCnet LAN adapter card, but many
  4646.       current networks support NetBIOS as the session layer.
  4647. Note:    The Sytek PCnet card uses DMA 3.
  4648. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  4649.  
  4650. (Table 1719)
  4651. Values for NetBIOS status:
  4652.  00h    successful
  4653.  01h    bad buffer size
  4654.  03h    invalid NETBIOS command
  4655.  05h    timeout
  4656.  06h    receive buffer too small
  4657.  07h    No-ACK command failed
  4658.  08h    bad session number
  4659.  09h    LAN card out of memory
  4660.  0Ah    session closed
  4661.  0Bh    command has been cancelled
  4662.  0Dh    name already exists
  4663.  0Eh    local name table full
  4664.  0Fh    name still in use, can't delete
  4665.  11h    local session table full
  4666.  12h    remote PC not listening
  4667.  13h    bad NCB_NUM field
  4668.  14h    no answer to CALL or no such remote
  4669.  15h    name not in local name table
  4670.  16h    duplicate name
  4671.  17h    bad delete
  4672.  18h    abnormal end
  4673.  19h    name error, multiple identical names in use
  4674.  1Ah    bad packet
  4675.  21h    network card busy
  4676.  22h    too many commands queued
  4677.  23h    bad LAN card number
  4678.  24h    command finished while cancelling
  4679.  26h    command can't be cancelled
  4680.  30h    name defined by another process (OS/2)
  4681.  34h    NetBIOS environment not defined, must issue reset (OS/2)
  4682.  35h    required operating system resources exhausted (OS/2)
  4683.  36h    maximum applications exceeded (OS/2)
  4684.  37h    no SAPs available for NetBIOS (OS/2)
  4685.  38h    requested resources not available (OS/2)
  4686.  40h    Lana System Error
  4687.  41h    Lana Remote Hot Carrier
  4688.  42h    Lana Local Hot Carrier
  4689.  43h    Lana No Carrier Detected
  4690.  44h    unusual network condition
  4691.  45h-4Dh hardware error
  4692.  4Eh    token ring is broken
  4693.  4Fh    token ring error
  4694.  50h    adapter malfunction
  4695.  F7h    error in explicit INITIALIZE
  4696.  F8h    error in implicit OPEN
  4697.  F9h    TOKREUI internal error
  4698.  FAh    hardware adapter testing
  4699.  FBh    NetBIOS emulator not found
  4700.  FCh    OPEN or OPEN_SAP failure
  4701.  FDh    unexpected adapter closure
  4702.  FFh    NetBIOS busy (command pending)
  4703.  
  4704. Format of NetBIOS Network Control Block:
  4705. Offset    Size    Description    (Table 1720)
  4706.  00h    BYTE    command code (see #1721)
  4707.  01h    BYTE    return code (see #1719)
  4708.  02h    BYTE    local session number (LSN)
  4709.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  4710.  04h    DWORD    -> I/O buffer
  4711.  08h    WORD    length of data in buffer
  4712.  0Ah 16 BYTEs    remote system to call
  4713.  1Ah 16 BYTEs    network name of local machine
  4714.  2Ah    BYTE    receive timeout in 1/2 seconds
  4715.  2Bh    BYTE    send timeout in 1/2 seconds
  4716.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  4717.  30h    BYTE    network adapter number on which to execute command
  4718.         00h-03h IBM NetBIOS specs
  4719.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  4720.  31h    BYTE    command completion code (see returned status above)
  4721.  32h 14 BYTEs    reserved for network card
  4722.  
  4723. (Table 1721)
  4724. Values for NetBIOS command code field in NCB:
  4725.  10h    start session with NCB_NAME name (call)
  4726.  11h    listen for call
  4727.  12h    end session with NCB_NAME name (hangup)
  4728.  14h    send data via NCB_LSN
  4729.  15h    receive data from a session
  4730.  16h    receive data from any session
  4731.  17h    send multiple data buffers
  4732.  20h    send unACKed message (datagram)
  4733.  21h    receive datagram
  4734.  22h    send broadcast datagram
  4735.  23h    receive broadcast datagram
  4736.  30h    add name to name table
  4737.  31h    delete name from name table
  4738.  32h    reset adapter card and tables
  4739.  33h    get adapter status (see structure "astatus" below)
  4740.  34h    status of all sessions for name (see structure "sstatus" below)
  4741.  35h    cancel
  4742.  36h    add group name to name table
  4743.  48h    send data and receive data (LAN Manager NETBEUI.DOS)
  4744.  70h    unlink from IBM remote program (no F0h function)
  4745.  71h    send data without ACK
  4746.  72h    send multiple buffers without ACK
  4747.  72h    UngermannBass Register (conflicts with above function)
  4748.  73h    UngermannBass SendNmc
  4749.  74h    UngermannBass Callniu
  4750.  75h    UngermannBass Calladdr
  4751.  76h    UngermannBass Listenaddr
  4752.  77h    UngermannBass SendPkt
  4753.  78h    find name
  4754.  78h    UngermannBass RcvPkt (conflicts with above function)
  4755.  79h    token-ring protocol trace
  4756.  79h    UngermannBass SendAttn (conflicts with above function)
  4757.  7Ah    UngermannBass RcvAttn
  4758.  7Bh    UngermannBass Listenniu
  4759.  7Ch    UngermannBass RcvRaw
  4760.  7Dh    UngermannBass SendNmc2
  4761.  7Fh    Beame&Whiteside BWNB installation check (returns with return code and
  4762.       completion code both set to 03h, while invalid functions return only
  4763.       return code field set to 03h)
  4764. Note:    OR any of the above except 70h with 80h for non-waiting call
  4765.  
  4766. Format of NetBIOS structure "name":
  4767. Offset    Size    Description    (Table 1722)
  4768.  00h 16 BYTEs "nm_name" symbolic name
  4769.  10h    BYTE  "nm_num" number associated with name
  4770.  11h    BYTE  nm_status
  4771.  
  4772. Format of NetBIOS structure "astatus":
  4773. Offset    Size    Description    (Table 1723)
  4774.  00h  6 BYTEs as_id
  4775.  06h    BYTE  as_jumpers
  4776.  07h    BYTE  as_post
  4777.  08h    BYTE  as_major
  4778.  09h    BYTE  as_minor
  4779.  0Ah    WORD  as_interval
  4780.  0Ch    WORD  as_crcerr
  4781.  0Eh    WORD  as_algerr
  4782.  10h    WORD  as_colerr
  4783.  12h    WORD  as_abterr
  4784.  14h    DWORD as_tcount
  4785.  18h    DWORD as_rcount
  4786.  1Ch    WORD  as_retran
  4787.  1Eh    WORD  as_xresrc
  4788.  20h  8 BYTEs as_res0
  4789.  28h    WORD  as_ncbfree
  4790.  2Ah    WORD  as_ncbmax
  4791.  2Ch    WORD  as_ncbx
  4792.  2Eh  4 BYTEs as_res1
  4793.  32h    WORD  as_sespend
  4794.  34h    WORD  as_msp
  4795.  36h    WORD  as_sesmax
  4796.  38h    WORD  as_bufsize
  4797.  3Ah    WORD  as_names
  4798.  3Ch 16 name structures     as_name
  4799.  
  4800. Format of NetBIOS structure "sstatus":
  4801. Offset    Size    Description    (Table 1724)
  4802.  00h    BYTE    number of sessions being reported
  4803.  01h    BYTE    number of sessions with this name
  4804.  02h    BYTE    number of outstanding receive datagrams
  4805.  03h    BYTE    number of outstanding ReceiveAnys
  4806.  04h    var    session structures (see #1725)
  4807.  
  4808. Format of NetBIOS structure "session":
  4809. Offset    Size    Description    (Table 1725)
  4810.  00h    BYTE    local session number
  4811.  01h    BYTE    state
  4812.         01h listen pending
  4813.         02h call pending
  4814.         03h session established
  4815.         04h hangup pending
  4816.         05h hangup done
  4817.         06h session aborted
  4818.  02h 16 BYTEs    local name
  4819.  12h 16 BYTEs    remote name
  4820.  22h    BYTE    number of outstanding receives
  4821.  23h    BYTE    number of outstanding sends/chainsends
  4822. --------N-5C---------------------------------
  4823. INT 5C - TOPS INTERFACE
  4824.     ES:BX -> Network Control Block
  4825. Note:    TOPS card uses DMA 1, 3 or none.
  4826. --------N-5C---------------------------------
  4827. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  4828.     DX:BX -> control block (see #1727)
  4829. Return: none
  4830. Range:    INT 5Ch to INT 70h
  4831. Notes:    the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  4832.       handler; this serves as the installation check
  4833. Index:    installation check;ATALK.SYS|installation check;AppleTalk interface
  4834.  
  4835. (Table 1726)
  4836. Values for ATALK.SYS command code:
  4837.  01h    "AT_INIT"        initialize the driver
  4838.  02h    "AT_KILL"
  4839.  03h    "AT_GETNETINFO" get current network info incl init status
  4840.  04h    "AT_GETCLOCKTICKS"
  4841.  05h    "AT_STARTTIMER"
  4842.  06h    "AT_RESETTIMER"
  4843.  07h    "AT_CANCELTIMER"
  4844.  10h    "LAP_INSTALL"
  4845.  11h    "LAP_REMOVE"
  4846.  12h    "LAP_WRITE"
  4847.  13h    "LAP_READ"
  4848.  14h    "LAP_CANCEL"
  4849.  20h    "DDP_OPENSOCKET"
  4850.  21h    "DDP_CLOSESOCKET"
  4851.  22h    "DDP_WRITE"
  4852.  23h    "DDP_READ"
  4853.  24h    "DDP_CANCEL"
  4854.  30h    "NBP_REGISTER"
  4855.  31h    "NBP_REMOVE"
  4856.  32h    "NBP_LOOKUP"
  4857.  33h    "NBP_CONFIRM"
  4858.  34h    "NBP_CANCEL"
  4859.  35h    "ZIP_GETZONELIST"
  4860.  36h    "ZIP_GETMYZONE"
  4861.  37h    "ZIP_TAKEDOWN"
  4862.  38h    "ZIP_BRINGUP"
  4863.  40h    "ATP_OPENSOCKET"
  4864.  41h    "ATP_CLOSESOCKET"
  4865.  42h    "ATP_SENDREQUEST"
  4866.  43h    "ATP_GETREQUEST"
  4867.  44h    "ATP_SENDRESPONSE"
  4868.  45h    "ATP_ADDRESPONSE"
  4869.  46h    "ATP_CANCELTRANS"
  4870.  47h    "ATP_CANCELRESPONSE"
  4871.  48h    "ATP_CANCELREQUEST"
  4872.  50h    "ASP_GETPARMS"
  4873.  51h    "ASP_CLOSESESSION"
  4874.  52h    "ASP_CANCEL"
  4875.  53h    "ASP_INIT"
  4876.  54h    "ASP_KILL"
  4877.  55h    "ASP_GETSESSION"
  4878.  56h    "ASP_GETREQUEST"
  4879.  57h    "ASP_CMDREPLY"
  4880.  58h    "ASP_WRTCONTINUE"
  4881.  59h    "ASP_WRTREPLY"
  4882.  5Ah    "ASP_CLOSEREPLY"
  4883.  5Bh    "ASP_NEWSTATUS"
  4884.  5Ch    "ASP_ATTENTION"
  4885.  5Dh    "ASP_GETSTATUS"
  4886.  5Eh    "ASP_OPENSESSION"
  4887.  5Fh    "ASP_COMMAND"
  4888.  60h    "ASP_WRITE"
  4889.  61h    "ASP_GETATTENTION"
  4890.  70h    "PAP_OPEN"
  4891.  71h    "PAP_CLOSE"
  4892.  72h    "PAP_READ"
  4893.  73h    "PAP_WRITE"
  4894.  74h    "PAP_STATUS"
  4895.  75h    "PAP_REGNAME"
  4896.  76h    "PAP_REMNAME"
  4897.  77h    "PAP_INIT"
  4898.  78h    "PAP_NEWSTATUS"
  4899.  79h    "PAP_GETNEXTJOB"
  4900.  7Ah    "PAP_KILL"
  4901.  7Bh    "PAP_CANCEL"
  4902.  
  4903. Format of AppleTalk control block:
  4904. Offset    Size    Description    (Table 1727)
  4905.  00h    WORD    command code (see #1726)
  4906.         OR with the following flags
  4907.         8000h start command then return
  4908.         4000h wait for interrupt service to complete
  4909.  02h    WORD    returned status
  4910.         0000h success (already initialized if func 01h)
  4911.  04h    DWORD    pointer to completion function
  4912.  08h    WORD    network number
  4913.  0Ah    BYTE    node ID
  4914. ---if general func (01h,03h), control block continues:
  4915.  0Bh    BYTE    "inf_abridge"
  4916.  0Ch    WORD    "inf_config"
  4917.  0Eh    DWORD    pointer to buffer
  4918.  12h    WORD    buffer size
  4919. ---if DDP function (20h-24h), control block continues:
  4920.  0Bh    BYTE    "ddp_addr_socket"
  4921.  0Ch    BYTE    "ddp_socket"
  4922.  0Dh    BYTE    "ddp_type"
  4923.  0Eh    DWORD    pointer to buffer
  4924.  12h    WORD    buffer size
  4925.  14h    BYTE    "ddp_chksum"
  4926. ---if Name Binding Protocol (30h-34h), control block continues:
  4927.  0Bh    BYTE    "nbp_addr_socket"
  4928.  0Ch    WORD    "nbp_toget"
  4929.  0Eh    DWORD    pointer to buffer (see #1728)
  4930.  12h    WORD    buffer size
  4931.  14h    BYTE    "nbp_interval"
  4932.  15h    BYTE    "nbp_retry"
  4933.  16h    DWORD    "nbp_entptr"
  4934. ---if AppleTalk Transaction Protocol (42h), control block continues:
  4935.  0Bh    BYTE    "atp_addr_socket"
  4936.  0Ch    WORD    "atp_socket"
  4937.  0Eh    DWORD    pointer to buffer
  4938.  12h    WORD    buffer size
  4939.  14h    BYTE    "atp_interval"
  4940.  15h    BYTE    "atp_retry"
  4941.  16h    BYTE    ATP flags
  4942.         bit 5: exactly one transaction
  4943.  17h    BYTE    "atp_seqbit"
  4944.  18h    BYTE    transaction ID
  4945.  19h  4 BYTEs    ATP user bytes
  4946.  1Dh    BYTE    number of BDS buffers
  4947.  1Eh    BYTE    number of BDS responses
  4948.  1Fh    DWORD    pointer to BDS buffers (see #1729)
  4949.  
  4950. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  4951. Offset    Size    Description    (Table 1728)
  4952.  00h    WORD    "tup_address_network"
  4953.  02h    BYTE    "tup_address_notid"
  4954.  03h    BYTE    "tup_address_socket"
  4955.  04h    BYTE    "tup_enum"
  4956.  05h 99 BYTEs    name
  4957.  
  4958. Format of BDS entries:
  4959. Offset    Size    Description    (Table 1729)
  4960.  00h    DWORD    pointer to buffer
  4961.  04h    WORD    size of buffer
  4962.  06h    WORD    BDS data size
  4963.  08h  4 BYTEs    "bds_userbytes"
  4964. --------N-5C---------------------------------
  4965. INT 5C - IBM 802.2 INTERFACE (LLC)
  4966.     ES:BX -> CCB (see #1730)
  4967. Return: none
  4968.  
  4969. Format of IBM 802.2 CCB:
  4970. Offset    Size    Description    (Table 1730)
  4971.  00h    BYTE    adapter
  4972.  01h    BYTE    command code
  4973.  02h    BYTE    return code
  4974.  03h    BYTE    work
  4975.  04h    DWORD    pointer to ???
  4976.  08h    DWORD    pointer to completion function???
  4977.  0Ch    DWORD    pointer to parameters???
  4978. --------N-5C---------------------------------
  4979. INT 5C - $25 LAN - INSTALLATION CHECK
  4980. Notes:    current versions only check whether the vector is 0000h:0000h or not
  4981.     future versions are supposed to have the signature "NET" in the three
  4982.       bytes preceding the INT 5C handler
  4983. --------N-5C04-------------------------------
  4984. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  4985.     AH = 04h
  4986.     AL = COM port (0 = default)
  4987.     CX = wait count in character times (should be at least 100)
  4988. Return: ZF set if link alive
  4989. --------H-5D---------------------------------
  4990. INT 5D - IRQ13 relocated by DESQview 2.26+
  4991. Range:    INT 5D to INT FD, selected automatically
  4992. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4993. SeeAlso: INT 50"DESQview",INT 5C"DESQview",INT 5E"DESQview",INT 75
  4994. --------H-5D---------------------------------
  4995. INT 5D - IRQ5 relocated by DoubleDOS
  4996. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  4997. --------H-5E---------------------------------
  4998. INT 5E - IRQ14 relocated by DESQview 2.26+
  4999. Range:    INT 5E to INT FE, selected automatically
  5000. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  5001. SeeAlso: INT 50"DESQview",INT 5D"DESQview",INT 5F"DESQview",INT 76
  5002. --------H-5E---------------------------------
  5003. INT 5E - IRQ6 relocated by DoubleDOS
  5004. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  5005. --------H-5F---------------------------------
  5006. INT 5F - IRQ15 relocated by DESQview 2.26+
  5007. Range:    INT 5F to INT FF, selected automatically
  5008. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  5009. SeeAlso: INT 50"DESQview",INT 5E"DESQview",INT 77
  5010. --------H-5F---------------------------------
  5011. INT 5F - IRQ7 relocated by DoubleDOS
  5012. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  5013. --------b-5F00-------------------------------
  5014. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  5015.     AH = 00h
  5016.     AL = video mode
  5017.         07h text, system manager compliant
  5018.         20h 240x128 mono graphics, system manager compliant
  5019.         87h text, not system manager compliant
  5020.         A0h 240x128 mono graphics, not system manager compliant
  5021. Note:    the defaults after setting the mode to graphics are (0,0) logical
  5022.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  5023.       pixel replacement FORCE, line type and fill mask all bits set
  5024. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  5025. --------b-5F01-------------------------------
  5026. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
  5027.     AH = 01h
  5028.     ES:DI -> 8-byte fill mask
  5029. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  5030.       when drawing filled rectangles; it is always aligned with the byte
  5031.       boundaries of video memory, regardless of the actual boundaries of
  5032.       the rectangle
  5033. SeeAlso: AH=02h
  5034. --------b-5F02-------------------------------
  5035. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
  5036.     AH = 02h
  5037.     ES:DI -> graphics info record (see #1731)
  5038. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  5039.  
  5040. Format of HP 95LX graphics info record:
  5041. Offset    Size    Description    (Table 1731)
  5042.  00h    BYTE    current video mode
  5043.  01h    BYTE    default video mode
  5044.  02h    WORD    display width in pixels
  5045.  04h    WORD    display height in pixels
  5046.  06h    WORD    current pen column
  5047.  08h    WORD    current pen row
  5048.  0Ah    WORD    current line type
  5049.  0Ch    WORD    current replacement rule
  5050.  0Eh    WORD    current pen color
  5051.  10h    WORD    current leftmost column of clip region
  5052.  12h    WORD    current rightmost column of clip region
  5053.  14h    WORD    current topmost row of clip region
  5054.  16h    WORD    current bottommost row of clip region
  5055.  18h    WORD    current column of logical origin
  5056.  1Ah    WORD    current row of logical origin
  5057.  1Ch  8 BYTEs    current fill mask
  5058. --------b-5F03-------------------------------
  5059. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  5060.     AH = 03h
  5061.     CX = column
  5062.     DX = row
  5063. SeeAlso: AH=04h
  5064. --------b-5F04-------------------------------
  5065. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
  5066.     AH = 04h
  5067.     CX = left-most column
  5068.     DX = top-most row
  5069.     SI = right-most column
  5070.     DI = bottom-most row
  5071. SeeAlso: AH=03h
  5072. --------b-5F05-------------------------------
  5073. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  5074.     AH = 05h
  5075.     AL = fill type
  5076.         00h outline, using current line type and color
  5077.         01h solid, using current color
  5078.         02h pattern, using current fill mask and color
  5079.     DX,CX = row,column of other corner of rectangle
  5080. Note:    the rectangle is drawn starting at the current pen position
  5081. SeeAlso: AH=01h,AH=06h,AH=07h
  5082. --------b-5F06-------------------------------
  5083. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
  5084.     AH = 06h
  5085.     DX,CX = row,column of end point
  5086. Note:    the line is drawn starting at the current pen position
  5087. SeeAlso: AH=05h,AH=07h
  5088. --------b-5F07-------------------------------
  5089. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
  5090.     AH = 07h
  5091.     DX,CX = row,column of point
  5092. Note:    also sets pen position to the specified point
  5093. SeeAlso: AH=06h,AH=08h,AH=0Ch
  5094. --------b-5F08-------------------------------
  5095. INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
  5096.     AH = 08h
  5097.     DX,CX = row,column of new pen position
  5098. SeeAlso: AH=07h,AH=09h
  5099. --------b-5F09-------------------------------
  5100. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
  5101.     AH = 09h
  5102.     AL = new color (00h = white, 01h = black)
  5103. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  5104. --------b-5F0A-------------------------------
  5105. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  5106.     AH = 0Ah
  5107.     AL = new replacement rule
  5108.         00h force
  5109.         01h AND
  5110.         02h OR
  5111.         03h XOR
  5112. SeeAlso: AH=01h,AH=09h,AH=0Bh
  5113. --------b-5F0B-------------------------------
  5114. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
  5115.     AH = 0Bh
  5116.     CX = new line type
  5117. Note:    the line type specifies 16 bits which are repeated over and over while
  5118.       drawing the pixels of a line
  5119. SeeAlso: AH=09h,AH=0Ah
  5120. --------b-5F0C-------------------------------
  5121. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
  5122.     AH = 0Ch
  5123.     DX,CX = row,column of pixel to read
  5124. Return: AX = pixel color
  5125. SeeAlso: AH=07h
  5126. --------b-5F0D-------------------------------
  5127. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
  5128.     AH = 0Dh
  5129.     DX,CX = row,column of first corner
  5130.     BP,SI = row,column of second corner
  5131.     ES:DI -> image buffer (see #1732)
  5132. Note:    the specified corners are included in the saved image
  5133. SeeAlso: AH=0Eh
  5134.  
  5135. Format of HP 95LX image buffer:
  5136. Offset    Size    Description    (Table 1732)
  5137.  00h    WORD    number of planes (always 01h on HP 95LX)
  5138.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  5139.  04h    WORD    image width in pixels
  5140.  06h    WORD    image height in pixels
  5141.  08h  N BYTEs    image data
  5142.         requires (WIDTH+7)/8 * HEIGHT bytes
  5143. --------b-5F0E-------------------------------
  5144. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
  5145.     AH = 0Eh
  5146.     AL = replacement rule (see #1733)
  5147.     DX,CX = row,column of top left corner
  5148.     ES:DI -> image buffer (see #1732)
  5149. Note:    if the specified image does not fit completely on the screen, this call
  5150.       does nothing
  5151. SeeAlso: AH=0Dh
  5152.  
  5153. Bitfields for replacement rule:
  5154. Bit(s)    Description    (Table 1733)
  5155.  2    invert image before applying rule
  5156.  1-0    function (00 force, 01 AND, 10 OR, 11 XOR)
  5157. --------b-5F0F-------------------------------
  5158. INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
  5159.     AH = 0Fh
  5160.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  5161.     DX,CX = row,column of first character's top left corner
  5162.     ES:DI -> ASCIZ text
  5163. --------*-60---------------------------------
  5164. INT 60 - reserved for user interrupt
  5165. --------v-60---------------------------------
  5166. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  5167. Desc:    The "Zero Bug" virus hooks this vector.     It considers itself installed
  5168.       if offset 103h of the handler's segment contains the bytes "ZE"
  5169. SeeAlso: INT 32,INT 44"VIRUS",INT 61"SEMTEX"
  5170. --------d-60---------------------------------
  5171. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  5172. SeeAlso: INT 41,INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  5173. SeeAlso: INT C0"AMI"
  5174. Notes:    this vector stores the first four bytes of the parameter table for
  5175.       hard disk 0
  5176.     these vectors are used by the following Adaptec controllers:
  5177.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  5178.     these vectors are NOT used by the following Adaptec controllers:
  5179.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  5180. --------b-60---------------------------------
  5181. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  5182. Desc:    supplies a number of subfunctions which perform such functions as
  5183.       drawing boxes and menus, and provide input line editing
  5184. SeeAlso: INT 61"Atari"
  5185. --------V-60---------------------------------
  5186. INT 60 - Nabbit v2.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  5187. Program: Nabbit is a shareware resident screen data grabber by RSE Inc.
  5188. Range:    INT 60 to INT 66, selected by searching for first free vector
  5189. Note:    the Nabbit installation check consists of testing whether the
  5190.       interrupt vector points at the ASCIZ signature string "iG"
  5191.       (69h 47h 00h)
  5192. --------V-60---------------------------------
  5193. INT 60 U - Buffit v3.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  5194. Program: Buffit is a shareware scrollback utility by D.T. Hamilton
  5195. Range:    INT 60 to INT 6F, selected by searching for first free vector
  5196. Notes:    the Buffit installation check consists of testing whether the
  5197.       interrupt vector points at the ASCII signature "Buffit  "
  5198.     there is a private entry point immediately following the signature
  5199.       string, i.e. eight bytes beyond the address pointed at by the
  5200.       interrupt
  5201.  
  5202. (Table 1734)
  5203. Call Buffit private entry point with:
  5204.     AH = function
  5205.         00h get information and hotkey state
  5206.         01h get information and toggle hotkey state
  5207. Return: AH = new hotkey state (00h enabled, 01h disabled)
  5208.     AL = hotkey scan code
  5209.     BH = hotkey shift states
  5210.     BL = ??? (01h)
  5211.     CX = segment of resident code
  5212.     DH = niterrupt number used for signature pointer
  5213.     DL = ??? (00h)
  5214.     SI = INT 09 handler offset
  5215.     DI = INT 21 handler offset
  5216. Index:    hotkeys;Buffit
  5217. --------r-60---------------------------------
  5218. INT 60 - PC-IPC API
  5219.     STACK:    DWORD    pointer to parameter block (see #1735)
  5220. Return: STACK:    unchanged
  5221. Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
  5222.       allows communication between independent programs
  5223. Range:    INT 00 to INT FF, selected by commandline switch
  5224.  
  5225. Format of PC-IPC parameter block:
  5226. Offset    Size    Description    (Table 1735)
  5227.  00h    WORD    caller's ID
  5228.  02h    WORD    to ID
  5229.  04h    WORD    command code (see #1736)
  5230.  06h    WORD    returned status (see #1737)
  5231.  08h    WORD    returned error code (see #1738)
  5232.  0Ah    WORD    size of data
  5233.  0Ch    DWORD    pointer to data buffer
  5234.  
  5235. (Table 1736)
  5236. Values for PC-IPC command code:
  5237.  01h "IPC_CMND_INQUIRE"     inquire current status
  5238.     set status field, writes WORD to data buffer containing free
  5239.       message space in bytes, and sets the "size" field to the
  5240.       number of messages waiting
  5241.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  5242.     ignored unless called with the same ID that disabled PC-IPC
  5243.  03h "IPC_CMND_DISABLE" disable PC-IPC
  5244.  04h "IPC_CMND_INSTALL" reset PC-IPC
  5245.  06h "IPC_CMND_RDATA"    read data
  5246.     returns first message in data buffer, sets "size" to message length
  5247.       and "to ID" field to sender's ID
  5248.     if no messages available, bit 4 of status is cleared and "size" is
  5249.       set to zero
  5250.  07h "IPC_CMND_SDATA"    send data
  5251.  08h "IPC_CMND_REQID"    require user ID
  5252.     create a new recognized ID and return in "caller's ID" field
  5253.  09h "IPC_CMND_DELID"    cancel user ID
  5254.     delete caller's ID from pool of recognized IDs
  5255.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  5256.  0Bh "IPC_CMND_VERS"    get PC-IPC version
  5257.     string representing version returned in data buffer, "size" field
  5258.       set to length of string
  5259.  
  5260. Bitfields for returned status:
  5261. Bit(s)    Description    (Table 1737)
  5262.  0    unused
  5263.  1    IPC enabled
  5264.  2    IPC installed
  5265.  3    error
  5266.  4    message(s) available
  5267.  
  5268. (Table 1738)
  5269. Values for PC-IPC error code:
  5270.  00h    no error
  5271.  01h    invalid command or parameter
  5272.  02h    only process 0 can install/reset IPC
  5273.  03h    process can not install/reset IPC
  5274.  04h    IPC is not enabled
  5275.  05h    process can not disable IPC
  5276.  06h    invalid destination process ID
  5277.  07h    invalid sending process ID
  5278.  08h    invalid data destination
  5279.  09h    no more process IDs available
  5280.  0Ah    can not relinquish that process ID
  5281.  0Bh    message space is full
  5282.  0Ch    IPC is not installed
  5283. --------R-60---------------------------------
  5284. INT 60 - Tangram Arbiter - API
  5285. Desc:    Arbiter makes a PC disk look like a slow disk over an SNA link to an
  5286.       IBM mainframe
  5287. Range:    INT 60h to INT 66h, selected by configuration parameter
  5288. Notes:    identified by string "@ARB_API" immediately following a short jump at
  5289.       the interrupt handler address
  5290. --------N-60---------------------------------
  5291. INT 60 - Excelan LAN Workplace for DOS 3.5 - API
  5292.     ES:BX -> request packet
  5293. Return: request packet updated
  5294. Notes:    this interrupt is also supported by Beame&Whiteside's BWLWP35 shim,
  5295.       which was used in creating this description
  5296.     the installation check consists of testing for the WORD 4142h ('AB')
  5297.       immediately preceding the interrupt handler
  5298. BUG:    because BWLWP35 range-checks only the low byte of the function number,
  5299.       and has a fencepost error even in that test, functions 000Bh and
  5300.       XX01h-XX0Bh (XX nonzero) branch to random locations
  5301. SeeAlso: INT 2F/AX=7A40h
  5302.  
  5303. Format of Excelan request packet:
  5304. Offset    Size    Description    (Table 1739)
  5305.  00h 12 BYTEs    ???
  5306.  0Ch    WORD    (return) error code (see #1740)
  5307.  0Eh    DWORD    -> FAR function for ???
  5308.  12h    WORD    function number
  5309.         0001h ???
  5310.         0002h NOP
  5311.         0003h NOP
  5312.         0004h NOP
  5313.         0005h ???
  5314.         0006h get ??? record
  5315.         0007h NOP
  5316.         0008h reset ???
  5317.         0009h NOP
  5318.         000Ah set ???
  5319.     ???
  5320. ---function 01h---
  5321.  20h    BYTE    (call) subfunction (32h-3Bh)
  5322.         3Bh non-blocking I/O request (will be tested every clock tick)
  5323.  21h    BYTE    (return) error code
  5324.         00h successful
  5325.         09h invalid connection number
  5326.         2Ah bad connection type
  5327.         45h ???
  5328. ---function 01h, subfunction 32h---
  5329.  3Ah    WORD    (call) connection type (01h stream, 02h datagram)
  5330. ---function 01h, subfunction 34h---
  5331.  26h    WORD    (call) ???
  5332.  28h    WORD    (call) ???
  5333.  2Ah    WORD    (call) ???
  5334. ---function 01h, subfunction 35h---
  5335.  1Ah    WORD    (call) connection number???
  5336.  26h    WORD    (return) ???
  5337. ---function 01h, subfunction 36h---
  5338.  1Ah    WORD    (call) connection number???
  5339.  38h    WORD    ???
  5340. ---function 01h, subfunction 37h---
  5341.  24h    WORD    (return) ???
  5342.  26h    WORD    (return) ???
  5343. ---function 01h, subfunction 38h---
  5344.  1Ah    WORD    (call) connection number???
  5345. ---function 01h, subfunction 3Ah---
  5346.  22h    WORD    (call) ???
  5347.         667Eh ???
  5348.         667Fh ???
  5349.  24h    BYTE    (call 667Eh) ???
  5350.  24h    WORD    (return 667Fh) ???
  5351. ---function 01h, subfunction 3Bh---
  5352.  0Eh    DWORD    (call) -> function to invoke for I/O or 0000h:0000h
  5353.         function called with AX = 0000h
  5354.                      STACK: DWORD -> request packet
  5355.                         WORD 0000h
  5356.             should return STACK unchanged
  5357.  1Ah    WORD    (call) connection number???
  5358.  21h    BYTE    (return) set to 01h when I/O becomes possible
  5359.  22h    BYTE    (call) direction (00h write, 01h read)
  5360.  34h    DWORD    (return) -> next pending request packet
  5361. ---function 05h---
  5362.  1Eh    WORD    (call) ???
  5363.  20h    WORD    (call) ???
  5364.  34h    DWORD    (call) -> ???
  5365. ---function 06h---
  5366.  16h    DWORD    (call) -> buffer for ??? record (see #1741)
  5367.  1Ah    WORD    (call) number of bytes to copy
  5368.  22h    WORD    (return) number of bytes transferred
  5369. ---function 08h---
  5370.  14h    WORD    (return) ??? (0001h)
  5371. ---function 0Ah---
  5372.  16h    DWORD    (call) -> WORD ???
  5373.  1Ch    WORD    (call) must be 000Ah for BWLWP35
  5374.  
  5375. (Table 1740)
  5376. Values for Excelan error code:
  5377.  0000h    successful
  5378.  002Dh    invalid function
  5379.  0050h    ???
  5380.  
  5381. Format of ??? record:
  5382. Offset    Size    Description    (Table 1741)
  5383.  00h    WORD    offset of ???
  5384.  02h  4 BYTEs    ???
  5385.  06h    DWORD    IP address (big-endian)
  5386.  0Ah  6 BYTEs    physical address (big-endian)
  5387.     ???
  5388. --------G-60---------------------------------
  5389. INT 60 U - INTRSPY/CMDSPY v1.0 only - API
  5390. Program: INTRSPY is a script-driven debugger included with the book
  5391.       _Undocumented_DOS_.
  5392. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  5393.     The installation check is to
  5394.       a) determine that the handler is an IRET instruction
  5395.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  5396.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  5397.       its entry point.
  5398.     INTRSPY v2.0 (included with the second edition of the book) no longer
  5399.       supports this API
  5400. Index:    installation check;INTRSPY
  5401.  
  5402. (Table 1742)
  5403. Call INTRSPY v1.0 entry point with:
  5404.     AH = function
  5405.         00h ???
  5406.         01h set current directory (for use in reporting)
  5407.         ES:DI -> counted string containing directory name (max 79 char)
  5408.         02h set name of script file
  5409.         ES:DI -> counted string containing file name (max 79 chars)
  5410.         03h set script arguments
  5411.         ES:DI -> counted string containing arguments (max 79 chars)
  5412.         04h get directory set with function 01h
  5413.         ES:DI -> 80-byte buffer for directory name
  5414.         05h get name of script file
  5415.         ES:DI -> 80-byte buffer for script filename
  5416.         06h get script arguments
  5417.         ES:DI -> 80-byte buffer for script arguments
  5418.         07h get ???
  5419.         CL = 00h-15h specifies what to get
  5420.         ES:DI -> WORD to be set with desired value on return
  5421.         08h get ???
  5422.         ES:DI -> WORD to be set with returned value
  5423.         09h get ???
  5424.         ES:DI -> WORD to be set with returned value
  5425.         0Bh store code for interrupt handler???
  5426.         ES:DI -> data
  5427.         CX = number of bytes
  5428.         0Ch ???
  5429.         ES:DI -> ???
  5430.         0Dh get ???
  5431.         ES:DI -> BYTE to be set with returned value
  5432.         0Eh set ??? flag
  5433.         0Fh clear ??? flag
  5434.         10h ???
  5435.         Return: AL = 04h or 05h if failed
  5436.         11h ???
  5437.         Return: AL = 05h if failed
  5438.         12h get ???
  5439.         ES:DI -> buffer
  5440.         Return: CX = number of bytes returned in buffer
  5441.         13h ???
  5442. Return: AH = 00h
  5443.     AL = status
  5444.         00h successful
  5445.         01h invalid function
  5446.         02h ???
  5447.         03h ???
  5448.         04h ???
  5449.         05h ???
  5450. --------u-60---------------------------------
  5451. INT 60 U - PC/370 v4.2 - ???
  5452.     ???
  5453. Return: ???
  5454. Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
  5455. Range:    INT 00 to INT FF, selected by patching the executable
  5456. Note:    the documentation includes instructions for patching the system for
  5457.       another interrupt
  5458. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  5459. --------r-60---------------------------------
  5460. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  5461. SeeAlso: INT 61"JPI"
  5462. --------N-60---------------------------------
  5463. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  5464. Range:    INT 20 to INT FF
  5465. Notes:    The handler for the interrupt will start with a 3-byte jump
  5466.       instruction, followed by the ASCIZ string "PKT DRVR" (the
  5467.       terminating NUL is significant).
  5468.     To find the interrupt being used by the driver, an application should
  5469.       scan through interrupt vectors 20h to FFh (60h through 80h for
  5470.       v1.09- of the specification) until it finds one with the "PKT DRVR"
  5471.       string.
  5472.     AH values of 80h to FFh have been reserved for user-defined additions.
  5473. --------b-60----DI0100-----------------------
  5474. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  5475.     DI = 0100h
  5476.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5477.         DWORD    pointer to event record (see #1744)
  5478. Return: event record filled
  5479.     STACK unchanged
  5480. Note:    this call will timeout after about 500ms
  5481. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  5482.  
  5483. (Table 1743)
  5484. Values for HP 95LX event type:
  5485.  00h    no events
  5486.  01h    keystroke available
  5487.  02h    Ctrl-Break
  5488.  03h    reactivation (always follows deactivation event)
  5489.  04h    about to deactivate (sleep)
  5490.     next get-event call will not return until reactivated
  5491.  05h    forced application termination
  5492.  06h    1-2-3 bridge service request (only given to 1-2-3)
  5493.  07h    request to grow
  5494.  08h    request to shrink
  5495.  09h    application's alarm expired
  5496.  0Ah    daily chance to set an alarm
  5497.  0Bh    system date or time has been changed
  5498.  
  5499. Format of HP 95LX event record:
  5500. Offset    Size    Description    (Table 1744)
  5501.  00h    WORD    event type (see #1743)
  5502.  02h    WORD    ASCII code page 850 translation of keystroke
  5503.         or grow/shrink amount in paragraphs or 0000h if error
  5504.         or alarm expiration data
  5505.  04h    BYTE    scan code from BIOS
  5506.  05h    BYTE    shift key states at time keystroke is retrieved
  5507.  06h    WORD    LICS translation of keystroke
  5508.  08h    BYTE    function key number (1-2-3 only)
  5509.  09h    DWORD    pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
  5510.         or pointer to time change structure (see #1745)
  5511. Note:    if the System Manager is awaiting the conclusion of a bridge service
  5512.       or grow/shrink call and the event type field is set to FFFFh on
  5513.       entry, the SysMgr will resume
  5514.  
  5515. Format of HP 95LX time change structure:
  5516. Offset    Size    Description    (Table 1745)
  5517.  00h    WORD    old year
  5518.  02h    BYTE    old month
  5519.  03h    BYTE    old date
  5520.  04h    BYTE    old day
  5521.  05h    BYTE    old hour
  5522.  06h    BYTE    old minute
  5523.  07h    BYTE    old second
  5524.  08h    BYTE    old hundredth of a second
  5525.  09h  9 BYTEs    new time in same format as old time
  5526. --------b-60----DI0101-----------------------
  5527. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  5528.     DI = 0101h
  5529.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5530.         DWORD pointer to event record (INT 60/DI=0100h)
  5531. Return: event record filled
  5532.     STACK unchanged
  5533. Note:    this call returns immediately if no event is available
  5534. SeeAlso: INT 60/DI=0100h
  5535. --------b-60----DI0102-----------------------
  5536. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  5537.     DI = 0102h
  5538.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5539. Return: ???
  5540.     STACK unchanged
  5541. --------b-60----DI0104-----------------------
  5542. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  5543.     DI = 0104h
  5544.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5545.         DWORD pointer to bridge record (see #1747)
  5546. Return: ???
  5547.     STACK unchanged
  5548.  
  5549. (Table 1746)
  5550. Values for HP 95LX function code:
  5551.  00h    test
  5552.  01h    get range
  5553.  02h    "GETRANGE_ADDR"
  5554.  03h    "SETRANGE_ADDR"
  5555.  04h    "GETRANGE_DATA"
  5556.  05h    "SETRANGE_DATA"
  5557.  06h    recalculate
  5558.  07h    get cursor
  5559.  08h    set cursor
  5560.  09h    redisplay
  5561.  0Ah    cell type
  5562.  0Bh    "CALCTYPE"
  5563.  
  5564. Format of HP 95LX bridge record:
  5565. Offset    Size    Description    (Table 1747)
  5566.  00h    WORD    function code (see #1746)
  5567.  02h    WORD    return code from 1-2-3
  5568.  04h 16 BYTEs    ASCII range name
  5569.  14h    WORD    start column of range
  5570.  16h    WORD    start row of range
  5571.  18h    WORD    end column of range
  5572.  1Ah    WORD    end row of range
  5573.  1Ch    WORD    order in which data is placed in buffer
  5574.  1Eh    WORD    buffer size
  5575.  20h    WORD    offset within bridge record's segment of buffer for cell data
  5576. --------b-60----DI0105-----------------------
  5577. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  5578.     DI = 0105h
  5579.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5580. Return: ???
  5581.     STACK unchanged
  5582. --------b-60----DI0106-----------------------
  5583. INT 60 u - HP 95LX System Manager - YIELD CPU
  5584.     DI = 0106h
  5585.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5586.         DWORD pointer to ???
  5587. Return: ???
  5588.     STACK unchanged
  5589. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  5590. --------b-60----DI0107-----------------------
  5591. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  5592.     DI = 0107h
  5593.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5594.         DWORD pointer to ???
  5595. Return: ???
  5596.     STACK unchanged
  5597. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5598. --------b-60----DI0200-----------------------
  5599. INT 60 u - HP 95LX System Manager - SETUP MENU
  5600.     DI = 0200h
  5601.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5602.         DWORD    pointer to menu data (see #1748)
  5603.         DWORD    pointer to ???
  5604.         WORD    number of items on menu???
  5605.         WORD    ???
  5606.         DWORD    pointer to ???
  5607.         WORD    ???
  5608.         DWORD    pointer to ???
  5609. Return: ???
  5610.     STACK unchanged
  5611. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  5612.  
  5613. Format of HP 95LX menu data:
  5614. Offset    Size    Description    (Table 1748)
  5615.  00h 80 BYTEs    first line of menu text
  5616.  50h 80 BYTEs    second line of menu text
  5617.  A0h 80 BYTEs    third line of menu text
  5618.  F0h    WORD    number of keywords
  5619.  F2h    WORD    index of currently highlighted keyword or FFFFh
  5620.  F4h    WORD    single prompt on top line if nonzero
  5621.  F6h 20 BYTEs    which line each of 20 keywords is located on
  5622. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  5623. 11Eh 20 BYTEs    length of each of 20 keywords
  5624. 132h 20 BYTEs    first letter of each of 20 keywords
  5625. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  5626. --------b-60----DI0201-----------------------
  5627. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  5628.     DI = 0201h
  5629.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5630.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5631. Return: ???
  5632.     STACK unchanged
  5633. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  5634. --------b-60----DI0202-----------------------
  5635. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  5636.     DI = 0202h
  5637.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5638.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5639. Return: ???
  5640.     STACK unchanged
  5641. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  5642. --------b-60----DI0203-----------------------
  5643. INT 60 u - HP 95LX System Manager - REMOVE MENU
  5644.     DI = 0203h
  5645.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5646.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5647. Return: ???
  5648.     STACK unchanged
  5649. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  5650. --------b-60----DI0204-----------------------
  5651. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  5652.     DI = 0204h
  5653.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5654.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5655.         WORD    keystroke
  5656.         DWORD    pointer to WORD to receive selection number
  5657. Return: buffer for selection number filled with index of selected menu item or
  5658.       FFFFh if no final selection yet
  5659.     STACK unchanged
  5660. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  5661. --------b-60----DI0205-----------------------
  5662. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  5663.     DI = 0205h
  5664.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5665.         DWORD    pointer to file menu structure (see #1749)
  5666.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5667.         DWORD    pointer to wildcard filespec for initial file list
  5668.         WORD    row???
  5669.         WORD    column???
  5670. Return: ???
  5671.     STACK unchanged
  5672. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  5673.  
  5674. Format of HP 95LX file menu structure:
  5675. Offset    Size    Description    (Table 1749)
  5676.  00h    DWORD    pointer to ASCIZ base directory name
  5677.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  5678.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see #1750)
  5679.  0Ch    WORD    size of file list workspace in bytes
  5680.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  5681.  10h    WORD    starting column
  5682.  12h    WORD    number of lines
  5683.  14h    WORD    number of columns
  5684.  16h    WORD    number of files displayed on each line
  5685. ---the remaining fields are initialized by the System Manager---
  5686.  18h    WORD    0000h if first edit character, else multiline
  5687.  1Ah    WORD    number of files in file list
  5688.  1Ch    WORD    max files workspace has room for
  5689.  1Eh    WORD    file at top of list
  5690.  20h    WORD    index of file to highlight
  5691.  22h    WORD    index of file to unhighlight
  5692.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  5693.  
  5694. Format of HP 95LX file list workspace entry:
  5695. Offset    Size    Description    (Table 1750)
  5696.  00h    BYTE    file attributes
  5697.  01h    WORD    file time (see #0780 at INT 21/AX=5700h)
  5698.  03h    WORD    file date (see #0781 at INT 21/AX=5700h)
  5699.  05h    DWORD    file size
  5700.  09h 13 BYTEs    ASCIZ filename
  5701. --------b-60----DI0206-----------------------
  5702. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  5703.     DI = 0206h
  5704.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5705.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5706.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5707. Return: ???
  5708.     STACK unchanged
  5709. SeeAlso: INT 60/DI=0205h
  5710. --------b-60----DI0207-----------------------
  5711. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  5712.     DI = 0207h
  5713.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5714.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5715.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5716.         WORD    keystroke
  5717. Return: AX = status (see #1751)
  5718.     STACK unchanged
  5719. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  5720.  
  5721. (Table 1751)
  5722. Values for HP 95LX System Manager status:
  5723.  0000h    keystroke processed, call INT 60/DI=0206h to refresh menu
  5724.  0001h    redisplay application area before refreshing menu
  5725.  0002h    user confirmed selection, filename is in edit record's buffer
  5726.  0003h    user aborted menu
  5727.  FFFBh    bad filename
  5728.  FFFCh    bad directory
  5729.  FFFDh    bad drive
  5730.  FFFEh    unknown keystroke
  5731.  FFFFh    keystroke known but invalid in current context
  5732. --------b-60----DI0208-----------------------
  5733. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  5734.     DI = 0208h
  5735.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5736.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5737.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5738. Return: ???
  5739.     STACK unchanged
  5740. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  5741. --------b-60----DI0300-----------------------
  5742. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  5743.     DI = 0300h
  5744.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5745.         WORD    starting row (-3 is topmost, 0 is first user line)
  5746.         WORD    starting column
  5747.         DWORD    pointer to string
  5748.         WORD    length of string
  5749.         WORD    display style: 0000h normal, 0001h reverse video
  5750.         WORD    "OSTYLE"
  5751. Return: ???
  5752.     STACK unchanged
  5753. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  5754. --------b-60----DI0301-----------------------
  5755. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  5756.     DI = 0301h
  5757.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5758.         WORD    starting row (-3 is topmost, 0 is first user line)
  5759.         WORD    starting column
  5760.         WORD    number of rows
  5761.         WORD    number of columns
  5762. Return: ???
  5763.     STACK unchanged
  5764. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  5765. --------b-60----DI0302-----------------------
  5766. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  5767.     DI = 0302h
  5768.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5769.         WORD    starting row???
  5770.         WORD    starting column???
  5771.         WORD    height of scroll region???
  5772.         WORD    width of scroll region???
  5773.         WORD    number of lines to scroll region???
  5774. Return: ???
  5775.     STACK unchanged
  5776. SeeAlso: INT 60/DI=0301h
  5777. --------b-60----DI0303-----------------------
  5778. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  5779.     DI = 0303h
  5780.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5781.         WORD    ???
  5782.         WORD    ???
  5783.         WORD    ???
  5784.         WORD    ???
  5785.         DWORD    pointer to ???
  5786. Return: ???
  5787.     STACK unchanged
  5788. --------b-60----DI0304-----------------------
  5789. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  5790.     DI = 0304h
  5791.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5792.         DWORD    pointer to ???
  5793.         WORD    ???
  5794. Return: ???
  5795.     STACK unchanged
  5796. --------b-60----DI0305-----------------------
  5797. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  5798.     DI = 0305h
  5799.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5800.         WORD    ???
  5801.         WORD    ???
  5802.         DWORD    pointer to ???
  5803.         WORD    ???
  5804. Return: ???
  5805.     STACK unchanged
  5806. --------b-60----DI0307-----------------------
  5807. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  5808.     DI = 0307h
  5809.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5810.         WORD    ???
  5811.         WORD    ???
  5812.         WORD    ???
  5813. Return: ???
  5814.     STACK unchanged
  5815. --------b-60----DI0308-----------------------
  5816. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  5817.     DI = 0308h
  5818.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5819. Return: ???
  5820.     STACK unchanged
  5821. --------b-60----DI0309-----------------------
  5822. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  5823.     DI = 0309h
  5824.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5825.         WORD    new mode
  5826. Return: ???
  5827.     STACK unchanged
  5828. --------b-60----DI030A-----------------------
  5829. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  5830.     DI = 030Ah
  5831.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5832. Return: ???
  5833.     STACK unchanged
  5834. --------b-60----DI030B-----------------------
  5835. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  5836.     DI = 030Bh
  5837.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5838.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  5839.         WORD    column
  5840. Return: ???
  5841.     STACK unchanged
  5842. Note:    cursor is hidden if the specified position is not on the physical
  5843.       display
  5844. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5845. --------b-60----DI0400-----------------------
  5846. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  5847.     DI = 0400h
  5848.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5849.         DWORD    pointer to edit record (see #1752)
  5850.         DWORD    pointer to string to be edited
  5851.         WORD    initial length of string being edited
  5852.         WORD    maximum length of edited string
  5853.         WORD    row of edit field
  5854.         WORD    leftmost column of edit field
  5855. Return: ???
  5856.     STACK unchanged
  5857.  
  5858. Format of HP 95LX edit record:
  5859. Offset    Size    Description    (Table 1752)
  5860.  00h    WORD    current length of edit buffer
  5861.  02h    BYTE    flag for special processing on first character
  5862.  03h    BYTE    flags
  5863.         bit 0: tab handling
  5864.  04h    WORD    editing in prompt window?
  5865.  06h    DWORD    pointer to top line of prompt window message
  5866.  0Ah    WORD    length of top line of prompt
  5867.  0Ch    DWORD    pointer to second line of prompt window message
  5868.  10h    WORD    length of second line of prompt
  5869.  12h 80 BYTEs    workspace for editing
  5870.  62h  2 WORDs    line array needed for multi-line editing
  5871.  66h 36 BYTEs    multi-line edit record (see #1753)
  5872.  8Ah    WORD    displayable columns
  5873.  
  5874. Format of HP 95LX multi-line edit record:
  5875. Offset    Size    Description    (Table 1753)
  5876.  00h    DWORD    pointer to user-supplied edit buffer
  5877.  04h    WORD    length of edit buffer
  5878.  06h    WORD    current cursor position
  5879.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  5880.  0Ah    WORD    starting column of edit area
  5881.  0Ch    WORD    height of edit area
  5882.  0Eh    WORD    width of edit area
  5883.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  5884.  12h    WORD    number of rows displayable
  5885.  14h    BYTE    cursor column
  5886.  15h    BYTE    01h if buffer has been modified
  5887.  16h    BYTE    first displayable column (ticker fields only)
  5888.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  5889.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  5890.           area is high)
  5891.  1Ch    BYTE    currently marking?
  5892.  1Dh    BYTE    flag
  5893.  1Eh    WORD    offset of mark start
  5894.  20h    WORD    offset of mark end (inclusive)
  5895.  22h    WORD    displayable columns
  5896. --------b-60----DI0401-----------------------
  5897. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  5898.     DI = 0401h
  5899.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5900.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5901.         DWORD    pointer to string to edit
  5902.         WORD    initial length of string being edited
  5903.         WORD    maximum length of edited string
  5904.         DWORD    pointer to first line of prompt
  5905.         WORD    length of first line
  5906.         DWORD    pointer to second line of prompt
  5907.         WORD    length of second line
  5908. Return: ???
  5909.     STACK unchanged
  5910. --------b-60----DI0402-----------------------
  5911. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  5912.     DI = 0402h
  5913.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5914.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5915. Return: ???
  5916.     STACK unchanged
  5917. --------b-60----DI0403-----------------------
  5918. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  5919.     DI = 0403h
  5920.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5921.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5922.         WORD    keystroke
  5923.         DWORD    pointer to WORD buffer for result code
  5924. Return: result code buffer filled with 0001h if editing complete
  5925.     STACK unchanged
  5926. --------b-60----DI0404-----------------------
  5927. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  5928.     DI = 0404h
  5929.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5930.         DWORD    pointer to ???
  5931.         WORD    ???
  5932.         WORD    ???
  5933.         WORD    ???
  5934.         WORD    ???
  5935.         DWORD    pointer to ???
  5936.         WORD    ???
  5937.         WORD    ???
  5938.         WORD    ???
  5939.         DWORD    pointer to ???
  5940. Return: ???
  5941.     STACK unchanged
  5942. --------b-60----DI0405-----------------------
  5943. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  5944.     DI = 0405h
  5945.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5946.         DWORD    pointer to ???
  5947. Return: ???
  5948.     STACK unchanged
  5949. --------b-60----DI0406-----------------------
  5950. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  5951.     DI = 0406h
  5952.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5953.         DWORD    pointer to ???
  5954.         WORD    ???
  5955. Return: ???
  5956.     STACK unchanged
  5957. --------b-60----DI0407-----------------------
  5958. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  5959.     DI = 0407h
  5960.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5961.         DWORD    pointer to ???
  5962.         DWORD    pointer to ???
  5963. Return: ???
  5964.     STACK unchanged
  5965. --------b-60----DI0408-----------------------
  5966. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  5967.     DI = 0408h
  5968.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5969.         DWORD    pointer to ???
  5970. Return: ???
  5971.     STACK unchanged
  5972. --------b-60----DI0409-----------------------
  5973. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  5974.     DI = 0409h
  5975.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5976.         DWORD    pointer to ???
  5977. Return: ???
  5978.     STACK unchanged
  5979. --------b-60----DI040A-----------------------
  5980. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  5981.     DI = 040Ah
  5982.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5983.         DWORD    pointer to ???
  5984. Return: ???
  5985.     STACK unchanged
  5986. --------b-60----DI040B-----------------------
  5987. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  5988.     DI = 040Bh
  5989.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5990.         DWORD    pointer to ???
  5991.         DWORD    pointer to ???
  5992.         WORD    ???
  5993. Return: ???
  5994.     STACK unchanged
  5995. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5996. --------b-60----DI0500-----------------------
  5997. INT 60 u - HP 95LX System Manager - OPEN FILE
  5998.     DI = 0500h
  5999.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6000.         DWORD    pointer to file state record (see #1754)
  6001.         DWORD    pointer to filename
  6002.         WORD    length of filename
  6003.         WORD    ???
  6004.         WORD    suppress buffering if nonzero
  6005. Return: AX = status
  6006.     STACK unchanged
  6007. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  6008.  
  6009. Format of HP 95LX file state record:
  6010. Offset    Size    Description    (Table 1754)
  6011.  00h    WORD    DOS file handle
  6012.  02h    WORD    flags
  6013.         bit 0: buffer contents valid
  6014.         bit 1: buffer is dirty and must be written
  6015.         bit 2: unbuffered I/O
  6016.         bit 3: file is a character device
  6017.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  6018.  08h    DWORD    DOS file offset of start of buffer
  6019.  0Ch    DWORD    effective file offset as seen by caller
  6020.  10h    WORD    number of bytes in file buffer
  6021. ---buffered I/O only---
  6022.  12h 512 BYTEs    file buffer
  6023. --------b-60----DI0501-----------------------
  6024. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  6025.     DI = 0501h
  6026.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6027.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6028.         DWORD    pointer to filename
  6029.         WORD    length of filename
  6030.         WORD    ???
  6031.         WORD    suppress buffering if nonzero
  6032. Return: AX = status
  6033.     STACK unchanged
  6034. SeeAlso: INT 60/DI=0500h
  6035. --------b-60----DI0502-----------------------
  6036. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  6037.     DI = 0502h
  6038.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6039.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6040.         DWORD    pointer to filename
  6041.         WORD    length of filename
  6042.         WORD    ???
  6043.         WORD    suppress buffering if nonzero
  6044. Return: AX = status
  6045.     STACK unchanged
  6046. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  6047. --------b-60----DI0503-----------------------
  6048. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  6049.     DI = 0503h
  6050.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6051.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6052.         DWORD    pointer to filename
  6053.         WORD    length of filename
  6054.         WORD    ???
  6055.         WORD    suppress buffering if nonzero
  6056. Return: AX = status
  6057.     STACK unchanged
  6058. SeeAlso: INT 60/DI=0502h
  6059. --------b-60----DI0504-----------------------
  6060. INT 60 u - HP 95LX System Manager - READ FROM FILE
  6061.     DI = 0504h
  6062.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6063.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6064.         DWORD    pointer to data buffer
  6065.         WORD    number of bytes to read
  6066.         DWORD    pointer to WORD in which to return actual bytes read
  6067. Return: ???
  6068.     STACK unchanged
  6069. SeeAlso: INT 60/DI=0505h
  6070. --------b-60----DI0505-----------------------
  6071. INT 60 - HP 95LX System Manager - WRITE TO FILE
  6072.     DI = 0505h
  6073.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6074.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6075.         DWORD    pointer to data
  6076.         WORD    length of data
  6077. Return: AX = status
  6078.     STACK unchanged
  6079. SeeAlso: INT 60/DI=0504h
  6080. --------b-60----DI0506-----------------------
  6081. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  6082.     DI = 0506h
  6083.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6084.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6085.         WORD    ???
  6086.         WORD    ???
  6087. Return: ???
  6088.     STACK unchanged
  6089. SeeAlso: INT 60/DI=0507h
  6090. --------b-60----DI0507-----------------------
  6091. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  6092.     DI = 0507h "M_TELL"
  6093.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6094.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6095.         DWORD    pointer to DWORD buffer for file position???
  6096. Return: ???
  6097.     STACK unchanged
  6098. SeeAlso: INT 60/DI=0506h
  6099. --------b-60----DI0508-----------------------
  6100. INT 60 u - HP 95LX System Manager - CLOSE FILE
  6101.     DI = 0508h
  6102.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6103.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6104. Return: ???
  6105.     STACK unchanged
  6106. SeeAlso: INT 60/DI=0500h
  6107. --------b-60----DI0509-----------------------
  6108. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  6109.     DI = 0509h
  6110.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6111.         DWORD    pointer to ???
  6112.         DWORD    pointer to ???
  6113.         WORD    ???
  6114.         WORD    ???
  6115. Return: ???
  6116.     STACK unchanged
  6117. --------b-60----DI050A-----------------------
  6118. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  6119.     DI = 050Ah
  6120.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6121.         DWORD    pointer to ???
  6122.         DWORD    pointer to ???
  6123. Return: ???
  6124.     STACK unchanged
  6125.  
  6126. Format of HP 95LX pattern match control block:
  6127. Offset    Size    Description    (Table 1755)
  6128.  00h 43 BYTEs    FindFirst data block (see INT 21/AH=4Eh)
  6129.  2Bh 80 BYTEs    full path name
  6130.  7Bh    BYTE    offset of last component of filename
  6131.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  6132. --------b-60----DI050B-----------------------
  6133. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  6134.     DI = 050Bh
  6135.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6136.         DWORD    pointer to ???
  6137.         WORD    ???
  6138.         WORD    ???
  6139.         DWORD    pointer to ???
  6140. Return: ???
  6141.     STACK unchanged
  6142.  
  6143. (Table 1756)
  6144. Values returned by HP 95LX System Manager:
  6145.  0000h    nonexistent
  6146.  0001h    file
  6147.  0002h    directory
  6148.  0003h    character device
  6149. --------b-60----DI050C-----------------------
  6150. INT 60 u - HP 95LX System Manager - DELETE FILE
  6151.     DI = 050Ch "M_DELETE"
  6152.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6153.         DWORD    pointer to ???
  6154.         WORD    ???
  6155.         WORD    ???
  6156. Return: ???
  6157.     STACK unchanged
  6158. --------b-60----DI050D-----------------------
  6159. INT 60 u - HP 95LX System Manager - RENAME FILE
  6160.     DI = 050Dh
  6161.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6162.         DWORD    pointer to ???
  6163.         WORD    ???
  6164.         WORD    ???
  6165.         DWORD    pointer to ???
  6166.         WORD    ???
  6167.         WORD    ???
  6168. Return: ???
  6169.     STACK unchanged
  6170. --------b-60----DI050E-----------------------
  6171. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  6172.     DI = 050Eh
  6173.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6174.         WORD    ???
  6175.         DWORD    pointer to ???
  6176.         DWORD    pointer to ???
  6177. Return: ???
  6178.     STACK unchanged
  6179. --------b-60----DI050F-----------------------
  6180. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  6181.     DI = 050Fh
  6182.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6183.         DWORD    pointer to ???
  6184.         WORD    ???
  6185. Return: ???
  6186.     STACK unchanged
  6187. --------b-60----DI0510-----------------------
  6188. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  6189.     DI = 0510h
  6190.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6191.         DWORD    pointer to ???
  6192.         DWORD    pointer to ???
  6193. Return: ???
  6194.     STACK unchanged
  6195. --------b-60----DI0511-----------------------
  6196. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  6197.     DI = 0511h
  6198.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6199.         DWORD    pointer to ???
  6200.         WORD    ???
  6201.         WORD    ???
  6202. Return: ???
  6203.     STACK unchanged
  6204. SeeAlso: INT 21/AH=39h,INT 60/AX=0512h
  6205. --------b-60----DI0512-----------------------
  6206. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  6207.     DI = 0512h
  6208.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6209.         DWORD    pointer to ???
  6210.         WORD    ???
  6211.         WORD    ???
  6212. Return: ???
  6213.     STACK unchanged
  6214. SeeAlso: INT 21/AH=3Ah,INT 60/AX=0511h
  6215. --------b-60----DI0513-----------------------
  6216. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  6217.     DI = 0513h
  6218.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6219.         DWORD    pointer to ??? buffer for current drive
  6220. Return: ???
  6221.     STACK unchanged
  6222. SeeAlso: INT 21/AH=19h,INT 60/DI=0514h
  6223. --------b-60----DI0514-----------------------
  6224. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  6225.     DI = 0514h
  6226.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6227.         WORD    new drive
  6228. Return: ???
  6229.     STACK unchanged
  6230. SeeAlso: INT 21/AH=0Eh,INT 60/DI=0513h
  6231. --------b-60----DI0515-----------------------
  6232. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  6233.     DI = 0515h
  6234.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6235.         DWORD    pointer to ???
  6236.         DWORD    pointer to ???
  6237. Return: ???
  6238.     STACK unchanged
  6239. --------b-60----DI0516-----------------------
  6240. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  6241.     DI = 0516h
  6242.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6243.         DWORD    pointer to ???
  6244. Return: ???
  6245.     STACK unchanged
  6246. --------b-60----DI0517-----------------------
  6247. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  6248.     DI = 0517h
  6249.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6250.         DWORD    pointer to ???
  6251.         WORD    ???
  6252.         WORD    ???
  6253.         DWORD    pointer to ??? buffer for file's attributes???
  6254. Return: ???
  6255.     STACK unchanged
  6256. SeeAlso: INT 21/AX=4300h,INT 60/DI=0518h
  6257. --------b-60----DI0518-----------------------
  6258. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  6259.     DI = 0518h
  6260.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6261.         DWORD    pointer to ???
  6262.         WORD    ???
  6263.         WORD    ???
  6264.         WORD    new attributes???
  6265. Return: ???
  6266.     STACK unchanged
  6267. SeeAlso: INT 21/AX=4301h,INT 60/DI=0517h
  6268. --------b-60----DI0519-----------------------
  6269. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  6270.     DI = 0519h
  6271.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6272.         DWORD    pointer to ???
  6273.         DWORD    pointer to ???
  6274.         WORD    ???
  6275.         WORD    ???
  6276.         WORD    ???
  6277.         WORD    ???
  6278.         WORD    ???
  6279. Return: ???
  6280.     STACK unchanged
  6281. --------b-60----DI051A-----------------------
  6282. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  6283.     DI = 051Ah
  6284.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6285.         DWORD    pointer to ???
  6286.         DWORD    pointer to ???
  6287. Return: ???
  6288.     STACK unchanged
  6289. --------b-60----DI051B-----------------------
  6290. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  6291.     DI = 051Bh
  6292.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6293.         DWORD    pointer to ???
  6294.         DWORD    pointer to ???
  6295. Return: ???
  6296.     STACK unchanged
  6297. --------b-60----DI051C-----------------------
  6298. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  6299.     DI = 051Ch
  6300.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6301.         DWORD    pointer to ???
  6302.         WORD    ???
  6303. Return: ???
  6304.     STACK unchanged
  6305. --------b-60----DI0600-----------------------
  6306. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  6307.     DI = 0600h
  6308.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6309. Return: ???
  6310.     STACK unchanged
  6311. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  6312. --------b-60----DI0601-----------------------
  6313. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  6314.     DI = 0601h
  6315.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6316. Return: never
  6317.     STACK unchanged
  6318. SeeAlso: INT 21/AH=4Ch,INT 2F/AX=1122h,INT 60/DI=0600h
  6319. --------b-60----DI0602-----------------------
  6320. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  6321.     DI = 0602h
  6322.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6323. Return: ???
  6324.     STACK unchanged
  6325. SeeAlso: INT 15/AX=101Bh,INT 2F/AX=1681h,INT 60/DI=0603h
  6326. --------b-60----DI0603-----------------------
  6327. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  6328.     DI = 0603h
  6329.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6330. Return: ???
  6331.     STACK unchanged
  6332. SeeAlso: INT 15/AX=101Ch,INT 2F/AX=1682h,INT 60/DI=0602h
  6333. --------b-60----DI0604-----------------------
  6334. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  6335.     DI = 0604h
  6336.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6337.         DWORD    pointer to ???
  6338.         WORD    ???
  6339.         WORD    ???
  6340.         DWORD    pointer to ???
  6341. Return: ???
  6342.     STACK unchanged
  6343. SeeAlso: INT 21/AH=4Bh
  6344. --------b-60----DI0605-----------------------
  6345. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  6346.     DI = 0605h
  6347.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6348. Return: ???
  6349.     STACK unchanged
  6350. --------b-60----DI0606-----------------------
  6351. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  6352.     DI = 0606h
  6353.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6354. Return: ???
  6355.     STACK unchanged
  6356. SeeAlso: INT 14/AH=17h"FOSSIL",INT 19
  6357. --------b-60----DI0607-----------------------
  6358. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  6359.     DI = 0607h
  6360.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6361.         DWORD    pointer to ???
  6362.         WORD    ???
  6363.         DWORD    pointer to ???
  6364.         WORD    ???
  6365. Return: ???
  6366.     STACK unchanged
  6367. --------b-60----DI0608-----------------------
  6368. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  6369.     DI = 0608h
  6370.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6371.         DWORD    pointer to ???
  6372. Return: ???
  6373.     STACK unchanged
  6374. --------b-60----DI0609-----------------------
  6375. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  6376.     DI = 0609h
  6377.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6378.         DWORD    pointer to ???
  6379. Return: DX:AX -> ???
  6380.     STACK unchanged
  6381. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6382. --------b-60----DI0700-----------------------
  6383. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  6384.     DI = 0700h
  6385.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6386. Return: ???
  6387.     STACK unchanged
  6388. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  6389.  
  6390. (Table 1757)
  6391. Values for HP 95LX error code:
  6392.  0000h    successful
  6393.  FFF8h    transfer request out of bounds
  6394.  FFF9h    no such representation
  6395.  FFFAh    no representation open
  6396.  FFFBh    a representation is already open
  6397.  FFFCh    representation already exists
  6398.  FFFDh    heap allocation failure
  6399.  FFFEh    clipboard not open
  6400.  FFFFh    clipboard access denied
  6401. --------b-60----DI0701-----------------------
  6402. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  6403.     DI = 0701h
  6404.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6405. Return: ???
  6406.     STACK unchanged
  6407. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  6408. --------b-60----DI0702-----------------------
  6409. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  6410.     DI = 0702h
  6411.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6412.         DWORD    pointer to ???
  6413. Return: ???
  6414.     STACK unchanged
  6415. SeeAlso: INT 60/DI=0700h
  6416. --------b-60----DI0704-----------------------
  6417. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  6418.     DI = 0704h
  6419.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6420.         DWORD    pointer to ???
  6421. Return: ???
  6422.     STACK unchanged
  6423. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  6424. --------b-60----DI0705-----------------------
  6425. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  6426.     DI = 0705h
  6427.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6428. Return: ???
  6429.     STACK unchanged
  6430. SeeAlso: INT 60/DI=0704h
  6431. --------b-60----DI0706-----------------------
  6432. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  6433.     DI = 0706h
  6434.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6435.         WORD    ???
  6436.         DWORD    pointer to ???
  6437.         DWORD    pointer to ???
  6438. Return: ???
  6439.     STACK unchanged
  6440. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  6441. --------b-60----DI0707-----------------------
  6442. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  6443.     DI = 0707h
  6444.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6445.         DWORD    pointer to ???
  6446.         DWORD    pointer to ???
  6447.         DWORD    pointer to ???
  6448. Return: ???
  6449.     STACK unchanged
  6450. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  6451. --------b-60----DI0708-----------------------
  6452. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  6453.     DI = 0708h
  6454.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6455.         DWORD    pointer to data to be written???
  6456.         WORD    length of data???
  6457. Return: ???
  6458.     STACK unchanged
  6459. SeeAlso: INT 60/DI=0709h
  6460. --------b-60----DI0709-----------------------
  6461. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  6462.     DI = 0709h
  6463.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6464.         WORD    ???
  6465.         WORD    ???
  6466.         DWORD    pointer to buffer for data???
  6467.         WORD    length of buffer???
  6468. Return: ???
  6469.     STACK unchanged
  6470. SeeAlso: INT 60/DI=0708h
  6471. --------b-60----DI0800-----------------------
  6472. INT 60 u - HP 95LX System Manager - BEEP
  6473.     DI = 0800h
  6474.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6475. Return: ???
  6476.     STACK unchanged
  6477. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  6478. --------b-60----DI0801-----------------------
  6479. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  6480.     DI = 0801h
  6481.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6482. Return: ???
  6483.     STACK unchanged
  6484. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  6485. --------b-60----DI0802-----------------------
  6486. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  6487.     DI = 0802h
  6488.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6489.         WORD    pattern number (00h-06h)
  6490. Return: ???
  6491.     STACK unchanged
  6492. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  6493. --------b-60----DI0803-----------------------
  6494. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  6495.     DI = 0803h
  6496.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6497. Return: ???
  6498.     STACK unchanged
  6499. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  6500. --------b-60----DI0900-----------------------
  6501. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  6502.     DI = 0900h
  6503.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6504.         WORD    size of block in bytes
  6505. Return: AX -> memory block
  6506.     STACK unchanged
  6507. Note:    System Manager-compliant applications are always small-model (64K code,
  6508.       64K data)
  6509. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  6510. --------b-60----DI0902-----------------------
  6511. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  6512.     DI = 0902h
  6513.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6514.         WORD    offset of memory block???
  6515. Return: ???
  6516.     STACK unchanged
  6517. Note:    System Manager-compliant applications are always small-model (64K code,
  6518.       64K data)
  6519. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  6520. --------b-60----DI0903-----------------------
  6521. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  6522.     DI = 0903h
  6523.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6524.         WORD    size of block in bytes???
  6525. Return: AX -> memory block???
  6526.     STACK unchanged
  6527. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  6528. --------b-60----DI0904-----------------------
  6529. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  6530.     DI = 0904h
  6531.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6532.         WORD    segment of memory block???
  6533. Return: AX -> ???
  6534.     STACK unchanged
  6535. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  6536. --------b-60----DI0B00-----------------------
  6537. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  6538.     DI = 0B00h
  6539.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6540.         DWORD    pointer to ???
  6541. Return: ???
  6542.     STACK unchanged
  6543. --------b-60----DI0B01-----------------------
  6544. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  6545.     DI = 0B01h
  6546.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6547.         DWORD    pointer to ???
  6548. Return: ???
  6549.     STACK unchanged
  6550. --------b-60----DI0B02-----------------------
  6551. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  6552.     DI = 0B02h
  6553.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6554.         DWORD    pointer to ???
  6555. Return: ???
  6556.     STACK unchanged
  6557. --------b-60----DI0B03-----------------------
  6558. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  6559.     DI = 0B03h
  6560.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6561.         WORD    ???
  6562. Return: ???
  6563.     STACK unchanged
  6564. --------b-60----DI0B04-----------------------
  6565. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  6566.     DI = 0B04h
  6567.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6568.         DWORD    pointer to alarm record???
  6569.         WORD    ???
  6570. Return: ???
  6571.     STACK unchanged
  6572.  
  6573. Format of HP 95LX alarm record:
  6574. Offset    Size    Description    (Table 1758)
  6575.  00h    BYTE    hour
  6576.  01h    BYTE    minute
  6577.  02h    BYTE    second
  6578.  03h    BYTE    unused padding
  6579.  04h    WORD    rescheduling interval, in seconds
  6580.  06h    BYTE    are seconds significant?
  6581.  07h    BYTE    alarm sound
  6582.  08h 40 BYTEs    message displayed when alarm activates
  6583.  30h    BYTE    task ID of owner
  6584.  31h    BYTE    application's own use for sub-class
  6585.  32h  4 BYTEs    application's own use for private data
  6586. --------b-60----DI0B05-----------------------
  6587. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  6588.     DI = 0B05h
  6589.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6590.         DWORD    pointer to ???
  6591. Return: ???
  6592.     STACK unchanged
  6593. --------b-60----DI0B06-----------------------
  6594. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  6595.     DI = 0B06h
  6596.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6597.         DWORD    pointer to ???
  6598.         DWORD    pointer to ???
  6599.         DWORD    pointer to ???
  6600. Return: ???
  6601.     STACK unchanged
  6602. --------b-60----DI0B07-----------------------
  6603. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  6604.     DI = 0B07h
  6605.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6606.         DWORD    pointer to ???
  6607. Return: ???
  6608.     STACK unchanged
  6609. --------b-60----DI0B08-----------------------
  6610. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  6611.     DI = 0B08h
  6612.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6613.         WORD    timestamp format (see #1759)
  6614.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  6615.         WORD    column
  6616. Return: ???
  6617.     STACK unchanged
  6618.  
  6619. Bitfields for HP 95LX timestamp format:
  6620. Bit(s)    Description    (Table 1759)
  6621.  1-0    timestamp components
  6622.     00 date only
  6623.     01 time only
  6624.     10 date and time
  6625.     11 day and date
  6626.  4    supply am/pm
  6627.  5    supply seconds
  6628.  6    show year
  6629.  7    four-digit year
  6630. --------b-60----DI0B09-----------------------
  6631. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  6632.     DI = 0B09h
  6633.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6634.         DWORD    pointer to ???
  6635.         DWORD    pointer to ???
  6636. Return: ???
  6637.     STACK unchanged
  6638. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  6639.  
  6640. Format of HP 95LX system settings:
  6641. Offset    Size    Description    (Table 1760)
  6642.  00h    WORD    country code
  6643.  02h    WORD    speaker volume (00h-03h or FFh for off)
  6644.  04h    WORD    contrast level (00h-0Fh)
  6645.  06h    WORD    week start (00h Sunday, 01h Monday)
  6646.  08h    WORD    punctuation format (see #1761)
  6647.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  6648.  0Ch    WORD    current date format (see #1762)
  6649.  0Eh    WORD    current time format (see #1763)
  6650.  10h    WORD    collating sequence
  6651.         00h numbers first, 01h letters first, 02h ASCII
  6652.  12h 80 BYTEs    name of picture file
  6653.  62h 30 BYTEs    name
  6654.  80h 30 BYTEs    title
  6655.  9Eh 28 BYTEs    company name
  6656.  BAh    WORD    number of languages
  6657.  BCh  6 BYTEs    available languages
  6658.  C2h 66 BYTEs    language menu
  6659. 104h  2 BYTEs    ASCIZ date separator
  6660. 106h  2 BYTEs    ASCIZ time separator
  6661. 108h    BYTE    date order
  6662. 109h    BYTE    use 24 hour time?
  6663. 10Ah 16 BYTEs    currency string
  6664. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  6665. 11Ch    WORD    keyboard (see #1764)
  6666. 11Eh    WORD    printer baud rate
  6667.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  6668. 120h    WORD    printer driver code
  6669.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  6670. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  6671. 124h    WORD    system manager interrupt (60h by default)
  6672. 126h    WORD    code page (01h CP850, 02h CP437)
  6673. 128h    WORD    active exit key
  6674. 12Ah    WORD    active menu key
  6675. 12Ch    WORD    active CHAR key toggle
  6676. 12Eh  6 BYTEs    alarm
  6677.  
  6678. (Table 1761)
  6679. Values for HP 95LX punctuation format:
  6680.  code    decimal arg    thousands
  6681.  00h    .    ,    ,
  6682.  01h    ,    .    .
  6683.  02h    .    ;    ;
  6684.  03h    ,    ;    .
  6685.  04h    .    ,    " "
  6686.  05h    ,    .    " "
  6687.  06h    .    ;    " "
  6688.  07h    ,    ;    " "
  6689.  
  6690. (Table 1762)
  6691. Values for HP 95LX current date format:
  6692.  00h    dd-mmm-yy
  6693.  01h    dd-mmm
  6694.  02h    mmm-yy
  6695.  03h    mm/dd/yy
  6696.  04h    dd/mm/yy
  6697.  05h    dd.mm.yy
  6698.  06h    yy-mm-dd
  6699.  07h    mm/dd
  6700.  08h    dd/mm
  6701.  09h    dd.mm
  6702.  0Ah    mm-dd
  6703.  
  6704. (Table 1763)
  6705. Values for HP 95LX current time format:
  6706.  00h    HH:MM:SS am/pm
  6707.  01h    HH:MM am/pm
  6708.  02h    HH:MM:SS
  6709.  03h    HH.MM.SS
  6710.  04h    HH,MM,SS
  6711.  05h    HHhMMmSSs
  6712.  06h    HH:MM
  6713.  07h    HH.MM
  6714.  08h    HH,MM
  6715.  09h    HHhMMm
  6716.  
  6717. (Table 1764)
  6718. Values for HP 95LX keyboard layout:
  6719.  0001h    Belgium
  6720.  0002h    French Canadian
  6721.  0004h    Denmark
  6722.  0008h    Finland
  6723.  0010h    French
  6724.  0020h    Finland
  6725.  0040h    Italy
  6726.  0080h    Netherlands
  6727.  0100h    Norway
  6728.  0200h    Portugal
  6729.  0400h    Spain
  6730.  0800h    Sweden
  6731.  1000h    Swiss French
  6732.  2000h    Swiss German
  6733.  4000h    United Kingdom
  6734.  8000h    USA
  6735. --------b-60----DI0B0A-----------------------
  6736. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  6737.     DI = 0B0Ah
  6738.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6739.         DWORD    pointer to ???
  6740.         DWORD    pointer to ???
  6741. Return: ???
  6742.     STACK unchanged
  6743. SeeAlso: INT 60/DI=0B09h
  6744. --------b-60----DI0B0B-----------------------
  6745. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  6746.     DI = 0B0Bh
  6747.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6748.         DWORD    pointer to ???
  6749. Return: ???
  6750.     STACK unchanged
  6751. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  6752. --------b-60----DI0B0C-----------------------
  6753. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  6754.     DI = 0B0Ch
  6755.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6756.         DWORD    pointer to ???
  6757. Return: ???
  6758.     STACK unchanged
  6759. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  6760. --------b-60----DI0B0D-----------------------
  6761. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  6762.     DI = 0B0Dh
  6763.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6764.         DWORD    pointer to ???
  6765.         DWORD    pointer to ???
  6766.         DWORD    pointer to ???
  6767. Return: ???
  6768.     STACK unchanged
  6769. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  6770. --------b-60----DI0B0E-----------------------
  6771. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  6772.     DI = 0B0Eh
  6773.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6774.         WORD    ???
  6775.         WORD    ???
  6776.         WORD    ???
  6777.         DWORD    pointer to ???
  6778.         DWORD    pointer to ???
  6779. Return: DX:AX -> ???
  6780.     STACK unchanged
  6781. --------b-60----DI0B0F-----------------------
  6782. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  6783.     DI = 0B0Fh
  6784.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6785. Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
  6786.     STACK unchanged
  6787. SeeAlso: INT 60/DI=0B09h
  6788. --------b-60----DI0B10-----------------------
  6789. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  6790.     DI = 0B10h
  6791.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6792.         WORD    ???
  6793.         DWORD    pointer to ???
  6794.         DWORD    pointer to ???
  6795. Return: ???
  6796.     STACK unchanged
  6797. --------b-60----DI0B11-----------------------
  6798. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  6799.     DI = 0B11h
  6800.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6801.         WORD    ???
  6802.         DWORD    pointer to ???
  6803.         DWORD    pointer to ???
  6804. Return: ???
  6805.     STACK unchanged
  6806. --------b-60----DI0B12-----------------------
  6807. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  6808.     DI = 0B12h
  6809.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6810.         WORD    new parsing rule (see #1765)
  6811. Return: ???
  6812.     STACK unchanged
  6813. SeeAlso: INT 60/DI=0B13h
  6814.  
  6815. (Table 1765)
  6816. Values for HP 95LX date parsing rule:
  6817.  01h    day-month-year
  6818.  02h    month-day-year
  6819.  03h    year-month-day
  6820.  04h    "DMYO"
  6821.  05h    "MDYO"
  6822.  OR with 08h to get any year
  6823. --------b-60----DI0B13-----------------------
  6824. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  6825.     DI = 0B13h
  6826.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6827.         WORD    new parsing rule (see #1766)
  6828. Return: ???
  6829.     STACK unchanged
  6830. SeeAlso: INT 60/DI=0B12h
  6831.  
  6832. (Table 1766)
  6833. Values for HP 95LX time parsing rule:
  6834.  01h    HH:MM:SS (am/pm)
  6835.  02h    HH:MM:SS (24hr)
  6836.  03h    HHMM:SS (24hr)
  6837.  04h    HH:MM:SS.hh (24hr)
  6838.  05h    HH:MM (am/pm)
  6839.  06h    HH:MM (24hr)
  6840.  07h    HHMM (24hr)
  6841. --------b-60----DI0B14-----------------------
  6842. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  6843.     DI = 0B14h
  6844.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6845. Return: ???
  6846.     STACK unchanged
  6847. --------b-60----DI0B15-----------------------
  6848. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  6849.     DI = 0B15h
  6850.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6851.         WORD    ???
  6852. Return: ???
  6853.     STACK unchanged
  6854. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6855. --------b-60----DI0C00-----------------------
  6856. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  6857.     DI = 0C00h
  6858.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6859. Return: ???
  6860.     STACK unchanged
  6861. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  6862. --------b-60----DI0C01-----------------------
  6863. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  6864.     DI = 0C01h
  6865.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6866. Return: ???
  6867.     STACK unchanged
  6868. Note:    relinquishes control of printer
  6869. SeeAlso: INT 60/DI=0C00h
  6870. --------b-60----DI0C02-----------------------
  6871. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  6872.     DI = 0C02h
  6873.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6874.         DWORD    pointer to data to be written
  6875.         WORD    length of data
  6876. Return: ???
  6877.     STACK unchanged
  6878. SeeAlso: INT 60/DI=0C00h
  6879. --------b-60----DI0C03-----------------------
  6880. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  6881.     DI = 0C03h
  6882.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6883. Return: ???
  6884.     STACK unchanged
  6885. SeeAlso: INT 60/DI=0C00h
  6886. --------b-60----DI0C04-----------------------
  6887. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  6888.     DI = 0C04h
  6889.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6890.         WORD    ???
  6891.         DWORD    pointer to ???
  6892. Return: ???
  6893.     STACK unchanged
  6894. --------b-60----DI0C05-----------------------
  6895. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  6896.     DI = 0C05h
  6897.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6898.         WORD    ???
  6899.         DWORD    pointer to ???
  6900. Return: ???
  6901.     STACK unchanged
  6902. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6903. --------b-60----DI0E00-----------------------
  6904. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  6905.     DI = 0E00h
  6906.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6907.         DWORD    pointer to ???
  6908. Return: ???
  6909.     STACK unchanged
  6910. SeeAlso: #1767,INT 60/DI=0E01h,INT 60/DI=0E02h
  6911.  
  6912. (Table 1767)
  6913. Values for HP 95LX error code:
  6914.  0000h    successful
  6915.  FFF1h    "E_BUSY"
  6916.  FFF2h    timeout
  6917.  FFF3h    framing error
  6918.  FFF4h    parity error
  6919.  FFF5h    overrun error
  6920.  FFF6h    "E_EMPTY"
  6921.  FFF7h    "E_CONECT"
  6922.  FFF8h    not open
  6923.  FFF9h    out of memory
  6924.  FFFAh    buffer overflow
  6925.  FFFBh    "E_NOFIT"
  6926.  FFFCh    unsupported
  6927.  FFFDh    "E_IVOPR"
  6928.  FFFEh    "E_IVCHN"
  6929.  FFFFh    "E_REOPEN"
  6930. --------b-60----DI0E01-----------------------
  6931. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  6932.     DI = 0E01h
  6933.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6934.         DWORD    pointer to WORD buffer for comm channel handle
  6935.         WORD    communications line number (01h-04h)
  6936. Return: ???
  6937.     STACK unchanged
  6938. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  6939. --------b-60----DI0E02-----------------------
  6940. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  6941.     DI = 0E02h
  6942.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6943.         WORD    comm channel handle
  6944. Return: ???
  6945.     STACK unchanged
  6946. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  6947. --------b-60----DI0E03-----------------------
  6948. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  6949.     DI = 0E03h
  6950.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6951.         WORD    ???
  6952. Return: ???
  6953.     STACK unchanged
  6954. --------b-60----DI0E04-----------------------
  6955. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  6956.     DI = 0E04h
  6957.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6958.         WORD    ???
  6959.         WORD    ???
  6960. Return: ???
  6961.     STACK unchanged
  6962. --------b-60----DI0E05-----------------------
  6963. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  6964.     DI = 0E05h
  6965.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6966.         WORD    ???
  6967.         DWORD    pointer to ???
  6968. Return: ???
  6969.     STACK unchanged
  6970. --------b-60----DI0E06-----------------------
  6971. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  6972.     DI = 0E06h
  6973.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6974.         WORD    comm channel handle
  6975.         WORD    reset options (see #1768)
  6976. Return: ???
  6977.     STACK unchanged
  6978.  
  6979. Bitfields for HP 95LX reset options:
  6980. Bit(s)    Description    (Table 1768)
  6981.  0    reset line
  6982.  1    flush transmit buffer
  6983.  2    flush receive buffer
  6984.  3    reset modem
  6985.  4    reset receiver's ^S state
  6986.  5    reset transmitter's ^S state
  6987. --------b-60----DI0E07-----------------------
  6988. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  6989.     DI = 0E07h
  6990.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6991.         WORD    ???
  6992. Return: ???
  6993.     STACK unchanged
  6994. --------b-60----DI0E08-----------------------
  6995. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  6996.     DI = 0E08h
  6997.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6998.         WORD    comm channel handle
  6999.         DWORD    pointer to data to be sent
  7000.         WORD    option flags
  7001.             bit 0: send partial buffer
  7002.             bit 1: turn on receiver after sending
  7003.         DWORD    pointer to WORD containing length of data to be sent
  7004. Return: length WORD updated to contain number of bytes actually sent???
  7005.     STACK unchanged
  7006. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  7007. --------b-60----DI0E09-----------------------
  7008. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  7009.     DI = 0E09h
  7010.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7011.         WORD    ???
  7012.         DWORD    pointer to ??? WORD
  7013.         DWORD    pointer to ??? WORD
  7014. Return: ???
  7015.     STACK unchanged
  7016. SeeAlso: INT 60/DI=0E0Ah
  7017. --------b-60----DI0E0A-----------------------
  7018. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  7019.     DI = 0E0Ah
  7020.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7021.         WORD    comm channel handle
  7022.         DWORD    pointer to WORD to get receive buffer size
  7023.         DWORD    pointer to WORD to get free bytes in receive buffer
  7024. Return: ???
  7025.     STACK unchanged
  7026. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  7027. --------b-60----DI0E0B-----------------------
  7028. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  7029.     DI = 0E0Bh
  7030.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7031.         WORD    comm channel handle
  7032.         DWORD    pointer to data buffer
  7033.         DWORD    pointer to WORD (call) length of data buffer
  7034.                     (return) number of bytes received
  7035. Return: ???
  7036.     STACK unchanged
  7037. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  7038. --------b-60----DI0E0C-----------------------
  7039. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  7040.     DI = 0E0Ch
  7041.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7042.         WORD    ???
  7043.         DWORD    pointer to ???
  7044.         WORD    ???
  7045. Return: ???
  7046.     STACK unchanged
  7047. --------b-60----DI0E0D-----------------------
  7048. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  7049.     DI = 0E0Dh
  7050.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7051.         WORD    ???
  7052.         DWORD    pointer to ???
  7053.         WORD    ???
  7054. Return: ???
  7055.     STACK unchanged
  7056. --------b-60----DI0E0E-----------------------
  7057. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  7058.     DI = 0E0Eh
  7059.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7060.         WORD    ???
  7061.         WORD    ???
  7062. Return: ???
  7063.     STACK unchanged
  7064. --------b-60----DI0E0F-----------------------
  7065. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  7066.     DI = 0E0Fh
  7067.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7068.         WORD    ???
  7069. Return: ???
  7070.     STACK unchanged
  7071. --------b-60----DI0E10-----------------------
  7072. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  7073.     DI = 0E10h
  7074.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7075.         WORD    ???
  7076. Return: ???
  7077.     STACK unchanged
  7078. --------b-60----DI0E11-----------------------
  7079. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  7080.     DI = 0E11h
  7081.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7082.         WORD    ???
  7083.         WORD    ???
  7084. Return: ???
  7085.     STACK unchanged
  7086. --------b-60----DI0E12-----------------------
  7087. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  7088.     DI = 0E12h
  7089.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7090.         WORD    ???
  7091. Return: ???
  7092.     STACK unchanged
  7093. --------b-60----DI0E13-----------------------
  7094. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  7095.     DI = 0E13h
  7096.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7097.         WORD    ???
  7098. Return: ???
  7099.     STACK unchanged
  7100. --------b-60----DI0E14-----------------------
  7101. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  7102.     DI = 0E14h
  7103.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7104.         WORD    comm channel handle
  7105.         DWORD    pointer to comm settings (see #1769)
  7106. Return: ???
  7107.     STACK unchanged
  7108. SeeAlso: INT 60/DI=0E15h
  7109.  
  7110. Format of HP 95LX comm settings:
  7111. Offset    Size    Description    (Table 1769)
  7112.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  7113.  01h    WORD    baud rate divisor (115200/baud_rate)
  7114.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  7115.  04h    BYTE    stop bits (00h one, 04h two)
  7116.  05h    BYTE    data bits - 5
  7117.  06h    BYTE    software handshake
  7118.         01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  7119.  07h    BYTE    infrared (01h off, 02h on)
  7120.  08h    BYTE    duplex (01h half, 02h full)
  7121.  09h    BYTE    echo (01h echo, 02h no echo)
  7122. --------b-60----DI0E15-----------------------
  7123. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  7124.     DI = 0E15h
  7125.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7126.         WORD    ???
  7127.         DWORD    pointer to buffer for settings (see INT 60/DI=0E14h)
  7128. Return: ???
  7129.     STACK unchanged
  7130. SeeAlso: INT 60/DI=0E14h
  7131. --------b-60----DI0E16-----------------------
  7132. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  7133.     DI = 0E16h
  7134.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7135.         WORD    ???
  7136.         WORD    ???
  7137.         WORD    ???
  7138.         WORD    ???
  7139.         WORD    ???
  7140. Return: ???
  7141.     STACK unchanged
  7142. --------b-60----DI0E17-----------------------
  7143. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  7144.     DI = 0E17h
  7145.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7146.         WORD    ???
  7147. Return: ???
  7148.     STACK unchanged
  7149. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7150. --------b-60----DI0F00-----------------------
  7151. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  7152.     DI = 0F00h
  7153.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7154.         WORD    ???
  7155.         DWORD    pointer to ???
  7156.         WORD    ???
  7157.         DWORD    pointer to ???
  7158. Return: ???
  7159.     STACK unchanged
  7160. --------b-60----DI0F01-----------------------
  7161. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  7162.     DI = 0F01h
  7163.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7164.         DWORD    pointer to ASCIZ title string
  7165. Return: ???
  7166.     STACK unchanged
  7167. --------b-60----DI0F02-----------------------
  7168. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  7169.     DI = 0F02h
  7170.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7171.         DWORD    pointer to ???
  7172. Return: ???
  7173.     STACK unchanged
  7174. --------b-60----DI0F03-----------------------
  7175. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  7176.     DI = 0F03h
  7177.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7178.         DWORD    pointer to first line of message
  7179.         WORD    length of first line
  7180.         DWORD    pointer to second line of message
  7181.         WORD    length of second line
  7182. Return: ???
  7183.     STACK unchanged
  7184. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  7185. --------b-60----DI0F04-----------------------
  7186. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  7187.     DI = 0F04h
  7188.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7189. Return: ???
  7190.     STACK unchanged
  7191. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  7192. --------b-60----DI0F05-----------------------
  7193. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  7194.     DI = 0F05h
  7195.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7196. Return: DX:AX -> ???
  7197.     STACK unchanged
  7198. --------b-60----DI0F06-----------------------
  7199. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  7200.     DI = 0F06h
  7201.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7202. Return: DX:AX -> ???
  7203.     STACK unchanged
  7204. --------b-60----DI0F07-----------------------
  7205. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  7206.     DI = 0F07h
  7207.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7208. Return: DX:AX -> ???
  7209.     STACK unchanged
  7210. --------b-60----DI0F08-----------------------
  7211. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  7212.     DI = 0F08h
  7213.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7214.         ???
  7215. Return: ???
  7216.     STACK unchanged
  7217. --------b-60----DI0F09-----------------------
  7218. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  7219.     DI = 0F09h
  7220.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7221.         DWORD    pointer to first line of message
  7222.         WORD    length of first line
  7223.         DWORD    pointer to second line of message
  7224.         WORD    length of second line
  7225.         DWORD    pointer to third line of message
  7226.         WORD    length of third line
  7227. Return: ???
  7228.     STACK unchanged
  7229. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  7230. --------b-60----DI0F0A-----------------------
  7231. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  7232.     DI = 0F0Ah
  7233.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7234. Return: ???
  7235.     STACK unchanged
  7236. SeeAlso: INT 60/DI=0F0Bh
  7237. --------b-60----DI0F0B-----------------------
  7238. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  7239.     DI = 0F0Bh
  7240.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7241. Return: ???
  7242.     STACK unchanged
  7243. SeeAlso: INT 60/DI=0F0Ah
  7244. --------b-60----DI0F0C-----------------------
  7245. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  7246.     DI = 0F0Ch
  7247.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7248.         ???
  7249. Return: ???
  7250.     STACK unchanged
  7251. --------b-60----DI0F0D-----------------------
  7252. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  7253.     DI = 0F0Dh
  7254.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7255.         DWORD    pointer to ???
  7256. Return: DX:AX -> ???
  7257.     STACK unchanged
  7258. --------b-60----DI0F0E-----------------------
  7259. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  7260.     DI = 0F0Eh
  7261.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7262.         DWORD    pointer to ???
  7263. Return: DX:AX -> ???
  7264.     STACK unchanged
  7265. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7266. --------b-60----DI1005-----------------------
  7267. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  7268.     DI = 1005h
  7269.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7270. Return: ???
  7271.     STACK unchanged
  7272. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  7273. --------b-60----DI1200-----------------------
  7274. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  7275.     DI = 1200h
  7276.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7277.         DWORD    pointer to ???
  7278. Return: ???
  7279.     STACK unchanged
  7280. --------b-60----DI1201-----------------------
  7281. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  7282.     DI = 1201h
  7283.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7284.         WORD    ???
  7285. Return: DX:AX -> ???
  7286.     STACK unchanged
  7287. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7288. --------b-60----DI1202-----------------------
  7289. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  7290.     DI = 1202h
  7291.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7292. Return: DX:AX -> ???
  7293.     STACK unchanged
  7294. --------b-60----DI1203-----------------------
  7295. INT 60 u - HP 95LX System Manager - "INIT_SYSMGR_RSRCS"
  7296.     DI = 1203h
  7297.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7298. Return: ???
  7299.     STACK unchanged
  7300. --------b-60----DI1300-----------------------
  7301. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  7302.     DI = 1300h
  7303.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7304.         DWORD    pointer to ???
  7305.         DWORD    pointer to ???
  7306.         WORD    ???
  7307. Return: ???
  7308.     STACK unchanged
  7309. --------b-60----DI1301-----------------------
  7310. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  7311.     DI = 1301h
  7312.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7313.         DWORD    pointer to ???
  7314. Return: ???
  7315.     STACK unchanged
  7316. --------b-60----DI1302-----------------------
  7317. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  7318.     DI = 1302h
  7319.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7320.         DWORD    pointer to ???
  7321.         WORD    ???
  7322. Return: ???
  7323.     STACK unchanged
  7324. --------b-60----DI1303-----------------------
  7325. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  7326.     DI = 1303h
  7327.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7328.         DWORD    pointer to ???
  7329. Return: ???
  7330.     STACK unchanged
  7331. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7332. --------b-60----DI1400-----------------------
  7333. INT 60 u - HP 95LX System Manager - "M_ColInit"
  7334.     DI = 1400h
  7335.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7336. Return: AX = ???
  7337.     STACK unchanged
  7338. --------b-60----DI1401-----------------------
  7339. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  7340.     DI = 1401h
  7341.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7342.         DWORD    pointer to ???
  7343.         WORD    ???
  7344.         DWORD    pointer to ???
  7345.         WORD    ???
  7346. Return: ???
  7347.     STACK unchanged
  7348. --------b-60----DI1402-----------------------
  7349. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  7350.     DI = 1402h
  7351.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7352.         ???
  7353. Return: ???
  7354.     STACK unchanged
  7355. --------b-60----DI1403-----------------------
  7356. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  7357.     DI = 1403h
  7358.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7359.         ???
  7360. Return: ???
  7361.     STACK unchanged
  7362. --------b-60----DI1404-----------------------
  7363. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  7364.     DI = 1404h
  7365.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7366.         DWORD    pointer to ???
  7367.         WORD    ???
  7368. Return: ???
  7369.     STACK unchanged
  7370. --------b-60----DI1405-----------------------
  7371. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  7372.     DI = 1405h
  7373.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7374.         DWORD    pointer to ???
  7375.         WORD    ???
  7376.         DWORD    pointer to ???
  7377.         WORD    ???
  7378.         WORD    ???
  7379. Return: ???
  7380.     STACK unchanged
  7381. --------b-60----DI1406-----------------------
  7382. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  7383.     DI = 1406h
  7384.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7385.         DWORD    pointer to ???
  7386.         WORD    ???
  7387. Return: ???
  7388.     STACK unchanged
  7389. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7390. --------b-60----DI1500-----------------------
  7391. INT 60 u - HP 95LX System Manager - "GrDispInit"
  7392.     DI = 1500h
  7393.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7394.         ???
  7395. Return: ???
  7396.     STACK unchanged
  7397. --------b-60----DI1501-----------------------
  7398. INT 60 u - HP 95LX System Manager - "GrDispClear"
  7399.     DI = 1501h
  7400.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7401.         ???
  7402. Return: ???
  7403.     STACK unchanged
  7404. --------b-60----DI1502-----------------------
  7405. INT 60 u - HP 95LX System Manager - "GrDispDot"
  7406.     DI = 1502h
  7407.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7408.         ???
  7409. Return: ???
  7410.     STACK unchanged
  7411. --------b-60----DI1503-----------------------
  7412. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  7413.     DI = 1503h
  7414.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7415.         ???
  7416. Return: ???
  7417.     STACK unchanged
  7418. --------b-60----DI1504-----------------------
  7419. INT 60 u - HP 95LX System Manager - "GrDispFill"
  7420.     DI = 1504h
  7421.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7422.         ???
  7423. Return: ???
  7424.     STACK unchanged
  7425. --------b-60----DI1505-----------------------
  7426. INT 60 u - HP 95LX System Manager - "GrDispRead"
  7427.     DI = 1505h
  7428.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7429.         ???
  7430. Return: ???
  7431.     STACK unchanged
  7432. --------b-60----DI1506-----------------------
  7433. INT 60 u - HP 95LX System Manager - "GrDispString"
  7434.     DI = 1506h
  7435.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7436.         ???
  7437. Return: ???
  7438.     STACK unchanged
  7439. --------b-60----DI1507-----------------------
  7440. INT 60 u - HP 95LX System Manager - "GrDispPan"
  7441.     DI = 1507h
  7442.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7443.         ???
  7444. Return: ???
  7445.     STACK unchanged
  7446. --------b-60----DI1508-----------------------
  7447. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  7448.     DI = 1508h
  7449.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7450.         ???
  7451. Return: ???
  7452.     STACK unchanged
  7453. --------b-60----DI1509-----------------------
  7454. INT 60 u - HP 95LX System Manager - "GrDispSave"
  7455.     DI = 1509h
  7456.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7457.         ???
  7458. Return: ???
  7459.     STACK unchanged
  7460. --------b-60----DI150A-----------------------
  7461. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  7462.     DI = 150Ah
  7463.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7464.         ???
  7465. Return: ???
  7466.     STACK unchanged
  7467. --------b-60----DI150B-----------------------
  7468. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  7469.     DI = 150Bh
  7470.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7471.         ???
  7472. Return: ???
  7473.     STACK unchanged
  7474. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7475. --------I-60---------------------------------
  7476. INT 60 u - 3270-PC CONTROL PROGRAM - ???
  7477. --------b-60----DI1604-----------------------
  7478. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  7479.     DI = 1604h
  7480.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7481.         ???
  7482. Return: ???
  7483.     STACK unchanged
  7484. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7485. --------G-6000-------------------------------
  7486. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  7487.     AH = 00h
  7488. Return: AX = 0000h    profiling is off
  7489.         otherwise profiling is on
  7490. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7491.       Issue 47
  7492. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  7493. --------G-6000-------------------------------
  7494. INT 60 - MDEBUG - GET STATUS
  7495.     AH = 00h
  7496.     DS:SI -> password or a null byte
  7497. Return: AX = return code
  7498.         FFFEh password is invalid
  7499.         FFFDh display mode is invalid
  7500.         else successful
  7501.         ES = value of the monitor register SE
  7502.         DI = value of the monitor register OF
  7503.         CH = monitor color
  7504.         CL = interpreter color
  7505.         BH = monitor start line
  7506.         BL = interpreter start line
  7507.         AH = makecode of the hotkey
  7508.         AL = ASCII code of the hotkey
  7509.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  7510.               hotkey (coded as for the keyboard flag at 0040h:0017h)
  7511.         DH = basic process number for the communication with drivers
  7512.               process number for the display driver, DH+1 = process
  7513.               number for the command driver(s)
  7514.     DS:SI -> MDEBUG identification table
  7515. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  7516.       Schemmer, including a memory monitor, an interpreter, and a
  7517.       disassembler
  7518. Notes:    MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  7519.       through INT 67; the interrupt handler is preceded by the signature
  7520.       "USERINT" and is not chained
  7521.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  7522.       passwords are active; enough stack space must be provided for an
  7523.       INT 10h call (which MDEBUG uses while prompting for the password)
  7524. SeeAlso: AH=02h"MDEBUG"
  7525. Index:    hotkeys;MDEBUG
  7526.  
  7527. Format of MDEBUG identification table:
  7528. Offset    Size    Description    (Table 1770)
  7529.  -2    WORD    entry offset
  7530.  00h    WORD    CS of MDEBUG
  7531.  02h    DWORD    old INT 08h vector
  7532.  06h    DWORD    old INT 09h vector
  7533.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  7534.  0Eh    BYTE    length of version string
  7535.  0Fh  N BYTEs    version string
  7536. --------G-6001-------------------------------
  7537. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  7538.     AH = 01h
  7539.     DS:SI -> password or a null byte
  7540. Return: AX = return code
  7541.         FFFEh password is invalid
  7542.         FFFDh display mode is invalid
  7543.         else successful
  7544.         ES:DI point to the help registers of MDEBUG
  7545.            ES:DI-02h  -> R0 (WORD)
  7546.            ES:DI      -> R1 (WORD)
  7547.            ES:DI+02h  -> R2 (WORD)
  7548.            ES:DI+04h  -> R3 (WORD)
  7549.            ...
  7550.            ES:DI+0Eh  -> R8 (WORD)
  7551. --------G-6001-------------------------------
  7552. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  7553.     AH = 01h
  7554. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7555.       Issue 47
  7556. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  7557. --------N-6001FF-----------------------------
  7558. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  7559.     AX = 01FFh
  7560.     BX = handle returned by function 02h
  7561. Return: CF set on error
  7562.         DH = error code (see #1771)
  7563.     CF clear if successful
  7564.         BX = version
  7565.         CH = network interface class (see #1772)
  7566.         DX = interface type (see #1772)
  7567.         CL = number
  7568.         DS:SI -> name
  7569.         AL = driver functions supported
  7570.         01h basic
  7571.         02h basic and extended
  7572.         05h basic and high-performance
  7573.         06h basic, high-performance, and extended
  7574.         FFh not installed
  7575. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  7576.       the packet driver specification
  7577.  
  7578. (Table 1771)
  7579. Values for Packet Driver error code:
  7580.  01h "BAD_HANDLE"    invalid handle number
  7581.  02h "NO_CLASS"        no interfaces of the specified class found
  7582.  03h "NO_TYPE"        no interfaces of the specified type found
  7583.  04h "NO_NUMBER"    no interfaces of the specified number found
  7584.  05h "BAD_TYPE"        bad packet type
  7585.  06h "NO_MULTICAST"    interface does not support multicast messages
  7586.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  7587.  08h "BAD_MODE"        invalid receiver mode
  7588.  09h "NO_SPACE"        insufficient space
  7589.  0Ah "TYPE_INUSE"    type accessed but never released
  7590.  0Bh "BAD_COMMAND"    bad command
  7591.  0Ch "CANT_SEND"    packet could not be sent
  7592.  0Dh "CANT_SET"        hardware address could not be changed
  7593.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  7594.  0Fh "CANT_RESET"    could not reset interface
  7595.  
  7596. (Table 1772)
  7597. Values for Packet Driver network interface classes/types:
  7598.     Class 01h  Ethernet/IEEE 802.3
  7599.     01h 3COM 3C500/3C501
  7600.     02h 3COM 3C505
  7601.     03h MICOM-Interlan NI5010
  7602.     04h BICC Data Networks 4110
  7603.     05h BICC Data Networks 4117
  7604.     06h MICOM-Interlan NP600
  7605.     08h Ungermann-Bass PC-NIC
  7606.     09h Univation NC-516
  7607.     0Ah TRW PC-2000
  7608.     0Bh MICOM-Interlan NI5210
  7609.     0Ch 3COM 3C503
  7610.     0Dh 3COM 3C523
  7611.     0Eh Western Digital WD8003
  7612.     0Fh Spider Systems S4
  7613.     10h Torus Frame Level
  7614.     11h 10Net Communications
  7615.     12h Gateway PC-bus
  7616.     13h Gateway AT-bus
  7617.     14h Gateway MCA-bus
  7618.     15h IMC PCnic
  7619.     16h IMC PCnic II
  7620.     17h IMC PCnic 8-bit
  7621.     18h Tigan Communications
  7622.     19h Micromatic Research
  7623.     1Ah Clarkson "Multiplexor"
  7624.     1Bh D-Link 8-bit
  7625.     1Ch D-Link 16-bit
  7626.     1Dh D-Link PS/2
  7627.     1Eh Research Machines 8
  7628.     1Fh Research Machines 16
  7629.     20h Research Machines MCA
  7630.     21h Radix Microsystems EXM1 16-bit
  7631.     22h Interlan Ni9210
  7632.     23h Interlan Ni6510
  7633.     24h Vestra LANMASTER 16-bit
  7634.     25h Vestra LANMASTER 8-bit
  7635.     26h Allied Telesis PC/XT/AT
  7636.     27h Allied Telesis NEC PC-98
  7637.     28h Allied Telesis Fujitsu FMR
  7638.     29h Ungermann-Bass NIC/PS2
  7639.     2Ah Tiara LANCard/E AT
  7640.     2Bh Tiara LANCard/E MC
  7641.     2Ch Tiara LANCard/E TP
  7642.     2Dh Spider Communications SpiderComm 8
  7643.     2Eh Spider Communications SpiderComm 16
  7644.     2Fh AT&T Starlan NAU
  7645.     30h AT&T Starlan-10 NAU
  7646.     31h AT&T Ethernet NAU
  7647.     32h Intel smart card
  7648.     33h Xircom Packet Adapter
  7649.     34h Aquila Ethernet
  7650.     35h Novell NE1000
  7651.     36h Novell NE2000
  7652.     37h SMC PC-510
  7653.     38h AT&T Fiber NAU
  7654.     39h NDIS to Packet Driver adapter
  7655.     3Ah Racal-InterLan ES3210
  7656.     3Bh General Systems ISDN simulated Ethernet
  7657.     3Ch Hewlett-Packard
  7658.     3Dh IMC EtherNic-8
  7659.     3Eh IMC EtherNic-16
  7660.     3Fh IMC EtherNic-MCA
  7661.     40h NetWorth EtherNext
  7662.     41h Dataco Scanet
  7663.     42h DEC DEPCA
  7664.     43h C-Net
  7665.     44h Gandalf LANLine
  7666.     45h Apricot built-in
  7667.     46h David Systems Ether-T
  7668.     47h ODI to Packet Driver adapter (see also AX=5100h)
  7669.     48h AMD Am21110-16
  7670.     49h Intel ICD Network controller family
  7671.     4Ah Intel ICD PCL2
  7672.     4Bh Intel ICD PCL2A
  7673.     4Ch AT&T LANPacer
  7674.     4Dh AT&T LANPacer+
  7675.     4Eh AT&T EVB
  7676.     4Fh AT&T StarStation
  7677.     50h SLIP simulated ethernet
  7678.     51h Racal-Interlan NIA310
  7679.     52h Racal-Interlan NISE
  7680.     53h Racal-Interlan NISE30
  7681.     54h Racal-Interlan NI6610
  7682.     55h Ethernet over IP/UDP
  7683.     56h ICL EtherTeam 16
  7684.     57h David Systems
  7685.     58h NCR WaveLAN
  7686.     59h Thomas Contrad TC5045
  7687.     5Ah Russ Nelson's Parallel Port driver
  7688.     5Bh Intell EtherExpress 16
  7689.     5Ch IBMTOKEN
  7690.     5Dh Zenith Z-Note
  7691.     5Eh 3Com 3C509
  7692.     5Fh Mylex LNE390
  7693.     60h Madge Smart Ringnode
  7694.     61h Novell NE2100
  7695.     62h Allied Telesis 1500
  7696.     63h Allied Telesis 1700
  7697.     64h Fujitsu EtherCoupler
  7698.     Class 02h  ProNET-10
  7699.     01h Proteon p1300
  7700.     02h Proteon p1800
  7701.     Class 03h  IEEE 802.5/ProNet-4 (without expanded RIFs)
  7702.     01h IBM Token-Ring Adapter
  7703.     02h Proteon p1340
  7704.     03h Proteon p1344
  7705.     04h Gateway PC-bus
  7706.     05h Gateway AT-bus
  7707.     06h Gateway MCA-bus
  7708.     07h Madge board
  7709.     39h NDIS to Packet Driver adapter
  7710.     47h ODI to Packet Driver adapter
  7711.     Class 04h  Omninet
  7712.     Class 05h  Appletalk
  7713.     01h ATALK.SYS adapter
  7714.     Class 06h  Serial Line
  7715.     01h Clarkson 8250-SLIP
  7716.     02h Clarkson "Multiplexor"
  7717.     03h Eicon Technologies
  7718.     Class 07h  StarLAN (subsumed by Ethernet class)
  7719.     Class 08h  ARCnet
  7720.     01h Datapoint RIM
  7721.     Class 09h  AX.25
  7722.     01h Ottawa PI card
  7723.     02h Eicon Technologies
  7724.     Class 0Ah  KISS
  7725.     Class 0Bh  IEEE 802.3 with 802.2 headers
  7726.     types same as for class 01h
  7727.     Class 0Ch  FDDI with 802.2 headers
  7728.     01h Western Digital
  7729.     02h Frontier Technology
  7730.     Class 0Dh  Internet X.25
  7731.     01h Western Digital
  7732.     02h Frontier Technology
  7733.     03h Emerging Technologies
  7734.     04h The Software Forge
  7735.     05h Link Data Intelligent X.25
  7736.     06h Eicon Technologies
  7737.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  7738.     01h NT LANSTAR/8
  7739.     02h NT LANSTAR/MC
  7740.     Class 0Fh  SLFP (MIT serial specification)
  7741.     01h MERIT
  7742.     Class 10h  PPP (Point-to-Point Protocol)
  7743.     01h 8250/16550 UART
  7744.     02h Niwot Networks synch
  7745.     03h Eicon Technologies
  7746.     Class 11h  802.5 with expanded RIFs
  7747.     types same as for class 3
  7748.     Class 12h  reserved for LCP/NCPs
  7749. Note: class and type numbers are cleared through FTP Software
  7750. --------G-6002-------------------------------
  7751. INT 60 - MDEBUG - SET STATUS
  7752.     AH = 02h
  7753.     DS:SI -> password or a null byte
  7754.     ES = new value for the register SE
  7755.     DI = new value for the register OF
  7756.     CH = new monitor color if nonzero
  7757.     CL = new interpreter color if nonzero
  7758.     BH = new monitor start line if nonzero
  7759.     BL = new interpreter start line if nonzero
  7760.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  7761.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  7762.           if nonzero
  7763.     DH = if nonzero, new basic process number for communication with the
  7764.           drivers (DH = multiplex number for the display driver,
  7765.           DH+1 = multiplex number for the command driver or drivers)
  7766. Return: AX = return code
  7767.         FFFFh call not allowed
  7768.         FFFEh password is invalid
  7769.         FFFDh display mode is invalid
  7770.         0000h successful, status changed
  7771.         else AL = error reasons (see #1773)
  7772. Note:    the values of the registers SE and OF are always changed, the other
  7773.       values are only changed if they are valid
  7774. SeeAlso: AH=00h"MDEBUG"
  7775. Index:    hotkeys;MDEBUG
  7776.  
  7777. Bitfields for MDEBUG error reasons:
  7778. Bit(s)    Description    (Table 1773)
  7779.  0    invalid monitor start line
  7780.  1    invalid interpreter start line
  7781.  2    invalid hotkey
  7782.  3    invalid process number
  7783.  4-7    reserved
  7784. --------N-6002-------------------------------
  7785. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  7786.     AH = 02h
  7787.     AL = interface class
  7788.     BX = interface type
  7789.     DL = interface number
  7790.     DS:SI -> type
  7791.     CX = length of type (0000h for all packets)
  7792.     ES:DI -> receiver
  7793. Return: CF set on error
  7794.         DH = error code (see #1771)
  7795.     CF clear if successful
  7796.         AX = handle
  7797. SeeAlso: AH=03h"FTP"
  7798.  
  7799. (Table 1774)
  7800. Values packet driver receiver is called with when a packet is received:
  7801.     AX = subfunction
  7802.         00h get packet buffer
  7803.         CX = buffer length
  7804.         DX = lookahead length (v1.10+)
  7805.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  7806.         DI = error flags (class dependent) (v1.10+)
  7807.         Return: ES:DI -> packet buffer
  7808.                 0000h:0000h means throw away packet
  7809.             CX = size of buffer (v1.10+), may be smaller than
  7810.                   incoming data
  7811.         01h copy completed
  7812.         DS:SI -> buffer
  7813.         CX = bytes actually copied (v1.10+)
  7814.     BX = handle
  7815. --------G-6002-------------------------------
  7816. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  7817.     AH = 02h
  7818. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7819.       Issue 47
  7820. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  7821. --------G-6003-------------------------------
  7822. INT 60 - MDEBUG - POP UP
  7823.     AH = 03h
  7824.     DS:SI -> password or a null byte
  7825.     ES -> new value for the register SE
  7826.     DI -> new value for the register OF
  7827. Return: AX = return code (see #1775)
  7828. SeeAlso: AH=04h"MDEBUG"
  7829.  
  7830. (Table 1775)
  7831. Values for MDEBUG return code:
  7832.  FFFFh    call not allowed
  7833.  FFFEh    password is invalid
  7834.  FFFDh    display mode is invalid
  7835.  else    successful
  7836. --------N-6003-------------------------------
  7837. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  7838.     AH = 03h
  7839.     BX = handle
  7840. Return: CF set on error
  7841.        DH = error code (see #1771)
  7842.     CF clear if successful
  7843. SeeAlso: AH=02h"FTP"
  7844. --------G-6003-------------------------------
  7845. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  7846.     AH = 03h
  7847. Return: ES:BX -> profiling table
  7848. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7849.       Issue 47
  7850. SeeAlso: AH=04h"SYS_PROF"
  7851. --------N-6004-------------------------------
  7852. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  7853.     AH = 04h
  7854.     DS:SI -> buffer
  7855.     CX = length
  7856. Return: CF set on error
  7857.         DH = error code (see #1771)
  7858.     CF clear if successful
  7859. Note:    the buffer may be modified immediately upon return from this call
  7860. SeeAlso: AH=0Bh
  7861. --------G-6004-------------------------------
  7862. INT 60 - MDEBUG - POP UP
  7863.     AH = 04h
  7864.     DS:SI -> password or a null byte
  7865. Return: AX = return code (see #1775)
  7866. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  7867. --------G-6004-------------------------------
  7868. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  7869.     AH = 04h
  7870. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7871.       Issue 47
  7872. SeeAlso: AH=03h"SYS_PROF"
  7873. --------N-6005-------------------------------
  7874. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  7875.     AH = 05h
  7876.     BX = handle (optional for v1.10+)
  7877. Return: CF set on error
  7878.        DH = error code (see #1771)
  7879.     CF clear if successful
  7880. --------G-6005-------------------------------
  7881. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  7882.     AH = 05h
  7883.     DS:SI -> password or a null byte
  7884.     BL = new value for the semaphor of MDEBUG
  7885.          00h  enable popup of MDEBUG
  7886.          else disable popup of MDEBUG
  7887. Return: AX = return code
  7888.         FFFEh password is invalid
  7889.         FFFDh display mode is invalid
  7890.         else successful
  7891.         BL = old value of the semaphor of MDEBUG
  7892.         BH = old value of the INT 08h semaphor
  7893.             (this semaphor is always reset after this function)
  7894. --------N-6006-------------------------------
  7895. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  7896.     AH = 06h
  7897.     BX = handle (optional for v1.10+)
  7898.     ES:DI -> buffer
  7899.     CX = length
  7900. Return: CF set on error
  7901.         DH = error code (see #1771)
  7902.     CF clear if successful
  7903.         CX = length
  7904. Note:    copies the local net address associated with the handle into the buffer
  7905. --------G-6006-------------------------------
  7906. INT 60 - MDEBUG - GET PASSWORD STATUS
  7907.     AH = 06h
  7908. Return: AL = status
  7909.         00h password inactive
  7910.         01h password active
  7911. --------N-6007-------------------------------
  7912. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  7913.     AH = 07h
  7914.     BX = handle (optional for v1.10+)
  7915. Return: CF set on error
  7916.         DH = error code (see #1771)
  7917.     CF clear if successful
  7918. --------G-6007-------------------------------
  7919. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  7920.     AH = 07h
  7921. Return: AL = active part for the next popup session of MDEBUG:
  7922.         bit 0: the next popup session will start in the interpreter rather
  7923.           than in the monitor
  7924.         bit 1: the next popup session will sart in the online-help
  7925. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  7926. --------G-6008-------------------------------
  7927. INT 60 - MDEBUG - UNUSED
  7928.     AH = 08h-FFh
  7929. Return: AX = FFFCh
  7930. --------N-600A-------------------------------
  7931. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  7932.     AH = 0Ah
  7933. Return: CF set on error
  7934.         DH = error code (0Bh) (see #1771)
  7935.     CF clear if successful
  7936.         ES:DI -> parameter table (see #1776)
  7937.  
  7938. Format of packet driver parameter table:
  7939. Offset    Size    Description    (Table 1776)
  7940.  00h    BYTE    major revision of packet driver spec driver conforms to
  7941.  01h    BYTE    minor revision of packet driver spec
  7942.  02h    BYTE    length of this structure in bytes
  7943.  03h    BYTE    length of a MAC-layer address
  7944.  04h    WORD    maximum transfer unit, including MAC headers
  7945.  06h    WORD    buffer size for multicast addr
  7946.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  7947.  0Ah    WORD    number of transmit buffers
  7948.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  7949. --------N-600B-------------------------------
  7950. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  7951.     AH = 0Bh
  7952.     DS:SI -> buffer
  7953.     CX = length of buffer
  7954.     ES:DI -> FAR function to call when buffer becomes available
  7955. Return: CF set on error
  7956.         DH = error code (0Bh,0Ch) (see #1771)
  7957.     CF clear if successful
  7958. Notes:    unlike function 04h, the buffer is not available for modification as
  7959.       soon as the call returns; the buffer may be queued by the driver and
  7960.       not processed until later
  7961.     this function has been dropped from v1.10+ of the specification and
  7962.       replaced by function 0Ch
  7963. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  7964.  
  7965. (Table 1777)
  7966. Values packet driver completion function is called with:
  7967.     AX = result
  7968.         00h copy OK
  7969.         nonzero error
  7970.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  7971. --------N-600C-------------------------------
  7972. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  7973.     AH = 0Ch
  7974.     ES:DI -> pointer to IOCB
  7975. Return: CF set on error
  7976.         DH = error code (see #1771)
  7977.     CF clear if successful
  7978. SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
  7979.  
  7980. Format of packet driver IOCB:
  7981. Offset    Size    Description    (Table 1778)
  7982.  00h    DWORD    pointer to buffer
  7983.  04h    WORD    length of buffer
  7984.  06h    BYTE    flags
  7985.         bit 0: packet driver is finished with IOCB
  7986.         bit 1: application requests upcall when driver completes
  7987.  07h    DWORD    function address for upcall
  7988.  0Bh  4 BYTEs    future gather write
  7989.  0Fh    BYTE    ???
  7990.  10h  8 BYTEs    private driver workspace
  7991.  
  7992. (Table 1779)
  7993. Values completion function is called with:
  7994.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  7995. --------N-600C-------------------------------
  7996. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  7997.     AH = 0Ch
  7998. Return: AL = status
  7999.         00h successful
  8000.         ES:SI -> 6-byte station address
  8001.         02h semaphore service is unavailable
  8002. --------N-600D-------------------------------
  8003. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  8004.     AH = 0Dh
  8005.     ES:DI -> IOCB
  8006. Return: CF set on error
  8007.         DH = error code (see #1771)
  8008.     CF clear if successful
  8009. SeeAlso: AH=0Ch"Packet Driver"
  8010. --------N-6011-------------------------------
  8011. INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
  8012.     AH = 11h
  8013.     AL = drive number or 0
  8014.     DX = number of seconds to wait
  8015.     ES:SI = Ethernet address or 0
  8016.     DS:BX -> 31-byte ASCIZ semaphore name
  8017. Return: AL = status (see #1780)
  8018. SeeAlso: AH=12h,AH=13h
  8019.  
  8020. (Table 1780)
  8021. Values for 3com semaphore status:
  8022.  00h    successful
  8023.  01h    timeout
  8024.  02h    server not responding
  8025.  03h    invalid semaphore name
  8026.  04h    semaphore list is full
  8027.  05h    invalid drive ID
  8028.  06h    invalid Ethernet address
  8029.  07h    not logged in
  8030.  08h    write to network failed
  8031.  09h    semaphore already logged for this CPU
  8032. --------N-6012-------------------------------
  8033. INT 60 - 3com, 10NET, Banyan VINES - LOCK
  8034.     AH = 12h
  8035.     AL = drive number or 00h
  8036.     ES:SI = Ethernet address or 0000h:0000h
  8037.     DS:BX -> 31-byte ASCIZ semaphore name
  8038. Return: AL = status (see also #1780)
  8039.         01h semaphore currently locked by another PC
  8040. Note:    unlike function 11h, this function returns immediately
  8041. SeeAlso: AH=11h,AH=13h
  8042. --------N-6013-------------------------------
  8043. INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
  8044.     AH = 13h
  8045.     AL = drive number or 00h
  8046.     ES:SI = Ethernet address or 0000h:0000h
  8047.     DS:BX -> 31-byte ASCIZ semaphore name
  8048. Return: AL = status (see also #1780)
  8049.         01h semaphore not locked
  8050. SeeAlso: AH=11h,AH=12h
  8051. --------N-6014-------------------------------
  8052. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  8053.     AH = 14h
  8054.     BX = handle (optional for v1.10+)
  8055.     CX = mode (see #1781)
  8056. Return: CF set on error
  8057.        DH = error code (01h,08h) (see #1771)
  8058.     CF clear if successful
  8059. SeeAlso: AH=15h
  8060.  
  8061. (Table 1781)
  8062. Values for packet driver receive mode:
  8063.  01h    turn off receiver
  8064.  02h    receive only packets sent to this interface
  8065.  03h    mode 2 plus broadcast packets
  8066.  04h    mode 3 plus limited multicast packets
  8067.  05h    mode 3 plus all multicast packets
  8068.  06h    all packets
  8069.  07h    raw mode for serial line only (v1.10+)
  8070. --------N-6015-------------------------------
  8071. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  8072.     AH = 15h
  8073.     BX = handle (optional for v1.10+)
  8074. Return: CF set on error
  8075.         DH = error code (01h) (see #1771)
  8076.     CF clear if successful
  8077.         AX = receive mode (see #1781)
  8078. SeeAlso: AH=14h
  8079. --------N-6016-------------------------------
  8080. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  8081.     AH = 16h
  8082.     ES:DI -> multicast list
  8083.     CX = length of list in bytes
  8084. Return: CF set on error
  8085.         DH = error code (06h,09h,0Eh) (see #1771)
  8086.     CF clear if successful
  8087. SeeAlso: AH=17h
  8088. --------N-6017-------------------------------
  8089. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  8090.     AH = 17h
  8091. Return: CF set on error
  8092.         DH = error code (06h,09h) (see #1771 at AX=01FFh)
  8093.     CF clear if successful
  8094.         ES:DI -> multicast addresses (do not modify)
  8095.         CX = bytes of multicast addresses currently in use
  8096. SeeAlso: AH=16h
  8097. --------N-6018-------------------------------
  8098. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  8099.     AH = 18h
  8100.     BX = handle (optional for v1.10+)
  8101. Return: CF set on error
  8102.         DH = error code (01h) (see #1771)
  8103.     CF clear if successful
  8104.         DS:SI -> statistics (see #1782)
  8105.  
  8106. Format of packet driver statistics:
  8107. Offset    Size    Description    (Table 1782)
  8108.  00h    DWORD    packets in
  8109.  04h    DWORD    packets out
  8110.  08h    DWORD    bytes in
  8111.  0Ch    DWORD    bytes out
  8112.  10h    DWORD    errors in
  8113.  14h    DWORD    errors out
  8114.  18h    DWORD    packets dropped
  8115. --------N-6019-------------------------------
  8116. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  8117.     AH = 19h
  8118.     ES:DI -> address
  8119.     CX = length of address
  8120. Return: CF set on error
  8121.         DH = error code (0Dh,0Eh) (see #1771)
  8122.     CF clear if successful
  8123.         CX = length
  8124. --------N-601A-------------------------------
  8125. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  8126.     AH = 1Ah
  8127.     DS:SI -> buffer
  8128.     CX = length of buffer
  8129. Return: CF set on error
  8130.         DH = error code (see #1771 at AX=01FFh)
  8131.     CF clear if successful
  8132. SeeAlso: AH=1Ch
  8133. --------N-601B-------------------------------
  8134. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  8135.     AH = 1Bh
  8136. Return: CF set on error
  8137.         DH = error code (see #1771)
  8138.     CF clear if successful
  8139. SeeAlso: AH=1Ch
  8140. --------N-601C-------------------------------
  8141. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  8142.     AH = 1Ch
  8143.     DS:SI -> buffer
  8144.     CX = length of buffer
  8145.     DX = timeout in clock ticks
  8146. Return: CF set on error
  8147.         DH = error code (see #1771 at AX=01FFh)
  8148.     CF clear if successful
  8149.         CX = number of bytes transferred to buffer
  8150. SeeAlso: AH=1Ah,AH=1Bh
  8151. --------a-60AD-------------------------------
  8152. INT 60 - AccessDOS - API
  8153.     AH = ADh
  8154.     AL = function
  8155.         E1h ???
  8156.         Return: AX = ???
  8157.         E2h get configuration
  8158.         Return: BX:AX -> configuration data
  8159. Program: AccessDOS is a public domain TSR developed at The Trace Research and
  8160.       Development Center which provides extensions for keyboard, mouse,
  8161.       and sound access by the visually, hearing, or motor-control
  8162.       impaired.
  8163. Range:    INT 60 to INT 66, selected by scanning for 0000h:0000h vector
  8164. --------N-60E9-------------------------------
  8165. INT 60 - FTP Packet Driver - Crynwr Software - AUTOSELECT TRANSCEIVER
  8166.     AH = E9h
  8167.     ???
  8168. Return: ???
  8169. --------!---Section--------------------------
  8170.