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