home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / maj / 4266 / interrup.i < prev    next >
Text File  |  1994-06-05  |  297KB  |  8,150 lines

  1. Interrupt List, part 9 of 11
  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 #1596)
  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 1596)
  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 #1596)
  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 #1596)
  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 #1596)
  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 #1596)
  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 #1596)
  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 #1596)
  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 #1596)
  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 #1596)
  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 #1596)
  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 #1596)
  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 #1597)
  224. Return: CF clear if successful
  225.         descriptors copied
  226.     CF set on error
  227.         AX = error code (8022h) (see #1596)
  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 1597)
  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 #1598)
  243. Return: CF clear if successful
  244.         descriptors copied
  245.     CF set on error
  246.         AX = error code (8021h,8022h,8025h) (see #1596)
  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 1598)
  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 #0770 at INT 21/AH=59h)
  268.         (DPMI 1.0+) DPMI error code (8011h) (see #1596)
  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 #0770 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 #0770 at INT 21/AH=59h)
  295.         (DPMI 1.0+) DPMI error code (8011h,8022h) (see #1596)
  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 #1596)
  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 #1596)
  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 #1599,#1600)
  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 1599)
  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 1600)
  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 #1596)
  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 #1596)
  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 #1596)
  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 #1596)
  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 #1596)
  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 #1601)
  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 #1596)
  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 1601)
  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 #1596)
  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 #1596)
  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 #1601)
  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 #1596)
  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 1602)
  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 #1596)
  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 1603)
  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 1604)
  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 #1605)
  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)
  635. SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 67/AX=DE0Ah
  636.  
  637. Bitfields for DPMI host flags:
  638. Bit(s)    Description    (Table 1605)
  639.  0    running under an 80386 (32-bit) implementation
  640.  1    processor returns to real mode for reflected interrupts instead of V86
  641.       mode
  642.  2    virtual memory supported
  643.  3    reserved (undefined)
  644.  4-15    reserved (zero)
  645. --------E-310401-----------------------------
  646. INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
  647.     AX = 0401h
  648.     ES:(E)DI -> 128-byte buffer for host description (see #1606)
  649. Return: CF clear if successful
  650.         AX = capabilities (see #1607)
  651.         CX = reserved (00h)
  652.         DX = reserved (00h)
  653.         buffer filled
  654.     CF set on error (DPMI 0.9 only)
  655. SeeAlso: AX=0400h
  656.  
  657. Format of DPMI host description:
  658. Offset    Size    Description    (Table 1606)
  659.  00h    BYTE    host major version number
  660.  01h    BYTE    host minor version number
  661.  02h 126 BYTEs    ASCIZ host vendor name
  662.  
  663. Bitfields for DPMI capabilities:
  664. Bit(s)    Description    (Table 1607)
  665.  0    paged accessed/dirty supported (see AX=0506h,AX=0507h)
  666.  1    exceptions restartability supported
  667.  2    device mapping supported (see AX=0508h)
  668.  3    conventional memory mapping supported (see AX=0509h)
  669.  4    demand zero-fill supported
  670.  5    write-protect client capability supported
  671.  6    write-protect host capability supported
  672.  7-15    reserved
  673. --------E-310500-----------------------------
  674. INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
  675.     AX = 0500h
  676.     ES:(E)DI -> buffer for memory information (see #1608)
  677. Return: CF clear
  678. Notes:    16-bit programs use ES:DI, 32-bit programs use ES:EDI
  679.     this function must be considered advisory because other applications
  680.       may affect the results at any time after the call
  681.     fields not supported by the DPMI implementation are filled with
  682.       FFFFFFFFh
  683.     DPMI 1.0+ supports this function solely for backward compatibility; use
  684.       AX=050Bh instead
  685.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 only
  686.       returns the first field in the memory information record
  687. SeeAlso: AX=0501h,AX=050Bh,AX=0604h
  688.  
  689. Format of DPMI memory information:
  690. Offset    Size    Description    (Table 1608)
  691.  00h    DWORD    largest available block in bytes
  692.  04h    DWORD    maximum unlocked page allocation
  693.  08h    DWORD    maximum locked page allocation
  694.  0Ch    DWORD    total linear address space in pages
  695.  10h    DWORD    total unlocked pages
  696.  14h    DWORD    free pages
  697.  18h    DWORD    total physical pages
  698.  1Ch    DWORD    free linear address space in pages
  699.  20h    DWORD    size of paging file/partition in pages
  700.  24h 12 BYTEs    reserved
  701. --------E-310501-----------------------------
  702. INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
  703.     AX = 0501h
  704.     BX:CX = size in bytes
  705. Return: CF clear if successful
  706.         BX:CX = linear address of block
  707.         SI:DI = memory block handle for resizing and freeing block
  708.     CF set on error
  709.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see #1596)
  710. Notes:    no selectors are allocated
  711.     the memory block is allocated unlocked (can be locked with AX=0600h)
  712.     allocations are often page granular (see AX=0604h)
  713.     under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
  714.       for this function to fail even if AX=0500h indicates that enough
  715.       memory is available
  716. SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
  717. SeeAlso: INT 2F/AX=FB42h/BX=0002h
  718. --------E-310502-----------------------------
  719. INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
  720.     AX = 0502h
  721.     SI:DI = handle of memory block
  722. Return: CF clear if successful
  723.     CF set on error
  724.         AX = error code (DPMI 1.0+) (8023h) (see #1596)
  725. Note:    any selectors allocated for the memory block must also be freed,
  726.       preferably before freeing the memory block
  727. SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
  728. --------E-310503-----------------------------
  729. INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
  730.     AX = 0503h
  731.     BX:CX = new size in bytes (nonzero)
  732.     SI:DI = handle of memory block
  733. Return: CF clear if successful
  734.         BX:CX = new linear address
  735.         SI:DI = new handle of memory block
  736.     CF set on error
  737.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
  738.         (see #1596)
  739. Notes:    any selectors pointing at the block must be updated
  740.     the previous memory block handle becomes invalid
  741.     an error is returned if the new size is 0
  742. SeeAlso: AX=0102h,AX=0501h,AX=0505h
  743. --------E-310504-----------------------------
  744. INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
  745.     AX = 0504h
  746.     EBX = page-aligned linear address of memory block (00000000h if any
  747.           address is acceptable)
  748.     ECX = size in bytes (nonzero)
  749.     EDX = flags
  750.         bit 0: set to create committed pages instead of uncommitted pages
  751.         bits 1-31 reserved (0)
  752. Return: CF clear if successful
  753.         EBX = linear address of memory block
  754.         ESI = memory block handle
  755.     CF set on error
  756.         AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see #1596)
  757. Note:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  758. SeeAlso: AX=0501h,AX=0505h
  759. --------E-310505-----------------------------
  760. INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
  761.     AX = 0505h
  762.     ESI = memory block handle
  763.     ECX = new size in bytes (nonzero)
  764.     EDX = flags
  765.         bit 0: create committed pages rather than uncommitted pages
  766.         bit 1: segment descriptor update required
  767.         ES:EBX -> buffer containing array of WORDs with selectors
  768.         EDI = number of selectors in array
  769.         bits 2-31 reserved (0)
  770. Return: CF clear if successful
  771.         EBX = new linear base address
  772.         ESI = new memory block handle
  773.     CF set on error
  774.         AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see #1596)
  775. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  776.     the old memory block handle becomes invalid
  777.     if EDX bit 1 set and the block's base address is changed, DPMI updates
  778.       all descriptors for selectors in the update buffer which fall within
  779.       the memory block
  780. SeeAlso: AX=0503h,AX=0504h
  781. --------E-310506-----------------------------
  782. INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
  783.     AX = 0506h
  784.     ESI = memory block handle
  785.     EBX = offset in memory block of first page
  786.     ECX = number of pages
  787.     ES:EDX -> array of WORDs to hold page attributes (see #1609)
  788. Return: CF clear if successful
  789.         buffer filled
  790.     CF set on error
  791.         AX = error code (8001h,8023h,8025h) (see #1596)
  792. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  793.     if EBX is not page-aligned, it will be rounded down
  794. SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
  795.  
  796. Bitfields for DPMI page attribute word:
  797. Bit(s)    Description    (Table 1609)
  798.  0-2    page type
  799.     000 uncommitted
  800.     001 committed
  801.     010 mapped (see AX=0508h,AX=0509h)
  802.     other currently unused
  803.  3    page is read/write rather than read-only
  804.  4    accessed/dirty bits supplied in bits 5 and 6
  805.  5    page has been accessed (only valid if bit 4 set)
  806.  6    page has been written (only valid if bit 4 set)
  807.  7-15    reserved (0)
  808. --------E-310507-----------------------------
  809. INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
  810.     AX = 0507h
  811.     ESI = memory block handle
  812.     EBX = offset in memory block of first page
  813.     ECX = number of pages
  814.     ES:EDX -> array of WORDs with new page attributes (see #1609)
  815. Return: CF clear if successful
  816.     CF set on error
  817.         AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
  818.         (see #1596)
  819.         ECX = number of pages which have been set
  820. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  821.     if EBX is not page-aligned, it will be rounded down
  822. SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
  823. --------E-310508-----------------------------
  824. INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
  825.     AX = 0508h
  826.     ESI = memory block handle
  827.     EBX = page-aligned offset within memory block of page(s) to be mapped
  828.     ECX = number of pages to map
  829.     EDX = page-aligned physical address of device
  830. Return: CF clear if successful
  831.     CF set on error
  832.         AX = error code (8001h,8003h,8023h,8025h) (see #1596)
  833. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  834.     support of this function is optional; hosts are also allowed to support
  835.       the function for some devices but not others
  836. SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
  837. --------E-310509-----------------------------
  838. INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
  839.     AX = 0509h
  840.     ESI = memory block handle
  841.     EBX = page-aligned offset within memory block of page(s) to map
  842.     ECX = number of pages to map
  843.     EDX = page-aligned linear address of conventional (below 1M) memory
  844. Return: CF clear if successful
  845.     CF set on error
  846.         AX = error code (8001h,8003h,8023h,8025h) (see #1596)
  847. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  848.     support of this function is optional
  849. SeeAlso: AX=0504h,AX=0508h,AX=0801h
  850. --------E-31050A-----------------------------
  851. INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
  852.     AX = 050Ah
  853.     SI:DI = memory block handle
  854. Return: CF clear if successful
  855.         SI:DI = size in bytes
  856.         BX:CX = base address
  857.     CF set on error
  858.         AX = error code (8023h) (see #1596)
  859. SeeAlso: AX=0501h,AX=0504h
  860. --------E-31050B-----------------------------
  861. INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
  862.     AX = 050Bh
  863.     ES:(E)DI -> 128-byte buffer for memory information (see #1610)
  864. Return: CF clear if successful
  865.     CF set on error (DPMI 0.9 only)
  866. Note:    16-bit programs use ES:DI, 32-bit programs must use ES:EDI
  867. SeeAlso: AX=0500h
  868.  
  869. Format of DPMI memory information:
  870. Offset    Size    Description    (Table 1610)
  871.  00h    DWORD    total allocated bytes of physical memory controlled by host
  872.  04h    DWORD    total allocated bytes of virtual memory controlled by host
  873.  08h    DWORD    total available bytes of virtual memory controlled by host
  874.  0Ch    DWORD    total allocated bytes of virtual memory for curr virtual mach
  875.  10h    DWORD    total available bytes of virtual memory for curr virtual mach
  876.  14h    DWORD    total allocated bytes of virtual memory for current client
  877.  18h    DWORD    total available bytes of virtual memory for current client
  878.  1Ch    DWORD    total locked bytes for current client
  879.  20h    DWORD    maximum locked bytes for current client
  880.  24h    DWORD    highest linear address available to current client
  881.  28h    DWORD    largest available memory block in bytes
  882.  2Ch    DWORD    minimum allocation unit in bytes
  883.  30h    DWORD    allocation alignment unit size in bytes
  884.  34h 76 BYTEs    reserved (00h)
  885. --------E-310600-----------------------------
  886. INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
  887.     AX = 0600h
  888.     BX:CX = starting linear address
  889.     SI:DI = size of region in bytes
  890. Return: CF clear if successful
  891.     CF set on error
  892.         none of the memory is locked
  893.         AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see #1596)
  894. Notes:    pages at beginning and end will be locked if the region overlaps them
  895.     may be called multiple times for a given page; the DPMI host keeps a
  896.       lock count for each page
  897. SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
  898. --------E-310601-----------------------------
  899. INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
  900.     AX = 0601h
  901.     BX:CX = starting linear address
  902.     SI:DI = size of region in bytes
  903. Return: CF clear if successful
  904.     CF set on error
  905.         none of the memory is unlocked
  906.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #1596)
  907. Notes:    pages at beginning and end will be unlocked if the region overlaps them
  908.     memory whose lock count has not reached zero remains locked
  909. SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
  910. --------E-310602-----------------------------
  911. INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
  912.     AX = 0602h
  913.     BX:CX = starting linear address
  914.     SI:DI = size of region in bytes
  915. Return: CF clear if successful
  916.     CF set on error
  917.         none of the memory is made pageable
  918.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #1596)
  919. Notes:    must relock all unlocked real mode memory before terminating process
  920.       for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
  921.     pages at beginning and end will be unlocked if the region overlaps them
  922.     pageability of real mode pages is binary, not a count
  923. SeeAlso: AX=0600h,AX=0603h
  924. --------E-310603-----------------------------
  925. INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
  926.     AX = 0603h
  927.     BX:CX = starting linear address
  928.     SI:DI = size of region in bytes
  929. Return: CF clear if successful
  930.     CF set on error
  931.         none of the memory is relocked
  932.         AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see #1596)
  933. Notes:    pages at beginning and end will be relocked if the region overlaps them
  934.     pageability of real mode pages is binary, not a count
  935. SeeAlso: AX=0602h
  936. --------E-310604-----------------------------
  937. INT 31 P - DPMI 0.9+ - GET PAGE SIZE
  938.     AX = 0604h
  939. Return: CF clear if successful
  940.         BX:CX = page size in bytes
  941.     CF set on error
  942.         AX = error code (DPMI 1.0+) (see also #1596)
  943.         8001h unsupported, 16-bit host
  944. BUG:    the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
  945.       unchanged
  946. --------E-310700-----------------------------
  947. INT 31 Pu - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
  948.     AX = 0700h
  949.     BX:CX = starting linear page number
  950.     SI:DI = number of pages to mark as paging candidates
  951. Return: ???
  952. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  953.       specification, this function is called by MS Windows TASKMAN,
  954.       PROGMAN, and KERNEL
  955. SeeAlso: AX=0701h,AX=0702h
  956. --------E-310701-----------------------------
  957. INT 31 Pu - DPMI 0.9+ - DISCARD PAGES
  958.     AX = 0701h
  959.     BX:CX = starting linear page number
  960.     SI:DI = number of pages to discard
  961. Return: ???
  962. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  963.       specification, this function is called by MS Windows TASKMAN,
  964.       PROGMAN, and KERNEL
  965. SeeAlso: AX=0700h,AX=0703h
  966. --------E-310702-----------------------------
  967. INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
  968.     AX = 0702h
  969.     BX:CX = starting linear address
  970.     SI:DI = number of bytes to mark as paging candidates
  971. Return: CF clear if successful
  972.     CF set on error
  973.         AX = error code (DPMI 1.0+) (8025h) (see #1596)
  974. Notes:    this function is advisory, and does not force immediate paging
  975.     partial pages will not be discarded
  976. SeeAlso: AX=0700h,AX=0703h
  977. --------E-310703-----------------------------
  978. INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
  979.     AX = 0703h
  980.     BX:CX = starting linear address
  981.     SI:DI = number of bytes to mark as discarded
  982. Return: CF clear if successful
  983.     CF set on error
  984.         AX = error code (DPMI 1.0+) (8025h) (see #1596)
  985. Notes:    this function is advisory, and may be ignored by DPMI implementations
  986.     partial pages will not be discarded
  987. SeeAlso: AX=0701h,AX=0702h
  988. --------E-310800-----------------------------
  989. INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
  990.     AX = 0800h
  991.     BX:CX = physical address (should be above 1 MB)
  992.     SI:DI = size in bytes
  993. Return: CF clear if successful
  994.         BX:CX = linear address which maps the requested physical memory
  995.     CF set on error
  996.         AX = error code (DPMI 1.0+) (8003h,8021h) (see #1596)
  997. Notes:    implementations may refuse this call because it can circumvent protects
  998.     the caller must build an appropriate selector for the memory
  999.     do not use for memory mapped in the first megabyte
  1000. SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
  1001. --------E-310801-----------------------------
  1002. INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
  1003.     AX = 0801h
  1004.     BX:CX = linear address returned by AX=0800h
  1005. Return: CF clear if successful
  1006.     CF set on error
  1007.         AX = error code (8025h) (see #1596)
  1008. Note:    should be called at end of access to device mapped with AX=0800h
  1009. SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
  1010. --------E-310900-----------------------------
  1011. INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
  1012.     AX = 0900h
  1013. Return: CF clear
  1014.     virtual interrupts disabled
  1015.     AL = previous interrupt state (00h disabled, 01h enabled)
  1016.     AH preserved
  1017. Notes:    the previous state may be restored simply by executing another INT 31
  1018.     a CLI instruction may be used if the previous state is unimportant,
  1019.       but should be assumed to be very slow due to trapping by the host
  1020. SeeAlso: AX=0901h,AX=0902h
  1021. --------E-310901-----------------------------
  1022. INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
  1023.     AX = 0901h
  1024. Return: CF clear
  1025.     virtual interrupts enabled
  1026.     AL = previous interrupt state (00h disabled, 01h enabled)
  1027.     AH preserved
  1028. Notes:    the previous state may be restored simply by executing another INT 31
  1029.     a STI instruction may be used if the previous state is unimportant,
  1030.       but should be assumed to be very slow due to trapping by the host
  1031. SeeAlso: AX=0900h,AX=0902h
  1032. --------E-310902-----------------------------
  1033. INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
  1034.     AX = 0902h
  1035. Return: CF clear
  1036.     AL = current interrupt state (00h disabled, 01h enabled)
  1037. Note:    should be used rather than PUSHF because that instruction yields the
  1038.       physical interrupt state rather than the per-client virtualized
  1039.       interrupt flag
  1040. SeeAlso: AX=0900h,AX=0901h
  1041. --------E-310A00-----------------------------
  1042. INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
  1043.     AX = 0A00h
  1044.     DS:(E)SI -> case-sensitive ASCIZ vendor name or identifier
  1045. Return: CF clear if successful
  1046.         ES:(E)DI -> FAR extended API entry point
  1047.         DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
  1048.     CF set on error
  1049.         AX = error code (DPMI 1.0+) (8001h) (see #1596)
  1050. Notes:    extended API parameters are vendor-specific
  1051.     DPMI 1.0+ supports this function solely for backward compatibility; use
  1052.       INT 2F/AX=168Ah instead
  1053.     this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
  1054.       or QDPMI v1.0x; use INT 2F/AX=168Ah instead.    It is supported by
  1055.       386MAX v7.01.
  1056. SeeAlso: INT 2F/AX=168Ah
  1057. --------E-310B00-----------------------------
  1058. INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
  1059.     AX = 0B00h
  1060.     BX:CX = linear address
  1061.     DL = size (1,2,4 bytes)
  1062.     DH = type (00h execute, 01h write, 02h read/write)
  1063. Return: CF clear if successful
  1064.         BX = watchpoint handle
  1065.     CF set on error
  1066.         AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see #1596)
  1067. SeeAlso: AX=0212h,AX=0601h
  1068. --------E-310B01-----------------------------
  1069. INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
  1070.     AX = 0B01h
  1071.     BX = watchpoint handle
  1072. Return: CF clear if successful
  1073.     CF set on error
  1074.         AX = error code (DPMI 1.0+) (8023h) (see #1596)
  1075. Note:    the watchpoint handle is freed
  1076. SeeAlso: AX=0B00h
  1077. --------E-310B02-----------------------------
  1078. INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
  1079.     AX = 0B02h
  1080.     BX = watchpoint handle
  1081. Return: CF clear if successful
  1082.         AX = status flags
  1083.         bit 0: watch point has been executed since AX=0B00h or AX=0B03h
  1084.     CF set on error
  1085.         AX = error code (DPMI 1.0+) (8023h) (see #1596)
  1086. SeeAlso: AX=0B00h,AX=0B03h
  1087. --------E-310B03-----------------------------
  1088. INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
  1089.     AX = 0B03h
  1090.     BX = watchpoint handle
  1091. Return: CF clear if successful
  1092.     CF set on error
  1093.         AX = error code (DPMI 1.0+) (8023h) (see #1596)
  1094. SeeAlso: AX=0B02h
  1095. --------E-310C00-----------------------------
  1096. INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
  1097.     AX = 0C00h
  1098.     ES:(E)DI -> resident service provider structure (see #1611)
  1099. Return: CF clear if successful
  1100.     CF set on error
  1101.         AX = error code (8015h,8021h,8025h) (see #1596 at AX=0000h)
  1102. Note:    calling this function declares an intent to provide resident
  1103.       protected mode services after terminating with AX=0C01h
  1104. SeeAlso: AX=0303h,AX=0C01h
  1105.  
  1106. Format of DPMI resident service provider structure:
  1107. Offset    Size    Description    (Table 1611)
  1108.  00h    QWORD    descriptor for 16-bit data segment
  1109.  08h    QWORD    descriptor for 16-bit code segment (zeros if not supported)
  1110.  10h    WORD    offset of 16-bit callback procedure
  1111.  12h  2 BYTEs    reserved
  1112.  14h    QWORD    descriptor for 32-bit data segment
  1113.  1Ch    QWORD    descriptor for 32-bit code segment (zeros if not supported)
  1114.  24h    DWORD    offset of 32-bit callback procedure
  1115. --------E-310C01-----------------------------
  1116. INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
  1117.     AX = 0C01h
  1118.     BL = return code
  1119.     DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
  1120. Return: never
  1121. Notes:    should only be used if the program will only provide services to
  1122.       other DPMI programs
  1123.     any protected mode memory remains allocated to the program unless
  1124.       explicitly freed before this call
  1125.     must first call AX=0C00h or program will simply be terminated
  1126. SeeAlso: AX=0C00h,INT 21/AH=31h
  1127. --------E-310D00-----------------------------
  1128. INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
  1129.     AX = 0D00h
  1130.     ES:(E)DI -> shared memory allocation request structure (see #1612)
  1131. Return: CF clear if successful
  1132.         request structure updated
  1133.     CF set on error
  1134.         AX = error code (8012h,8013h,8014h,8016h,8021h) (see #1596)
  1135. Note:    first 16 bytes of memory block will be initialized to zeros on the
  1136.       first allocation
  1137. SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
  1138.  
  1139. Format of DPMI shared memory allocation request structure:
  1140. Offset    Size    Description    (Table 1612)
  1141.  00h    DWORD    requested length of shared memory block in bytes
  1142.  04h    DWORD    (return) allocated length of block
  1143.  08h    DWORD    (return) shared memory handle
  1144.  0Ch    DWORD    (return) linear address of memory block
  1145.  10h    PWORD    selector:offset32 of ASCIZ name for memory block
  1146.         (name max 128 bytes)
  1147.  16h  2 BYTEs    reserved
  1148.  18h  4 BYTEs    reserved (00h)
  1149. --------E-310D01-----------------------------
  1150. INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
  1151.     AX = 0D01h
  1152.     SI:DI = shared memory block handle
  1153. Return: CF clear if successful
  1154.     CF set on error
  1155.         AX = error code (8023h) (see #1596)
  1156. Notes:    handle becomes invalid after this call
  1157.     DPMI maintains separate global and virtual machine use counts for each
  1158.       shared memory block; when the global use counts reaches zero, the
  1159.       block is finally destroyed
  1160. SeeAlso: AX=0502h,AX=0D00h
  1161. --------E-310D02-----------------------------
  1162. INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
  1163.     AX = 0D02h
  1164.     SI:DI = shared memory block handle
  1165.     DX = flags
  1166.         bit 0: return immediately rather than suspending if serialization
  1167.           unavailable
  1168.         bit 1: shared rather than exclusive serialization
  1169.         bits 2-15 reserved (0)
  1170. Return: CF clear if successful
  1171.     CF set on error
  1172.         AX = error code (8004h,8005h,8017h-8019h,8023h) (see #1596)
  1173. Notes:    an exclusive serialization blocks any other serialization attempts for
  1174.       the same block by another virtual machine; a shared serialization
  1175.       blocks attempts at exclusive serialization by another virtual machine
  1176.     hosts are not required to detect deadlock
  1177.     a client's interrupt handler can cancel a serialization call which
  1178.       caused it to block by calling AX=0D03h
  1179. SeeAlso: AX=0D00h,AX=0D03h
  1180. --------E-310D03-----------------------------
  1181. INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
  1182.     AX = 0D03h
  1183.     SI:DI = shared memory block handle
  1184.     DX = flags
  1185.         bit 0: release shared serialization rather than exclusive serialztn
  1186.         bit 1: free pending serialization
  1187.         bits 2-15 reserved (0)
  1188. Return: CF clear if successful
  1189.     CF set on error
  1190.         AX = error code (8002h,8023h) (see #1596 at AX=0000h)
  1191. SeeAlso: AX=0D00h,AX=0D02h
  1192. --------E-310E00-----------------------------
  1193. INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
  1194.     AX = 0E00h
  1195. Return: CF clear
  1196.     AX = coprocessor status (see #1613)
  1197. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1198. SeeAlso: AX=0E01h
  1199.  
  1200. Bitfields for DPMI coprocessor status:
  1201. Bit(s)    Description    (Table 1613)
  1202.  0    numeric coprocessor enabled for current client
  1203.  1    client is emulating coprocessor
  1204.  2    numeric coprocessor is present
  1205.  3    host is emulating coprocessor instructions
  1206.  4-7    coprocessor type
  1207.     0000 none
  1208.     0010 80287
  1209.     0011 80387
  1210.     0100 80486 with numeric coprocessor
  1211.     other reserved
  1212.  8-15    not used
  1213. --------E-310E01-----------------------------
  1214. INT 31 P - DPMI 1.0+ - SET EMULATION
  1215.     AX = 0E01h
  1216.     BX = coprocessor flag bits (see #1614)
  1217. Return: CF clear if successful
  1218.     CF set on error
  1219.         AX = error code (8026h) (see #1596 at AX=0000h)
  1220. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1221. SeeAlso: AX=0E00h
  1222.  
  1223. Bitfields for DPMI coprocessor flags:
  1224. Bit(s)    Description    (Table 1614)
  1225.  0    enable numeric coprocessor for current client
  1226.  1    client will emulate coprocessor
  1227.  2-15    not used
  1228. --------E-3157-------------------------------
  1229. INT 31 - Netroom3 DPMI.EXE v3.00 - ???
  1230.     AH = 57h
  1231.     AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
  1232.     ???
  1233. Return: ???
  1234. SeeAlso: INT 2C/AX=0000h"RM386"
  1235. --------E-315702-----------------------------
  1236. INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
  1237.     AX = 5702h
  1238.     DX = PSP segment of caller
  1239.     STACK: WORD    ???
  1240.            WORD    flags (bit 0 set if 32-bit program)
  1241. Return: as for DPMI mode-switch entry point (see INT 2F/AX=1687h)
  1242. Note:    this function is called by the real-mode DPMI mode-switch entry point
  1243. SeeAlso: INT 2F/AX=1687h
  1244. --------v-32---------------------------------
  1245. INT 32 - VIRUS - reportedly used by "Tiny" Viruses
  1246. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
  1247. --------v-32---------------------------------
  1248. INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
  1249. SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
  1250. --------M-330000-----------------------------
  1251. INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
  1252.     AX = 0000h
  1253. Return: AX = status
  1254.         0000h hardware/driver not installed
  1255.         FFFFh hardware/driver installed
  1256.     BX = number of buttons
  1257.         0000h other than two
  1258.         0002h two buttons (many drivers)
  1259.         0003h Mouse Systems/Logitech three-button mouse
  1260.         FFFFh two buttons
  1261. Notes:    to use mouse on a Hercules-compatible monographics card in graphics
  1262.       mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
  1263.       and then call this function.    Logitech drivers v5.01 and v6.00
  1264.       reportedly do not correctly use Hercules graphics in dual-monitor
  1265.       systems, while version 4.10 does.
  1266.     the Logitech mouse driver contains the signature string "LOGITECH"
  1267.       three bytes past the interrupt handler; many of the Logitech mouse
  1268.       utilities check for this signature.
  1269. SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
  1270. --------M-330001-----------------------------
  1271. INT 33 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
  1272.     AX = 0001h
  1273. SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh
  1274. --------M-330002-----------------------------
  1275. INT 33 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
  1276.     AX = 0002h
  1277. Note:    multiple calls to hide the cursor will require multiple calls to
  1278.       function 01h to unhide it.
  1279. SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
  1280. --------M-330003-----------------------------
  1281. INT 33 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
  1282.     AX = 0003h
  1283. Return: BX = button status (see #1615)
  1284.     CX = column
  1285.     DX = row
  1286. Note:    in text modes, all coordinates are specified as multiples of the cell
  1287.       size, typically 8x8 pixels
  1288. SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
  1289.  
  1290. Bitfields for mouse button status:
  1291. Bit(s)    Description    (Table 1615)
  1292.  0    left button pressed if 1
  1293.  1    right button pressed if 1
  1294.  2    middle button pressed if 1 (Mouse Systems/Logitech/Genius)
  1295. --------M-330004-----------------------------
  1296. INT 33 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
  1297.     AX = 0004h
  1298.     CX = column
  1299.     DX = row
  1300. Note:    the row and column are truncated to the next lower multiple of the cell
  1301.       size (typically 8x8 in text modes); however, some versions of the
  1302.       Microsoft documentation incorrectly state that the coordinates are
  1303.       rounded
  1304. SeeAlso: AX=0003h,INT 62/AX=0081h
  1305. --------M-330005-----------------------------
  1306. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
  1307.     AX = 0005h
  1308.     BX = button number (see #1616)
  1309. Return: AX = button states (see #1615)
  1310.     BX = number of times specified button has been pressed since last call
  1311.     CX = column at time specified button was last pressed
  1312.     DX = row at time specified button was last pressed
  1313. Note:    at least for the Genius mouse driver, the number of button presses
  1314.       returned is limited to 7FFFh
  1315. SeeAlso: AX=0006h,INT 62/AX=007Ch
  1316.  
  1317. (Table 1616)
  1318. Values for mouse button number:
  1319.  0000h    left
  1320.  0001h    right
  1321.  0002h    middle (Mouse Systems/Logitech/Genius mouse)
  1322. --------M-330006-----------------------------
  1323. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
  1324.     AX = 0006h
  1325.     BX = button number (see #1616)
  1326. Return: AX = button states (see #1615)
  1327.     BX = number of times specified button has been released since last call
  1328.     CX = column at time specified button was last released
  1329.     DX = row at time specified button was last released
  1330. Note:    at least for the Genius mouse driver, the number of button releases
  1331.       returned is limited to 7FFFh
  1332. SeeAlso: AX=0005h,INT 62/AX=007Ch
  1333. --------M-330007-----------------------------
  1334. INT 33 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
  1335.     AX = 0007h
  1336.     CX = minimum column
  1337.     DX = maximum column
  1338. Note:    in text modes, the minimum and maximum columns are truncated to the
  1339.       next lower multiple of the cell size, typically 8x8 pixels
  1340. SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1341. --------M-330008-----------------------------
  1342. INT 33 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
  1343.     AX = 0008h
  1344.     CX = minimum row
  1345.     DX = maximum row
  1346. Note:    in text modes, the minimum and maximum rows are truncated to the
  1347.       next lower multiple of the cell size, typically 8x8 pixels
  1348. SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1349. --------M-330009-----------------------------
  1350. INT 33 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
  1351.     AX = 0009h
  1352.     BX = column of cursor hot spot in bitmap (-16 to 16)
  1353.     CX = row of cursor hot spot (-16 to 16)
  1354.     ES:DX -> mask bitmap (see #1617)
  1355. Notes:    in graphics modes, the screen contents around the current mouse cursor
  1356.       position are ANDed with the screen mask and then XORed with the
  1357.       cursor mask
  1358.     the Microsoft mouse driver v7.04 and v8.20 uses only BL and CL, so the
  1359.       hot spot row/column should be limited to -128..127
  1360.     Microsoft KnowledgeBase article Q19850 states that the high bit is
  1361.       right-most, but that statement is contradicted by all other available
  1362.       documentation
  1363. SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh
  1364.  
  1365. Format of mouse mask bitmap:
  1366. Offset    Size    Description    (Table 1617)
  1367.  00h 16 WORDs    screen mask
  1368.  10h 16 WORDs    cursor mask
  1369. Note:    each word defines the sixteen pixels of a row, low bit rightmost
  1370. --------M-33000A-----------------------------
  1371. INT 33 - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
  1372.     AX = 000Ah
  1373.     BX = hardware/software text cursor
  1374.         0000h software
  1375.         CX = screen mask
  1376.         DX = cursor mask
  1377.         0001h hardware
  1378.         CX = start scan line
  1379.         DX = end scan line
  1380. Note:    when the software cursor is selected, the character/attribute data at
  1381.       the current screen position is ANDed with the screen mask and then
  1382.       XORed with the cursor mask
  1383. SeeAlso: AX=0009h,INT 62/AX=007Eh
  1384. --------M-33000B-----------------------------
  1385. INT 33 - MS MOUSE v1.0+ - READ MOTION COUNTERS
  1386.     AX = 000Bh
  1387. Return: CX = number of mickeys mouse moved horizontally since last call
  1388.     DX = number of mickeys mouse moved vertically
  1389. Notes:    a mickey is the smallest increment the mouse can sense
  1390.     positive values indicate down/right
  1391. SeeAlso: AX=0003h,AX=001Bh,AX=0027h
  1392. --------M-33000C-----------------------------
  1393. INT 33 - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
  1394.     AX = 000Ch
  1395.     CX = call mask (see #1618)
  1396.     ES:DX -> FAR routine (see #1619)
  1397. SeeAlso: AX=0018h
  1398.  
  1399. Bitfields for mouse call mask:
  1400. Bit(s)    Description    (Table 1618)
  1401.  0    call if mouse moves
  1402.  1    call if left button pressed
  1403.  2    call if left button released
  1404.  3    call if right button pressed
  1405.  4    call if right button released
  1406.  5    call if middle button pressed (Mouse Systems/Logitech/Genius mouse)
  1407.  6    call if middle button released (Mouse Systems/Logitech/Genius mouse)
  1408.  7-15    unused
  1409. Note:    some versions of the Microsoft documentation incorrectly state that CX
  1410.       bit 0 means call if mouse cursor moves
  1411.  
  1412. (Table 1619)
  1413. Values interrupt routine is called with:
  1414.     AX = condition mask (same bit assignments as call mask)
  1415.     BX = button state
  1416.     CX = cursor column
  1417.     DX = cursor row
  1418.     SI = horizontal mickey count
  1419.     DI = vertical mickey count
  1420. Notes:    some versions of the Microsoft documentation erroneously swap the
  1421.       meanings of SI and DI
  1422.     in text modes, the row and column will be reported as a multiple of
  1423.       the character cell size, typically 8x8 pixels
  1424. --------M-33000D-----------------------------
  1425. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
  1426.     AX = 000Dh
  1427. SeeAlso: AX=000Eh,INT 10/AH=04h
  1428. --------M-33000E-----------------------------
  1429. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
  1430.     AX = 000Eh
  1431. SeeAlso: AX=000Dh
  1432. --------M-33000F-----------------------------
  1433. INT 33 - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
  1434.     AX = 000Fh
  1435.     CX = number of mickeys per 8 pixels horizontally (default 8)
  1436.     DX = number of mickeys per 8 pixels vertically (default 16)
  1437. SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
  1438. --------M-330010-----------------------------
  1439. INT 33 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
  1440.     AX = 0010h
  1441.     CX,DX = X,Y coordinates of upper left corner
  1442.     SI,DI = X,Y coordinates of lower right corner
  1443. Note:    mouse cursor is hidden in the specified region, and needs to be
  1444.       explicitly turned on again
  1445. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
  1446. --------M-330010-----------------------------
  1447. INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
  1448.     AX = 0010h
  1449.     ES:DX -> update region list (see #1620)
  1450. Notes:    mouse cursor is hidden in the specified region, and needs to be
  1451.       explicitly turned on again
  1452.     this version of the call is described in an August 1988 version of the
  1453.       Genius Mouse programmer's reference; it has been changed to conform
  1454.       to the Microsoft version shown above by version 9.06 (and possibly
  1455.       earlier versions)
  1456. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
  1457.  
  1458. Format of Genius Mouse update region list:
  1459. Offset    Size    Description    (Table 1620)
  1460.  00h    WORD    left-most column
  1461.  02h    WORD    top-most row
  1462.  04h    WORD    right-most column
  1463.  06h    WORD    bottom-most row
  1464. --------M-330011-----------------------------
  1465. INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
  1466.     AX = 0011h
  1467. Return: AX = FFFFh
  1468.     BX = number of buttons
  1469. SeeAlso: AX=0000h
  1470. --------M-330012-----------------------------
  1471. INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
  1472.     AX = 0012h
  1473.     BH = cursor width in words
  1474.     CH = rows in cursor
  1475.     BL = horizontal hot spot (-16 to 16)
  1476.     CL = vertical hot spot (-16 to 16)
  1477.     ES:DX -> bit map of screen and cursor maps
  1478. Return: AX = FFFFh if successful
  1479. SeeAlso: AX=0009h,AX=002Ah,AX=0035h
  1480. --------M-330013-----------------------------
  1481. INT 33 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
  1482.     AX = 0013h
  1483.     DX = threshold speed in mickeys/second, 0000h = default of 64/second
  1484. Note:    if speed exceeds threshold, the cursor's on-screen motion is doubled
  1485. SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
  1486. --------M-330014-----------------------------
  1487. INT 33 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
  1488.     AX = 0014h
  1489.     CX = call mask (see #1618)
  1490.     ES:DX -> FAR routine
  1491. Return: CX = call mask of previous interrupt routine
  1492.     ES:DX = FAR address of previous interrupt routine
  1493. SeeAlso: AX=000Ch,AX=0018h
  1494. --------M-330015-----------------------------
  1495. INT 33 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
  1496.     AX = 0015h
  1497. Return: BX = size of buffer needed to store driver state
  1498. SeeAlso: AX=0016h,AX=0017h,AX=0042h
  1499. --------M-330016-----------------------------
  1500. INT 33 - MS MOUSE v6.0+ - SAVE DRIVER STATE
  1501.     AX = 0016h
  1502.     BX = size of buffer (see AX=0015h)
  1503.     ES:DX -> buffer for driver state
  1504. Note:    although not documented (since the Microsoft driver does not use it),
  1505.       many drivers appear to require BX on input
  1506. SeeAlso: AX=0015h,AX=0017h
  1507. --------M-330017-----------------------------
  1508. INT 33 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
  1509.     AX = 0017h
  1510.     BX = size of buffer (see AX=0015h)
  1511.     ES:DX -> buffer containing saved state
  1512. Notes:    although not documented (since the Microsoft driver does not use it),
  1513.       many drivers appear to require BX on input
  1514.     some mouse drivers range-check the values in the saved state based on
  1515.       the current video mode; thus, the video mode should be restored
  1516.       before the mouse driver's state is restored
  1517. SeeAlso: AX=0015h,AX=0016h
  1518. --------M-330018-----------------------------
  1519. INT 33 - MS MOUSE v6.0+ - SET ALTERNATE MOUSE USER HANDLER
  1520.     AX = 0018h
  1521.     CX = call mask (see #1621)
  1522.     ES:DX -> FAR routine to be invoked on mouse events (see #1622)
  1523. Return: AX = status
  1524.         0018h if successful
  1525.         FFFFh on error
  1526. Notes:    up to three handlers can be defined by separate calls to this function,
  1527.       each with a different combination of shift states in the call mask;
  1528.       calling this function again with a call mask of 0000h undefines the
  1529.       specified handler (official documentation); specifying the same
  1530.       call mask and an address of 0000h:0000h undefines the handler (real
  1531.       life)
  1532.     some versions of the documentation erroneously reverse the order of
  1533.       the bits in the call mask
  1534. SeeAlso: AX=000Ch,AX=0014h,AX=0019h
  1535.  
  1536. Bitfields for mouse call mask:
  1537. Bit(s)    Description    (Table 1621)
  1538.  0    call if mouse moves
  1539.  1    call if left button pressed
  1540.  2    call if left button released
  1541.  3    call if right button pressed
  1542.  4    call if right button released
  1543.  5    call if shift button pressed during event
  1544.  6    call if ctrl key pressed during event
  1545.  7    call if alt key pressed during event
  1546. Note:    at least one of 5-7 must be set
  1547.  
  1548. (Table 1622)
  1549. Values user handler is called with:
  1550.     AX = condition mask (same bit assignments as call mask)
  1551.     BX = button state
  1552.     CX = cursor column
  1553.     DX = cursor row
  1554.     SI = horizontal mickey count
  1555.     DI = vertical mickey count
  1556. Return: registers preserved
  1557. Note:    in text modes, the row and column will be reported as a multiple of
  1558.       the cell size, typically 8x8 pixels
  1559. --------M-330019-----------------------------
  1560. INT 33 - MS MOUSE v6.0+ - RETURN USER ALTERNATE INTERRUPT VECTOR
  1561.     AX = 0019h
  1562.     CX = call mask (see #1621)
  1563. Return: BX:DX = user interrupt vector
  1564.     CX = call mask (0000h if not found)
  1565. Note:    attempts to find a user event handler (defined by function 18h)
  1566.       whose call mask matches CX
  1567. SeeAlso: AX=0018h
  1568. --------M-33001A-----------------------------
  1569. INT 33 - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
  1570.     AX = 001Ah
  1571.     BX = horizontal speed \
  1572.     CX = vertical speed   / (see AX=000Fh)
  1573.     DX = double speed threshold (see AX=0013h)
  1574. SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
  1575. --------M-33001B-----------------------------
  1576. INT 33 - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
  1577.     AX = 001Bh
  1578. Return: BX = horizontal speed
  1579.     CX = vertical speed
  1580.     DX = double speed threshold
  1581. SeeAlso: AX=000Bh,AX=001Ah
  1582. --------M-33001C-----------------------------
  1583. INT 33 - MS MOUSE v6.0+ - SET INTERRUPT RATE
  1584.     AX = 001Ch
  1585.     BX = rate (see #1623)
  1586. Notes:    only available on InPort mouse
  1587.     values greater than 4 may cause unpredictable driver behavior
  1588.  
  1589. (Table 1623)
  1590. Values for mouse interrupt rate:
  1591.  00h    no interrupts allowed
  1592.  01h    30 per second
  1593.  02h    50 per second
  1594.  03h    100 per second
  1595.  04h    200 per second
  1596. --------M-33001D-----------------------------
  1597. INT 33 - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
  1598.     AX = 001Dh
  1599.     BX = display page number
  1600. Note:    the cursor will be displayed on the specified page
  1601. SeeAlso: AX=001Eh
  1602. --------M-33001E-----------------------------
  1603. INT 33 - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
  1604.     AX = 001Eh
  1605. Return: BX = display page number
  1606. SeeAlso: AX=001Dh
  1607. --------M-33001F-----------------------------
  1608. INT 33 - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
  1609.     AX = 001Fh
  1610. Return: AX = status
  1611.         001Fh successful
  1612.         ES:BX = INT 33 vector before mouse driver was first installed
  1613.         FFFFh unsuccessful
  1614. Notes:    restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
  1615.     if you restore INT 33 to ES:BX, driver will be completely disabled
  1616.     many drivers return AX=001Fh even though the driver has been disabled
  1617. SeeAlso: AX=0020h
  1618. --------M-330020-----------------------------
  1619. INT 33 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
  1620.     AX = 0020h
  1621. Return: AX = status
  1622.         0020h successful
  1623.         FFFFh unsuccessful
  1624. Notes:    restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
  1625.       which were removed by function 1Fh
  1626.     Microsoft's documentation states that no value is returned
  1627. SeeAlso: AX=001Fh
  1628. --------M-330021-----------------------------
  1629. INT 33 - MS MOUSE v6.0+ - SOFTWARE RESET
  1630.     AX = 0021h
  1631. Return: AX = status
  1632.         FFFFh if mouse driver installed
  1633.         BX = number of buttons (FFFFh = two buttons)
  1634.         0021h if mouse driver not installed
  1635. Note:    this call is identical to funtion 00h, but does not reset the mouse
  1636. SeeAlso: AX=0000h
  1637. --------M-330022-----------------------------
  1638. INT 33 - MS MOUSE v6.0+ - SET LANGUAGE FOR MESSAGES
  1639.     AX = 0022h
  1640.     BX = language (see #1624)
  1641. Note:    only available on international versions of the driver; US versions
  1642.       ignore this call
  1643. SeeAlso: AX=0023h
  1644.  
  1645. (Table 1624)
  1646. Values for mouse driver language:
  1647.  00h    English
  1648.  01h    French
  1649.  02h    Dutch
  1650.  03h    German
  1651.  04h    Swedish
  1652.  05h    Finnish
  1653.  06h    Spanish
  1654.  07h    Portugese
  1655.  08h    Italian
  1656. --------M-330023-----------------------------
  1657. INT 33 - MS MOUSE v6.0+ - GET LANGUAGE FOR MESSAGES
  1658.     AX = 0023h
  1659. Return: BX = language (see #1624)
  1660. Note:    the US version of the driver always returns zero
  1661. SeeAlso: AX=0022h
  1662. --------M-330024-----------------------------
  1663. INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
  1664.     AX = 0024h
  1665. Return: AX = FFFFh on error
  1666.     otherwise,
  1667.         BH = major version
  1668.         BL = minor version
  1669.         CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
  1670.         CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7)
  1671. SeeAlso: AX=004Dh,AX=006Dh
  1672. --------M-330025-----------------------------
  1673. INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
  1674.     AX = 0025h
  1675. Return: AX = general information (see #1625)
  1676.     BX = cursor lock flag for OS/2 to prevent reentrancy problems
  1677.     CX = mouse code active flag (for OS/2)
  1678.     DX = mouse driver busy flag (for OS/2)
  1679.  
  1680. Bitfields for general mouse driver information:
  1681. Bit(s)    Description    (Table 1625)
  1682.  15    driver loaded as device driver rather than TSR
  1683.  14    driver is newer integrated type
  1684.  13,12    current cursor type
  1685.     00 software text cursor
  1686.     01 hardware text cursor (CRT Controller's cursor)
  1687.     1X graphics cursor
  1688.  11-8    interrupt rate (see #1623)
  1689.  7-0    count of currently-active Mouse Display Drivers (MDD), the newer
  1690.       integrated driver type
  1691. --------M-330026-----------------------------
  1692. INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
  1693.     AX = 0026h
  1694. Return: BX = mouse-disabled flag (0000h mouse enabled, nonzero disabled)
  1695.     CX = maximum virtual X (for current video mode)
  1696.     DX = maximum virtual Y
  1697. Note:    for driver versions before 7.05, this call returns the currently-set
  1698.       maximum coordinates; v7.05+ returns the absolute maximum coordinates
  1699. SeeAlso: AX=0031h
  1700. --------M-330026-----------------------------
  1701. INT 33 - Genius Mouse 9.06 - ???
  1702.     AX = 0026h
  1703. Return: CX = 0204h if CX was 0105h on entry, else unchanged
  1704. --------M-330027-----------------------------
  1705. INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
  1706.     AX = 0027h
  1707. Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
  1708.     BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
  1709.     CX = horizontal mickeys moved since last call
  1710.     DX = vertical mickeys moved since last call
  1711. SeeAlso: AX=000Bh
  1712. --------M-330028-----------------------------
  1713. INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
  1714.     AX = 0028h
  1715.     CX = new video mode (call is NOP if 0000h)
  1716.     DH = Y font size (00h = default)
  1717.     DL = X font size (00h = default)
  1718. Return: CL = status (00h = successful)
  1719. Notes:    DX is ignored unless the selected video mode supports font size control
  1720.     when CX=0000h, an internal flag that had been set by a previous call
  1721.       is cleared; this is required before a mouse reset
  1722. SeeAlso: AX=0029h,INT 10/AH=00h
  1723. --------M-330029-----------------------------
  1724. INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
  1725.     AX = 0029h
  1726.     CX = previous video mode
  1727.         0000h get first supported video mode
  1728.         other get next supported mode after mode CX
  1729. Return: CX = first/next video mode (0000h = no more video modes)
  1730.     DS:DX -> description of video mode or 0000h:0000h if none
  1731. Notes:    the enumerated video modes may be in any order and may repeat
  1732.     the description string (if available) is terminated by '$' followed by
  1733.       a NUL byte
  1734. SeeAlso: AX=0028h
  1735. --------M-33002A-----------------------------
  1736. INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
  1737.     AX = 002Ah
  1738. Return: AX = internal counter controlling cursor visibility
  1739.     BX = cursor hot spot column
  1740.     CX = cursor hot spot row
  1741.     DX = mouse type (see #1626)
  1742. Note:    the hot spot location is relative to the upper left corner of the
  1743.       cursor block and may range from -128 to +127 both horizontally and
  1744.       vertically
  1745. SeeAlso: AX=0009h,AX=0012h,AX=0035h
  1746.  
  1747. (Table 1626)
  1748. Values for mouse type:
  1749.  00h    none
  1750.  01h    bus
  1751.  02h    serial
  1752.  03h    InPort
  1753.  04h    IBM
  1754.  05h    Hewlett-Packard
  1755. --------M-33002B-----------------------------
  1756. INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
  1757.     AX = 002Bh
  1758.     BX = active acceleration profile
  1759.         0001h-0004h or FFFFh to restore default curves
  1760.     ES:SI -> buffer containing acceleration profile data (see #1627)
  1761. Return: AX = success flag
  1762. SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
  1763.  
  1764. Format of acceleration profile data:
  1765. Offset    Size    Description    (Table 1627)
  1766.  00h    BYTE    length of acceleration profile 1
  1767.  01h    BYTE    length of acceleration profile 2
  1768.  02h    BYTE    length of acceleration profile 3
  1769.  03h    BYTE    length of acceleration profile 4
  1770.  04h 32 BYTEs    threshold speeds for acceleration profile 1
  1771.  24h 32 BYTEs    threshold speeds for acceleration profile 2
  1772.  44h 32 BYTEs    threshold speeds for acceleration profile 3
  1773.  64h 32 BYTEs    threshold speeds for acceleration profile 4
  1774.  84h 32 BYTEs    speedup factor for acceleration profile 1
  1775.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1776.  A4h 32 BYTEs    speedup factor for acceleration profile 2
  1777.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1778.  C4h 32 BYTEs    speedup factor for acceleration profile 3
  1779.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1780.  E4h 32 BYTEs    speedup factor for acceleration profile 4
  1781.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1782. 104h 16 BYTEs    name of acceleration profile 1 (blank-padded)
  1783. 114h 16 BYTEs    name of acceleration profile 2 (blank-padded)
  1784. 124h 16 BYTEs    name of acceleration profile 3 (blank-padded)
  1785. 134h 16 BYTEs    name of acceleration profile 4 (blank-padded)
  1786. Note:    unused bytes in the threshold speed fields are filled with 7Fh and
  1787.       unused bytes in the speedup factor fields are filled with 10h
  1788. --------M-33002C-----------------------------
  1789. INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
  1790.     AX = 002Ch
  1791. Return: AX = status (0000h success)
  1792.     BX = currently-active acceleration profile
  1793.     ES:SI -> acceleration profile data (see #1627)
  1794. SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
  1795. --------M-33002D-----------------------------
  1796. INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
  1797.     AX = 002Dh
  1798.     BX = acceleration level
  1799.         0001h-0004h to set profile, or FFFFh to get current profile
  1800. Return: AX = status
  1801.         0000h successful
  1802.         ES:SI -> 16-byte blank-padded name of acceleration profile
  1803.         FFFEh invalid acceleration curve number
  1804.         ES:SI destroyed
  1805.     BX = active acceleration curve number
  1806. SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
  1807. --------M-33002E-----------------------------
  1808. INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
  1809.     AX = 002Eh
  1810.     BL = flag (if nonzero, fill ES:SI buffer with default names on return)
  1811.     ES:SI -> 64-byte buffer for profile names (16 bytes per name)
  1812. Return: AX = status (0000h success)
  1813.     ES:SI buffer filled with default names if BL nonzero on entry
  1814. Note:    not supported by Logitech driver v6.10
  1815. SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
  1816. --------M-33002F-----------------------------
  1817. INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
  1818.     AX = 002Fh
  1819. Return: AX = status
  1820. Note:    invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
  1821. SeeAlso: INT 2F/AH=53h
  1822. --------M-330030-----------------------------
  1823. INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
  1824.     AX = 0030h
  1825.     CX = command
  1826.         0000h get status of BallPoint device
  1827.         other set rotation angle and masks
  1828.         BX = rotation angle (-32768 to 32767 degrees)
  1829.         CH = primary button mask
  1830.         CL = secondary button mask
  1831. Return: AX = button status (FFFFh if no BallPoint) (see #1628)
  1832.     BX = rotation angle (0-360 degrees)
  1833.     CH = primary button mask
  1834.     CL = secondary button mask
  1835.  
  1836. Bitfields for BallPoint mouse button status:
  1837. Bit(s)    Description    (Table 1628)
  1838.  5    button 1
  1839.  4    button 2
  1840.  3    button 3
  1841.  2    button 4
  1842.  other    zero
  1843. --------M-330031-----------------------------
  1844. INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
  1845.     AX = 0031h
  1846. Return: AX = virtual X minimum
  1847.     BX = virtual Y minimum
  1848.     CX = virtual X maximum
  1849.     DX = virtual Y maximum
  1850. Note:    the minimum and maximum values are those set by AX=0007h and AX=0008h;
  1851.       the default is minimum = 0 and maximum = absolute maximum
  1852.       (see AX=0026h)
  1853. SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
  1854. --------M-330032-----------------------------
  1855. INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
  1856.     AX = 0032h
  1857. Return: AX = active function flags (FFFFh for v8.10)
  1858.         bit 15: function 0025h supported
  1859.         bit 14: function 0026h supported
  1860.         ...
  1861.         bit 0:  function 0034h supported
  1862.     BX = ??? (0000h) officially unused
  1863.     CX = ??? (E000h) officially unused
  1864.     DX = ??? (0000h) officially unused
  1865. --------M-330033-----------------------------
  1866. INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
  1867.     AX = 0033h
  1868.     CX = size of buffer
  1869.         0000h get required buffer size
  1870.         Return: AX = 0000h
  1871.             CX = required size (0154h for Logitech v6.10, 0159h
  1872.                 for MS v8.10-8.20)
  1873.         other
  1874.         ES:DX -> buffer of CX bytes for mouse settings
  1875.         Return: AX = 0000h
  1876.             CX = number of bytes returned
  1877.             ES:DX buffer filled (see #1629)
  1878. SeeAlso: AX=002Bh
  1879.  
  1880. Format of mouse settings data buffer:
  1881. Offset    Size    Description    (Table 1629)
  1882.  00h    BYTE    mouse type
  1883.  01h    BYTE    current language
  1884.  02h    BYTE    horizontal sensitivity (00h-64h)
  1885.  03h    BYTE    vertical sensitivity (00h-64h)
  1886.  04h    BYTE    double-speed threshold (00h-64h)
  1887.  05h    BYTE    ballistic curve (01h-04h)
  1888.  06h    BYTE    interrupt rate (01h-04h)
  1889.  07h    BYTE    cursor override mask
  1890.  08h    BYTE    laptop adjustment
  1891.  09h    BYTE    memory type (00h-02h)
  1892.  0Ah    BYTE    SuperVGA support (00h,01h)
  1893.  0Bh    BYTE    rotation angle
  1894.  0Ch    BYTE    ???
  1895.  0Dh    BYTE    primary button (01h-04h)
  1896.  0Eh    BYTE    secondary button (01h-04h)
  1897.  0Fh    BYTE    click lock enabled (00h,01h)
  1898.  10h 324 BYTEs    acceleration profile data (see #1627)
  1899. 154h  5 BYTEs    ??? (Microsoft driver, but not Logitech)
  1900. --------M-330034-----------------------------
  1901. INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
  1902.     AX = 0034h
  1903. Return: AX = status (0000h successful)
  1904.     ES:DX -> ASCIZ initialization (.INI) file name
  1905. --------M-330035-----------------------------
  1906. INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
  1907.     AX = 0035h
  1908.     BX = function
  1909.         FFFFh get current settings
  1910.         Return: AX = 0000h
  1911.             BH = style (see #1630)
  1912.             BL = size (see below)
  1913.             CH = threshold
  1914.             CL = active flag (00h disabled, 01h enabled)
  1915.             DX = delay
  1916.         other
  1917.         BH = pointer style (see #1630)
  1918.         BL = size (00h small "1", 01h medium "1.5", 02h large "2")
  1919.         CH = threshold (00h-64h)
  1920.         CL = active flag (00h disable size change, 01h enable)
  1921.         DX = delay (0000h-0064h)
  1922.         Return: AX = 0000h
  1923. Note:    not supported by Logitech driver v6.10
  1924. SeeAlso: AX=0012h,AX=002Ah
  1925.  
  1926. (Table 1630)
  1927. Values for pointer style:
  1928.  00h    normal
  1929.  01h    reverse
  1930.  02h    transparent
  1931. --------M-330042-----------------------------
  1932. INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
  1933.     AX = 0042h
  1934. Return: AX = status
  1935.         0000h MSMOUSE not installed
  1936.         0042h functions 42h, 50h, and 52h not supported
  1937.         FFFFh successful
  1938.         BX = buffer size in bytes for functions 50h and 52h
  1939. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1940. SeeAlso: AX=0015h,AX=0050h,AX=0052h
  1941. --------M-330043-----------------------------
  1942. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CONFIGURE MOUSE???
  1943.     AX = 0043h
  1944.     CX:BX -> configuration buffer (see #1631)
  1945.     DL = ???
  1946. Return: ???
  1947. Notes:    also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
  1948.     this function is also supported by the Genius Mouse 9.06 driver
  1949.  
  1950. Format of Mouse Systems configuration buffer:
  1951. Offset    Size    Description    (Table 1631)
  1952.  00h    WORD    I/O port address
  1953.  02h    BYTE    ???
  1954.  03h    BYTE    interrupt number
  1955.  04h    BYTE    interrupt mask for interrupt controller
  1956.  05h  5 BYTEs    ???
  1957. --------M-330044CXCDEF-----------------------
  1958. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE IGNORE ACCELERATION CMDS
  1959.     AX = 0044h
  1960.     CX = CDEFh
  1961. Return: AX = new state of "Ignore Application Acceleration Commands" flag
  1962. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1963. SeeAlso: AX=0045h
  1964. --------M-330045CXCDEF-----------------------
  1965. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE RESOLUTION DOUBLING
  1966.     AX = 0045h
  1967.     CX = CDEFh
  1968. Return: AX = new state of resolution doubling flag
  1969. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1970. SeeAlso: AX=0044h
  1971. --------M-330047-----------------------------
  1972. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET BUTTON ASSIGNMENTS
  1973.     AX = 0047h
  1974.     ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
  1975. Return: ???
  1976. Note:    also supported by Genius Mouse 9.06 driver
  1977. SeeAlso: AX=0067h
  1978. --------M-330048BXCDEF-----------------------
  1979. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET ???
  1980.     AX = 0048h
  1981.     BX = CDEFh
  1982. Return: CX = ???
  1983.     BH = ???
  1984.     BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
  1985. Note:    also supported by Genius Mouse 9.06 driver
  1986. --------M-33004B-----------------------------
  1987. INT 33 - Z-NIX MOUSE DRIVER v7.04d - INSTALLATION CHECK
  1988.     AX = 004Bh
  1989. Return: ES:DI -> signature/description string if installed
  1990. Note:    the signature string in v7.04d is
  1991.       "Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
  1992. --------M-33004CBXCDEF-----------------------
  1993. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ??? FLAG
  1994.     AX = 004Ch
  1995.     BX = CDEFh
  1996. Note:    also supported by Genius Mouse 9.06
  1997. SeeAlso: AX=006Ch
  1998. --------M-33004D-----------------------------
  1999. INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
  2000.     AX = 004Dh
  2001. Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft"
  2002. Notes:    also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
  2003.       mouse drivers
  2004.     in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
  2005.       follows the above copyright message (KYE Corp. manufactures the
  2006.       driver)
  2007. SeeAlso: AX=0024h,AX=006Dh,AX=0666h
  2008. --------M-33004F-----------------------------
  2009. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ENABLE MOUSE
  2010.     AX = 004Fh
  2011. Return: nothing
  2012. Note:    also supported by Genius Mouse 9.06
  2013. SeeAlso: AX=0043h,AX=0053h
  2014. --------M-330050-----------------------------
  2015. INT 33 - PCMOUSE - SAVE MSMOUSE STATE
  2016.     AX = 0050h
  2017.     BX = buffer size (ignored by some driver versions)
  2018.     ES:DX -> buffer
  2019. Return: AX = FFFFh if successful
  2020. Notes:    the buffer must be large enough to hold the entire state, or following
  2021.       data will be overwritten by state data in versions which ignore BX;
  2022.       use INT 33/AX=0042h to get the required size
  2023.     this function is also supported by the Genius Mouse 9.06 driver
  2024. SeeAlso: AX=0042h,AX=0052h
  2025. --------M-330052-----------------------------
  2026. INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
  2027.     AX = 0052h
  2028.     BX = buffer size (ignored by some driver versions)
  2029.     ES:DX -> buffer
  2030. Return: AX = FFFFh if successful
  2031. Note:    also supported by Genius Mouse 9.06 driver
  2032. SeeAlso: AX=0050h
  2033. --------M-330053-----------------------------
  2034. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - DISABLE MOUSE
  2035.     AX = 0053h
  2036. Return: nothing
  2037. Note:    also supported by Genius Mouse 9.06
  2038. SeeAlso: AX=0043h,AX=004Fh
  2039. --------M-330054CXCDEF-----------------------
  2040. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SELECT ULTRARES ACCELERATION LEVEL
  2041.     AX = 0054h
  2042.     CX = CDEFh
  2043.     BX = new acceleration level (0-9)
  2044. Return: ???
  2045. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2046. SeeAlso: AX=005Ah
  2047. --------M-330055-----------------------------
  2048. INT 33 - Kraft Mouse - GET ???
  2049.     AX = 0055h
  2050. Return: CX = ???
  2051.     DX = ???
  2052.     ES = ???
  2053. --------M-330058-----------------------------
  2054. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2055.     AX = 0058h
  2056. Return: AX = CS of driver
  2057.     CX:BX = original INT 33 vector
  2058.     DX = ???
  2059. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2060. --------M-33005A-----------------------------
  2061. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ULTRARES ACCELERATIONS
  2062.     AX = 005Ah
  2063.     CX = number of WORDs to copy (max 0014h, but not range-checked)
  2064.     DX:SI -> buffer containing thresholds??? (CX words)
  2065.     DX:BX -> buffer containing acceleration values???
  2066.         (9*14h words, only first CX of each 14h used)
  2067.     ???
  2068. Return: CF clear
  2069.     ???
  2070. Note:    this function is also supported by Genius Mouse 9.06
  2071. SeeAlso: AX=0054h
  2072. --------M-330061BXCDEF-----------------------
  2073. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2074.     AX = 0061h
  2075.     BX = CDEFh
  2076. Return: CX = ???
  2077. Note:    also supported by Genius Mouse 9.06
  2078. --------M-330067-----------------------------
  2079. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET MOUSE BUTTONS???
  2080.     AX = 0067h
  2081. Return: BL = number of buttons???
  2082. Note:    also supported by Genius Mouse 9.06
  2083. SeeAlso: AX=0047h
  2084. --------M-33006C-----------------------------
  2085. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - GET/SET ???
  2086.     AX = 006Ch
  2087.     BX = IRQ??? (0003h or 0004h), or 0000h to get current values only
  2088.     CL = ???
  2089.     DX = ???
  2090. Return: BX = current or new ???
  2091.     DX = ???
  2092. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2093.       TRUEDOX Technology Corporation
  2094. SeeAlso: AX=00A1h,AX=0666h
  2095. --------M-33006CBXCDEF-----------------------
  2096. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CLEAR ??? FLAG
  2097.     AX = 006Ch
  2098.     BX = CDEFh
  2099. Note:    also supported by Genius Mouse 9.06
  2100. SeeAlso: AX=004Ch
  2101. --------M-33006D-----------------------------
  2102. INT 33 - MS MOUSE - GET VERSION STRING
  2103.     AX = 006Dh
  2104. Return: ES:DI -> Microsoft version number of resident driver (see #1632)
  2105. Notes:    also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
  2106.       drivers
  2107.     the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
  2108.       Microsoft version as 7.00 even though they do not support any of the
  2109.       functions from 0025h through 002Dh supported by the MS 7.00 driver
  2110.       (the Genius Mouse driver supports function 0026h, but it differs
  2111.       from the Microsoft function)
  2112.     the TRUEDOX 4.01 driver reports its version as 6.26 through this call,
  2113.       but as 6.24 through AX=0024h
  2114. SeeAlso: AX=0024h,AX=004Dh,AX=266Ch
  2115.  
  2116. Format of Microsoft version number:
  2117. Offset    Size    Description    (Table 1632)
  2118.  00h    BYTE    major version
  2119.  01h    BYTE    minor version (BCD)
  2120. --------M-330070BXABCD-----------------------
  2121. INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
  2122.     AX = 0070h
  2123.     BX = ABCDh
  2124. Return: AX = ABCDh if installed
  2125.         BX:CX -> data structure (see #1633)
  2126. Notes:    this function is also supported by the Genius Mouse 9.06 driver
  2127.     the v7.01 POPUP.COM and menu drivers also check for the signature
  2128.       CDh ABh BAh DCh at offset -2Ch from the interrupt handler
  2129.     if POPUP is not loaded, the returned data structure contains the proper
  2130.       signature at offset 00h, but not at offset 08h
  2131.  
  2132. Format of Mouse Systems POPUP.COM data structure:
  2133. Offset    Size    Description    (Table 1633)
  2134.  00h    WORD    signature ABCDh
  2135.  02h    DWORD    pointer to info structure??? (see #1634)
  2136.  06h  2 BYTEs    ???
  2137.  08h    WORD    signature ABCDh
  2138.  
  2139. Format of Mouse Systems POPUP.COM info structure:
  2140. Offset    Size    Description    (Table 1634)
  2141.  00h    WORD    driver version
  2142.  02h  8 BYTEs    ???
  2143.  0Ah    WORD    segment of ???
  2144.     ???
  2145. --------M-330072BXABCD-----------------------
  2146. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2147.     AX = 0072h
  2148.     BX = ABCDh
  2149. Return: ???
  2150. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2151. --------M-330073BXCDEF-----------------------
  2152. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET BUTTON ASSIGNMENTS
  2153.     AX = 0073h
  2154.     BX = CDEFh
  2155.     ES:DX -> 3-byte buffer for button assignments
  2156. Return: CX = number of buttons???
  2157.     ES:DX buffer filled (default is "LMR")
  2158. Note:    also supported by Genius Mouse 9.06
  2159. SeeAlso: AX=0067h
  2160. --------M-3300A1-----------------------------
  2161. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - ???
  2162.     AX = 00A1h
  2163.     ???
  2164. Return: ???
  2165. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2166.       TRUEDOX Technology Corporation
  2167. SeeAlso: AX=006Ch"TRUEDOX",AX=00A6h,AX=0666h
  2168. --------M-3300A6-----------------------------
  2169. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - ???
  2170.     AX = 00A6h
  2171.     BL = ???
  2172. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2173.       TRUEDOX Technology Corporation
  2174. SeeAlso: AX=00A6h,AX=0666h
  2175. --------M-33012E-----------------------------
  2176. INT 33 - MS MOUSE v8.10+ - ???
  2177.     AX = 012Eh
  2178.     BL = ???
  2179. Return: AX = 0000h
  2180. Note:    not supported by Logitech driver v6.10
  2181. SeeAlso: AX=002Eh,AX=022Eh
  2182. --------M-33022E-----------------------------
  2183. INT 33 - MS MOUSE v8.10+ - ???
  2184.     AX = 022Eh
  2185.     BL = ???
  2186. Return: AX = 0000h
  2187. Note:    not supported by Logitech driver v6.10
  2188. SeeAlso: AX=002Eh,AX=012Eh
  2189. --------M-330666-----------------------------
  2190. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - ???
  2191.     AX = 0666h
  2192. Return: DX:AX -> ASCII sig "Copyright 1987-1992 TRUEDOX Technology Corporation"
  2193. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2194.       TRUEDOX Technology Corporation
  2195. SeeAlso: AX=004Dh,AX=00A6h,AX=0666h
  2196. --------M-33136C-----------------------------
  2197. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2198.     AX = 136Ch
  2199.     BX = ???
  2200. Return: AX = ???
  2201.     BX = ???
  2202. --------M-33146C-----------------------------
  2203. INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
  2204.     AX = 146Ch
  2205.     BL = function
  2206.         00h set ???
  2207.         BH = new value (zero/nonzero to clear/set)
  2208.         else get ???
  2209.         Return: ???
  2210. --------M-33156C-----------------------------
  2211. INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
  2212.     AX = 156Ch
  2213. Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
  2214.     ES:SI -> version string, terminated with CRLF
  2215. --------M-33166C-----------------------------
  2216. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2217.     AX = 166Ch
  2218.     BL = ???
  2219.         00h ???
  2220.         01h ???
  2221.         other ???
  2222.         BH = new value of ???
  2223.         Return: AX = FFFFh
  2224. --------M-33176C-----------------------------
  2225. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2226.     AX = 176Ch
  2227.     ???
  2228. Return: ???
  2229. --------M-33186C-----------------------------
  2230. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2231.     AX = 186Ch
  2232.     ???
  2233. Return: ???
  2234. --------M-33196C-----------------------------
  2235. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2236.     AX = 196Ch
  2237.     ???
  2238. Return: ???
  2239. --------M-331A6C-----------------------------
  2240. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2241.     AX = 1A6Ch
  2242. Return: AX = FFFFh
  2243.     BX = ???
  2244.     CX = ???
  2245. SeeAlso: AX=1B6Ch
  2246. --------M-331B6C-----------------------------
  2247. INT 33 - LOGITECH MOUSE v6.10+ - SET ???
  2248.     AX = 1B6Ch
  2249.     BX = new value for ??? (0000h-0003h)
  2250. Return: AX = FFFFh
  2251. SeeAlso: AX=1A6Ch
  2252. --------M-331C6C-----------------------------
  2253. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2254.     AX = 1C6Ch
  2255.     BX = ???
  2256.         <42h ???
  2257.         =42h ???
  2258.         >42h ???
  2259.         ES:DI -> ???
  2260.         Return: AX = ???
  2261. --------M-331D6C-----------------------------
  2262. INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
  2263.     AX = 1D6Ch
  2264. Return: BX = direction (0=north, 1=south, 2=east, 3=west)
  2265. SeeAlso: AX=1E6Ch
  2266. --------M-331E6C-----------------------------
  2267. INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
  2268.     AX = 1E6Ch
  2269.     BX = direction (0=north, 1=south, 2=east, 3=west)
  2270. SeeAlso: AX=1D6Ch
  2271. --------M-331F6C-----------------------------
  2272. INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
  2273.     AX = 1F6Ch
  2274. Return: BX = 0=off, 1=on
  2275.     CX = 1=low, 2=high
  2276. SeeAlso: AX=002Ch,AX=236Ch
  2277. --------M-33206C-----------------------------
  2278. INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
  2279.     AX = 206Ch
  2280.     BX = parameter (00h = right, FFh = left)
  2281. SeeAlso: AX=216Ch
  2282. --------M-33216C-----------------------------
  2283. INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
  2284.     AX = 216Ch
  2285. Return: BX = parameter (00h = right, FFh = left)
  2286. SeeAlso: AX=206Ch
  2287. --------M-33226C-----------------------------
  2288. INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
  2289.     AX = 226Ch
  2290. Note:    this only frees memory; does not restore hooked interrupts
  2291. --------M-33236C-----------------------------
  2292. INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
  2293.     AX = 236Ch
  2294.     BX = 0=off, 1=on
  2295.     CX = 1=low, 2=high
  2296. SeeAlso: AX=002Ch,AX=1F6Ch
  2297. --------M-33246C-----------------------------
  2298. INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
  2299.     AX = 246Ch
  2300.     ES:DX -> parameter table buffer (see #1635)
  2301. Return: AX = FFFFh if driver installed for serial mouse
  2302. SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
  2303.  
  2304. Format of Logitech Mouse parameter table:
  2305. Offset    Size    Description    (Table 1635)
  2306.  00h    WORD    baud rate divided by 100  (serial mouse only)
  2307.  02h    WORD    emulation          (serial mouse only)
  2308.  04h    WORD    report rate          (serial mouse only)
  2309.  06h    WORD    firmware revision      (serial mouse only)
  2310.  08h    WORD    00h              (serial mouse only)
  2311.  0Ah    WORD    port              (serial mouse only)
  2312.  0Ch    WORD    physical buttons
  2313.  0Eh    WORD    logical buttons
  2314. --------M-33256CBX0000-----------------------
  2315. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
  2316.     AX = 256Ch
  2317.     BX = 0000h
  2318.     CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
  2319. Return: AX = FFFFh if driver installed for serial mouse
  2320. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
  2321. --------M-33256CBX0001-----------------------
  2322. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
  2323.     AX = 256Ch
  2324.     BX = 0001h
  2325.     CX = emulation type (see #1636)
  2326. Return: AX = FFFFh if driver installed for serial mouse
  2327. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
  2328.  
  2329. (Table 1636)
  2330. Values for Logitech mouse emulation type:
  2331.  00h    5 byte packed binary
  2332.  01h    3 byte packed binary
  2333.  02h    hexadecimal
  2334.  03h    relative bit pad
  2335.  04h    not supported
  2336.  05h    MM Series
  2337.  06h    not supported
  2338.  07h    Microsoft
  2339. --------M-33256CBX0002-----------------------
  2340. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
  2341.     AX = 256Ch
  2342.     BX = 0002h
  2343.     CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
  2344. Return: AX = FFFFh if driver installed for serial mouse
  2345. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
  2346. --------M-33256CBX0003-----------------------
  2347. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
  2348.     AX = 256Ch
  2349.     BX = 0003h
  2350.     CX = port (1, 2)
  2351. Return: AX = FFFFh if driver installed for serial mouse
  2352. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
  2353. --------M-33256CBX0004-----------------------
  2354. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
  2355.     AX = 256Ch
  2356.     BX = 0004h
  2357.     CX = buttons (2, 3)
  2358. Return: AX = FFFFh if driver installed for serial mouse
  2359. SeeAlso: AX=246Ch,AX=276Ch
  2360. --------M-33266C-----------------------------
  2361. INT 33 - LOGITECH MOUSE - GET VERSION???
  2362.     AX = 266Ch
  2363. Return: BX = 'SS'
  2364.     CH = '4'  major version number
  2365.     CL = '1'  minor version number
  2366. SeeAlso: AX=006Dh
  2367. --------M-33276C-----------------------------
  2368. INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
  2369.     AX = 276Ch
  2370. SeeAlso: AX=256Ch
  2371. --------M-333000-----------------------------
  2372. INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
  2373.     AX = 3000h
  2374. Return: AX = FFFFh if installed
  2375.         BX = version number (BH = major, BL = minor)
  2376. Program: SMD is a programmer's library by Andy Hakim which provides a
  2377.       graphics-style mouse cursor in text mode.  PrecisePoint is an
  2378.       SMD-based TSR which replaces the block mouse cursor in text
  2379.       applications.
  2380. SeeAlso: AX=0000h,AX=3001h,AX=3003h
  2381. --------M-333001-----------------------------
  2382. INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
  2383.     AX = 3001h
  2384. Return: AX = status (0000h = disabled, 0001h = enabled)
  2385. Note:    SMD remains disabled if running under Desqview or in graphics mode
  2386. SeeAlso: AX=0001h,AX=0002h,AX=3002h
  2387. --------M-333002-----------------------------
  2388. INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
  2389.     AX = 3002h
  2390. Return: AX = status (0000h = disabled, 0001h = enabled)
  2391. SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
  2392. --------M-333003-----------------------------
  2393. INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
  2394.     AX = 3003h
  2395.     BL = data structure selector
  2396.         00h Primary Bitmap (used for 25 line mode)
  2397.         01h Secondary Bitmap (used for 43/50 line modes)
  2398.         02h Sacrifice Character Map
  2399.         03h Program Information
  2400. Return: ES:DX -> selected data structure
  2401. SeeAlso: AX=3000h
  2402.  
  2403. Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]:
  2404. Offset    Size    Description    (Table 1637)
  2405.  00h    BYTE    vertical size of bitmap (00h - 10h)
  2406.  01h    BYTE    horizontal size of bitmap (00h - 10h)
  2407.  02h    BYTE    vertical hotspot position (00h - 10h)
  2408.  03h    BYTE    horizontal hotspot position (00h - 10h)
  2409.  04h 16 WORDs    cursor bitmap data
  2410.  14h 16 WORDs    screen bitmap data
  2411.  
  2412. Format of Sacrifice Character Map [SMD_SMAP_STRUCT]:
  2413. Offset    Size    Description    (Table 1638)
  2414.  00h    BYTE    bytes are character values (00h-FFh) used in place of the
  2415.  01h    BYTE    actual character for the corresponding position on the screen
  2416.  02h    BYTE         +--------------+      occupied by part or all of the mouse
  2417.  03h    BYTE         | 0h | 1h | 2h |      cursor
  2418.  04h    BYTE         |----+----+----|
  2419.  05h    BYTE         | 3h | 4h | 5h |
  2420.  06h    BYTE         |----+----+----|
  2421.  07h    BYTE         | 6h | 7h | 8h |
  2422.  08h    BYTE         +--------------+
  2423.  
  2424. Format of Program Information [SMD_INFO_STRUCT]:
  2425. Offset    Size    Description    (Table 1639)
  2426.  00h    WORD    segment of old interrupt 33h handler
  2427.  02h    WORD    offset of old interrupt 33h handler
  2428.  04h    WORD    PSP of SMD
  2429.  06h    BYTE    ENABLE/DISABLE manual setting status
  2430.  07h    BYTE    ENABLE/DISABLE internal usage status
  2431. --------M-333004-----------------------------
  2432. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2433.     AX = 3004h
  2434. SeeAlso: AX=3000h
  2435. --------M-333005-----------------------------
  2436. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2437.     AX = 3005h
  2438. SeeAlso: AX=3000h
  2439. --------M-334F00-----------------------------
  2440. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2441.     AX = 4F00h
  2442. Return: AX = 004Fh if supported
  2443.     BX = ???
  2444.     ES:DI -> ???
  2445. SeeAlso: AX=4F01h
  2446. --------M-334F01-----------------------------
  2447. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2448.     AX = 4F01h
  2449.     ES = ???
  2450. Return: AX = 004Fh if supported
  2451.     ES:DI -> ???
  2452. SeeAlso: AX=4F00h
  2453. --------T-33FFE6-----------------------------
  2454. INT 33 - Switch-It v3.23 - GET ??? PROGRAM
  2455.     AX = FFE6h
  2456.     CX = length of buffer
  2457.     ES:DI -> buffer for program name
  2458. Return: ES:DI buffer filled
  2459. Program: Switch-It is a task switcher supporting up to 100 programs
  2460.       simultaneously by Better Software Technology, Inc.
  2461. --------T-33FFE7-----------------------------
  2462. INT 33 - Switch-It v3.23 - GET ???
  2463.     AX = FFE7h
  2464. Return: AX = ???
  2465. --------T-33FFE8-----------------------------
  2466. INT 33 - Switch-It v3.23 - ???
  2467.     AX = FFE8h
  2468.     CX = length of name including terminating NUL
  2469.     DS:SI -> ASCIZ program pathname
  2470. --------T-33FFE9-----------------------------
  2471. INT 33 - Switch-It v3.23 - SET ???
  2472.     AX = FFE9h
  2473.     BX = ???
  2474. --------T-33FFEA-----------------------------
  2475. INT 33 - Switch-It v3.23 - SET ???
  2476.     AX = FFEAh
  2477.     BL = ???
  2478. --------T-33FFEB-----------------------------
  2479. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2480.     AX = FFEBh
  2481. --------T-33FFEC-----------------------------
  2482. INT 33 - Switch-It v3.23 - SET ???
  2483.     AX = FFECh
  2484.     BL = ???
  2485. --------T-33FFED-----------------------------
  2486. INT 33 - Switch-It v3.23 - GET ???
  2487.     AX = FFEDh
  2488. Return: AX = ??? (0001h)
  2489.     BX = ???
  2490. Program: Switch-It is a task switcher supporting up to 100 programs
  2491.       simultaneously by Better Software Technology, Inc.
  2492. --------T-33FFEE-----------------------------
  2493. INT 33 - Switch-It v3.23 - GET ???
  2494.     AX = FFEEh
  2495. Return: AX = ???
  2496. --------T-33FFEF-----------------------------
  2497. INT 33 - Switch-It v3.23 - GET ???
  2498.     AX = FFEFh
  2499. Return: BX:AX -> ???
  2500. --------T-33FFF0-----------------------------
  2501. INT 33 - Switch-It v3.23 - SET ???
  2502.     AX = FFF0h
  2503.     BL = ???
  2504. --------T-33FFF1-----------------------------
  2505. INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
  2506.     AX = FFF1h
  2507. Return: BX:AX -> ASCIZ pathname of configuration file
  2508. Program: Switch-It is a task switcher supporting up to 100 programs
  2509.       simultaneously by Better Software Technology, Inc.
  2510. --------T-33FFF2-----------------------------
  2511. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2512.     AX = FFF2h
  2513. Return: AL = 01h
  2514. --------T-33FFF3-----------------------------
  2515. INT 33 - Switch-It v3.23 - GET ???
  2516.     AX = FFF3h
  2517. Return: AX = ???
  2518. --------T-33FFF4-----------------------------
  2519. INT 33 - Switch-It v3.23 - SET ???
  2520.     AX = FFF4h
  2521.     BX = ???
  2522.     CX = ???
  2523. --------T-33FFF5-----------------------------
  2524. INT 33 - Switch-It v3.23 - GET ???
  2525.     AX = FFF5h
  2526. Return: AX = ???
  2527. --------T-33FFF6-----------------------------
  2528. INT 33 - Switch-It v3.23 - GET ???
  2529.     AX = FFF6h
  2530. Return: AX = ???
  2531. --------T-33FFF7-----------------------------
  2532. INT 33 - Switch-It v3.23 - GET ???
  2533.     AX = FFF7h
  2534.     BX = index of ???
  2535. Return: AX = ???
  2536. --------T-33FFF8-----------------------------
  2537. INT 33 - Switch-It v3.23 - ???
  2538.     AX = FFF8h
  2539.     BX = ???
  2540.     CX = length of program name, including terminating NUL
  2541.     DS:SI -> ASCIZ program pathname
  2542. Return: ???
  2543. Program: Switch-It is a task switcher supporting up to 100 programs
  2544.       simultaneously by Better Software Technology, Inc.
  2545. --------T-33FFF9-----------------------------
  2546. INT 33 - Switch-It v3.23 - NOP
  2547.     AX = FFF9h
  2548. --------T-33FFFA-----------------------------
  2549. INT 33 - Switch-It v3.23 - SET ???
  2550.     AX = FFFAh
  2551.     BX = index of program
  2552. SeeAlso: AX=FFFBh,AX=FFFCh
  2553. --------T-33FFFB-----------------------------
  2554. INT 33 - Switch-It v3.23 - GET ???
  2555.     AX = FFFBh
  2556.     BX = index of program
  2557. Return: AX = ??? (0000h or 0001h)
  2558. SeeAlso: AX=FFFAh,AX=FFFCh
  2559. --------T-33FFFC-----------------------------
  2560. INT 33 - Switch-It v3.23 - CLEAR ???
  2561.     AX = FFFCh
  2562.     BX = index of program
  2563. SeeAlso: AX=FFFAh,AX=FFFCh
  2564. --------T-33FFFD-----------------------------
  2565. INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
  2566.     AX = FFFDh
  2567. Return: AX = first available segment???
  2568.     BX = paragraph of top of conventional memory
  2569.     DX = PSP segment of SI.EXE
  2570. --------T-33FFFE-----------------------------
  2571. INT 33 - Switch-It v3.23 - INSTALLATION CHECK
  2572.     AX = FFFEh
  2573. Return: BX = ???
  2574.     DX = 5349h ("SI")
  2575. --------T-33FFFF-----------------------------
  2576. INT 33 - Switch-It v3.23 - ???
  2577.     AX = FFFFh
  2578.     BX = ???
  2579. Program: Switch-It is a task switcher supporting up to 100 programs
  2580.       simultaneously by Better Software Technology, Inc.
  2581. --------r-34---------------------------------
  2582. INT 34 - FLOATING POINT EMULATION - OPCODE D8h
  2583. Desc:    this interrupt is used to emulate floating-point instructions with
  2584.       an opcode of D8h
  2585. Note:    the floating-point emulators in Borland and Microsoft languages and
  2586.       Lahey FORTRAN use this interrupt
  2587. SeeAlso: INT 35,INT 3E
  2588. --------r-35---------------------------------
  2589. INT 35 - FLOATING POINT EMULATION - OPCODE D9h
  2590. Desc:    this interrupt is used to emulate floating-point instructions with
  2591.       an opcode of D9h
  2592. Note:    the floating-point emulators in Borland and Microsoft languages and
  2593.       Lahey FORTRAN use this interrupt
  2594. SeeAlso: INT 34,INT 36
  2595. --------r-36---------------------------------
  2596. INT 36 - FLOATING POINT EMULATION - OPCODE DAh
  2597. Desc:    this interrupt is used to emulate floating-point instructions with
  2598.       an opcode of DAh
  2599. Note:    the floating-point emulators in Borland and Microsoft languages and
  2600.       Lahey FORTRAN use this interrupt
  2601. SeeAlso: INT 35,INT 37
  2602. --------r-37---------------------------------
  2603. INT 37 - FLOATING POINT EMULATION - OPCODE DBh
  2604. Desc:    this interrupt is used to emulate floating-point instructions with
  2605.       an opcode of DBh
  2606. Note:    the floating-point emulators in Borland and Microsoft languages and
  2607.       Lahey FORTRAN use this interrupt
  2608. SeeAlso: INT 36,INT 38
  2609. --------r-38---------------------------------
  2610. INT 38 - FLOATING POINT EMULATION - OPCODE DCh
  2611. Desc:    this interrupt is used to emulate floating-point instructions with
  2612.       an opcode of DCh
  2613. Note:    the floating-point emulators in Borland and Microsoft languages and
  2614.       Lahey FORTRAN use this interrupt
  2615. SeeAlso: INT 37,INT 39
  2616. --------O-38---------------------------------
  2617. INT 38 - PC-MOS/386 v3.0 - API
  2618. Note:    this API was been moved to INT D4h sometime between versions 3.0 and
  2619.       5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
  2620.       12h
  2621. SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
  2622. --------r-39---------------------------------
  2623. INT 39 - FLOATING POINT EMULATION - OPCODE DDh
  2624. Desc:    this interrupt is used to emulate floating-point instructions with
  2625.       an opcode of DDh
  2626. Note:    the floating-point emulators in Borland and Microsoft languages and
  2627.       Lahey FORTRAN use this interrupt
  2628. SeeAlso: INT 38,INT 3A
  2629. --------r-3A---------------------------------
  2630. INT 3A - FLOATING POINT EMULATION - OPCODE DEh
  2631. Desc:    this interrupt is used to emulate floating-point instructions with
  2632.       an opcode of DEh
  2633. Note:    the floating-point emulators in Borland and Microsoft languages and
  2634.       Lahey FORTRAN use this interrupt
  2635. SeeAlso: INT 39,INT 3B
  2636. --------r-3B---------------------------------
  2637. INT 3B - FLOATING POINT EMULATION - OPCODE DFh
  2638. Desc:    this interrupt is used to emulate floating-point instructions with
  2639.       an opcode of DFh
  2640. Note:    the floating-point emulators in Borland and Microsoft languages and
  2641.       Lahey FORTRAN use this interrupt
  2642. SeeAlso: INT 3A,INT 3C
  2643. --------r-3C---------------------------------
  2644. INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
  2645. Notes:    the floating-point emulators in Borland and Microsoft languages and
  2646.       Lahey FORTRAN use this interrupt
  2647.     the generated code is  CD 3C xy mm ....
  2648.       where xy is a modified ESC instruction and mm is the modR/M byte.
  2649.       The xy byte appears to be encoded as
  2650.         s s 0 1 1 x x x      or    s s 0 0 0 x x x
  2651.       where "ss" specifies the segment override:
  2652.         00 -> DS:
  2653.         01 -> SS:
  2654.         10 -> CS:
  2655.         11 -> ES:
  2656. SeeAlso: INT 3B,INT 3D
  2657. --------r-3D---------------------------------
  2658. INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
  2659. Notes:    the floating-point emulators in Borland and Microsoft languages and
  2660.       Lahey FORTRAN use this interrupt
  2661.     this vector is modified but not restored by Direct Access v4.0, and
  2662.       may be left dangling by other programs written with the same version
  2663.       of compiled BASIC
  2664. SeeAlso: INT 3C,INT 3E
  2665. --------r-3E---------------------------------
  2666. INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
  2667. Notes:    the two bytes following the INT 3E instruction are the subcode and
  2668.       a NOP (90h), except for subcodes DCh and DEh, where the second byte
  2669.       is a register count (01h-08h)
  2670.     this vector is modified but not restored by Direct Access v4.0, and
  2671.       may be left dangling by other programs written with the same version
  2672.       of compiled BASIC
  2673. SeeAlso: INT 3D
  2674.  
  2675. (Table 1640)
  2676. Values for Borland floating-point shortcut subcode:
  2677. Subcode        Function
  2678.  DCh    load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
  2679.       top of the stack prior to the INT 3E with the 8087 register contents
  2680.  DEh    load 8087 registers from top of 8086 stack; ST0 is furthest from top
  2681.       of 8086 stack
  2682.  E0h    round TOS and R1 to single precision, compare, pop twice
  2683.       returns AX=8087 status word, FLAGS=8087 condition bits
  2684.  E2h    round TOS and R1 to double precision, compare, pop twice
  2685.       returns AX=8087 status word, FLAGS=8087 condition bits
  2686.     Note: buggy in TPas5.5, because it sets the 8087 precision control
  2687.       field to the undocumented value 01h; this results in actually
  2688.       rounding to single precision
  2689.  E4h    compare TOS/R1 with two POP's
  2690.       returns FLAGS=8087 condition bits
  2691.  E6h    compare TOS/R1 with POP
  2692.       returns FLAGS=8087 condition bits
  2693.  E8h    FTST (check TOS value)
  2694.       returns FLAGS=8087 condition bits
  2695.  EAh    FXAM (check TOS value)
  2696.       returns AX=8087 status word
  2697.  ECh    sine(ST0)
  2698.  EEh    cosine(ST0)
  2699.  F0h    tangent(ST0)
  2700.  F2h    arctangent(ST0)
  2701.  F4h    ST0 = ln(ST0)
  2702.  F6h    ST0 = log2(ST0)
  2703.  F8h    ST0 = log10(ST0)
  2704.  FAh    ST0 = e**ST0
  2705.  FCh    ST0 = 2**ST0
  2706.  FEh    ST0 = 10**ST0
  2707. --------r-3F---------------------------------
  2708. INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
  2709. Notes:    INT 3F is the default, and may be overridden while linking
  2710.     this vector is modified but not restored by Direct Access v4.0, and
  2711.       may be left dangling by other programs written with the same version
  2712.       of compiled BASIC
  2713. SeeAlso: INT FE"OVERLAY"
  2714. --------r-3F---------------------------------
  2715. INT 3F - Microsoft Dynamic Link Library manager
  2716. SeeAlso: INT 21/AH=4Bh
  2717. --------B-40---------------------------------
  2718. INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
  2719. SeeAlso: INT 13,INT 47"SuperBIOS",INT 63
  2720. --------h-40---------------------------------
  2721. INT 40 - Z100 - Master 8259 - Parity error or S100 error
  2722. SeeAlso: INT 41"Z100",INT FF"Z100"
  2723. --------O-40---------------------------------
  2724. INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
  2725.     AL = operation
  2726.         00h close file
  2727.         40h open file for reading
  2728.         80h open file for writing
  2729.         C0h open file for random access
  2730.     DS:BX -> CR-terminated filename
  2731. Return: AL = file handle (00h if file closed or could not be opened)
  2732. Note:    the Acorn BBC Master 512 is an 80186-based add-on board for the
  2733.       6502-based Master 128 which uses the original CPU as an I/O processor
  2734. SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
  2735. --------B-41---------------------------------
  2736. INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
  2737. Note:    the default parameter table array is located at F000h:E401h in 100%
  2738.       compatible BIOSes; the pointer may be overridden by the hard disk
  2739.       controller's BIOS to support drive formats unknown to the ROM BIOS
  2740. SeeAlso: INT 13/AH=09h,INT 1E,INT 46,INT 60"Adaptec",INT C0"AMI"
  2741.  
  2742. Format of fixed disk parameters:
  2743. Offset    Size    Description    (Table 1641)
  2744.  00h    WORD    number of cylinders
  2745.  02h    BYTE    number of heads
  2746.  03h    WORD    starting reduced write current cylinder (XT only, 0 for others)
  2747.  05h    WORD    starting write precompensation cylinder number
  2748.  07h    BYTE    maximum ECC burst length (XT only)
  2749.  08h    BYTE    control byte (see #1642,#1643)
  2750.  09h    BYTE    standard timeout (XT only, 0 for others)
  2751.  0Ah    BYTE    formatting timeout (XT and WD1002 only, 0 for others)
  2752.  0Bh    BYTE    timeout for checking drive (XT and WD1002 only, 0 for others)
  2753.  0Ch    WORD    cylinder number of landing zone (AT and later only)
  2754.  0Eh    BYTE    number of sectors per track (AT and later only)
  2755.  0Fh    BYTE    reserved
  2756.  
  2757. Bitfields for XT fixed disk control byte:
  2758. Bit(s)    Description    (Table 1642)
  2759.  2-0    drive step speed
  2760.     000  3ms
  2761.     100  200ms
  2762.     101  70ms (default)
  2763.     110  3ms
  2764.     111  3ms
  2765.  5-3    unused
  2766.  6    disable ECC retries
  2767.  7    disable access retries
  2768.  
  2769. Bitfields for AT fixed disk control byte:
  2770. Bit(s)    Description    (Table 1643)
  2771.  0    unused
  2772.  1    reserved (0)  (disable IRQ)
  2773.  2    reserved (0)  (no reset)
  2774.  3    set if more than 8 heads
  2775.  4    always 0
  2776.  5    set if manufacturer's defect map on max cylinder+1  (AT and later only)
  2777.  6    disable ECC retries
  2778.  7    disable access retries
  2779. --------h-41---------------------------------
  2780. INT 41 - Z100 - Master 8259 - Processor Swap
  2781. SeeAlso: INT 40"Z100",INT 42"Z100"
  2782. --------O-41---------------------------------
  2783. INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
  2784.     AL = function
  2785.         01h put bytes sequentially
  2786.         02h put bytes, ignoring sequential pointer
  2787.         03h get bytes sequentially
  2788.         04h get bytes, ignoring sequential pointer
  2789.         05h get media title and boot option
  2790.         06h get current device and directory
  2791.         07h get current library and device
  2792.         08h search directory
  2793.     DS:BX -> control block (see #1644)
  2794. Return: CF clear if successful
  2795.     CF set on error
  2796.     AL = 00h if operation attempted
  2797.     AL unchanged if unsupported function
  2798. SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
  2799.  
  2800. Format of BBC Master control block:
  2801. Offset    Size    Description    (Table 1644)
  2802.  00h    BYTE    file handle
  2803.  01h    DWORD    pointer to data in either I/O processor or Tube processor
  2804.  05h    DWORD    number of bytes to be transferred
  2805.  09h    DWORD    transfer address
  2806. --------G-410000-----------------------------
  2807. INT 41 CPU - MS Windows debugging kernel - OUTPUT CHARACTER FOR USER
  2808.     AX = 0000h
  2809.     DS:DX -> character
  2810. Note:    the kernel calls this function when it wants the user program to
  2811.       output a character
  2812. SeeAlso: AX=0001h
  2813. --------G-410001-----------------------------
  2814. INT 41 CPU - MS Windows debugging kernel - INPUT CHARACTER
  2815.     AX = 0001h
  2816. Return: AL = character    
  2817. Note:    the kernel calls this function when it needs to input a character
  2818. SeeAlso: AX=0000h
  2819. --------G-41000D-----------------------------
  2820. INT 41 CPU - MS Windows debugging kernel - TASK GOING OUT
  2821.     AX = 000Dh
  2822. SeeAlso: AX=000Eh
  2823. --------G-41000E-----------------------------
  2824. INT 41 CPU - MS Windows debugging kernel - TASK COMING IN
  2825.     AX = 000Eh
  2826. SeeAlso: AX=000Dh
  2827. --------G-410012-----------------------------
  2828. INT 41 CPU - MS Windows debugging kernel - "OutputDebugString"
  2829.     AX = 0012h
  2830.     DS:SI -> string (Windows 3.0)
  2831.     ES:SI -> string (Windows 3.1)
  2832. Return: nothing???
  2833. Note:    this function is called by the kernel when it wants to output a
  2834.       string through the debugger
  2835. SeeAlso: AH=50h,INT 68/AH=47h
  2836. --------G-41004F-----------------------------
  2837. INT 41 CPU - MS Windows debugging kernel - DEBUGGER INSTALLATION CHECK
  2838.     AX = 004Fh
  2839. Return: AX = F386h if debugger is present
  2840. SeeAlso: INT 68/AX=4400h
  2841. --------G-410050-----------------------------
  2842. INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
  2843.     AX = 0050h
  2844.     BX = segment number in executable (0-based)
  2845.     CX = selector
  2846.     DX = instance handle
  2847.     SI = segment flags (0=code, 1=data)
  2848.     ES:DI -> module name of owner
  2849. Return: ???
  2850. SeeAlso: AX=0012h,AX=004Fh
  2851. --------G-410051-----------------------------
  2852. INT 41 CPU - MS Windows debugging kernel - MOVE SEGMENT
  2853.     AX = 0051h
  2854.     ???
  2855. Return: ???
  2856. SeeAlso: AX=050h,AX=0052h
  2857. --------G-410052-----------------------------
  2858. INT 41 CPU - MS Windows debugging kernel - FREE SEGMENT
  2859.     AX = 0052h
  2860.     BX = freed selector
  2861. SeeAlso: AX=0050h,AX=0051h,AX=005Ch
  2862. --------G-410059-----------------------------
  2863. INT 41 CPU - MS Windows debugging kernel - LOAD TASK
  2864.     AX = 0059h
  2865.     ???:BX = CS:IP of new task's starting point
  2866. --------G-41005C-----------------------------
  2867. INT 41 CPU - MS Windows debugging kernel - FREE INITIAL SEGMENT
  2868.     AX = 005Ch
  2869.     BX = freed selector
  2870. Note:    called only when KERNEL starts, once for CS and once for the DS alias
  2871.       to CS
  2872. SeeAlso: AX=0052h
  2873. --------G-410060-----------------------------
  2874. INT 41 CPU - MS Windows debugging kernel -  END OF SEGMENT LOAD
  2875.     AX = 0060h
  2876.     ???
  2877. Return: ???
  2878. SeeAlso: AX=0061h
  2879. --------G-410061-----------------------------
  2880. INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT DISCARD
  2881.     AX = 0061h
  2882.     ???
  2883. Return: ???
  2884. SeeAlso: AX=0060h
  2885. --------G-410062-----------------------------
  2886. INT 41 CPU - MS Windows debugging kernel - APPLICATION TERMINATING
  2887.     AX = 0062h
  2888. STACK:    BYTE    exit code
  2889. Return: ???
  2890.     STACK unchanged???
  2891. SeeAlso: AX=0064h
  2892. --------G-410063-----------------------------
  2893. INT 41 CPU - MS Windows debugging kernel - ASYNCHRONOUS STOP (Ctrl-Alt-SysReq)
  2894.     AX = 0063h
  2895. --------G-410064-----------------------------
  2896. INT 41 CPU - MS Windows debugging kernel - DLL LOADED
  2897.     AX = 0064h
  2898.     CX:BX = DLL entry point CS:IP
  2899.     SI = module handle
  2900. SeeAlso: AX=0062h,AX=0065h
  2901. --------G-410065-----------------------------
  2902. INT 41 CPU - MS Windows debugging kernel - MODULE REMOVED
  2903.     AX = 0065h
  2904.     ES = module handle
  2905. SeeAlso: AX=0064h
  2906. --------V-42---------------------------------
  2907. INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
  2908. Desc:    contains the address of the original INT 10 handler which an EGA+
  2909.       video adapter replaces with its own on-board BIOS code
  2910. SeeAlso: INT 10
  2911. Note:    not used by PS/2 built-in VGA or XGA
  2912. --------h-42---------------------------------
  2913. INT 42 - Z100 - Master 8259 - Timer
  2914. SeeAlso: INT 41"Z100",INT 43"Z100"
  2915. --------b-42---------------------------------
  2916. INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
  2917. Note:    if the second WD1002 controller in the system finds INT 40 already in
  2918.       use, it uses this vector to cascade to the first controller's BIOS
  2919. SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
  2920. --------O-42---------------------------------
  2921. INT 42 - Acorn BBS Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
  2922.     AL = byte to be written
  2923.     BH = file handle
  2924. Return: flags destroyed
  2925. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  2926. --------V-427500-----------------------------
  2927. INT 42 U - Toshiba laptops - ???
  2928.     AX = 7500h
  2929.     BL = ??? (00h or 01h)
  2930. Return: ???
  2931. Note:    used by Toshiba utility VCHAD.EXE
  2932. SeeAlso: AX=7501h,AX=7503h
  2933. --------V-427501-----------------------------
  2934. INT 42 U - Toshiba laptop - GET ??? DATA
  2935.     AX = 7501h
  2936.     DS:DI -> data area to be filled ???
  2937. Return: area filled with data ???
  2938. Note:    used by Toshiba utility VCHAD.EXE
  2939. SeeAlso: AX=7500h,AX=7502h,AX=7503h
  2940. --------V-427502-----------------------------
  2941. INT 42 U - Toshiba laptops - SET ??? DATA
  2942.     AX = 7502h
  2943.     DS:DI -> data area ???
  2944. Return: ???
  2945. Note:    used by Toshiba utility VCHAD.EXE
  2946. SeeAlso: AX=7501h,AX=7503h
  2947. --------V-427503-----------------------------
  2948. INT 42 - Toshiba laptops - GET DISPLAY STATUS
  2949.     AX = 7503h
  2950. Return: AX = 7575h if supported
  2951.     CX = 0001h if supported
  2952.     BH = display type (00h color, 03h monochrome)
  2953.     BL = display state
  2954.         01h internal LCD display is active
  2955.         02h external VGA display is active
  2956.         03h both displays active / DeskStation display mode enabled
  2957.         (not possible on all machines)
  2958. Note:    used by VCHAD.EXE and supported by all Toshiba VGA laptops
  2959.       (string "TOSHIBA " at F000:E010h should be checked before call)
  2960.     INT 42 normally points to F000:F065h but may be redirected by QEMM386
  2961. SeeAlso: AX=7500h,AX=7504h,INT 15/AH=C0h
  2962. --------V-427504-----------------------------
  2963. INT 42 U - Toshiba laptops - ???
  2964.     AX = 7504h
  2965.     BL = ???
  2966. Return: BH = ???
  2967. Note:    used by Toshiba utility VCHAD.EXE
  2968. SeeAlso: AX=7500h,AX=7503h
  2969. --------V-43---------------------------------
  2970. INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
  2971.    points at graphics data for characters 00h-7Fh of the current font
  2972. SeeAlso: INT 1F,INT 44"VIDEO"
  2973. --------h-43---------------------------------
  2974. INT 43 - Z100 - Master 8259 - Slave 8259 input
  2975. Note:    slave runs in special fully nested mode
  2976. SeeAlso: INT 42"Z100",INT 44"Z100"
  2977. --------O-43---------------------------------
  2978. INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
  2979.     BH = file handle
  2980. Return: CF clear if successful
  2981.         AL = byte read from file
  2982.     CF set on error
  2983. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
  2984. --------V-44---------------------------------
  2985. INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
  2986. Desc:    this vector points at graphics data for current character font
  2987. SeeAlso: INT 1F,INT 43"VIDEO"
  2988. --------N-44---------------------------------
  2989. INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
  2990. --------I-44---------------------------------
  2991. INT 44 - IBM 3270-PC High Level Language API
  2992.     DS:SI -> parameter control block
  2993. --------h-44---------------------------------
  2994. INT 44 - Z100 - Master 8259 - Serial A
  2995. SeeAlso: INT 43"Z100",INT 45"Z100"
  2996. --------v-44---------------------------------
  2997. INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
  2998. SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
  2999. --------O-4400-------------------------------
  3000. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  3001.     AH = 00h
  3002.     AL = function
  3003.         00h get current filing system
  3004.         Return: AL = filing system (see #1645)
  3005.         01h get address of commandline tail
  3006.         Return: BX buffer filled with address of command tail in I/O
  3007.                   processor address space (use INT 4A/AL=05h to
  3008.                   retrieve)
  3009.         FFh flush all files onto secondary storage
  3010.     BX -> 4-byte data buffer
  3011. Note:    the commandline tail is terminated with a carriage return (0Dh)
  3012. SeeAlso: INT 40"Acorn",INT 45"Acorn"
  3013.  
  3014. (Table 1645)
  3015. Values for BBC Master filing system:
  3016.  00h    none
  3017.  01h    1200 bps cassette
  3018.  02h    300 bps cassette
  3019.  03h    ROM FS
  3020.  04h    DFS
  3021.  05h    ANFS/NFS
  3022.  06h    TFS
  3023.  08h    ADFS
  3024. --------O-44---------------------------------
  3025. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  3026.     AH = nonzero file handle
  3027.     AL = function
  3028.         00h get sequential pointer for file
  3029.         01h set sequential pointer for file
  3030.         02h get length of file
  3031.     BX -> 4-byte data buffer
  3032. Return: BX buffer updated if appropriate
  3033. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
  3034. --------h-45---------------------------------
  3035. INT 45 - Z100 - Master 8259 - Serial B
  3036. SeeAlso: INT 44"Z100",INT 46"Z100"
  3037. --------O-45---------------------------------
  3038. INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
  3039.     AL = function
  3040.         00h save block of memory as file
  3041.         01h update directory entry for existing file
  3042.         02h set load address for existing file
  3043.         03h set execution address for existing file
  3044.         04h set attributes for existing file
  3045.         05h read directory
  3046.         06h delete file
  3047.         FFh load file
  3048.     DS:BX -> control block (see #1646)
  3049. Return: FLAGS destroyed
  3050.     AL = file type
  3051.         00h not found
  3052.         01h file found
  3053.         02h directory found
  3054.         FFh protected file
  3055. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
  3056.  
  3057. Format of BBC Master control block:
  3058. Offset    Size    Description    (Table 1646)
  3059.  00h    WORD    address of CR-terminated filename
  3060.  02h    DWORD    load address of file
  3061.  06h    DWORD    execution address of file
  3062.  0Ah    DWORD    start address of data to save
  3063.  0Eh    DWORD    end address of data to save, or file attributes
  3064.         file attributes in low byte (see #1647)
  3065.         other three bytes are filing-system specific file attributes
  3066.  
  3067. Bitfields for BBC Master file attributes:
  3068. Bit(s)    Description    (Table 1647)
  3069.  0    no owner read access
  3070.  1    no owner write access
  3071.  2    not executable by owner
  3072.  3    not deletable by owner
  3073.  4    no public read access
  3074.  5    no public write access
  3075.  6    not executable with public access
  3076.  7    not deletable with public access
  3077. --------B-46---------------------------------
  3078. INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
  3079. SeeAlso: INT 13/AH=09h,INT 41,INT 60"Adaptec",INT C0"AMI"
  3080. --------h-46---------------------------------
  3081. INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
  3082. SeeAlso: INT 45"Z100",INT 47"Z100"
  3083. --------O-46---------------------------------
  3084. INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
  3085. Return: CF clear if successful
  3086.         AL = character read
  3087.     CF set on error
  3088.         AL = error code
  3089. SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  3090. --------h-47---------------------------------
  3091. INT 47 - Z100 - Master 8259 - Printer
  3092. SeeAlso: INT 46"Z100",INT 48"Z100"
  3093. --------O-47---------------------------------
  3094. INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
  3095.     AL = character to be written
  3096. Return: FLAGS destroyed
  3097. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
  3098. --------b-47---------------------------------
  3099. INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
  3100. Desc:    used by the second WD1002-27X controller to cascade to the first
  3101.       controller's INT 40
  3102. SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
  3103. ----------478000-----------------------------
  3104. INT 47 - SQL Base - DATABASE ENGINE API
  3105.     AX = 8000h
  3106.     DS:BX -> parameter block, first word is function number
  3107. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  3108. SeeAlso: AX=8001h
  3109.  
  3110. (Table 1648)
  3111. Values for SQL Base function number:
  3112.  01h    "SQLFINI" initalialize application's use of the database
  3113.  02h    "SQLFDON" application is done using the database
  3114.  03h    "SQLFCON" connect to a cursor/database
  3115.  04h    "SQLFDIS" disconnect from a cursor/database
  3116.  05h    "SQLFCOM" compile a SQL command
  3117.  06h    "SQLFEXE" execute a SQL command
  3118.  07h    "SQLFCEX" compile and execute a SQL command
  3119.  08h    "SQLFCMT" commit a transaction to the database
  3120.  09h    "SQLFDES" describe the items of a SELECT statement
  3121.  0Ah    "SQLFGFI" get fetch information
  3122.  0Bh    "SQLFFBK" fetch previous result row from SELECT statement
  3123.  0Ch    "SQLFFET" fetch next result row from SELECT statement
  3124.  0Dh    "SQLFEFB" enable fetch backwards
  3125.  0Eh    "SQLFPRS" position in result set
  3126.  0Fh    "SQLFURS" undo result set
  3127.  10h    "SQLFNBV" get number of bind variables
  3128.  11h    "SQLFBND" bind data variables
  3129.  12h    "SQLFBNN" bind numerics
  3130.  13h    "SQLFBLN" bind long number
  3131.  14h    "SQLFBLD" bind long data variables
  3132.  15h    "SQLFSRS" start restriction set processing
  3133.  16h    "SQLFRRS" restart restriction set processing
  3134.  17h    "SQLFCRS" close restriction set
  3135.  18h    "SQLFDRS" drop restriction set
  3136.  19h    "SQLFARF" apply Roll Forward journal
  3137.  1Ah    "SQLFERF" end Roll Forward journal
  3138.  1Bh    "SQLFSRF" start Roll Forward journal
  3139.  1Ch    "SQLFSTO" store a compiled SQL command
  3140.  1Dh    "SQLFRET" retrieve a compiled SQL command
  3141.  1Eh    "SQLFDST" drop a stored command
  3142.  1Fh    "SQLFCTY" get command type
  3143.  20h    "SQLFEPO" get error position
  3144.  21h    "SQLFGNR" get number of rows
  3145.  22h    "SQLFNSI" get number of select items
  3146.  23h    "SQLFRBF" get Roll Back flag
  3147.  24h    "SQLFRCD" get return code
  3148.  25h    "SQLFROW" get number of ROWs
  3149.  26h    "SQLFSCN" set cursor name
  3150.  27h    "SQLFSIL" set isolation level
  3151.  28h    "SQLFSLP" set log parameters
  3152.  29h    "SQLFSSB" set select buffer
  3153.  2Ah    "SQLFSSS" set sort space
  3154.  2Bh    "SQLFRLO" read long
  3155.  2Ch    "SQLFWLO" write long
  3156.  2Dh    "SQLFLSK" long seek
  3157.  2Eh    "SQLFGLS" get long size
  3158.  2Fh    "SQLFELO" end long operation
  3159.  30h    "SQLFRBK" roll back a transaction from the database
  3160.  31h    "SQLFERR" error message
  3161.  32h    "SQLFCPY" copy
  3162.  33h    "SQLFR01" reserved
  3163.  34h    "SQLFSYS" system
  3164.  35h    "SQLFSTA" statistics
  3165.  36h    "SQLFR02" reserved
  3166.  37h    "SQLFXAD" extra add
  3167.  38h    "SQLFXCN" extra character to number
  3168.  39h    "SQLFXDA" extra date add
  3169.  3Ah    "SQLFXDP" extra date picture
  3170.  3Bh    "SQLFXDV" extra divide
  3171.  3Ch    "SQLFXML" extra multiply
  3172.  3Dh    "SQLFXNP" extra number picture
  3173.  3Eh    "SQLFXPD" extra picture date
  3174.  3Fh    "SQLFXSB" extra subtract
  3175.  40h    "SQLFINS" install database
  3176.  41h    "SQLFDIN" deinstall database
  3177.  42h    "SQLFDIR" directory of databases
  3178.  43h    "SQLFTIO" timeout
  3179.  44h    "SQLFFQN" get fully qualified column name
  3180.  45h    "SQLFEXP" explain execution plan
  3181.  46h    "SQLFFER" get full error
  3182.  47h    "SQLFBKP" begin online backup
  3183.  48h    "SQLFRDC" read backup data chunk
  3184.  49h    "SQLFEBK" end backup
  3185.  4Ah    "SQLFRES" begin restore from backup
  3186.  4Bh    "SQLFWDC" write backup data chunk for restore
  3187.  4Ch    "SQLFRRD" recover restored database to consistent state
  3188.  4Dh    "SQLFERS" end restore
  3189.  4Eh    "SQLFNRR" return number of result set rows
  3190.  4Fh    "SQLFSTR" start restriction mode
  3191.  50h    "SQLFSPR" stop restriction mode
  3192.  51h    "SQLFCNC" connect 2
  3193.  52h    "SQLFCNR" connect with no recovery
  3194.  53h    "SQLFOMS" set output message size
  3195.  54h    "SQLFIMS" set input message size
  3196.  55h    "SQLFSCP" set cache pages
  3197.  56h    "SQLFDSC" describe items of a SELECT statement (external)
  3198.  57h    "SQLFLAB" get label info for items in SELECT statement
  3199.  58h    "SQLFCBV" clear bind variables
  3200.  59h    "SQLFGET" get database information
  3201.  5Ah    "SQLFSET" set database information
  3202.  5Bh    "SQLFTEC" translate error code
  3203. ----------478001-----------------------------
  3204. INT 47 - SQL Base - GET VERSION NUMBER
  3205.     AX = 8001h
  3206. Return: ???
  3207. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  3208. SeeAlso: AX=8000h
  3209. --------B-48---------------------------------
  3210. INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
  3211. SeeAlso: INT 49"PCjr"
  3212. --------h-48---------------------------------
  3213. INT 48 - Z100 - Slave 8259 - S100 vectored line 0
  3214. SeeAlso: INT 47"Z100",INT 49"Z100"
  3215. --------N-48---------------------------------
  3216. INT 48 - Watstar PC Network data pointer 1
  3217. SeeAlso: INT 49"Watstar"
  3218. --------O-48---------------------------------
  3219. INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
  3220. Return: FLAGS destroyed
  3221. Note:    writes a carriage return (0Dh) followed by a linefeed (0Ah)
  3222. SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
  3223. --------b-48---------------------------------
  3224. INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
  3225. Note:    the second WD1002-27X controller in a system uses the low byte to
  3226.       store the number of drives controlled by the second controller,
  3227.       and the high word for temporary storage during track recalculation;
  3228.       the first controller uses offsets 74h-77h in the BIOS data area
  3229.       (see MEMORY.LST) to store data
  3230. SeeAlso: INT 47"SuperBIOS"
  3231. --------V-48---------------------------------
  3232. INT 48 U - Compaq UILIB.EXE - API
  3233.     AX = function (see #1649)
  3234.     BX = call type (0002h) (see #1650)
  3235.     ???
  3236. Return: ???
  3237. Note:    returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
  3238.       listed below
  3239. SeeAlso: AX=1A70h
  3240.  
  3241. (Table 1649)
  3242. Values for valid UILIB function number:
  3243.  1000h    1160h    12D0h    1430h    1570h    1680h    17F0h    1920h    1A90h
  3244.  1010h    1170h    12E0h    1440h    1578h    1690h    1800h    1930h    1AA0h
  3245.  1020h    1180h    12F0h    1450h    1580h    16A0h    1810h    1940h
  3246.  1030h    1190h    1300h    1460h    1590h    16B0h    1820h    1950h
  3247.  1040h    11A0h    1310h    1470h    1594h    16C0h    1830h    1960h
  3248.  1050h    11B0h    1320h    1480h    1598h    16D0h    1840h    1970h
  3249.  1060h    11C0h    1330h    1490h    15A0h    16E0h    1848h    1980h
  3250.  1070h    11D0h    1340h    14A0h    15B0h    16F0h    1850h    1990h
  3251.  1080h    11E0h    1350h    14B0h    15C0h    1700h    1860h    19A0h
  3252.  1090h    11F0h    1360h    14B8h    15D0h    1710h    1870h    19B0h
  3253.  1095h    1200h    1370h    14BBh    15D4h    1720h    1878h    19C0h
  3254.  1098h    1210h    1380h    14C0h    15D8h    1730h    1880h    19D0h
  3255.  10A0h    1220h    1390h    14D0h    15E0h    1735h    1890h    19E0h
  3256.  10C0h    1230h    13A0h    14E0h    15F0h    1740h    1898h    19F0h
  3257.  10D0h    1240h    13B0h    14F0h    1600h    1750h    18A0h    1A00h
  3258.  10E0h    1250h    13B8h    1500h    1610h    1770h    18B0h    1A10h
  3259.  10F0h    1260h    13C0h    1508h    1620h    1780h    18C0h    1A20h
  3260.  1100h    1270h    13D0h    1510h    1630h    1790h    18D0h    1A30h
  3261.  1110h    1280h    13E0h    1520h    1640h    17A0h    18E0h    1A40h
  3262.  1120h    1290h    13F0h    1530h    1650h    17B0h    18F0h    1A50h
  3263.  1130h    12A0h    1400h    1540h    1660h    17C0h    1900h    1A60h
  3264.  1140h    12B0h    1410h    1550h    1664h    17D0h    1909h    1A70h
  3265.  1150h    12C0h    1420h    1560h    1670h    17E0h    1910h    1A80h
  3266. --------V-481A70-----------------------------
  3267. INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
  3268.     AX = 1A70h
  3269.     BX = call type (see #1650)
  3270. Return: CX = 5649h ('VI') if installed
  3271.     DX = 4557h ('EW') if installed
  3272.         AX = version??? (0106h)
  3273.  
  3274. (Table 1650)
  3275. Values for UILIB call type:
  3276.  0000h    near
  3277.  0001h    far
  3278.  0002h    INT (only valid call type when using INT 48)
  3279.  0003h    near
  3280. --------B-49---------------------------------
  3281. INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
  3282. SeeAlso: #1651,INT 48"PCjr"
  3283.  
  3284. Format of PCjr scan-code translation table:
  3285. Offset    Size    Description    (Table 1651)
  3286.  00h    BYTE    number of non-keyboard scancodes in the table
  3287.  01h  N WORDs    high byte 00h (NUL) byte scancode with low order byte
  3288.           representing the scancode mapped values relative to their
  3289.           input values within the range of 56h through 7Eh
  3290. --------h-49---------------------------------
  3291. INT 49 - Z100 - Slave 8259 - S100 vectored line 1
  3292. SeeAlso: INT 48"Z100",INT 4A"Z100"
  3293. --------V-49---------------------------------
  3294. INT 49 - Texas Instruments PC - VIDEO I/O???
  3295.     apparently provides direct video display on the TI Professional PC
  3296. --------N-49---------------------------------
  3297. INT 49 - Watstar PC Network data pointer 2
  3298. SeeAlso: INT 48"Watstar"
  3299. --------O-49---------------------------------
  3300. INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
  3301.     AL = character to be written
  3302. Return: FLAGS destroyed
  3303. Note:    converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
  3304. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
  3305. --------a-490001-----------------------------
  3306. INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
  3307.     AX = 0001h
  3308. Return: AX = status (see #1652)
  3309.     BX,CX,DX destroyed
  3310. Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
  3311.       providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
  3312. Note:    INT 49 is the default, but may be overridden on the commandline.  The
  3313.       actual interrupt in use may be found by searching for the signature
  3314.       "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
  3315.       the interrupt handler (this is also the installation check).    MAGic
  3316.       uses CodeRunneR, which places the signature "RT" at offset 0000h in
  3317.       the interrupt handler's segment, followed by MAGic's TSR ID of
  3318.       "VMAG".
  3319. SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
  3320. Index:    installation check;MAGic
  3321.  
  3322. (Table 1652)
  3323. Values for MAGic status:
  3324.  0000h    cannot magnify current video mode
  3325.  0002h    magnified (text mode)
  3326.  0003h    magnified (graphics mode)
  3327.  FFFDh    function works only in magnified mode
  3328.  FFFFh    MAGic busy, retry later
  3329. --------a-490002-----------------------------
  3330. INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
  3331.     AX = 0002h
  3332. Return: AX = status (see #1652)
  3333.     BX,CX,DX destroyed
  3334. SeeAlso: AX=0001h
  3335. --------a-490003-----------------------------
  3336. INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
  3337.     AX = 0003h
  3338.     BX = vertical position (character row [text] or pixel row [graphics])
  3339.     DX = horizontal position (char column [text] or 8-pixel units [gr])
  3340. Return: AX = status
  3341.         0000h successful
  3342.         FFFFh MAGic busy, retry later
  3343.     BX,CX,DX destroyed
  3344. Note:    window is not moved if the position is inside the current window
  3345. SeeAlso: AX=0001h,AX=0004h,AX=0005h
  3346. --------a-490004-----------------------------
  3347. INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
  3348.     AX = 0004h
  3349.     BX = vertical position of upper left corner
  3350.     DX = horizontal position
  3351. Return: AX = status (see AX=0003h)
  3352.     BX,CX,DX destroyed
  3353. SeeAlso: AX=0001h,AX=0003h,AX=0005h
  3354. --------a-490005-----------------------------
  3355. INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
  3356.     AX = 0005h
  3357. Return: AX = status
  3358.         0000h successful
  3359.         BX = vertical position (char row or pixel row)
  3360.         DX = horizontal position (char column or 8-pixel units)
  3361.         FFFFh MAGic busy, retry later
  3362.         BX,DX destroyed
  3363.     CX destroyed
  3364. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
  3365. --------a-490006-----------------------------
  3366. INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
  3367.     AX = 0006h
  3368. Return: AX = status
  3369.         0000h successful
  3370.         BX = vertical size (char rows or pixel rows)
  3371.         DX = horizontal size (char cols or 8-pixel units)
  3372.         FFFFh MAGic busy, retry later
  3373.         BX,DX destroyed
  3374.     CX destroyed
  3375. SeeAlso: AX=0001h,AX=0005h,AX=0007h
  3376. --------a-490007-----------------------------
  3377. INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
  3378.     AX = 0007h
  3379. Return: AX = status
  3380.         0000h successful
  3381.         BX = vertical size (char rows or pixel rows)
  3382.         DX = horizontal size (char cols or 8-pixel units)
  3383.         FFFEh invalid function
  3384.         FFFFh MAGic busy, retry later
  3385.         BX,DX destroyed
  3386.     CX destroyed
  3387. BUG:    in v1.16 and v1.17, this function is not recognized as valid, but
  3388.       AX=0000h is accepted and will branch into hyperspace
  3389. SeeAlso: AX=0001h,AX=0006h
  3390. --------a-490008-----------------------------
  3391. INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
  3392.     AX = 0008h
  3393.     BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
  3394. Return: AX = status
  3395.         0000h successful
  3396.         FFFBh scaling factor only available in MAGic Deluxe
  3397.         FFFCh already in magnified state, can't set size
  3398. Notes:    this call specifies the amount a subsequent call to AX=0001h should
  3399.       magnify the display
  3400.     scaling factors greater than 2 are only available in MAGic Deluxe
  3401. SeeAlso: AX=0001h
  3402. --------B-4A---------------------------------
  3403. INT 4A C - SYSTEM - USER ALARM HANDLER
  3404. Desc:    This interrupt is invoked by the BIOS when a real-time clock alarm
  3405.       occurs; an application may use it to perform an action at a
  3406.       predetermined time.
  3407. Note:    this interrupt is called from within a hardware interrupt handler,
  3408.       so all usual precautions against reentering DOS must be taken
  3409. SeeAlso: INT 1A/AH=06h
  3410. --------h-4A---------------------------------
  3411. INT 4A - Z100 - Slave 8259 - S100 vectored line 2
  3412. SeeAlso: INT 49"Z100",INT 4B"Z100"
  3413. --------O-4A---------------------------------
  3414. INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
  3415.     AL = function code
  3416.         FAh transfer data between 80186 and 65C12 I/O processor
  3417.     DS:BX -> control block (see #1653)
  3418. Return: FLAGS destroyed
  3419.     control block updated
  3420. Note:    there are more functions than are listed here, but details are not
  3421.       available
  3422. SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
  3423.  
  3424. Format of BBC Master control block for function FAh:
  3425. Offset    Size    Description    (Table 1653)
  3426.  00h    BYTE    number of parameters sent to I/O processor (0Dh,0Eh)
  3427.  01h    BYTE    number of parameters read from I/O processor (01h)
  3428.  02h    DWORD    I/O processor address
  3429.  06h    DWORD    80186 segment:offset address
  3430.  0Ah    WORD    number of bytes to transfer
  3431.  0Ch    BYTE    operation type
  3432.         00h write to 65C12 at 24 us/byte
  3433.         01h read from 65C12 at 24 us/byte
  3434.         02h write to 65C12 at 26 us/word
  3435.         03h read from 65C12 at 26 us/word
  3436.         04h write to 65C12 at 10 us/byte using 256-byte blocks
  3437.         05h read from 65C12 at 10 us/byte using 256-byte blocks
  3438.  0Dh    BYTE    65C12 memory access control (only used if offset 00h = 0Eh)
  3439.         (see #1654)
  3440.  
  3441. Bitfields for 65C12 memory access control:
  3442. Bit(s)    Description    (Table 1654)
  3443.  7    unused
  3444.  6    always use main screen memory if I/O addr 3000h-7FFFh (overrides bit 5)
  3445.  5    use shadow screen memory if screen address specified
  3446.  4    use current ROM rather than ROM selected by bits 3-0 (only if I/O
  3447.       address between 8000h and BFFFh)
  3448.  3-0    paged ROM number
  3449. --------h-4B---------------------------------
  3450. INT 4B - Z100 - Slave 8259 - S100 vectored line 3
  3451. SeeAlso: INT 4A"Z100",INT 4C"Z100"
  3452. --------d-4B---------------------------------
  3453. INT 4B - Common Access Method SCSI interface (draft revision 1.9)
  3454.     ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
  3455. Notes:    the CAM committee moved the interface to INT 4F after revision 1.9
  3456.       to avoid conflicting with the IBM SCSI interface and the Virtual
  3457.       DMA specification
  3458.     the installation check for the driver is the string "SCSI_CAM" eight
  3459.       bytes past the INT 4Bh handler
  3460.     the only driver to date reported to use the CAM interface on INT 4B
  3461.       instead of INT 4F is from Future Domain (which has drivers for CAM
  3462.       on either interrupt)
  3463. SeeAlso: INT 4F/AX=8100h
  3464. Index:    installation check;Common Access Method SCSI interface
  3465. --------O-4B---------------------------------
  3466. INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
  3467.     AL = function code
  3468.     BL = first parameter
  3469.     BH = second parameter (if needed)
  3470. Return: BL = first return parameter
  3471.     BH = second return parameter
  3472.     CF depends on function
  3473. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
  3474. --------d-4B80-------------------------------
  3475. INT 4B - IBM SCSI interface
  3476.     AH = 80h
  3477.     details not yet available
  3478. --------d-4B8102DX0000-----------------------
  3479. INT 4B - Virtual DMA Specification (VDS) - GET VERSION
  3480.     AX = 8102h
  3481.     DX = 0000h
  3482. Return: CF clear if successful
  3483.         AH = major version number
  3484.         AL = minor version number
  3485.         BX = product number (see #1655)
  3486.         CX = product revision number
  3487.         always 0000h for QMAPS and HPMM.SYS
  3488.         always 0001h for Microsoft's EMM386.EXE v4.20-4.41
  3489.            DX = flags (see #1657)
  3490.         SI:DI = maximum DMA buffer size
  3491.     CF set on error
  3492.         AL = error code (see #1656)
  3493. Note:    bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
  3494.       apparently not always the case
  3495. SeeAlso: INT 2C/AX=002Bh,INT 31
  3496. Index:    installation check;Virtual DMA Spec
  3497.  
  3498. (Table 1655)
  3499. Values for VDS product number:
  3500.  0000h    for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
  3501.  0001h    for Microsoft's EMM386.EXE
  3502.  0003h    for Windows 3.x WIN386.EXE
  3503.  0EDCh    for DR-DOS 6.0 EMM386.SYS
  3504.  4560h    ("E`") for Qualitas' 386MAX
  3505.  4D43h    ("MC") for V Communications' Memory Commander
  3506.  5145h    ("QE") for Quarterdeck's QEMM-386
  3507.  524Dh    ("RM") for Helix's Netroom RM386
  3508.  
  3509. (Table 1656)
  3510. Values for VDS error code:
  3511.  01h    region not in contiguous memory
  3512.  02h    region crossed a physical alignment boundary
  3513.  03h    unable to lock pages
  3514.  04h    no buffer available
  3515.  05h    region too large for buffer
  3516.  06h    buffer currently in use
  3517.  07h    invalid memory region
  3518.  08h    region was not locked
  3519.  09h    number of physical pages greater than table length
  3520.  0Ah    invalid buffer ID
  3521.  0Bh    copy out of buffer range
  3522.  0Ch    invalid DMA channel number
  3523.  0Dh    disable count overflow
  3524.  0Eh    disable count underflow
  3525.  0Fh    function not supported
  3526.  10h    reserved flag bits set in DX
  3527.  
  3528. Bitfields for VDS flags:
  3529. Bit(s)    Description    (Table 1657)
  3530.  0    PC/XT bus (DMA in first megabyte only)
  3531.  1    physical buffer/remap region in first megabyte
  3532.  2    automatic remap enabled
  3533.  3    all memory is physically contiguous
  3534.  4-15    reserved (zero)
  3535.  
  3536. Format of DMA descriptor structure (DDS):
  3537. Offset    Size    Description    (Table 1658)
  3538.  00h    DWORD    region size
  3539.  04h    DWORD    offset
  3540.  08h    WORD    segment/selector
  3541.  0Ah    WORD    buffer ID
  3542.  0Ch    DWORD    physical address
  3543.  
  3544. Format of Extended DMA descriptor structure (EDDS):
  3545. Offset    Size    Description    (Table 1659)
  3546.  00h    DWORD    region size
  3547.  04h    DWORD    offset
  3548.  08h    WORD    segment/selector
  3549.  0Ah    WORD    reserved
  3550.  0Ch    WORD    number available
  3551.  0Eh    WORD    number used
  3552.  10h    DWORD    region 0 physical address
  3553.  14h    DWORD    region 0 size in bytes
  3554.  18h    DWORD    region 1 physical address
  3555.  1Ch    DWORD    region 1 size in bytes
  3556.     ...
  3557.  
  3558. Format of Extended DMA descriptor structure (EDDS) with page table entries:
  3559. Offset    Size    Description    (Table 1660)
  3560.  00h    DWORD    region size
  3561.  04h    DWORD    offset
  3562.  08h    WORD    segment/selector
  3563.  0Ah    WORD    reserved
  3564.  0Ch    WORD    number available
  3565.  0Eh    WORD    number used
  3566.  10h    DWORD    page table entry 0 (same as 80386 page table entry)
  3567.  14h    DWORD    page table entry 1
  3568.     ...
  3569. Note:    bits 1-11 of the page table entries should be zero; bit 0 set if page
  3570.       is present and locked
  3571. --------d-4B8103-----------------------------
  3572. INT 4B - Virtual DMA Specification - LOCK DMA REGION
  3573.     AX = 8103h
  3574.     DX = flags (see #1661)
  3575.     ES:DI -> DMA descriptor structure (see #1658,#1659,#1660)
  3576. Return: CF clear if successful
  3577.         DDS physical address field filled in
  3578.         DDS buffer ID field filled (0000h if no buffer allocated)
  3579.     CF set on error
  3580.         AL = error code (see #1656)
  3581.         DDS region size field filled wth maximum contiguous length in bytes
  3582. BUGS:    Windows 3.0 does not correctly support automatic remapping or copying
  3583.       in enhanced mode
  3584.     Windows 3.0 in enhanced mode does not return a correct code on error
  3585. SeeAlso: AX=8104h,AX=8105h
  3586.  
  3587. Bitfields for VDS flags:
  3588. Bit(s)    Description    (Table 1661)
  3589.  0    reserved (zero)
  3590.  1    data should be copied into buffer (ignored if 2 set)
  3591.  2    buffer should not be allocated if region noncontiguous or crosses
  3592.       physical alignment boundary specified by 4-5
  3593.  3    don't attempt automatic remap
  3594.  4    region must not cross 64K physical alignment boundary
  3595.  5    region must not cross 128K physical alignment boundary
  3596.  6-15    reserved (zero)
  3597. --------d-4B8104-----------------------------
  3598. INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
  3599.     AX = 8104h
  3600.     DX = flags
  3601.         bit 0: reserved (zero)
  3602.         bit 1: data should be copied out of buffer
  3603.         bits 2-15 reserved (zero)
  3604.     ES:DI -> DMA descriptor structure (see #1658,#1659) with region size,
  3605.           physical address, and buffer ID fields set
  3606. Return: CF clear if successful
  3607.         DDS physical address field set
  3608.         DDS buffer ID field set (0000h if no buffer allocated)
  3609.     CF set on error
  3610.         AL = error code (see #1656)
  3611.         DDS region size field filled wth maximum contiguous length in bytes
  3612. Note:    Windows 3.0 does not check whether the region extends beyond the end of
  3613.       a segment
  3614. BUG:    Windows 3.0 in enhanced mode does not return a correct code on error
  3615. SeeAlso: AX=8103h,AX=8106h
  3616. --------d-4B8105-----------------------------
  3617. INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
  3618.     AX = 8105h
  3619.     DX = flags (see #1662)
  3620.     ES:DI -> Extended DMA descriptor structure (see #1659,#1660)
  3621.           region size, linear segment, linear offset, and number avail
  3622.           fields set
  3623. Return: CF clear if successful
  3624.         EDDS number used field set
  3625.         if DX bit 6 set, lower 12 bits of BX = offset in first page
  3626.     CF set on error
  3627.         AL = error code (see #1656)
  3628.         EDDS region size field filled with max length in bytes that can be
  3629.           locked and described in the EDDS table
  3630. BUG:    Windows 3.0 in enhanced mode may return zero instead of the physical
  3631.       page address for pages which were originally not present
  3632. SeeAlso: AX=8103h,AX=8106h
  3633.  
  3634. Bitfields for VDS flags:
  3635. Bit(s)    Description    (Table 1662)
  3636.  0-5    reserved (zero)
  3637.  6    EDDS should be returned with page table entries
  3638.  7    only present pages should be locked (not-present pages receive entry
  3639.       of 0000h)
  3640.  8-15    reserved (zero)
  3641. --------d-4B8106-----------------------------
  3642. INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
  3643.     AX = 8106h
  3644.     DX = flags (see #1663)
  3645.     ES:DI -> Extended DMA descriptor structure (see #1659,#1660) returned
  3646.           by AX=8105h
  3647. Return: CF clear if successful
  3648.     CF set on error
  3649.         AL = error code (see #1656)
  3650. Note:    according to the Microsoft version of the VDS specification, the
  3651.       actual scatter/gather list is ignored, while according to the IBM
  3652.       version of the specification, "the result of a LOCK operation"
  3653.       must be provided to this function
  3654. SeeAlso: AX=8104h,AX=8105h
  3655.  
  3656. Bitfields for VDS flags:
  3657. Bit(s)    Description    (Table 1663)
  3658.  0-5    reserved (zero)
  3659.  6    EDDS contains page table entries
  3660.  7    EDDS may contain not-present pages (entry = 0000h)
  3661.  8-15    reserved (zero)
  3662. --------d-4B8107-----------------------------
  3663. INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
  3664.     AX = 8107h
  3665.     DX = flags
  3666.         bit 0: reserved (zero)
  3667.         bit 1: data should be copied into buffer
  3668.         bits  2-15 reserved (zero)
  3669.     ES:DI -> DMA descriptor structure (see #1658) with region size set
  3670.           (also region offset and region segment if DX bit 1 set)
  3671. Return: CF clear if successful
  3672.         DDS physical address and buffer ID set
  3673.         DDS region size filled with length of buffer
  3674.     CF set on error
  3675.         AL = error code (see #1656)
  3676. SeeAlso: AX=8108h
  3677. --------d-4B8108-----------------------------
  3678. INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
  3679.     AX = 8108h
  3680.     DX = flags
  3681.         bit 0: reserved (zero)
  3682.         bit 1: data should be copied out of buffer
  3683.         bits 2-15 reserved (zero)
  3684.     ES:DI -> DMA descriptor structure (see #1658,#1659) with buffer ID set
  3685.           (also region size/region offset/segment if DX bit 1 set)
  3686. Return: CF clear if successful
  3687.     CF set on error
  3688.         AL = error code (see #1656)
  3689. BUG:    under Windows 3.0 Enhanced mode, you must specify that data be copied
  3690.       for this function to work correctly
  3691. SeeAlso: AX=8107h
  3692. --------d-4B8109DX0000-----------------------
  3693. INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
  3694.     AX = 8109h
  3695.     DX = 0000h
  3696.     ES:DI -> DMA descriptor structure (see #1658,#1659) with buffer ID,
  3697.           region segment/offset, and region size fields set
  3698.     BX:CX = starting offset into DMA buffer
  3699. Return: CF clear if successful
  3700.     CF set on error
  3701.         AL = error code (see #1656)
  3702. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3703. SeeAlso: AX=810Ah
  3704. --------d-4B810ADX0000-----------------------
  3705. INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
  3706.     AX = 810Ah
  3707.     DX = 0000h
  3708.     ES:DI -> DMA descriptor structure (see #1658,#1660) with buffer ID,
  3709.           region segment/offset, and region size fields set
  3710.     BX:CX = starting offset into DMA buffer
  3711. Return: CF clear if successful
  3712.     CF set on error
  3713.         AL = error code (see #1656)
  3714. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3715. SeeAlso: AX=8109h
  3716. --------d-4B810B-----------------------------
  3717. INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
  3718.     AX = 810Bh
  3719.     BX = DMA channel number
  3720.     DX = 0000h
  3721. Return: CF clear if successful
  3722.     CF set on error
  3723.         AL = error code (see #1656)
  3724. SeeAlso: AX=810Ch
  3725. --------d-4B810C-----------------------------
  3726. INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
  3727.     AX = 810Ch
  3728.     BX = DMA channel number
  3729.     DX = 0000h
  3730. Return: CF clear if successful
  3731.         ZF set if disable count decremented to zero
  3732.     CF set on error
  3733.         AL = error code (see #1656)
  3734. SeeAlso: AX=810Bh
  3735. --------Q-4B810D-----------------------------
  3736. INT 4B - QEMM-386 - BUG
  3737.     AX = 810Dh
  3738. Note:    the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
  3739.       call
  3740. --------h-4C---------------------------------
  3741. INT 4C - Z100 - Slave 8259 - S100 vectored line 4
  3742. SeeAlso: INT 4B"Z100",INT 4D"Z100"
  3743. --------O-4C---------------------------------
  3744. INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
  3745.     DS:BX -> CR-terminated command string
  3746. Return: FLAGS destroyed
  3747. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
  3748. --------h-4D---------------------------------
  3749. INT 4D - Z100 - Slave 8259 - S100 vectored line 5
  3750. SeeAlso: INT 4C"Z100",INT 4E"Z100"
  3751. --------d-4E---------------------------------
  3752. INT 4E - TI Professional PC - DISK I/O
  3753.     used instead of INT 13 on the TI Professional PC
  3754. SeeAlso: INT 13
  3755. --------h-4E---------------------------------
  3756. INT 4E - Z100 - Slave 8259 - S100 vectored line 6
  3757. SeeAlso: INT 4D"Z100",INT 4F"Z100"
  3758. --------h-4F---------------------------------
  3759. INT 4F - Z100 - Slave 8259 - S100 vectored line 7
  3760. SeeAlso: INT 4E"Z100"
  3761. --------d-4F8100-----------------------------
  3762. INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
  3763.     AX = 8100h
  3764.     ES:BX -> CAM Control Block (CCB) (see #1665)
  3765. Return: AH = status
  3766.         00h successful
  3767.         01h invalid CCB address (0000h:0000h)
  3768. Note:    the SCSI Interface Module (SIM) may complete the requested function
  3769.       and invoke the completion callback function before this call returns
  3770. SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
  3771.  
  3772. (Table 1664)
  3773. Values for CAM function code:
  3774.  00h    NOP
  3775.  01h    execute SCSI I/O
  3776.  02h    get device type
  3777.  03h    path inquiry
  3778.  04h    release SIM queue
  3779.  05h    set async callback
  3780.  06h    set device type
  3781.  07h-0Fh reserved
  3782.  10h    abort SCSI command
  3783.  11h    reset SCSI bus
  3784.  12h    reset SCSI device
  3785.  13h    terminate I/O process
  3786.  14h-1Fh reserved
  3787.  20h    engine inquiry
  3788.  21h    execute engine request
  3789.  22h-2Fh reserved
  3790.  30h    enable logical unit number
  3791.  31h    execute target I/O
  3792.  32h-7Fh reserved
  3793.  80h-FFh vendor-specific functions
  3794.  
  3795. Format of CAM Control Block:
  3796. Offset    Size    Description    (Table 1665)
  3797.  00h    DWORD    physical address of this CCB
  3798.  04h    WORD    CAM control block length
  3799.  06h    BYTE    function code (see #1664)
  3800.  07h    BYTE    CAM status (see #1668)
  3801.  08h    BYTE    SCSI status
  3802.  09h    BYTE    path ID (FFh = XPT)
  3803.  0Ah    BYTE    target ID
  3804.  0Bh    BYTE    logical unit number
  3805.  0Ch    WORD    CAM flags (see #1666)
  3806.  0Eh    BYTE    CAM address flags (see #1667)
  3807.  0Fh    BYTE    target-mode flags (see #1669)
  3808. ---function 02h---
  3809.  10h    DWORD    pointer to 36-byte buffer for inquiry data or 0000h:0000h
  3810.  14h    BYTE    peripheral device type of target logical unit number
  3811. ---function 03h---
  3812.  10h    BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
  3813.         09h-FFh = rev no, i.e. 23h = rev 2.3)
  3814.  11h    BYTE    SCSI capabilities (see #1670)
  3815.  12h    BYTE    target mode support
  3816.         bit 7: processor mode
  3817.         bit 6: phase-cognizant mode
  3818.         bit 5-0: reserved
  3819.  13h    BYTE    miscellaneous flags
  3820.         bit 7: scanned high to low instead of low to high
  3821.         bit 6: removables not included in scan
  3822.         bit 5: inquiry data not kept by XPT
  3823.         bits 4-0: reserved
  3824.  14h    WORD    engine count
  3825.  16h 14 BYTEs    vendor-specific data
  3826.  24h    DWORD    size of private data area
  3827.  28h    DWORD    asynchronous event capabilities (see #1671)
  3828.  2Ch    BYTE    highest path ID assigned
  3829.  2Dh    BYTE    SCSI device ID of initiator
  3830.  2Eh  2 BYTEs    reserved
  3831.  30h 16 BYTEs    SIM vendor ID
  3832.  40h 16 BYTEs    HBA (host bus adaptor) vendor ID
  3833.  50h  4 BYTEs    operating-system dependant usage
  3834. ---functions 00h,04h,11h,12h---
  3835.  no additional fields
  3836. ---function 05h---
  3837.  10h    DWORD    asynchronous event enables (see function 03h above)
  3838.  14h    DWORD    pointer to asynchronous callback routine
  3839.  18h    DWORD    pointer to peripheral driver buffer
  3840.  1Ch    BYTE    size of peripheral buffer
  3841. ---function 06h---
  3842.  10h    BYTE    peripheral device type of target
  3843. ---functions 10h,13h---
  3844.  10h    DWORD    pointer to CCB to be aborted
  3845. ---function 20h---
  3846.  10h    WORD    engine number
  3847.  12h    BYTE    engine type
  3848.         00h buffer memory
  3849.         01h lossless compression
  3850.         02h lossy compression
  3851.         03h encryption
  3852.  13h    BYTE    engine algorithm ID
  3853.         00h vendor-unique
  3854.         01h LZ1 variation 1 (STAC)
  3855.         02h LZ2 variation 1 (HP DCZL)
  3856.         03h LZ2 variation 2 (Infochip)
  3857.  14h    DWORD    engine memory size
  3858. ---function 21h---
  3859.  10h    DWORD    pointer to peripheral driver
  3860.  14h  4 BYTEs    reserved
  3861.  18h    DWORD    OS-dependent request-mapping info
  3862.  1Ch    DWORD    address of completion callback routine
  3863.  20h    DWORD    pointer to scatter/gather list or data buffer
  3864.  24h    DWORD    length of data transfer
  3865.  28h    DWORD    pointer to engine buffer data
  3866.  2Ch  2 BYTEs    reserved
  3867.  2Eh    WORD    number of scatter/gather entries
  3868.  30h    DWORD    maximum destination data length
  3869.  34h    DWORD    length of destination data
  3870.  38h    DWORD    source residual length
  3871.  3Ch 12 BYTEs    reserved
  3872.  48h    DWORD    OS-dependent timeout value
  3873.  4Ch  4 BYTEs    reserved
  3874.  50h    WORD    engine number
  3875.  52h    WORD    vendor-unique flags
  3876.  54h  4 BYTEs    reserved
  3877.  58h  N BYTEs    private data area for SIM
  3878. ---function 30h---
  3879.  10h    WORD    group 6 vendor-unique CDB length
  3880.  12h    WORD    group 7 vendor-unique CDB length
  3881.  14h    DWORD    pointer to target CCB list
  3882.  18h    WORD    number of target CCBs
  3883. ---other functions---
  3884.  10h    DWORD    pointer to peripheral driver
  3885.  14h    DWORD    pointer to next CCB
  3886.  18h    DWORD    OS-dependent request mapping information
  3887.  1Ch    DWORD    address of completion callback routine
  3888.  20h    DWORD    pointer to scatter/gather list or data buffer
  3889.  24h    DWORD    length of data transfer
  3890.  28h    DWORD    pointer to sense info buffer
  3891.  2Ch    BYTE    length of sense info buffer
  3892.  2Dh    BYTE    CDB length
  3893.  2Eh    WORD    number of scatter/gather entries
  3894.  30h  4 BYTEs    reserved
  3895.  34h    BYTE    SCSI status
  3896.  35h  3 BYTEs    reserved
  3897.  38h    DWORD    residual length
  3898.  40h 12 BYTEs    Command Descriptor Block (CDB)
  3899.  44h    DWORD    OS-dependent timeout value
  3900.  48h    DWORD    pointer to message buffer
  3901.  4Ch    WORD    length of message buffer
  3902.  4Eh    WORD    vendor-unique flags
  3903.  50h    BYTE    tag queue action
  3904.  51h  3 BYTEs    reserved
  3905.  54h  N BYTEs    private data area for SIM
  3906.  
  3907. Bitfields for CAM flags:
  3908. Bit(s)    Description    (Table 1666)
  3909.  0    CDB is a pointer
  3910.  1    tagged queue action enable
  3911.  2    linked CDB
  3912.  3    disable callback on completion
  3913.  4    scatter/gather
  3914.  5    disable autosense
  3915.  7-6    direction (00 reserved, 01 in, 10 out, 11 no data transfer)
  3916.  9-8    reserved
  3917.  10    engine synchronize
  3918.  11    SIM queue freeze
  3919.  12    SIM queue priority
  3920.     1 head insertion
  3921.     0 tail insertion (normal)
  3922.  13    disable synchronous transfers    / exclusive
  3923.  14    initiate synchronous transfers    \ mutually
  3924.  15    disable disconnect
  3925.  
  3926. Bitfields for CAM address flags:
  3927. Bit(s)    Description    (Table 1667)
  3928.  7    SG list/data (0 = host, 1 = engine)
  3929.  6    CDB pointer    (6-1: 0=virtual addr, 1=phys addr)
  3930.  5    SG list/data
  3931.  4    sense buffer
  3932.  3    message buffer
  3933.  2    next CCB
  3934.  1    callback on completion
  3935.  0    reserved
  3936.  
  3937. (Table 1668)
  3938. Values for CAM status:
  3939.  00h    request in progress
  3940.  01h    request successful
  3941.  02h    host aborted request
  3942.  03h    unable to abort request
  3943.  04h    request completed with error
  3944.  05h    CAM is busy
  3945.  06h    invalid request
  3946.  07h    invalid path ID
  3947.  08h    no such SCSI device
  3948.  09h    unable to terminate I/O process
  3949.  0Ah    timeout on target selection
  3950.  0Bh    timeout on command
  3951.  0Dh    receive message rejection
  3952.  0Eh    sent/received SCSI bus reset
  3953.  0Fh    detected uncorrectable parity error
  3954.  10h    Autosense request failed
  3955.  11h    no HBA detected
  3956.  12h    data over/underrun
  3957.  13h    bus freed unexpectedly
  3958.  14h    target bus phase sequence failure
  3959.  15h    CCB too small
  3960.  16h    requested capability not available
  3961.  17h    sent bus device reset
  3962.  18h    terminate I/O process
  3963.  38h    invalid LUN
  3964.  39h    invalid target ID
  3965.  3Ah    unimplemented function
  3966.  3Bh    nexus not established
  3967.  3Ch    invalid initiator ID
  3968.  3Dh    received SCSI Command Descriptor Block
  3969.  3Eh    LUN already enabled
  3970.  3Fh    SCSI bus busy
  3971. Note:    bit 6 set to indicate frozen SIM queue
  3972.     bit 7 set to indicate valid autosense
  3973.  
  3974. Bitfields for CAM target-mode flags:
  3975. Bit(s)    Description    (Table 1669)
  3976.  7    data buffer valid
  3977.  6    status valid
  3978.  5    message buffer valid
  3979.  4    reserved
  3980.  3    phase-cognizant mode
  3981.  2    target CCB available
  3982.  1    disable autodisconnect
  3983.  0    disable autosave/restore
  3984.  
  3985. Bitfields for SCSI capabilities:
  3986. Bit(s)    Description    (Table 1670)
  3987.  7    modify data pointers
  3988.  6    wide bus (32 bits)
  3989.  5    wide bus (16 bits)
  3990.  4    synchronous transfers
  3991.  3    linked commands
  3992.  2    reserved
  3993.  1    tagged queueing
  3994.  0    soft reset
  3995.  
  3996. Bitfields for CAM asynchronous event capabilities:
  3997. Bit(s)    Description    (Table 1671)
  3998.  31-24    vendor-specific
  3999.  23-8    reserved
  4000.  7    new devices found during rescan
  4001.  6    SIM module deregistered
  4002.  5    SIM module registered
  4003.  4    sent bus device reset to target
  4004.  3    SCSI AEN
  4005.  2    reserved
  4006.  1    unsolicited reselection
  4007.  0    unsolicited SCSI bus reset
  4008.  
  4009. (Table 1672)
  4010. Values completion callback function is called with:
  4011.     interrupts disabled
  4012.     ES:BX -> completed CCB
  4013.  
  4014. (Table 1673)
  4015. Values asynchronous callback function is called with:
  4016.     AH = opcode
  4017.     AL = path ID generating callback
  4018.     DH = target ID causing event
  4019.     DL = LUN causing event
  4020.     CX = data byte count (if applicable)
  4021.     ES:BX -> data buffer (if applicable)
  4022. Return: all registers preserved
  4023. --------d-4F8200CX8765-----------------------
  4024. INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
  4025.     AX = 8200h
  4026.     CX = 8765h
  4027.     DX = CBA9h
  4028. Return: AH = 00h if installed
  4029.         CX = 9ABCh
  4030.         DX = 5678h
  4031.         ES:DI -> "SCSI_CAM"
  4032. SeeAlso: AX=8100h,INT 4B"Common Access Method"
  4033. --------N-50---------------------------------
  4034. INT 50 - TIL Xpert AIM (X.25)
  4035.     AH = function
  4036. --------H-50---------------------------------
  4037. INT 50 - IRQ0 relocated by DESQview
  4038. Range:    INT 50 to INT F8, selected automatically
  4039. Notes:    this is the default location for older versions; DESQview v2.26+
  4040.       searches for unused ranges of interrupts and uses the lowest
  4041.       available range in its list for relocating these IRQs and the next
  4042.       lowest for relocating IRQ8-IRQ15
  4043.     a range of eight interrupts starting at a multiple of 8 is considered
  4044.       available if all vectors are identical and it has not been excluded
  4045.       with an /XB:nn commandline switch
  4046.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  4047.       are available, F8h and then 50h are used anyway)
  4048.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  4049.       are available, F8h and then F0h are used anyway)
  4050. SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
  4051. SeeAlso: INT D8"Screen Thief"
  4052. --------H-50---------------------------------
  4053. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  4054. SeeAlso: INT 51"IBM 3278"
  4055. --------H-50---------------------------------
  4056. INT 50 - IRQ0 relocated by OS/2 v1.x
  4057. SeeAlso: INT 51"OS/2"
  4058. --------V-500000-----------------------------
  4059. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
  4060.     AX = 0000h
  4061.     ES:BX -> name string or ES:0000h if none
  4062.     CH,CL = row,column of upper left corner
  4063.     DH,DL = row,column of lower right corner
  4064. Return: AX = window handle or
  4065.         0000h if not installed
  4066.         FFFFh on error
  4067. SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
  4068. --------V-500001-----------------------------
  4069. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
  4070.     AX = 0001h
  4071.     DI = window handle
  4072. SeeAlso: AX=0000h
  4073. --------V-500002-----------------------------
  4074. INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
  4075.     AX = 0002h
  4076.     BL = character
  4077.     BH = attribute
  4078.     DL = column
  4079.     DH = row
  4080.     DI = window handle
  4081. Return: AX = status
  4082.         0000h if successful
  4083.         FFFFh if outside window
  4084. SeeAlso: AX=0000h
  4085. --------l-500002-----------------------------
  4086. INT 50 - PC Thuis Organizer Shell - PLOT TEXT
  4087.     AX = 0002h
  4088.     ES:BX -> text string
  4089.     DH,DL = row,column of upper left corner
  4090.     DI = window handle
  4091. Return: AX = status
  4092.         0000h successful (text fits in window)
  4093.         FFFFh error
  4094. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4095.       published in the June/July 1990 issue of PC Thuis Power magazine
  4096. --------V-500003-----------------------------
  4097. INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
  4098.     AX = 0003h
  4099.     ES:BX -> text string
  4100.     CX = string length (0000h if ASCIZ string)
  4101.     DL = position (FFh centered, else flush left)
  4102.     DH = starting row
  4103.     DI = window handle
  4104. Return: AX = status
  4105.         0000h successful
  4106.         FFFFh did not fit in window
  4107. --------l-500003-----------------------------
  4108. INT 50 - PC Thuis Organizer Shell - WRITE FILE
  4109.     AX = 0003h
  4110.     ES:BX -> data to be written
  4111.     CX = number of bytes to write
  4112.     DS:SI -> filename
  4113. Return: AX = status
  4114.         0000h successful
  4115.         FFFFh error
  4116. SeeAlso: AX=0004h"Shell"
  4117. --------V-500004-----------------------------
  4118. INT 50 - Vanderaart TEXT WINDOWS - GET KEY
  4119.     AX = 0004h
  4120.     CH = type
  4121.         00h any key
  4122.         01h 'J' or 'N' (Dutch for yes/no)
  4123. Return: AX = key
  4124. SeeAlso: INT 16/AH=00h
  4125. --------l-500004-----------------------------
  4126. INT 50 - PC Thuis Organizer Shell - READ FILE
  4127.     AX = 0004h
  4128.     ES:BX -> buffer for data
  4129.     CX = number of bytes to read or 0000h for entire file
  4130.     DL = file type
  4131.         01h setting shell
  4132.         02h setting sterm
  4133.         03h INT21 file
  4134.     DS:SI -> filename
  4135. Return: AX = status
  4136.         0000h successful
  4137.         FFFFh error
  4138. Note:    file type numbers are maintained by John Vanderaart; if a new file type
  4139.       is needed, a type number should be requested from him through the
  4140.       magazine:
  4141.         PC Thuis BV
  4142.         Spaarne 55
  4143.         2011 CE HAARLEM
  4144.         The Netherlands
  4145. SeeAlso: AX=0003h"Shell"
  4146. --------V-500005-----------------------------
  4147. INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
  4148.     AX = 0005h
  4149.     BL = new attribute
  4150.     CH,CL = row,column of upper left corner
  4151.     DH,DL = row,column of lower right corner
  4152.     DI = window handle
  4153. --------l-500005-----------------------------
  4154. INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
  4155.     AX = 0005h
  4156.     ES:BX -> prompt string (ES:0000h if no prompt)
  4157. Return: AX = key pressed
  4158.         0000h "J" (Dutch "Ja" = "Yes")
  4159.         FFFFh "N" (Dutch "Nee" = "No")
  4160. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4161.       published in the June/July 1990 issue of PC Thuis Power magazine
  4162. SeeAlso: AX=0008h"PC Thuis"
  4163. --------V-500006-----------------------------
  4164. INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
  4165.     AX = 0006h
  4166.     ES:BX -> text string
  4167.     CH = type of input (see #1674)
  4168.     DH,DL = row,column of upper left corner
  4169.     DI = window handle
  4170. Return: AX = key which terminated entry
  4171.         0000h Enter
  4172.         0001h Esc
  4173.         0002h Down arrow
  4174.         0003h Up arrow
  4175.         0004h F10
  4176.  
  4177. (Table 1674)
  4178. Values for type of input to Vanderaart Text Windows:
  4179.  00h    everything
  4180.  01h    uppercase only
  4181.  02h    positive numbers
  4182.  03h    Dutch postal code ("9999 AA")
  4183.  04h    'J' or 'N' (Dutch yes/no)
  4184.  05h    telephone or FAX number
  4185.  06h    positive or negative number
  4186.  07h    date (dd/mm/yy)
  4187.  08h    money
  4188.  09h    '1' through '8'
  4189.  0Ah    '1' through '4'
  4190.  0Bh    uppercase filenames
  4191. --------l-500006-----------------------------
  4192. INT 50 - PC Thuis Organizer Shell - ALERT USER
  4193.     AX = 0006h
  4194.     ES:BX -> string
  4195. --------l-500007-----------------------------
  4196. INT 50 - PC Thuis Organizer Shell - DO LINE
  4197.     AX = 0007h
  4198.     ES:BX -> text string
  4199.     CX = string length in bytes (0000h if NUL-terminated)
  4200.     DL = FFh to center string, else flush left
  4201.     DH = upper left row
  4202.     DI = window handle
  4203. Return: AX = status
  4204.         0000h successful
  4205.         FFFFh error
  4206. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4207.       published in the June/July 1990 issue of PC Thuis Power magazine
  4208. SeeAlso: AX=0008h
  4209. --------l-500008-----------------------------
  4210. INT 50 - PC Thuis Organizer Shell - DO MENU
  4211.     AX = 0008h
  4212.     ES:BX -> menu structure
  4213. Return: AL = index 1 or FFh if not selected
  4214.     AH = index 2 or FFh if not selected
  4215.     BL = index 3 or FFh if not selected
  4216.     BH = index 4 or FFh if not selected
  4217. SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
  4218. --------l-500009-----------------------------
  4219. INT 50 - PC Thuis Organizer Shell - MESSAGE ON
  4220.     AX = 0009h
  4221.     ES:BX -> message string
  4222. SeeAlso: AX=000Ah
  4223. --------l-50000A-----------------------------
  4224. INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
  4225.     AX = 000Ah
  4226. SeeAlso: AX=0009h
  4227. --------l-50000B-----------------------------
  4228. INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
  4229.     AX = 000Bh
  4230.     BL = new attribute
  4231.     CH,CL = row,column of upper left corner
  4232.     DH,DL = row,column of lower right corner
  4233.     DI = window handle
  4234. --------l-50000C-----------------------------
  4235. INT 50 - PC Thuis Organizer Shell - DO REQUEST
  4236.     AX = 000Ch
  4237.     ES:BX -> request structure
  4238. Return: AX = status
  4239.         0000h confirmed
  4240.         FFFFh denied
  4241. SeeAlso: AX=0008h
  4242. --------l-50000D-----------------------------
  4243. INT 50 - PC Thuis Organizer Shell - EDIT LINE
  4244.     AX = 000Dh
  4245.     ES:BX -> text string
  4246.     CL = length
  4247.     CH = input type (see #1675)
  4248.     DH,DL = row,column of upper left corner
  4249.     DI = window handle
  4250. Return: AX = result code
  4251. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4252.       published in the June/July 1990 issue of PC Thuis Power magazine
  4253.  
  4254. Bitfields for input type:
  4255. Bit(s)    Description    (Table 1675)
  4256.  0    force uppercase
  4257.  1    integer
  4258.  2    no spaces allowed
  4259.  3    no cursor keys
  4260. --------l-50000E-----------------------------
  4261. INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
  4262.     AX = 000Eh
  4263.     BL = character
  4264.     BH = attribute
  4265.     DH,DL = row,column at which to plot
  4266.     DI = window handle
  4267. Return: AX = status
  4268.         0000h successful
  4269.         FFFFh errror
  4270. --------l-50000F-----------------------------
  4271. INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
  4272.     AX = 000Fh
  4273.     BL = character
  4274.     BH = attribute
  4275.     DI = window handle
  4276. --------l-500010-----------------------------
  4277. INT 50 - PC Thuis Organizer Shell - TRACE MENU
  4278.     AX = 0010h
  4279.     ES:BX -> first menu structure
  4280.     CL = hotkey to look up
  4281. Return: AL = index 1 or FFh if not selected
  4282.     AH = index 2 or FFh if not selected
  4283.     BL = index 3 or FFh if not selected
  4284.     BH = index 4 or FFh if not selected
  4285. Index:    hotkeys;PC Thuis Organizer Shell
  4286. --------l-500011-----------------------------
  4287. INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
  4288.     AX = 0011h
  4289.     DS:SI -> source
  4290.     ES:DI -> destination
  4291.     CX = number of bytes to move (0000h = until NUL string terminator???)
  4292. SeeAlso: AX=0012h
  4293. --------l-500012-----------------------------
  4294. INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
  4295.     AX = 0012h
  4296.     DS:SI -> source
  4297.     ES:DI -> destination
  4298.     CX = number of bytes to compare (0000h=until NUL string terminator???)
  4299. Return: AX = status
  4300.         0000h same
  4301.         FFFFh different
  4302. SeeAlso: AX=0011h
  4303. --------l-500013-----------------------------
  4304. INT 50 - PC Thuis Organizer Shell - GET KEY
  4305.     AX = 0013h
  4306.     CH = type flags
  4307.         bit 0: force uppercase
  4308.         bit 1: integer
  4309.         bit 2: no spaces
  4310. Return: AX = keystroke
  4311. --------l-500014-----------------------------
  4312. INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
  4313.     AX = 0014h
  4314.     BL = direction
  4315.         06h up
  4316.         07h down
  4317.     BH = attribute
  4318.     DI = window handle
  4319. SeeAlso: INT 10/AH=06h,INT 10/AH=07h
  4320. --------l-500015-----------------------------
  4321. INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
  4322.     AX = 0015h
  4323.     BL = handle size
  4324.         00h 65536 bytes (64K)
  4325.         01h 65535 bytes (64K-1)
  4326.         02h 32768 bytes (32K)
  4327.         03h 32767 bytes (32K-1)
  4328. Return: AX = segment
  4329. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4330.       published in the June/July 1990 issue of PC Thuis Power magazine
  4331. SeeAlso: INT 21/AH=48h
  4332. --------H-51---------------------------------
  4333. INT 51 - IRQ1 relocated by DESQview
  4334. Range:    INT 51 to INT F9, selected automatically
  4335. Note:    this is the default location for older versions; see INT 50"DESQview"
  4336.       for details of interrupt relocation
  4337. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4338. --------H-51---------------------------------
  4339. INT 51 - IRQ1 relocated by IBM 3278 emulation control program
  4340. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  4341. --------H-51---------------------------------
  4342. INT 51 - IRQ1 relocated by OS/2 v1.x
  4343. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  4344. --------H-52---------------------------------
  4345. INT 52 - IRQ2 relocated by DESQview
  4346. Range:    INT 52 to INT FA, selected automatically
  4347. Note:    this is the default location for older versions; see INT 50"DESQview"
  4348.       for details of interrupt relocation
  4349. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4350. --------H-52---------------------------------
  4351. INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4352. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4353. --------H-53---------------------------------
  4354. INT 53 - IRQ3 relocated by DESQview
  4355. Range:    INT 53 to INT FB, selected automatically
  4356. Note:    this is the default location for older versions; see INT 50"DESQview"
  4357.       for details of interrupt relocation
  4358. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4359. --------H-53---------------------------------
  4360. INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4361. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4362. --------N-53---------------------------------
  4363. INT 53 - WEB??? - API
  4364.     BX = function
  4365.         0000h ???
  4366.         AX = ???
  4367.         Return: AX = ???
  4368.         0004h ???
  4369.         0009h ???
  4370.         0015h
  4371.         AX = ???
  4372.         DX = ???
  4373.         0017h
  4374. Return: ???
  4375. Notes:    the installation check consists of looking for the signature "WEBCO"
  4376.       immediately prior to the interrupt handler
  4377.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  4378. Index:    installation check;unknown|installation check;WEBCO
  4379. --------H-54---------------------------------
  4380. INT 54 - IRQ4 relocated by DESQview
  4381. Range:    INT 54 to INT FC, selected automatically
  4382. Note:    this is the default location for older versions; see INT 50"DESQview"
  4383.       for details of interrupt relocation
  4384. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4385. --------H-54---------------------------------
  4386. INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4387. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4388. ----------545400-----------------------------
  4389. INT 54 U - Toshiba PCMCIA2 - INSTALLATION CHECK
  4390.     AX = 5400h
  4391. Return: AX = 0054h if installed
  4392.         CX:DX -> INT function handler
  4393. --------H-55---------------------------------
  4394. INT 55 - IRQ5 relocated by DESQview
  4395. Range:    INT 55 to INT FD, selected automatically
  4396. Note:    this is the default location for older versions; see INT 50"DESQview"
  4397.       for details of interrupt relocation
  4398. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4399. --------H-55---------------------------------
  4400. INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4401. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4402. --------H-56---------------------------------
  4403. INT 56 - IRQ6 relocated by DESQview
  4404. Range:    INT 56 to INT FE, selected automatically
  4405. Note:    this is the default location for older versions; see INT 50"DESQview"
  4406.       for details of interrupt relocation
  4407. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4408. --------H-56---------------------------------
  4409. INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4410. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4411. --------H-57---------------------------------
  4412. INT 57 - IRQ7 relocated by DESQview
  4413. Range:    INT 57 to INT FF, selected automatically
  4414. Note:    this is the default location for older versions; see INT 50"DESQview"
  4415.       for details of interrupt relocation
  4416. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4417. --------H-57---------------------------------
  4418. INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4419. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4420. --------H-58---------------------------------
  4421. INT 58 - IRQ8 relocated by DESQview 2.26+
  4422. Range:    INT 58 to INT F8, selected automatically
  4423. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4424. SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 70
  4425. --------H-58---------------------------------
  4426. INT 58 - IRQ0 relocated by DoubleDOS
  4427. SeeAlso: INT 08
  4428. --------H-59---------------------------------
  4429. INT 59 - IRQ9 relocated by DESQview 2.26+
  4430. Range:    INT 59 to INT F9, selected automatically
  4431. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4432. SeeAlso: INT 50"DESQview",INT 58"DESQview",INT 5A"DESQview",INT 71
  4433. --------H-59---------------------------------
  4434. INT 59 - IRQ1 relocated by DoubleDOS
  4435. SeeAlso: INT 09
  4436. --------V-59---------------------------------
  4437. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  4438.     DS:DX -> block of 5 array pointers
  4439. Return: CF set on error
  4440.         AX = error code
  4441.     CF clear if successful
  4442.         AX = return code
  4443. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  4444.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  4445.     also used by the IBM Graphic Development Toolkit
  4446. --------H-5A---------------------------------
  4447. INT 5A - IRQ10 relocated by DESQview 2.26+
  4448. Range:    INT 5A to INT FA, selected automatically
  4449. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4450. SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 5B"DESQview",INT 72
  4451. --------H-5A---------------------------------
  4452. INT 5A - IRQ2 relocated by DoubleDOS
  4453. SeeAlso: INT 0A
  4454. --------N-5A---------------------------------
  4455. INT 5A - Cluster adapter BIOS entry address
  4456.     ???
  4457. --------H-5B---------------------------------
  4458. INT 5B - IRQ11 relocated by DESQview 2.26+
  4459. Range:    INT 5B to INT FB, selected automatically
  4460. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4461. SeeAlso: INT 50"DESQview",INT 5A"DESQview",INT 5C"DESQview",INT 73
  4462. --------H-5B---------------------------------
  4463. INT 5B - IRQ3 relocated by DoubleDOS
  4464. SeeAlso: INT 0B
  4465. --------N-5B---------------------------------
  4466. INT 5B - Used by cluster adapter
  4467. --------N-5B---------------------------------
  4468. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  4469.     ES:BX -> Network Control Block (see #1676)
  4470. Return: AL = status (see INT 5C)
  4471. SeeAlso: INT 5C
  4472.  
  4473. Format of Starlan Network Control Block:
  4474. Offset    Size    Description    (Table 1676)
  4475.  00h    BYTE    ncb_command (see also #1680)
  4476.         70h send net Break
  4477.  01h    BYTE    ncb_retcode
  4478.  02h    BYTE    ncb_lsn
  4479.  03h    BYTE    ncb_num
  4480.  04h    DWORD    -> ncb_buffer
  4481.  08h    WORD    ncb_length
  4482.  0Ah 16 BYTEs    ncb_callname
  4483.  1Ah 16 BYTEs    ncb_name
  4484.  2Ah    BYTE    ncb_rto
  4485.  2Bh    BYTE    ncb_sto
  4486.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  4487.  30h    BYTE    ncb_lana_num
  4488.  31h    BYTE    ncb_cmd_cplt
  4489.  32h    DWORD    -> ncb_vname
  4490.  36h    BYTE    ncb_vnamelen
  4491.  37h  9 BYTEs    ncb_reserve
  4492. Note:    fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
  4493. --------N-5B---------------------------------
  4494. INT 5B - Microsoft Network Transport Layer Interface
  4495. Note:    used by MS-NET for executing network commands
  4496. SeeAlso: INT 5C"NetBIOS"
  4497. --------N-5B---------------------------------
  4498. INT 5B - used by Alloy NTNX
  4499. --------N-5B---------------------------------
  4500. INT 5B - ISOLAN Multi Protocol Software
  4501.     ES:BX -> Transfer Control Block
  4502. Return: AL = status
  4503. Note:    this software interface allows multiple protocols/software packages
  4504.       to access a BICC 411x network card
  4505.  
  4506. Format of ISOLAN Transfer Control Block:
  4507. Offset    Type    Description    (Table 1677)
  4508.  00h    BYTE    command code
  4509.         B3h Status
  4510.         F2h Activate
  4511.         F3h Deactivate
  4512.         F4h Send Data
  4513.  01h    BYTE    command identity
  4514.  02h    BYTE    virtual circuit ID
  4515.  03h    WORD    buffer length
  4516.  05h    DWORD    buffer pointer
  4517.  09h    BYTE    expedited data flag
  4518.  0Ah    BYTE    cancelable flag
  4519.  0Bh 16 BYTEs    local network address
  4520.  1Bh 16 BYTEs    remote network address
  4521.  2Bh    DWORD    asynchronous notification routine
  4522.  30h    DWORD    local network number
  4523.  34h    DWORD    remote network number
  4524.  38h    BYTE    call timeout
  4525.  39h    BYTE    not used
  4526.  3Ah  8 BYTEs    reserved
  4527.  42h    BYTE    command code extension
  4528.  43h    WORD    Blue Book MAC type
  4529. --------U-5B5254DL04-------------------------
  4530. INT 5B U - SitBack v3.02R - GET ???
  4531.     AX = 5254h
  4532.     DL = 04h
  4533. Return: ES:BX -> ??? in resident portion
  4534. Program: SitBack is a background file backup utility by SitBack Technologies,
  4535.       Inc. which initiates backups whenever the system is idle
  4536. SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
  4537. --------U-5B8485DL70-------------------------
  4538. INT 5B U - SitBack v3.02R - INSTALLATION CHECK
  4539.     AX = 8485h
  4540.     DL = 70h
  4541. Return: CX = 8485h if installed
  4542.         DX:AX -> ??? (configuration data?)
  4543. Program: SitBack is a background file backup utility by SitBack Technologies,
  4544.       Inc. which initiates backups whenever the system is idle
  4545. SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
  4546. --------U-5B8485DL71-------------------------
  4547. INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
  4548.     AX = 8485h
  4549.     DL = 71h
  4550. Return: ES:BX -> FAR entry point to ???
  4551. Note:    the flag which is modified is located at the address returned by
  4552.        AX=5254h/DL=04h
  4553. SeeAlso: AX=8485h/DL=72h
  4554. --------U-5B8485DL72-------------------------
  4555. INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
  4556.     AX = 8485h
  4557.     DL = 72h
  4558. Note:    the flag which is modified is located at the address returned by
  4559.        AX=5254h/DL=04h
  4560. SeeAlso: AX=8485h/DL=71h
  4561. --------U-5B8485DL73-------------------------
  4562. INT 5B U - SitBack v3.02R - ???
  4563.     AX = 8485h
  4564.     DL = 73h
  4565.     ???
  4566. Return: ???
  4567. --------U-5B8485DL74-------------------------
  4568. INT 5B U - SitBack v3.02R - ???
  4569.     AX = 8485h
  4570.     DL = 74h
  4571.     ???
  4572. Return: ???
  4573. --------U-5B8485DL75-------------------------
  4574. INT 5B U - SitBack v3.02R - ???
  4575.     AX = 8485h
  4576.     DL = 75h
  4577.     CX = ???
  4578. Return: ???
  4579. SeeAlso: AX=8485h/DL=76h
  4580. --------U-5B8485DL76-------------------------
  4581. INT 5B U - SitBack v3.02R - ???
  4582.     AX = 8485h
  4583.     DL = 76h
  4584.     CX = ???
  4585. Return: ???
  4586. Note:    conditionally calls the code for AX=8485h/DL=75h
  4587. SeeAlso: AX=8485h/DL=75h
  4588. --------U-5B8485DL77-------------------------
  4589. INT 5B U - SitBack v3.02R - SET ??? FLAG
  4590.     AX = 8485h
  4591.     DL = 77h
  4592. --------U-5B8485DL78-------------------------
  4593. INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
  4594.     AX = 8485h
  4595.     DL = 78h
  4596. Return: CX = 5342h if supported
  4597.         ES = AX = segment of TSR data
  4598. SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
  4599. --------U-5B8485DL79-------------------------
  4600. INT 5B U - SitBack v3.02R - GET DTA
  4601.     AX = 8485h
  4602.     DL = 79h
  4603. Return: CX = 5342h if supported
  4604.         ES:BX -> DTA set by last INT 21/AH=1Ah
  4605. Note:    this function is provided by SBOS.EXE rather than SB.EXE
  4606. SeeAlso: INT 21/AH=1Ah
  4607. --------U-5B8485DL7A-------------------------
  4608. INT 5B U - SitBack v3.02R - TOGGLE ???
  4609.     AX = 8485h
  4610.     DL = 7Ah
  4611. Return: CX = 5342h if supported
  4612.         AL = new value of ??? (00h or 01h)
  4613. --------H-5C---------------------------------
  4614. INT 5C - IRQ12 relocated by DESQview 2.26+
  4615. Range:    INT 5C to INT FC, selected automatically
  4616. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4617. SeeAlso: INT 50"DESQview",INT 5B"DESQview",INT 5D"DESQview",INT 74
  4618. --------H-5C---------------------------------
  4619. INT 5C - IRQ4 relocated by DoubleDOS
  4620. SeeAlso: INT 0C
  4621. --------N-5C---------------------------------
  4622. INT 5C - NetBIOS INTERFACE
  4623.     ES:BX -> network control block (NCB) (see #1679)
  4624. Return: AL = status (see #1678)
  4625. Program: NetBIOS was developed by Sytek, Inc. in 1984 as a high-level
  4626.       programming interface to the IBM PC Network; the first implementation
  4627.       was a ROM BIOS extension on Sytek's PCnet LAN adapter card, but many
  4628.       current networks support NetBIOS as the session layer.
  4629. Note:    The Sytek PCnet card uses DMA 3.
  4630. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  4631.  
  4632. (Table 1678)
  4633. Values for NetBIOS status:
  4634.  00h    successful
  4635.  01h    bad buffer size
  4636.  03h    invalid NETBIOS command
  4637.  05h    timeout
  4638.  06h    receive buffer too small
  4639.  07h    No-ACK command failed
  4640.  08h    bad session number
  4641.  09h    LAN card out of memory
  4642.  0Ah    session closed
  4643.  0Bh    command has been cancelled
  4644.  0Dh    name already exists
  4645.  0Eh    local name table full
  4646.  0Fh    name still in use, can't delete
  4647.  11h    local session table full
  4648.  12h    remote PC not listening
  4649.  13h    bad NCB_NUM field
  4650.  14h    no answer to CALL or no such remote
  4651.  15h    name not in local name table
  4652.  16h    duplicate name
  4653.  17h    bad delete
  4654.  18h    abnormal end
  4655.  19h    name error, multiple identical names in use
  4656.  1Ah    bad packet
  4657.  21h    network card busy
  4658.  22h    too many commands queued
  4659.  23h    bad LAN card number
  4660.  24h    command finished while cancelling
  4661.  26h    command can't be cancelled
  4662.  30h    name defined by another process (OS/2)
  4663.  34h    NetBIOS environment not defined, must issue reset (OS/2)
  4664.  35h    required operating system resources exhausted (OS/2)
  4665.  36h    maximum applications exceeded (OS/2)
  4666.  37h    no SAPs available for NetBIOS (OS/2)
  4667.  38h    requested resources not available (OS/2)
  4668.  40h    Lana System Error
  4669.  41h    Lana Remote Hot Carrier
  4670.  42h    Lana Local Hot Carrier
  4671.  43h    Lana No Carrier Detected
  4672.  44h    unusual network condition
  4673.  45h-4Dh hardware error
  4674.  4Eh    token ring is broken
  4675.  4Fh    token ring error
  4676.  50h    adapter malfunction
  4677.  F7h    error in explicit INITIALIZE
  4678.  F8h    error in implicit OPEN
  4679.  F9h    TOKREUI internal error
  4680.  FAh    hardware adapter testing
  4681.  FBh    NetBIOS emulator not found
  4682.  FCh    OPEN or OPEN_SAP failure
  4683.  FDh    unexpected adapter closure
  4684.  FFh    NetBIOS busy (command pending)
  4685.  
  4686. Format of NetBIOS Network Control Block:
  4687. Offset    Size    Description    (Table 1679)
  4688.  00h    BYTE    command code (see #1680)
  4689.  01h    BYTE    return code (see #1678)
  4690.  02h    BYTE    local session number (LSN)
  4691.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  4692.  04h    DWORD    -> I/O buffer
  4693.  08h    WORD    length of data in buffer
  4694.  0Ah 16 BYTEs    remote system to call
  4695.  1Ah 16 BYTEs    network name of local machine
  4696.  2Ah    BYTE    receive timeout in 1/2 seconds
  4697.  2Bh    BYTE    send timeout in 1/2 seconds
  4698.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  4699.  30h    BYTE    network adapter number on which to execute command
  4700.         00h-03h IBM NetBIOS specs
  4701.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  4702.  31h    BYTE    command completion code (see returned status above)
  4703.  32h 14 BYTEs    reserved for network card
  4704.  
  4705. (Table 1680)
  4706. Values for NetBIOS command code field in NCB:
  4707.  10h    start session with NCB_NAME name (call)
  4708.  11h    listen for call
  4709.  12h    end session with NCB_NAME name (hangup)
  4710.  14h    send data via NCB_LSN
  4711.  15h    receive data from a session
  4712.  16h    receive data from any session
  4713.  17h    send multiple data buffers
  4714.  20h    send unACKed message (datagram)
  4715.  21h    receive datagram
  4716.  22h    send broadcast datagram
  4717.  23h    receive broadcast datagram
  4718.  30h    add name to name table
  4719.  31h    delete name from name table
  4720.  32h    reset adapter card and tables
  4721.  33h    get adapter status (see structure "astatus" below)
  4722.  34h    status of all sessions for name (see structure "sstatus" below)
  4723.  35h    cancel
  4724.  36h    add group name to name table
  4725.  48h    send data and receive data (LAN Manager NETBEUI.DOS)
  4726.  70h    unlink from IBM remote program (no F0h function)
  4727.  71h    send data without ACK
  4728.  72h    send multiple buffers without ACK
  4729.  72h    UngermannBass Register (conflicts with above function)
  4730.  73h    UngermannBass SendNmc
  4731.  74h    UngermannBass Callniu
  4732.  75h    UngermannBass Calladdr
  4733.  76h    UngermannBass Listenaddr
  4734.  77h    UngermannBass SendPkt
  4735.  78h    find name
  4736.  78h    UngermannBass RcvPkt (conflicts with above function)
  4737.  79h    token-ring protocol trace
  4738.  79h    UngermannBass SendAttn (conflicts with above function)
  4739.  7Ah    UngermannBass RcvAttn
  4740.  7Bh    UngermannBass Listenniu
  4741.  7Ch    UngermannBass RcvRaw
  4742.  7Dh    UngermannBass SendNmc2
  4743.  7Fh    Beame&Whiteside BWNB installation check (returns with return code and
  4744.       completion code both set to 03h, while invalid functions return only
  4745.       return code field set to 03h)
  4746. Note:    OR any of the above except 70h with 80h for non-waiting call
  4747.  
  4748. Format of NetBIOS structure "name":
  4749. Offset    Size    Description    (Table 1681)
  4750.  00h 16 BYTEs "nm_name" symbolic name
  4751.  10h    BYTE  "nm_num" number associated with name
  4752.  11h    BYTE  nm_status
  4753.  
  4754. Format of NetBIOS structure "astatus":
  4755. Offset    Size    Description    (Table 1682)
  4756.  00h  6 BYTEs as_id
  4757.  06h    BYTE  as_jumpers
  4758.  07h    BYTE  as_post
  4759.  08h    BYTE  as_major
  4760.  09h    BYTE  as_minor
  4761.  0Ah    WORD  as_interval
  4762.  0Ch    WORD  as_crcerr
  4763.  0Eh    WORD  as_algerr
  4764.  10h    WORD  as_colerr
  4765.  12h    WORD  as_abterr
  4766.  14h    DWORD as_tcount
  4767.  18h    DWORD as_rcount
  4768.  1Ch    WORD  as_retran
  4769.  1Eh    WORD  as_xresrc
  4770.  20h  8 BYTEs as_res0
  4771.  28h    WORD  as_ncbfree
  4772.  2Ah    WORD  as_ncbmax
  4773.  2Ch    WORD  as_ncbx
  4774.  2Eh  4 BYTEs as_res1
  4775.  32h    WORD  as_sespend
  4776.  34h    WORD  as_msp
  4777.  36h    WORD  as_sesmax
  4778.  38h    WORD  as_bufsize
  4779.  3Ah    WORD  as_names
  4780.  3Ch 16 name structures     as_name
  4781.  
  4782. Format of NetBIOS structure "sstatus":
  4783. Offset    Size    Description    (Table 1683)
  4784.  00h    BYTE    number of sessions being reported
  4785.  01h    BYTE    number of sessions with this name
  4786.  02h    BYTE    number of outstanding receive datagrams
  4787.  03h    BYTE    number of outstanding ReceiveAnys
  4788.  04h    var    session structures (see #1684)
  4789.  
  4790. Format of NetBIOS structure "session":
  4791. Offset    Size    Description    (Table 1684)
  4792.  00h    BYTE    local session number
  4793.  01h    BYTE    state
  4794.         01h listen pending
  4795.         02h call pending
  4796.         03h session established
  4797.         04h hangup pending
  4798.         05h hangup done
  4799.         06h session aborted
  4800.  02h 16 BYTEs    local name
  4801.  12h 16 BYTEs    remote name
  4802.  22h    BYTE    number of outstanding receives
  4803.  23h    BYTE    number of outstanding sends/chainsends
  4804. --------N-5C---------------------------------
  4805. INT 5C - TOPS INTERFACE
  4806.     ES:BX -> Network Control Block
  4807. Note:    TOPS card uses DMA 1, 3 or none.
  4808. --------N-5C---------------------------------
  4809. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  4810.     DX:BX -> control block (see #1686)
  4811. Return: none
  4812. Range:    INT 5Ch to INT 70h
  4813. Notes:    the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  4814.       handler; this serves as the installation check
  4815. Index:    installation check;ATALK.SYS|installation check;AppleTalk interface
  4816.  
  4817. (Table 1685)
  4818. Values for ATALK.SYS command code:
  4819.  01h    "AT_INIT"        initialize the driver
  4820.  02h    "AT_KILL"
  4821.  03h    "AT_GETNETINFO" get current network info incl init status
  4822.  04h    "AT_GETCLOCKTICKS"
  4823.  05h    "AT_STARTTIMER"
  4824.  06h    "AT_RESETTIMER"
  4825.  07h    "AT_CANCELTIMER"
  4826.  10h    "LAP_INSTALL"
  4827.  11h    "LAP_REMOVE"
  4828.  12h    "LAP_WRITE"
  4829.  13h    "LAP_READ"
  4830.  14h    "LAP_CANCEL"
  4831.  20h    "DDP_OPENSOCKET"
  4832.  21h    "DDP_CLOSESOCKET"
  4833.  22h    "DDP_WRITE"
  4834.  23h    "DDP_READ"
  4835.  24h    "DDP_CANCEL"
  4836.  30h    "NBP_REGISTER"
  4837.  31h    "NBP_REMOVE"
  4838.  32h    "NBP_LOOKUP"
  4839.  33h    "NBP_CONFIRM"
  4840.  34h    "NBP_CANCEL"
  4841.  35h    "ZIP_GETZONELIST"
  4842.  36h    "ZIP_GETMYZONE"
  4843.  37h    "ZIP_TAKEDOWN"
  4844.  38h    "ZIP_BRINGUP"
  4845.  40h    "ATP_OPENSOCKET"
  4846.  41h    "ATP_CLOSESOCKET"
  4847.  42h    "ATP_SENDREQUEST"
  4848.  43h    "ATP_GETREQUEST"
  4849.  44h    "ATP_SENDRESPONSE"
  4850.  45h    "ATP_ADDRESPONSE"
  4851.  46h    "ATP_CANCELTRANS"
  4852.  47h    "ATP_CANCELRESPONSE"
  4853.  48h    "ATP_CANCELREQUEST"
  4854.  50h    "ASP_GETPARMS"
  4855.  51h    "ASP_CLOSESESSION"
  4856.  52h    "ASP_CANCEL"
  4857.  53h    "ASP_INIT"
  4858.  54h    "ASP_KILL"
  4859.  55h    "ASP_GETSESSION"
  4860.  56h    "ASP_GETREQUEST"
  4861.  57h    "ASP_CMDREPLY"
  4862.  58h    "ASP_WRTCONTINUE"
  4863.  59h    "ASP_WRTREPLY"
  4864.  5Ah    "ASP_CLOSEREPLY"
  4865.  5Bh    "ASP_NEWSTATUS"
  4866.  5Ch    "ASP_ATTENTION"
  4867.  5Dh    "ASP_GETSTATUS"
  4868.  5Eh    "ASP_OPENSESSION"
  4869.  5Fh    "ASP_COMMAND"
  4870.  60h    "ASP_WRITE"
  4871.  61h    "ASP_GETATTENTION"
  4872.  70h    "PAP_OPEN"
  4873.  71h    "PAP_CLOSE"
  4874.  72h    "PAP_READ"
  4875.  73h    "PAP_WRITE"
  4876.  74h    "PAP_STATUS"
  4877.  75h    "PAP_REGNAME"
  4878.  76h    "PAP_REMNAME"
  4879.  77h    "PAP_INIT"
  4880.  78h    "PAP_NEWSTATUS"
  4881.  79h    "PAP_GETNEXTJOB"
  4882.  7Ah    "PAP_KILL"
  4883.  7Bh    "PAP_CANCEL"
  4884.  
  4885. Format of AppleTalk control block:
  4886. Offset    Size    Description    (Table 1686)
  4887.  00h    WORD    command code (see #1685)
  4888.         OR with the following flags
  4889.         8000h start command then return
  4890.         4000h wait for interrupt service to complete
  4891.  02h    WORD    returned status
  4892.         0000h success (already initialized if func 01h)
  4893.  04h    DWORD    pointer to completion function
  4894.  08h    WORD    network number
  4895.  0Ah    BYTE    node ID
  4896. ---if general func (01h,03h), control block continues:
  4897.  0Bh    BYTE    "inf_abridge"
  4898.  0Ch    WORD    "inf_config"
  4899.  0Eh    DWORD    pointer to buffer
  4900.  12h    WORD    buffer size
  4901. ---if DDP function (20h-24h), control block continues:
  4902.  0Bh    BYTE    "ddp_addr_socket"
  4903.  0Ch    BYTE    "ddp_socket"
  4904.  0Dh    BYTE    "ddp_type"
  4905.  0Eh    DWORD    pointer to buffer
  4906.  12h    WORD    buffer size
  4907.  14h    BYTE    "ddp_chksum"
  4908. ---if Name Binding Protocol (30h-34h), control block continues:
  4909.  0Bh    BYTE    "nbp_addr_socket"
  4910.  0Ch    WORD    "nbp_toget"
  4911.  0Eh    DWORD    pointer to buffer (see #1687)
  4912.  12h    WORD    buffer size
  4913.  14h    BYTE    "nbp_interval"
  4914.  15h    BYTE    "nbp_retry"
  4915.  16h    DWORD    "nbp_entptr"
  4916. ---if AppleTalk Transaction Protocol (42h), control block continues:
  4917.  0Bh    BYTE    "atp_addr_socket"
  4918.  0Ch    WORD    "atp_socket"
  4919.  0Eh    DWORD    pointer to buffer
  4920.  12h    WORD    buffer size
  4921.  14h    BYTE    "atp_interval"
  4922.  15h    BYTE    "atp_retry"
  4923.  16h    BYTE    ATP flags
  4924.         bit 5: exactly one transaction
  4925.  17h    BYTE    "atp_seqbit"
  4926.  18h    BYTE    transaction ID
  4927.  19h  4 BYTEs    ATP user bytes
  4928.  1Dh    BYTE    number of BDS buffers
  4929.  1Eh    BYTE    number of BDS responses
  4930.  1Fh    DWORD    pointer to BDS buffers (see #1688)
  4931.  
  4932. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  4933. Offset    Size    Description    (Table 1687)
  4934.  00h    WORD    "tup_address_network"
  4935.  02h    BYTE    "tup_address_notid"
  4936.  03h    BYTE    "tup_address_socket"
  4937.  04h    BYTE    "tup_enum"
  4938.  05h 99 BYTEs    name
  4939.  
  4940. Format of BDS entries:
  4941. Offset    Size    Description    (Table 1688)
  4942.  00h    DWORD    pointer to buffer
  4943.  04h    WORD    size of buffer
  4944.  06h    WORD    BDS data size
  4945.  08h  4 BYTEs    "bds_userbytes"
  4946. --------N-5C---------------------------------
  4947. INT 5C - IBM 802.2 INTERFACE (LLC)
  4948.     ES:BX -> CCB (see #1689)
  4949. Return: none
  4950.  
  4951. Format of IBM 802.2 CCB:
  4952. Offset    Size    Description    (Table 1689)
  4953.  00h    BYTE    adapter
  4954.  01h    BYTE    command code
  4955.  02h    BYTE    return code
  4956.  03h    BYTE    work
  4957.  04h    DWORD    pointer to ???
  4958.  08h    DWORD    pointer to completion function???
  4959.  0Ch    DWORD    pointer to parameters???
  4960. --------N-5C---------------------------------
  4961. INT 5C - $25 LAN - INSTALLATION CHECK
  4962. Notes:    current versions only check whether the vector is 0000h:0000h or not
  4963.     future versions are supposed to have the signature "NET" in the three
  4964.       bytes preceding the INT 5C handler
  4965. --------N-5C04-------------------------------
  4966. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  4967.     AH = 04h
  4968.     AL = COM port (0 = default)
  4969.     CX = wait count in character times (should be at least 100)
  4970. Return: ZF set if link alive
  4971. --------H-5D---------------------------------
  4972. INT 5D - IRQ13 relocated by DESQview 2.26+
  4973. Range:    INT 5D to INT FD, selected automatically
  4974. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4975. SeeAlso: INT 50"DESQview",INT 5C"DESQview",INT 5E"DESQview",INT 75
  4976. --------H-5D---------------------------------
  4977. INT 5D - IRQ5 relocated by DoubleDOS
  4978. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  4979. --------H-5E---------------------------------
  4980. INT 5E - IRQ14 relocated by DESQview 2.26+
  4981. Range:    INT 5E to INT FE, selected automatically
  4982. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4983. SeeAlso: INT 50"DESQview",INT 5D"DESQview",INT 5F"DESQview",INT 76
  4984. --------H-5E---------------------------------
  4985. INT 5E - IRQ6 relocated by DoubleDOS
  4986. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  4987. --------H-5F---------------------------------
  4988. INT 5F - IRQ15 relocated by DESQview 2.26+
  4989. Range:    INT 5F to INT FF, selected automatically
  4990. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4991. SeeAlso: INT 50"DESQview",INT 5E"DESQview",INT 77
  4992. --------H-5F---------------------------------
  4993. INT 5F - IRQ7 relocated by DoubleDOS
  4994. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  4995. --------b-5F00-------------------------------
  4996. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  4997.     AH = 00h
  4998.     AL = video mode
  4999.         07h text, system manager compliant
  5000.         20h 240x128 mono graphics, system manager compliant
  5001.         87h text, not system manager compliant
  5002.         A0h 240x128 mono graphics, not system manager compliant
  5003. Note:    the defaults after setting the mode to graphics are (0,0) logical
  5004.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  5005.       pixel replacement FORCE, line type and fill mask all bits set
  5006. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  5007. --------b-5F01-------------------------------
  5008. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
  5009.     AH = 01h
  5010.     ES:DI -> 8-byte fill mask
  5011. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  5012.       when drawing filled rectangles; it is always aligned with the byte
  5013.       boundaries of video memory, regardless of the actual boundaries of
  5014.       the rectangle
  5015. SeeAlso: AH=02h
  5016. --------b-5F02-------------------------------
  5017. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
  5018.     AH = 02h
  5019.     ES:DI -> graphics info record (see #1690)
  5020. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  5021.  
  5022. Format of HP 95LX graphics info record:
  5023. Offset    Size    Description    (Table 1690)
  5024.  00h    BYTE    current video mode
  5025.  01h    BYTE    default video mode
  5026.  02h    WORD    display width in pixels
  5027.  04h    WORD    display height in pixels
  5028.  06h    WORD    current pen column
  5029.  08h    WORD    current pen row
  5030.  0Ah    WORD    current line type
  5031.  0Ch    WORD    current replacement rule
  5032.  0Eh    WORD    current pen color
  5033.  10h    WORD    current leftmost column of clip region
  5034.  12h    WORD    current rightmost column of clip region
  5035.  14h    WORD    current topmost row of clip region
  5036.  16h    WORD    current bottommost row of clip region
  5037.  18h    WORD    current column of logical origin
  5038.  1Ah    WORD    current row of logical origin
  5039.  1Ch  8 BYTEs    current fill mask
  5040. --------b-5F03-------------------------------
  5041. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  5042.     AH = 03h
  5043.     CX = column
  5044.     DX = row
  5045. SeeAlso: AH=04h
  5046. --------b-5F04-------------------------------
  5047. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
  5048.     AH = 04h
  5049.     CX = left-most column
  5050.     DX = top-most row
  5051.     SI = right-most column
  5052.     DI = bottom-most row
  5053. SeeAlso: AH=03h
  5054. --------b-5F05-------------------------------
  5055. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  5056.     AH = 05h
  5057.     AL = fill type
  5058.         00h outline, using current line type and color
  5059.         01h solid, using current color
  5060.         02h pattern, using current fill mask and color
  5061.     DX,CX = row,column of other corner of rectangle
  5062. Note:    the rectangle is drawn starting at the current pen position
  5063. SeeAlso: AH=01h,AH=06h,AH=07h
  5064. --------b-5F06-------------------------------
  5065. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
  5066.     AH = 06h
  5067.     DX,CX = row,column of end point
  5068. Note:    the line is drawn starting at the current pen position
  5069. SeeAlso: AH=05h,AH=07h
  5070. --------b-5F07-------------------------------
  5071. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
  5072.     AH = 07h
  5073.     DX,CX = row,column of point
  5074. Note:    also sets pen position to the specified point
  5075. SeeAlso: AH=06h,AH=08h,AH=0Ch
  5076. --------b-5F08-------------------------------
  5077. INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
  5078.     AH = 08h
  5079.     DX,CX = row,column of new pen position
  5080. SeeAlso: AH=07h,AH=09h
  5081. --------b-5F09-------------------------------
  5082. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
  5083.     AH = 09h
  5084.     AL = new color (00h = white, 01h = black)
  5085. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  5086. --------b-5F0A-------------------------------
  5087. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  5088.     AH = 0Ah
  5089.     AL = new replacement rule
  5090.         00h force
  5091.         01h AND
  5092.         02h OR
  5093.         03h XOR
  5094. SeeAlso: AH=01h,AH=09h,AH=0Bh
  5095. --------b-5F0B-------------------------------
  5096. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
  5097.     AH = 0Bh
  5098.     CX = new line type
  5099. Note:    the line type specifies 16 bits which are repeated over and over while
  5100.       drawing the pixels of a line
  5101. SeeAlso: AH=09h,AH=0Ah
  5102. --------b-5F0C-------------------------------
  5103. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
  5104.     AH = 0Ch
  5105.     DX,CX = row,column of pixel to read
  5106. Return: AX = pixel color
  5107. SeeAlso: AH=07h
  5108. --------b-5F0D-------------------------------
  5109. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
  5110.     AH = 0Dh
  5111.     DX,CX = row,column of first corner
  5112.     BP,SI = row,column of second corner
  5113.     ES:DI -> image buffer (see #1691)
  5114. Note:    the specified corners are included in the saved image
  5115. SeeAlso: AH=0Eh
  5116.  
  5117. Format of HP 95LX image buffer:
  5118. Offset    Size    Description    (Table 1691)
  5119.  00h    WORD    number of planes (always 01h on HP 95LX)
  5120.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  5121.  04h    WORD    image width in pixels
  5122.  06h    WORD    image height in pixels
  5123.  08h  N BYTEs    image data
  5124.         requires (WIDTH+7)/8 * HEIGHT bytes
  5125. --------b-5F0E-------------------------------
  5126. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
  5127.     AH = 0Eh
  5128.     AL = replacement rule (see #1692)
  5129.     DX,CX = row,column of top left corner
  5130.     ES:DI -> image buffer (see #1691)
  5131. Note:    if the specified image does not fit completely on the screen, this call
  5132.       does nothing
  5133. SeeAlso: AH=0Dh
  5134.  
  5135. Bitfields for replacement rule:
  5136. Bit(s)    Description    (Table 1692)
  5137.  2    invert image before applying rule
  5138.  1-0    function (00 force, 01 AND, 10 OR, 11 XOR)
  5139. --------b-5F0F-------------------------------
  5140. INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
  5141.     AH = 0Fh
  5142.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  5143.     DX,CX = row,column of first character's top left corner
  5144.     ES:DI -> ASCIZ text
  5145. --------*-60---------------------------------
  5146. INT 60 - reserved for user interrupt
  5147. --------v-60---------------------------------
  5148. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  5149. Desc:    The "Zero Bug" virus hooks this vector.  It considers itself installed
  5150.       if offset 103h of the handler's segment contains the bytes "ZE"
  5151. SeeAlso: INT 32,INT 44"VIRUS",INT 61"SEMTEX"
  5152. --------d-60---------------------------------
  5153. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  5154. SeeAlso: INT 41,INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  5155. SeeAlso: INT C0"AMI"
  5156. Notes:    this vector stores the first four bytes of the parameter table for
  5157.       hard disk 0
  5158.     these vectors are used by the following Adaptec controllers:
  5159.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  5160.     these vectors are NOT used by the following Adaptec controllers:
  5161.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  5162. --------b-60---------------------------------
  5163. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  5164. Desc:    supplies a number of subfunctions which perform such functions as
  5165.       drawing boxes and menus, and provide input line editing
  5166. SeeAlso: INT 61"Atari"
  5167. --------V-60---------------------------------
  5168. INT 60 - Nabbit v2.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  5169. Program: Nabbit is a shareware resident screen data grabber by RSE Inc.
  5170. Range:    INT 60 to INT 66, selected by searching for first free vector
  5171. Note:    the Nabbit installation check consists of testing whether the
  5172.       interrupt vector points at the ASCIZ signature string "iG"
  5173.       (69h 47h 00h)
  5174. --------V-60---------------------------------
  5175. INT 60 U - Buffit v3.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  5176. Program: Buffit is a shareware scrollback utility by D.T. Hamilton
  5177. Range:    INT 60 to INT 6F, selected by searching for first free vector
  5178. Notes:    the Buffit installation check consists of testing whether the
  5179.       interrupt vector points at the ASCII signature "Buffit  "
  5180.     there is a private entry point immediately following the signature
  5181.       string, i.e. eight bytes beyond the address pointed at by the
  5182.       interrupt
  5183.  
  5184. (Table 1693)
  5185. Call Buffit private entry point with:
  5186.     AH = function
  5187.         00h get information and hotkey state
  5188.         01h get information and toggle hotkey state
  5189. Return: AH = new hotkey state (00h enabled, 01h disabled)
  5190.     AL = hotkey scan code
  5191.     BH = hotkey shift states
  5192.     BL = ??? (01h)
  5193.     CX = segment of resident code
  5194.     DH = niterrupt number used for signature pointer
  5195.     DL = ??? (00h)
  5196.     SI = INT 09 handler offset
  5197.     DI = INT 21 handler offset
  5198. Index:    hotkeys;Buffit
  5199. --------r-60---------------------------------
  5200. INT 60 - PC-IPC API
  5201.     STACK:    DWORD    pointer to parameter block (see #1694)
  5202. Return: STACK:    unchanged
  5203. Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
  5204.       allows communication between independent programs
  5205. Range:    INT 00 to INT FF, selected by commandline switch
  5206.  
  5207. Format of PC-IPC parameter block:
  5208. Offset    Size    Description    (Table 1694)
  5209.  00h    WORD    caller's ID
  5210.  02h    WORD    to ID
  5211.  04h    WORD    command code (see #1695)
  5212.  06h    WORD    returned status (see #1696)
  5213.  08h    WORD    returned error code (see #1697)
  5214.  0Ah    WORD    size of data
  5215.  0Ch    DWORD    pointer to data buffer
  5216.  
  5217. (Table 1695)
  5218. Values for PC-IPC command code:
  5219.  01h "IPC_CMND_INQUIRE"     inquire current status
  5220.     set status field, writes WORD to data buffer containing free
  5221.       message space in bytes, and sets the "size" field to the
  5222.       number of messages waiting
  5223.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  5224.     ignored unless called with the same ID that disabled PC-IPC
  5225.  03h "IPC_CMND_DISABLE" disable PC-IPC
  5226.  04h "IPC_CMND_INSTALL" reset PC-IPC
  5227.  06h "IPC_CMND_RDATA"    read data
  5228.     returns first message in data buffer, sets "size" to message length
  5229.       and "to ID" field to sender's ID
  5230.     if no messages available, bit 4 of status is cleared and "size" is
  5231.       set to zero
  5232.  07h "IPC_CMND_SDATA"    send data
  5233.  08h "IPC_CMND_REQID"    require user ID
  5234.     create a new recognized ID and return in "caller's ID" field
  5235.  09h "IPC_CMND_DELID"    cancel user ID
  5236.     delete caller's ID from pool of recognized IDs
  5237.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  5238.  0Bh "IPC_CMND_VERS"    get PC-IPC version
  5239.     string representing version returned in data buffer, "size" field
  5240.       set to length of string
  5241.  
  5242. Bitfields for returned status:
  5243. Bit(s)    Description    (Table 1696)
  5244.  0    unused
  5245.  1    IPC enabled
  5246.  2    IPC installed
  5247.  3    error
  5248.  4    message(s) available
  5249.  
  5250. (Table 1697)
  5251. Values for PC-IPC error code:
  5252.  00h    no error
  5253.  01h    invalid command or parameter
  5254.  02h    only process 0 can install/reset IPC
  5255.  03h    process can not install/reset IPC
  5256.  04h    IPC is not enabled
  5257.  05h    process can not disable IPC
  5258.  06h    invalid destination process ID
  5259.  07h    invalid sending process ID
  5260.  08h    invalid data destination
  5261.  09h    no more process IDs available
  5262.  0Ah    can not relinquish that process ID
  5263.  0Bh    message space is full
  5264.  0Ch    IPC is not installed
  5265. --------R-60---------------------------------
  5266. INT 60 - Tangram Arbiter - API
  5267. Desc:    Arbiter makes a PC disk look like a slow disk over an SNA link to an
  5268.       IBM mainframe
  5269. Range:    INT 60h to INT 66h, selected by configuration parameter
  5270. Notes:    identified by string "@ARB_API" immediately following a short jump at
  5271.       the interrupt handler address
  5272. --------N-60---------------------------------
  5273. INT 60 - Excelan LAN Workplace for DOS 3.5 - API
  5274.     ES:BX -> request packet
  5275. Return: request packet updated
  5276. Notes:    this interrupt is also supported by Beame&Whiteside's BWLWP35 shim,
  5277.       which was used in creating this description
  5278.     the installation check consists of testing for the WORD 4142h ('AB')
  5279.       immediately preceding the interrupt handler
  5280. BUG:    because BWLWP35 range-checks only the low byte of the function number,
  5281.       and has a fencepost error even in that test, functions 000Bh and
  5282.       XX01h-XX0Bh (XX nonzero) branch to random locations
  5283. SeeAlso: INT 2F/AX=7A40h
  5284.  
  5285. Format of Excelan request packet:
  5286. Offset    Size    Description    (Table 1698)
  5287.  00h 12 BYTEs    ???
  5288.  0Ch    WORD    (return) error code (see #1699)
  5289.  0Eh    DWORD    -> FAR function for ???
  5290.  12h    WORD    function number
  5291.         0001h ???
  5292.         0002h NOP
  5293.         0003h NOP
  5294.         0004h NOP
  5295.         0005h ???
  5296.         0006h get ??? record
  5297.         0007h NOP
  5298.         0008h reset ???
  5299.         0009h NOP
  5300.         000Ah set ???
  5301.     ???
  5302. ---function 01h---
  5303.  20h    BYTE    (call) subfunction (32h-3Bh)
  5304.         3Bh non-blocking I/O request (will be tested every clock tick)
  5305.  21h    BYTE    (return) error code
  5306.         00h successful
  5307.         09h invalid connection number
  5308.         2Ah bad connection type
  5309.         45h ???
  5310. ---function 01h, subfunction 32h---
  5311.  3Ah    WORD    (call) connection type (01h stream, 02h datagram)
  5312. ---function 01h, subfunction 34h---
  5313.  26h    WORD    (call) ???
  5314.  28h    WORD    (call) ???
  5315.  2Ah    WORD    (call) ???
  5316. ---function 01h, subfunction 35h---
  5317.  1Ah    WORD    (call) connection number???
  5318.  26h    WORD    (return) ???
  5319. ---function 01h, subfunction 36h---
  5320.  1Ah    WORD    (call) connection number???
  5321.  38h    WORD    ???
  5322. ---function 01h, subfunction 37h---
  5323.  24h    WORD    (return) ???
  5324.  26h    WORD    (return) ???
  5325. ---function 01h, subfunction 38h---
  5326.  1Ah    WORD    (call) connection number???
  5327. ---function 01h, subfunction 3Ah---
  5328.  22h    WORD    (call) ???
  5329.         667Eh ???
  5330.         667Fh ???
  5331.  24h    BYTE    (call 667Eh) ???
  5332.  24h    WORD    (return 667Fh) ???
  5333. ---function 01h, subfunction 3Bh---
  5334.  0Eh    DWORD    (call) -> function to invoke for I/O or 0000h:0000h
  5335.         function called with AX = 0000h
  5336.                      STACK: DWORD -> request packet
  5337.                         WORD 0000h
  5338.             should return STACK unchanged
  5339.  1Ah    WORD    (call) connection number???
  5340.  21h    BYTE    (return) set to 01h when I/O becomes possible
  5341.  22h    BYTE    (call) direction (00h write, 01h read)
  5342.  34h    DWORD    (return) -> next pending request packet
  5343. ---function 05h---
  5344.  1Eh    WORD    (call) ???
  5345.  20h    WORD    (call) ???
  5346.  34h    DWORD    (call) -> ???
  5347. ---function 06h---
  5348.  16h    DWORD    (call) -> buffer for ??? record (see #1700)
  5349.  1Ah    WORD    (call) number of bytes to copy
  5350.  22h    WORD    (return) number of bytes transferred
  5351. ---function 08h---
  5352.  14h    WORD    (return) ??? (0001h)
  5353. ---function 0Ah---
  5354.  16h    DWORD    (call) -> WORD ???
  5355.  1Ch    WORD    (call) must be 000Ah for BWLWP35
  5356.  
  5357. (Table 1699)
  5358. Values for Excelan error code:
  5359.  0000h    successful
  5360.  002Dh    invalid function
  5361.  0050h    ???
  5362.  
  5363. Format of ??? record:
  5364. Offset    Size    Description    (Table 1700)
  5365.  00h    WORD    offset of ???
  5366.  02h  4 BYTEs    ???
  5367.  06h    DWORD    IP address (big-endian)
  5368.  0Ah  6 BYTEs    physical address (big-endian)
  5369.     ???
  5370. --------G-60---------------------------------
  5371. INT 60 U - INTRSPY/CMDSPY v1.0 only - API
  5372. Program: INTRSPY is a script-driven debugger included with the book
  5373.       _Undocumented_DOS_.
  5374. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  5375.     The installation check is to
  5376.       a) determine that the handler is an IRET instruction
  5377.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  5378.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  5379.       its entry point.
  5380.     INTRSPY v2.0 (included with the second edition of the book) no longer
  5381.       supports this API
  5382. Index:    installation check;INTRSPY
  5383.  
  5384. (Table 1701)
  5385. Call INTRSPY v1.0 entry point with:
  5386.     AH = function
  5387.         00h ???
  5388.         01h set current directory (for use in reporting)
  5389.         ES:DI -> counted string containing directory name (max 79 char)
  5390.         02h set name of script file
  5391.         ES:DI -> counted string containing file name (max 79 chars)
  5392.         03h set script arguments
  5393.         ES:DI -> counted string containing arguments (max 79 chars)
  5394.         04h get directory set with function 01h
  5395.         ES:DI -> 80-byte buffer for directory name
  5396.         05h get name of script file
  5397.         ES:DI -> 80-byte buffer for script filename
  5398.         06h get script arguments
  5399.         ES:DI -> 80-byte buffer for script arguments
  5400.         07h get ???
  5401.         CL = 00h-15h specifies what to get
  5402.         ES:DI -> WORD to be set with desired value on return
  5403.         08h get ???
  5404.         ES:DI -> WORD to be set with returned value
  5405.         09h get ???
  5406.         ES:DI -> WORD to be set with returned value
  5407.         0Bh store code for interrupt handler???
  5408.         ES:DI -> data
  5409.         CX = number of bytes
  5410.         0Ch ???
  5411.         ES:DI -> ???
  5412.         0Dh get ???
  5413.         ES:DI -> BYTE to be set with returned value
  5414.         0Eh set ??? flag
  5415.         0Fh clear ??? flag
  5416.         10h ???
  5417.         Return: AL = 04h or 05h if failed
  5418.         11h ???
  5419.         Return: AL = 05h if failed
  5420.         12h get ???
  5421.         ES:DI -> buffer
  5422.         Return: CX = number of bytes returned in buffer
  5423.         13h ???
  5424. Return: AH = 00h
  5425.     AL = status
  5426.         00h successful
  5427.         01h invalid function
  5428.         02h ???
  5429.         03h ???
  5430.         04h ???
  5431.         05h ???
  5432. --------u-60---------------------------------
  5433. INT 60 U - PC/370 v4.2 - ???
  5434.     ???
  5435. Return: ???
  5436. Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
  5437. Range:    INT 00 to INT FF, selected by patching the executable
  5438. Note:    the documentation includes instructions for patching the system for
  5439.       another interrupt
  5440. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  5441. --------r-60---------------------------------
  5442. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  5443. SeeAlso: INT 61"JPI"
  5444. --------N-60---------------------------------
  5445. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  5446. Range:    INT 20 to INT FF
  5447. Notes:    The handler for the interrupt will start with a 3-byte jump
  5448.       instruction, followed by the ASCIZ string "PKT DRVR" (the
  5449.       terminating NUL is significant).
  5450.     To find the interrupt being used by the driver, an application should
  5451.       scan through interrupt vectors 20h to FFh (60h through 80h for
  5452.       v1.09- of the specification) until it finds one with the "PKT DRVR"
  5453.       string.
  5454.     AH values of 80h to FFh have been reserved for user-defined additions.
  5455. --------b-60----DI0100-----------------------
  5456. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  5457.     DI = 0100h
  5458.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5459.         DWORD    pointer to event record (see #1703)
  5460. Return: event record filled
  5461.     STACK unchanged
  5462. Note:    this call will timeout after about 500ms
  5463. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  5464.  
  5465. (Table 1702)
  5466. Values for HP 95LX event type:
  5467.  00h    no events
  5468.  01h    keystroke available
  5469.  02h    Ctrl-Break
  5470.  03h    reactivation (always follows deactivation event)
  5471.  04h    about to deactivate (sleep)
  5472.     next get-event call will not return until reactivated
  5473.  05h    forced application termination
  5474.  06h    1-2-3 bridge service request (only given to 1-2-3)
  5475.  07h    request to grow
  5476.  08h    request to shrink
  5477.  09h    application's alarm expired
  5478.  0Ah    daily chance to set an alarm
  5479.  0Bh    system date or time has been changed
  5480.  
  5481. Format of HP 95LX event record:
  5482. Offset    Size    Description    (Table 1703)
  5483.  00h    WORD    event type (see #1702)
  5484.  02h    WORD    ASCII code page 850 translation of keystroke
  5485.         or grow/shrink amount in paragraphs or 0000h if error
  5486.         or alarm expiration data
  5487.  04h    BYTE    scan code from BIOS
  5488.  05h    BYTE    shift key states at time keystroke is retrieved
  5489.  06h    WORD    LICS translation of keystroke
  5490.  08h    BYTE    function key number (1-2-3 only)
  5491.  09h    DWORD    pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
  5492.         or pointer to time change structure (see #1704)
  5493. Note:    if the System Manager is awaiting the conclusion of a bridge service
  5494.       or grow/shrink call and the event type field is set to FFFFh on
  5495.       entry, the SysMgr will resume
  5496.  
  5497. Format of HP 95LX time change structure:
  5498. Offset    Size    Description    (Table 1704)
  5499.  00h    WORD    old year
  5500.  02h    BYTE    old month
  5501.  03h    BYTE    old date
  5502.  04h    BYTE    old day
  5503.  05h    BYTE    old hour
  5504.  06h    BYTE    old minute
  5505.  07h    BYTE    old second
  5506.  08h    BYTE    old hundredth of a second
  5507.  09h  9 BYTEs    new time in same format as old time
  5508. --------b-60----DI0101-----------------------
  5509. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  5510.     DI = 0101h
  5511.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5512.         DWORD pointer to event record (INT 60/DI=0100h)
  5513. Return: event record filled
  5514.     STACK unchanged
  5515. Note:    this call returns immediately if no event is available
  5516. SeeAlso: INT 60/DI=0100h
  5517. --------b-60----DI0102-----------------------
  5518. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  5519.     DI = 0102h
  5520.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5521. Return: ???
  5522.     STACK unchanged
  5523. --------b-60----DI0104-----------------------
  5524. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  5525.     DI = 0104h
  5526.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5527.         DWORD pointer to bridge record (see #1706)
  5528. Return: ???
  5529.     STACK unchanged
  5530.  
  5531. (Table 1705)
  5532. Values for HP 95LX function code:
  5533.  00h    test
  5534.  01h    get range
  5535.  02h    "GETRANGE_ADDR"
  5536.  03h    "SETRANGE_ADDR"
  5537.  04h    "GETRANGE_DATA"
  5538.  05h    "SETRANGE_DATA"
  5539.  06h    recalculate
  5540.  07h    get cursor
  5541.  08h    set cursor
  5542.  09h    redisplay
  5543.  0Ah    cell type
  5544.  0Bh    "CALCTYPE"
  5545.  
  5546. Format of HP 95LX bridge record:
  5547. Offset    Size    Description    (Table 1706)
  5548.  00h    WORD    function code (see #1705)
  5549.  02h    WORD    return code from 1-2-3
  5550.  04h 16 BYTEs    ASCII range name
  5551.  14h    WORD    start column of range
  5552.  16h    WORD    start row of range
  5553.  18h    WORD    end column of range
  5554.  1Ah    WORD    end row of range
  5555.  1Ch    WORD    order in which data is placed in buffer
  5556.  1Eh    WORD    buffer size
  5557.  20h    WORD    offset within bridge record's segment of buffer for cell data
  5558. --------b-60----DI0105-----------------------
  5559. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  5560.     DI = 0105h
  5561.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5562. Return: ???
  5563.     STACK unchanged
  5564. --------b-60----DI0106-----------------------
  5565. INT 60 u - HP 95LX System Manager - YIELD CPU
  5566.     DI = 0106h
  5567.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5568.         DWORD pointer to ???
  5569. Return: ???
  5570.     STACK unchanged
  5571. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  5572. --------b-60----DI0107-----------------------
  5573. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  5574.     DI = 0107h
  5575.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5576.         DWORD pointer to ???
  5577. Return: ???
  5578.     STACK unchanged
  5579. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5580. --------b-60----DI0200-----------------------
  5581. INT 60 u - HP 95LX System Manager - SETUP MENU
  5582.     DI = 0200h
  5583.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5584.         DWORD    pointer to menu data (see #1707)
  5585.         DWORD    pointer to ???
  5586.         WORD    number of items on menu???
  5587.         WORD    ???
  5588.         DWORD    pointer to ???
  5589.         WORD    ???
  5590.         DWORD    pointer to ???
  5591. Return: ???
  5592.     STACK unchanged
  5593. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  5594.  
  5595. Format of HP 95LX menu data:
  5596. Offset    Size    Description    (Table 1707)
  5597.  00h 80 BYTEs    first line of menu text
  5598.  50h 80 BYTEs    second line of menu text
  5599.  A0h 80 BYTEs    third line of menu text
  5600.  F0h    WORD    number of keywords
  5601.  F2h    WORD    index of currently highlighted keyword or FFFFh
  5602.  F4h    WORD    single prompt on top line if nonzero
  5603.  F6h 20 BYTEs    which line each of 20 keywords is located on
  5604. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  5605. 11Eh 20 BYTEs    length of each of 20 keywords
  5606. 132h 20 BYTEs    first letter of each of 20 keywords
  5607. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  5608. --------b-60----DI0201-----------------------
  5609. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  5610.     DI = 0201h
  5611.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5612.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5613. Return: ???
  5614.     STACK unchanged
  5615. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  5616. --------b-60----DI0202-----------------------
  5617. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  5618.     DI = 0202h
  5619.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5620.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5621. Return: ???
  5622.     STACK unchanged
  5623. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  5624. --------b-60----DI0203-----------------------
  5625. INT 60 u - HP 95LX System Manager - REMOVE MENU
  5626.     DI = 0203h
  5627.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5628.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5629. Return: ???
  5630.     STACK unchanged
  5631. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  5632. --------b-60----DI0204-----------------------
  5633. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  5634.     DI = 0204h
  5635.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5636.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5637.         WORD    keystroke
  5638.         DWORD    pointer to WORD to receive selection number
  5639. Return: buffer for selection number filled with index of selected menu item or
  5640.       FFFFh if no final selection yet
  5641.     STACK unchanged
  5642. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  5643. --------b-60----DI0205-----------------------
  5644. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  5645.     DI = 0205h
  5646.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5647.         DWORD    pointer to file menu structure (see #1708)
  5648.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5649.         DWORD    pointer to wildcard filespec for initial file list
  5650.         WORD    row???
  5651.         WORD    column???
  5652. Return: ???
  5653.     STACK unchanged
  5654. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  5655.  
  5656. Format of HP 95LX file menu structure:
  5657. Offset    Size    Description    (Table 1708)
  5658.  00h    DWORD    pointer to ASCIZ base directory name
  5659.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  5660.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see #1709)
  5661.  0Ch    WORD    size of file list workspace in bytes
  5662.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  5663.  10h    WORD    starting column
  5664.  12h    WORD    number of lines
  5665.  14h    WORD    number of columns
  5666.  16h    WORD    number of files displayed on each line
  5667. ---the remaining fields are initialized by the System Manager---
  5668.  18h    WORD    0000h if first edit character, else multiline
  5669.  1Ah    WORD    number of files in file list
  5670.  1Ch    WORD    max files workspace has room for
  5671.  1Eh    WORD    file at top of list
  5672.  20h    WORD    index of file to highlight
  5673.  22h    WORD    index of file to unhighlight
  5674.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  5675.  
  5676. Format of HP 95LX file list workspace entry:
  5677. Offset    Size    Description    (Table 1709)
  5678.  00h    BYTE    file attributes
  5679.  01h    WORD    file time (see #0761 at INT 21/AX=5700h)
  5680.  03h    WORD    file date (see #0762 at INT 21/AX=5700h)
  5681.  05h    DWORD    file size
  5682.  09h 13 BYTEs    ASCIZ filename
  5683. --------b-60----DI0206-----------------------
  5684. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  5685.     DI = 0206h
  5686.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5687.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5688.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5689. Return: ???
  5690.     STACK unchanged
  5691. SeeAlso: INT 60/DI=0205h
  5692. --------b-60----DI0207-----------------------
  5693. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  5694.     DI = 0207h
  5695.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5696.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5697.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5698.         WORD    keystroke
  5699. Return: AX = status (see #1710)
  5700.     STACK unchanged
  5701. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  5702.  
  5703. (Table 1710)
  5704. Values for HP 95LX System Manager status:
  5705.  0000h    keystroke processed, call INT 60/DI=0206h to refresh menu
  5706.  0001h    redisplay application area before refreshing menu
  5707.  0002h    user confirmed selection, filename is in edit record's buffer
  5708.  0003h    user aborted menu
  5709.  FFFBh    bad filename
  5710.  FFFCh    bad directory
  5711.  FFFDh    bad drive
  5712.  FFFEh    unknown keystroke
  5713.  FFFFh    keystroke known but invalid in current context
  5714. --------b-60----DI0208-----------------------
  5715. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  5716.     DI = 0208h
  5717.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5718.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5719.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5720. Return: ???
  5721.     STACK unchanged
  5722. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  5723. --------b-60----DI0300-----------------------
  5724. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  5725.     DI = 0300h
  5726.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5727.         WORD    starting row (-3 is topmost, 0 is first user line)
  5728.         WORD    starting column
  5729.         DWORD    pointer to string
  5730.         WORD    length of string
  5731.         WORD    display style: 0000h normal, 0001h reverse video
  5732.         WORD    "OSTYLE"
  5733. Return: ???
  5734.     STACK unchanged
  5735. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  5736. --------b-60----DI0301-----------------------
  5737. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  5738.     DI = 0301h
  5739.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5740.         WORD    starting row (-3 is topmost, 0 is first user line)
  5741.         WORD    starting column
  5742.         WORD    number of rows
  5743.         WORD    number of columns
  5744. Return: ???
  5745.     STACK unchanged
  5746. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  5747. --------b-60----DI0302-----------------------
  5748. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  5749.     DI = 0302h
  5750.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5751.         WORD    starting row???
  5752.         WORD    starting column???
  5753.         WORD    height of scroll region???
  5754.         WORD    width of scroll region???
  5755.         WORD    number of lines to scroll region???
  5756. Return: ???
  5757.     STACK unchanged
  5758. SeeAlso: INT 60/DI=0301h
  5759. --------b-60----DI0303-----------------------
  5760. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  5761.     DI = 0303h
  5762.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5763.         WORD    ???
  5764.         WORD    ???
  5765.         WORD    ???
  5766.         WORD    ???
  5767.         DWORD    pointer to ???
  5768. Return: ???
  5769.     STACK unchanged
  5770. --------b-60----DI0304-----------------------
  5771. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  5772.     DI = 0304h
  5773.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5774.         DWORD    pointer to ???
  5775.         WORD    ???
  5776. Return: ???
  5777.     STACK unchanged
  5778. --------b-60----DI0305-----------------------
  5779. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  5780.     DI = 0305h
  5781.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5782.         WORD    ???
  5783.         WORD    ???
  5784.         DWORD    pointer to ???
  5785.         WORD    ???
  5786. Return: ???
  5787.     STACK unchanged
  5788. --------b-60----DI0307-----------------------
  5789. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  5790.     DI = 0307h
  5791.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5792.         WORD    ???
  5793.         WORD    ???
  5794.         WORD    ???
  5795. Return: ???
  5796.     STACK unchanged
  5797. --------b-60----DI0308-----------------------
  5798. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  5799.     DI = 0308h
  5800.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5801. Return: ???
  5802.     STACK unchanged
  5803. --------b-60----DI0309-----------------------
  5804. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  5805.     DI = 0309h
  5806.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5807.         WORD    new mode
  5808. Return: ???
  5809.     STACK unchanged
  5810. --------b-60----DI030A-----------------------
  5811. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  5812.     DI = 030Ah
  5813.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5814. Return: ???
  5815.     STACK unchanged
  5816. --------b-60----DI030B-----------------------
  5817. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  5818.     DI = 030Bh
  5819.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5820.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  5821.         WORD    column
  5822. Return: ???
  5823.     STACK unchanged
  5824. Note:    cursor is hidden if the specified position is not on the physical
  5825.       display
  5826. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5827. --------b-60----DI0400-----------------------
  5828. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  5829.     DI = 0400h
  5830.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5831.         DWORD    pointer to edit record (see #1711)
  5832.         DWORD    pointer to string to be edited
  5833.         WORD    initial length of string being edited
  5834.         WORD    maximum length of edited string
  5835.         WORD    row of edit field
  5836.         WORD    leftmost column of edit field
  5837. Return: ???
  5838.     STACK unchanged
  5839.  
  5840. Format of HP 95LX edit record:
  5841. Offset    Size    Description    (Table 1711)
  5842.  00h    WORD    current length of edit buffer
  5843.  02h    BYTE    flag for special processing on first character
  5844.  03h    BYTE    flags
  5845.         bit 0: tab handling
  5846.  04h    WORD    editing in prompt window?
  5847.  06h    DWORD    pointer to top line of prompt window message
  5848.  0Ah    WORD    length of top line of prompt
  5849.  0Ch    DWORD    pointer to second line of prompt window message
  5850.  10h    WORD    length of second line of prompt
  5851.  12h 80 BYTEs    workspace for editing
  5852.  62h  2 WORDs    line array needed for multi-line editing
  5853.  66h 36 BYTEs    multi-line edit record (see #1712)
  5854.  8Ah    WORD    displayable columns
  5855.  
  5856. Format of HP 95LX multi-line edit record:
  5857. Offset    Size    Description    (Table 1712)
  5858.  00h    DWORD    pointer to user-supplied edit buffer
  5859.  04h    WORD    length of edit buffer
  5860.  06h    WORD    current cursor position
  5861.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  5862.  0Ah    WORD    starting column of edit area
  5863.  0Ch    WORD    height of edit area
  5864.  0Eh    WORD    width of edit area
  5865.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  5866.  12h    WORD    number of rows displayable
  5867.  14h    BYTE    cursor column
  5868.  15h    BYTE    01h if buffer has been modified
  5869.  16h    BYTE    first displayable column (ticker fields only)
  5870.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  5871.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  5872.           area is high)
  5873.  1Ch    BYTE    currently marking?
  5874.  1Dh    BYTE    flag
  5875.  1Eh    WORD    offset of mark start
  5876.  20h    WORD    offset of mark end (inclusive)
  5877.  22h    WORD    displayable columns
  5878. --------b-60----DI0401-----------------------
  5879. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  5880.     DI = 0401h
  5881.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5882.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5883.         DWORD    pointer to string to edit
  5884.         WORD    initial length of string being edited
  5885.         WORD    maximum length of edited string
  5886.         DWORD    pointer to first line of prompt
  5887.         WORD    length of first line
  5888.         DWORD    pointer to second line of prompt
  5889.         WORD    length of second line
  5890. Return: ???
  5891.     STACK unchanged
  5892. --------b-60----DI0402-----------------------
  5893. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  5894.     DI = 0402h
  5895.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5896.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5897. Return: ???
  5898.     STACK unchanged
  5899. --------b-60----DI0403-----------------------
  5900. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  5901.     DI = 0403h
  5902.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5903.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5904.         WORD    keystroke
  5905.         DWORD    pointer to WORD buffer for result code
  5906. Return: result code buffer filled with 0001h if editing complete
  5907.     STACK unchanged
  5908. --------b-60----DI0404-----------------------
  5909. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  5910.     DI = 0404h
  5911.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5912.         DWORD    pointer to ???
  5913.         WORD    ???
  5914.         WORD    ???
  5915.         WORD    ???
  5916.         WORD    ???
  5917.         DWORD    pointer to ???
  5918.         WORD    ???
  5919.         WORD    ???
  5920.         WORD    ???
  5921.         DWORD    pointer to ???
  5922. Return: ???
  5923.     STACK unchanged
  5924. --------b-60----DI0405-----------------------
  5925. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  5926.     DI = 0405h
  5927.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5928.         DWORD    pointer to ???
  5929. Return: ???
  5930.     STACK unchanged
  5931. --------b-60----DI0406-----------------------
  5932. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  5933.     DI = 0406h
  5934.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5935.         DWORD    pointer to ???
  5936.         WORD    ???
  5937. Return: ???
  5938.     STACK unchanged
  5939. --------b-60----DI0407-----------------------
  5940. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  5941.     DI = 0407h
  5942.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5943.         DWORD    pointer to ???
  5944.         DWORD    pointer to ???
  5945. Return: ???
  5946.     STACK unchanged
  5947. --------b-60----DI0408-----------------------
  5948. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  5949.     DI = 0408h
  5950.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5951.         DWORD    pointer to ???
  5952. Return: ???
  5953.     STACK unchanged
  5954. --------b-60----DI0409-----------------------
  5955. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  5956.     DI = 0409h
  5957.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5958.         DWORD    pointer to ???
  5959. Return: ???
  5960.     STACK unchanged
  5961. --------b-60----DI040A-----------------------
  5962. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  5963.     DI = 040Ah
  5964.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5965.         DWORD    pointer to ???
  5966. Return: ???
  5967.     STACK unchanged
  5968. --------b-60----DI040B-----------------------
  5969. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  5970.     DI = 040Bh
  5971.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5972.         DWORD    pointer to ???
  5973.         DWORD    pointer to ???
  5974.         WORD    ???
  5975. Return: ???
  5976.     STACK unchanged
  5977. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5978. --------b-60----DI0500-----------------------
  5979. INT 60 u - HP 95LX System Manager - OPEN FILE
  5980.     DI = 0500h
  5981.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5982.         DWORD    pointer to file state record (see #1713)
  5983.         DWORD    pointer to filename
  5984.         WORD    length of filename
  5985.         WORD    ???
  5986.         WORD    suppress buffering if nonzero
  5987. Return: AX = status
  5988.     STACK unchanged
  5989. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  5990.  
  5991. Format of HP 95LX file state record:
  5992. Offset    Size    Description    (Table 1713)
  5993.  00h    WORD    DOS file handle
  5994.  02h    WORD    flags
  5995.         bit 0: buffer contents valid
  5996.         bit 1: buffer is dirty and must be written
  5997.         bit 2: unbuffered I/O
  5998.         bit 3: file is a character device
  5999.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  6000.  08h    DWORD    DOS file offset of start of buffer
  6001.  0Ch    DWORD    effective file offset as seen by caller
  6002.  10h    WORD    number of bytes in file buffer
  6003. ---buffered I/O only---
  6004.  12h 512 BYTEs    file buffer
  6005. --------b-60----DI0501-----------------------
  6006. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  6007.     DI = 0501h
  6008.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6009.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6010.         DWORD    pointer to filename
  6011.         WORD    length of filename
  6012.         WORD    ???
  6013.         WORD    suppress buffering if nonzero
  6014. Return: AX = status
  6015.     STACK unchanged
  6016. SeeAlso: INT 60/DI=0500h
  6017. --------b-60----DI0502-----------------------
  6018. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  6019.     DI = 0502h
  6020.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6021.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6022.         DWORD    pointer to filename
  6023.         WORD    length of filename
  6024.         WORD    ???
  6025.         WORD    suppress buffering if nonzero
  6026. Return: AX = status
  6027.     STACK unchanged
  6028. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  6029. --------b-60----DI0503-----------------------
  6030. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  6031.     DI = 0503h
  6032.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6033.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6034.         DWORD    pointer to filename
  6035.         WORD    length of filename
  6036.         WORD    ???
  6037.         WORD    suppress buffering if nonzero
  6038. Return: AX = status
  6039.     STACK unchanged
  6040. SeeAlso: INT 60/DI=0502h
  6041. --------b-60----DI0504-----------------------
  6042. INT 60 u - HP 95LX System Manager - READ FROM FILE
  6043.     DI = 0504h
  6044.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6045.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6046.         DWORD    pointer to data buffer
  6047.         WORD    number of bytes to read
  6048.         DWORD    pointer to WORD in which to return actual bytes read
  6049. Return: ???
  6050.     STACK unchanged
  6051. SeeAlso: INT 60/DI=0505h
  6052. --------b-60----DI0505-----------------------
  6053. INT 60 - HP 95LX System Manager - WRITE TO FILE
  6054.     DI = 0505h
  6055.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6056.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6057.         DWORD    pointer to data
  6058.         WORD    length of data
  6059. Return: AX = status
  6060.     STACK unchanged
  6061. SeeAlso: INT 60/DI=0504h
  6062. --------b-60----DI0506-----------------------
  6063. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  6064.     DI = 0506h
  6065.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6066.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6067.         WORD    ???
  6068.         WORD    ???
  6069. Return: ???
  6070.     STACK unchanged
  6071. SeeAlso: INT 60/DI=0507h
  6072. --------b-60----DI0507-----------------------
  6073. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  6074.     DI = 0507h "M_TELL"
  6075.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6076.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  6077.         DWORD    pointer to DWORD buffer for file position???
  6078. Return: ???
  6079.     STACK unchanged
  6080. SeeAlso: INT 60/DI=0506h
  6081. --------b-60----DI0508-----------------------
  6082. INT 60 u - HP 95LX System Manager - CLOSE FILE
  6083.     DI = 0508h
  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. Return: ???
  6087.     STACK unchanged
  6088. SeeAlso: INT 60/DI=0500h
  6089. --------b-60----DI0509-----------------------
  6090. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  6091.     DI = 0509h
  6092.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6093.         DWORD    pointer to ???
  6094.         DWORD    pointer to ???
  6095.         WORD    ???
  6096.         WORD    ???
  6097. Return: ???
  6098.     STACK unchanged
  6099. --------b-60----DI050A-----------------------
  6100. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  6101.     DI = 050Ah
  6102.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6103.         DWORD    pointer to ???
  6104.         DWORD    pointer to ???
  6105. Return: ???
  6106.     STACK unchanged
  6107.  
  6108. Format of HP 95LX pattern match control block:
  6109. Offset    Size    Description    (Table 1714)
  6110.  00h 43 BYTEs    FindFirst data block (see INT 21/AH=4Eh)
  6111.  2Bh 80 BYTEs    full path name
  6112.  7Bh    BYTE    offset of last component of filename
  6113.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  6114. --------b-60----DI050B-----------------------
  6115. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  6116.     DI = 050Bh
  6117.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6118.         DWORD    pointer to ???
  6119.         WORD    ???
  6120.         WORD    ???
  6121.         DWORD    pointer to ???
  6122. Return: ???
  6123.     STACK unchanged
  6124.  
  6125. (Table 1715)
  6126. Values returned by HP 95LX System Manager:
  6127.  0000h    nonexistent
  6128.  0001h    file
  6129.  0002h    directory
  6130.  0003h    character device
  6131. --------b-60----DI050C-----------------------
  6132. INT 60 u - HP 95LX System Manager - DELETE FILE
  6133.     DI = 050Ch "M_DELETE"
  6134.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6135.         DWORD    pointer to ???
  6136.         WORD    ???
  6137.         WORD    ???
  6138. Return: ???
  6139.     STACK unchanged
  6140. --------b-60----DI050D-----------------------
  6141. INT 60 u - HP 95LX System Manager - RENAME FILE
  6142.     DI = 050Dh
  6143.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6144.         DWORD    pointer to ???
  6145.         WORD    ???
  6146.         WORD    ???
  6147.         DWORD    pointer to ???
  6148.         WORD    ???
  6149.         WORD    ???
  6150. Return: ???
  6151.     STACK unchanged
  6152. --------b-60----DI050E-----------------------
  6153. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  6154.     DI = 050Eh
  6155.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6156.         WORD    ???
  6157.         DWORD    pointer to ???
  6158.         DWORD    pointer to ???
  6159. Return: ???
  6160.     STACK unchanged
  6161. --------b-60----DI050F-----------------------
  6162. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  6163.     DI = 050Fh
  6164.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6165.         DWORD    pointer to ???
  6166.         WORD    ???
  6167. Return: ???
  6168.     STACK unchanged
  6169. --------b-60----DI0510-----------------------
  6170. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  6171.     DI = 0510h
  6172.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6173.         DWORD    pointer to ???
  6174.         DWORD    pointer to ???
  6175. Return: ???
  6176.     STACK unchanged
  6177. --------b-60----DI0511-----------------------
  6178. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  6179.     DI = 0511h
  6180.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6181.         DWORD    pointer to ???
  6182.         WORD    ???
  6183.         WORD    ???
  6184. Return: ???
  6185.     STACK unchanged
  6186. SeeAlso: INT 21/AH=39h,INT 60/AX=0512h
  6187. --------b-60----DI0512-----------------------
  6188. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  6189.     DI = 0512h
  6190.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6191.         DWORD    pointer to ???
  6192.         WORD    ???
  6193.         WORD    ???
  6194. Return: ???
  6195.     STACK unchanged
  6196. SeeAlso: INT 21/AH=3Ah,INT 60/AX=0511h
  6197. --------b-60----DI0513-----------------------
  6198. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  6199.     DI = 0513h
  6200.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6201.         DWORD    pointer to ??? buffer for current drive
  6202. Return: ???
  6203.     STACK unchanged
  6204. SeeAlso: INT 21/AH=19h,INT 60/DI=0514h
  6205. --------b-60----DI0514-----------------------
  6206. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  6207.     DI = 0514h
  6208.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6209.         WORD    new drive
  6210. Return: ???
  6211.     STACK unchanged
  6212. SeeAlso: INT 21/AH=0Eh,INT 60/DI=0513h
  6213. --------b-60----DI0515-----------------------
  6214. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  6215.     DI = 0515h
  6216.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6217.         DWORD    pointer to ???
  6218.         DWORD    pointer to ???
  6219. Return: ???
  6220.     STACK unchanged
  6221. --------b-60----DI0516-----------------------
  6222. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  6223.     DI = 0516h
  6224.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6225.         DWORD    pointer to ???
  6226. Return: ???
  6227.     STACK unchanged
  6228. --------b-60----DI0517-----------------------
  6229. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  6230.     DI = 0517h
  6231.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6232.         DWORD    pointer to ???
  6233.         WORD    ???
  6234.         WORD    ???
  6235.         DWORD    pointer to ??? buffer for file's attributes???
  6236. Return: ???
  6237.     STACK unchanged
  6238. SeeAlso: INT 21/AX=4300h,INT 60/DI=0518h
  6239. --------b-60----DI0518-----------------------
  6240. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  6241.     DI = 0518h
  6242.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6243.         DWORD    pointer to ???
  6244.         WORD    ???
  6245.         WORD    ???
  6246.         WORD    new attributes???
  6247. Return: ???
  6248.     STACK unchanged
  6249. SeeAlso: INT 21/AX=4301h,INT 60/DI=0517h
  6250. --------b-60----DI0519-----------------------
  6251. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  6252.     DI = 0519h
  6253.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6254.         DWORD    pointer to ???
  6255.         DWORD    pointer to ???
  6256.         WORD    ???
  6257.         WORD    ???
  6258.         WORD    ???
  6259.         WORD    ???
  6260.         WORD    ???
  6261. Return: ???
  6262.     STACK unchanged
  6263. --------b-60----DI051A-----------------------
  6264. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  6265.     DI = 051Ah
  6266.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6267.         DWORD    pointer to ???
  6268.         DWORD    pointer to ???
  6269. Return: ???
  6270.     STACK unchanged
  6271. --------b-60----DI051B-----------------------
  6272. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  6273.     DI = 051Bh
  6274.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6275.         DWORD    pointer to ???
  6276.         DWORD    pointer to ???
  6277. Return: ???
  6278.     STACK unchanged
  6279. --------b-60----DI051C-----------------------
  6280. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  6281.     DI = 051Ch
  6282.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6283.         DWORD    pointer to ???
  6284.         WORD    ???
  6285. Return: ???
  6286.     STACK unchanged
  6287. --------b-60----DI0600-----------------------
  6288. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  6289.     DI = 0600h
  6290.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6291. Return: ???
  6292.     STACK unchanged
  6293. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  6294. --------b-60----DI0601-----------------------
  6295. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  6296.     DI = 0601h
  6297.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6298. Return: never
  6299.     STACK unchanged
  6300. SeeAlso: INT 21/AH=4Ch,INT 2F/AX=1122h,INT 60/DI=0600h
  6301. --------b-60----DI0602-----------------------
  6302. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  6303.     DI = 0602h
  6304.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6305. Return: ???
  6306.     STACK unchanged
  6307. SeeAlso: INT 15/AX=101Bh,INT 2F/AX=1681h,INT 60/DI=0603h
  6308. --------b-60----DI0603-----------------------
  6309. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  6310.     DI = 0603h
  6311.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6312. Return: ???
  6313.     STACK unchanged
  6314. SeeAlso: INT 15/AX=101Ch,INT 2F/AX=1682h,INT 60/DI=0602h
  6315. --------b-60----DI0604-----------------------
  6316. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  6317.     DI = 0604h
  6318.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6319.         DWORD    pointer to ???
  6320.         WORD    ???
  6321.         WORD    ???
  6322.         DWORD    pointer to ???
  6323. Return: ???
  6324.     STACK unchanged
  6325. SeeAlso: INT 21/AH=4Bh
  6326. --------b-60----DI0605-----------------------
  6327. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  6328.     DI = 0605h
  6329.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6330. Return: ???
  6331.     STACK unchanged
  6332. --------b-60----DI0606-----------------------
  6333. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  6334.     DI = 0606h
  6335.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6336. Return: ???
  6337.     STACK unchanged
  6338. SeeAlso: INT 14/AH=17h"FOSSIL",INT 19
  6339. --------b-60----DI0607-----------------------
  6340. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  6341.     DI = 0607h
  6342.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6343.         DWORD    pointer to ???
  6344.         WORD    ???
  6345.         DWORD    pointer to ???
  6346.         WORD    ???
  6347. Return: ???
  6348.     STACK unchanged
  6349. --------b-60----DI0608-----------------------
  6350. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  6351.     DI = 0608h
  6352.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6353.         DWORD    pointer to ???
  6354. Return: ???
  6355.     STACK unchanged
  6356. --------b-60----DI0609-----------------------
  6357. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  6358.     DI = 0609h
  6359.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6360.         DWORD    pointer to ???
  6361. Return: DX:AX -> ???
  6362.     STACK unchanged
  6363. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6364. --------b-60----DI0700-----------------------
  6365. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  6366.     DI = 0700h
  6367.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6368. Return: ???
  6369.     STACK unchanged
  6370. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  6371.  
  6372. (Table 1716)
  6373. Values for HP 95LX error code:
  6374.  0000h    successful
  6375.  FFF8h    transfer request out of bounds
  6376.  FFF9h    no such representation
  6377.  FFFAh    no representation open
  6378.  FFFBh    a representation is already open
  6379.  FFFCh    representation already exists
  6380.  FFFDh    heap allocation failure
  6381.  FFFEh    clipboard not open
  6382.  FFFFh    clipboard access denied
  6383. --------b-60----DI0701-----------------------
  6384. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  6385.     DI = 0701h
  6386.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6387. Return: ???
  6388.     STACK unchanged
  6389. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  6390. --------b-60----DI0702-----------------------
  6391. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  6392.     DI = 0702h
  6393.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6394.         DWORD    pointer to ???
  6395. Return: ???
  6396.     STACK unchanged
  6397. SeeAlso: INT 60/DI=0700h
  6398. --------b-60----DI0704-----------------------
  6399. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  6400.     DI = 0704h
  6401.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6402.         DWORD    pointer to ???
  6403. Return: ???
  6404.     STACK unchanged
  6405. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  6406. --------b-60----DI0705-----------------------
  6407. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  6408.     DI = 0705h
  6409.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6410. Return: ???
  6411.     STACK unchanged
  6412. SeeAlso: INT 60/DI=0704h
  6413. --------b-60----DI0706-----------------------
  6414. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  6415.     DI = 0706h
  6416.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6417.         WORD    ???
  6418.         DWORD    pointer to ???
  6419.         DWORD    pointer to ???
  6420. Return: ???
  6421.     STACK unchanged
  6422. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  6423. --------b-60----DI0707-----------------------
  6424. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  6425.     DI = 0707h
  6426.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6427.         DWORD    pointer to ???
  6428.         DWORD    pointer to ???
  6429.         DWORD    pointer to ???
  6430. Return: ???
  6431.     STACK unchanged
  6432. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  6433. --------b-60----DI0708-----------------------
  6434. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  6435.     DI = 0708h
  6436.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6437.         DWORD    pointer to data to be written???
  6438.         WORD    length of data???
  6439. Return: ???
  6440.     STACK unchanged
  6441. SeeAlso: INT 60/DI=0709h
  6442. --------b-60----DI0709-----------------------
  6443. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  6444.     DI = 0709h
  6445.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6446.         WORD    ???
  6447.         WORD    ???
  6448.         DWORD    pointer to buffer for data???
  6449.         WORD    length of buffer???
  6450. Return: ???
  6451.     STACK unchanged
  6452. SeeAlso: INT 60/DI=0708h
  6453. --------b-60----DI0800-----------------------
  6454. INT 60 u - HP 95LX System Manager - BEEP
  6455.     DI = 0800h
  6456.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6457. Return: ???
  6458.     STACK unchanged
  6459. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  6460. --------b-60----DI0801-----------------------
  6461. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  6462.     DI = 0801h
  6463.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6464. Return: ???
  6465.     STACK unchanged
  6466. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  6467. --------b-60----DI0802-----------------------
  6468. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  6469.     DI = 0802h
  6470.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6471.         WORD    pattern number (00h-06h)
  6472. Return: ???
  6473.     STACK unchanged
  6474. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  6475. --------b-60----DI0803-----------------------
  6476. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  6477.     DI = 0803h
  6478.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6479. Return: ???
  6480.     STACK unchanged
  6481. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  6482. --------b-60----DI0900-----------------------
  6483. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  6484.     DI = 0900h
  6485.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6486.         WORD    size of block in bytes
  6487. Return: AX -> memory block
  6488.     STACK unchanged
  6489. Note:    System Manager-compliant applications are always small-model (64K code,
  6490.       64K data)
  6491. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  6492. --------b-60----DI0902-----------------------
  6493. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  6494.     DI = 0902h
  6495.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6496.         WORD    offset of memory block???
  6497. Return: ???
  6498.     STACK unchanged
  6499. Note:    System Manager-compliant applications are always small-model (64K code,
  6500.       64K data)
  6501. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  6502. --------b-60----DI0903-----------------------
  6503. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  6504.     DI = 0903h
  6505.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6506.         WORD    size of block in bytes???
  6507. Return: AX -> memory block???
  6508.     STACK unchanged
  6509. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  6510. --------b-60----DI0904-----------------------
  6511. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  6512.     DI = 0904h
  6513.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6514.         WORD    segment of memory block???
  6515. Return: AX -> ???
  6516.     STACK unchanged
  6517. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  6518. --------b-60----DI0B00-----------------------
  6519. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  6520.     DI = 0B00h
  6521.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6522.         DWORD    pointer to ???
  6523. Return: ???
  6524.     STACK unchanged
  6525. --------b-60----DI0B01-----------------------
  6526. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  6527.     DI = 0B01h
  6528.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6529.         DWORD    pointer to ???
  6530. Return: ???
  6531.     STACK unchanged
  6532. --------b-60----DI0B02-----------------------
  6533. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  6534.     DI = 0B02h
  6535.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6536.         DWORD    pointer to ???
  6537. Return: ???
  6538.     STACK unchanged
  6539. --------b-60----DI0B03-----------------------
  6540. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  6541.     DI = 0B03h
  6542.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6543.         WORD    ???
  6544. Return: ???
  6545.     STACK unchanged
  6546. --------b-60----DI0B04-----------------------
  6547. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  6548.     DI = 0B04h
  6549.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6550.         DWORD    pointer to alarm record???
  6551.         WORD    ???
  6552. Return: ???
  6553.     STACK unchanged
  6554.  
  6555. Format of HP 95LX alarm record:
  6556. Offset    Size    Description    (Table 1717)
  6557.  00h    BYTE    hour
  6558.  01h    BYTE    minute
  6559.  02h    BYTE    second
  6560.  03h    BYTE    unused padding
  6561.  04h    WORD    rescheduling interval, in seconds
  6562.  06h    BYTE    are seconds significant?
  6563.  07h    BYTE    alarm sound
  6564.  08h 40 BYTEs    message displayed when alarm activates
  6565.  30h    BYTE    task ID of owner
  6566.  31h    BYTE    application's own use for sub-class
  6567.  32h  4 BYTEs    application's own use for private data
  6568. --------b-60----DI0B05-----------------------
  6569. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  6570.     DI = 0B05h
  6571.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6572.         DWORD    pointer to ???
  6573. Return: ???
  6574.     STACK unchanged
  6575. --------b-60----DI0B06-----------------------
  6576. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  6577.     DI = 0B06h
  6578.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6579.         DWORD    pointer to ???
  6580.         DWORD    pointer to ???
  6581.         DWORD    pointer to ???
  6582. Return: ???
  6583.     STACK unchanged
  6584. --------b-60----DI0B07-----------------------
  6585. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  6586.     DI = 0B07h
  6587.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6588.         DWORD    pointer to ???
  6589. Return: ???
  6590.     STACK unchanged
  6591. --------b-60----DI0B08-----------------------
  6592. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  6593.     DI = 0B08h
  6594.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6595.         WORD    timestamp format (see #1718)
  6596.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  6597.         WORD    column
  6598. Return: ???
  6599.     STACK unchanged
  6600.  
  6601. Bitfields for HP 95LX timestamp format:
  6602. Bit(s)    Description    (Table 1718)
  6603.  1-0    timestamp components
  6604.     00 date only
  6605.     01 time only
  6606.     10 date and time
  6607.     11 day and date
  6608.  4    supply am/pm
  6609.  5    supply seconds
  6610.  6    show year
  6611.  7    four-digit year
  6612. --------b-60----DI0B09-----------------------
  6613. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  6614.     DI = 0B09h
  6615.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6616.         DWORD    pointer to ???
  6617.         DWORD    pointer to ???
  6618. Return: ???
  6619.     STACK unchanged
  6620. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  6621.  
  6622. Format of HP 95LX system settings:
  6623. Offset    Size    Description    (Table 1719)
  6624.  00h    WORD    country code
  6625.  02h    WORD    speaker volume (00h-03h or FFh for off)
  6626.  04h    WORD    contrast level (00h-0Fh)
  6627.  06h    WORD    week start (00h Sunday, 01h Monday)
  6628.  08h    WORD    punctuation format (see #1720)
  6629.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  6630.  0Ch    WORD    current date format (see #1721)
  6631.  0Eh    WORD    current time format (see #1722)
  6632.  10h    WORD    collating sequence
  6633.         00h numbers first, 01h letters first, 02h ASCII
  6634.  12h 80 BYTEs    name of picture file
  6635.  62h 30 BYTEs    name
  6636.  80h 30 BYTEs    title
  6637.  9Eh 28 BYTEs    company name
  6638.  BAh    WORD    number of languages
  6639.  BCh  6 BYTEs    available languages
  6640.  C2h 66 BYTEs    language menu
  6641. 104h  2 BYTEs    ASCIZ date separator
  6642. 106h  2 BYTEs    ASCIZ time separator
  6643. 108h    BYTE    date order
  6644. 109h    BYTE    use 24 hour time?
  6645. 10Ah 16 BYTEs    currency string
  6646. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  6647. 11Ch    WORD    keyboard (see #1723)
  6648. 11Eh    WORD    printer baud rate
  6649.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  6650. 120h    WORD    printer driver code
  6651.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  6652. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  6653. 124h    WORD    system manager interrupt (60h by default)
  6654. 126h    WORD    code page (01h CP850, 02h CP437)
  6655. 128h    WORD    active exit key
  6656. 12Ah    WORD    active menu key
  6657. 12Ch    WORD    active CHAR key toggle
  6658. 12Eh  6 BYTEs    alarm
  6659.  
  6660. (Table 1720)
  6661. Values for HP 95LX punctuation format:
  6662.  code    decimal arg    thousands
  6663.  00h    .    ,    ,
  6664.  01h    ,    .    .
  6665.  02h    .    ;    ;
  6666.  03h    ,    ;    .
  6667.  04h    .    ,    " "
  6668.  05h    ,    .    " "
  6669.  06h    .    ;    " "
  6670.  07h    ,    ;    " "
  6671.  
  6672. (Table 1721)
  6673. Values for HP 95LX current date format:
  6674.  00h    dd-mmm-yy
  6675.  01h    dd-mmm
  6676.  02h    mmm-yy
  6677.  03h    mm/dd/yy
  6678.  04h    dd/mm/yy
  6679.  05h    dd.mm.yy
  6680.  06h    yy-mm-dd
  6681.  07h    mm/dd
  6682.  08h    dd/mm
  6683.  09h    dd.mm
  6684.  0Ah    mm-dd
  6685.  
  6686. (Table 1722)
  6687. Values for HP 95LX current time format:
  6688.  00h    HH:MM:SS am/pm
  6689.  01h    HH:MM am/pm
  6690.  02h    HH:MM:SS
  6691.  03h    HH.MM.SS
  6692.  04h    HH,MM,SS
  6693.  05h    HHhMMmSSs
  6694.  06h    HH:MM
  6695.  07h    HH.MM
  6696.  08h    HH,MM
  6697.  09h    HHhMMm
  6698.  
  6699. (Table 1723)
  6700. Values for HP 95LX keyboard layout:
  6701.  0001h    Belgium
  6702.  0002h    French Canadian
  6703.  0004h    Denmark
  6704.  0008h    Finland
  6705.  0010h    French
  6706.  0020h    Finland
  6707.  0040h    Italy
  6708.  0080h    Netherlands
  6709.  0100h    Norway
  6710.  0200h    Portugal
  6711.  0400h    Spain
  6712.  0800h    Sweden
  6713.  1000h    Swiss French
  6714.  2000h    Swiss German
  6715.  4000h    United Kingdom
  6716.  8000h    USA
  6717. --------b-60----DI0B0A-----------------------
  6718. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  6719.     DI = 0B0Ah
  6720.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6721.         DWORD    pointer to ???
  6722.         DWORD    pointer to ???
  6723. Return: ???
  6724.     STACK unchanged
  6725. SeeAlso: INT 60/DI=0B09h
  6726. --------b-60----DI0B0B-----------------------
  6727. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  6728.     DI = 0B0Bh
  6729.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6730.         DWORD    pointer to ???
  6731. Return: ???
  6732.     STACK unchanged
  6733. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  6734. --------b-60----DI0B0C-----------------------
  6735. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  6736.     DI = 0B0Ch
  6737.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6738.         DWORD    pointer to ???
  6739. Return: ???
  6740.     STACK unchanged
  6741. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  6742. --------b-60----DI0B0D-----------------------
  6743. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  6744.     DI = 0B0Dh
  6745.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6746.         DWORD    pointer to ???
  6747.         DWORD    pointer to ???
  6748.         DWORD    pointer to ???
  6749. Return: ???
  6750.     STACK unchanged
  6751. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  6752. --------b-60----DI0B0E-----------------------
  6753. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  6754.     DI = 0B0Eh
  6755.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6756.         WORD    ???
  6757.         WORD    ???
  6758.         WORD    ???
  6759.         DWORD    pointer to ???
  6760.         DWORD    pointer to ???
  6761. Return: DX:AX -> ???
  6762.     STACK unchanged
  6763. --------b-60----DI0B0F-----------------------
  6764. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  6765.     DI = 0B0Fh
  6766.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6767. Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
  6768.     STACK unchanged
  6769. SeeAlso: INT 60/DI=0B09h
  6770. --------b-60----DI0B10-----------------------
  6771. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  6772.     DI = 0B10h
  6773.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6774.         WORD    ???
  6775.         DWORD    pointer to ???
  6776.         DWORD    pointer to ???
  6777. Return: ???
  6778.     STACK unchanged
  6779. --------b-60----DI0B11-----------------------
  6780. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  6781.     DI = 0B11h
  6782.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6783.         WORD    ???
  6784.         DWORD    pointer to ???
  6785.         DWORD    pointer to ???
  6786. Return: ???
  6787.     STACK unchanged
  6788. --------b-60----DI0B12-----------------------
  6789. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  6790.     DI = 0B12h
  6791.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6792.         WORD    new parsing rule (see #1724)
  6793. Return: ???
  6794.     STACK unchanged
  6795. SeeAlso: INT 60/DI=0B13h
  6796.  
  6797. (Table 1724)
  6798. Values for HP 95LX date parsing rule:
  6799.  01h    day-month-year
  6800.  02h    month-day-year
  6801.  03h    year-month-day
  6802.  04h    "DMYO"
  6803.  05h    "MDYO"
  6804.  OR with 08h to get any year
  6805. --------b-60----DI0B13-----------------------
  6806. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  6807.     DI = 0B13h
  6808.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6809.         WORD    new parsing rule (see #1725)
  6810. Return: ???
  6811.     STACK unchanged
  6812. SeeAlso: INT 60/DI=0B12h
  6813.  
  6814. (Table 1725)
  6815. Values for HP 95LX time parsing rule:
  6816.  01h    HH:MM:SS (am/pm)
  6817.  02h    HH:MM:SS (24hr)
  6818.  03h    HHMM:SS (24hr)
  6819.  04h    HH:MM:SS.hh (24hr)
  6820.  05h    HH:MM (am/pm)
  6821.  06h    HH:MM (24hr)
  6822.  07h    HHMM (24hr)
  6823. --------b-60----DI0B14-----------------------
  6824. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  6825.     DI = 0B14h
  6826.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6827. Return: ???
  6828.     STACK unchanged
  6829. --------b-60----DI0B15-----------------------
  6830. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  6831.     DI = 0B15h
  6832.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6833.         WORD    ???
  6834. Return: ???
  6835.     STACK unchanged
  6836. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6837. --------b-60----DI0C00-----------------------
  6838. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  6839.     DI = 0C00h
  6840.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6841. Return: ???
  6842.     STACK unchanged
  6843. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  6844. --------b-60----DI0C01-----------------------
  6845. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  6846.     DI = 0C01h
  6847.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6848. Return: ???
  6849.     STACK unchanged
  6850. Note:    relinquishes control of printer
  6851. SeeAlso: INT 60/DI=0C00h
  6852. --------b-60----DI0C02-----------------------
  6853. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  6854.     DI = 0C02h
  6855.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6856.         DWORD    pointer to data to be written
  6857.         WORD    length of data
  6858. Return: ???
  6859.     STACK unchanged
  6860. SeeAlso: INT 60/DI=0C00h
  6861. --------b-60----DI0C03-----------------------
  6862. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  6863.     DI = 0C03h
  6864.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6865. Return: ???
  6866.     STACK unchanged
  6867. SeeAlso: INT 60/DI=0C00h
  6868. --------b-60----DI0C04-----------------------
  6869. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  6870.     DI = 0C04h
  6871.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6872.         WORD    ???
  6873.         DWORD    pointer to ???
  6874. Return: ???
  6875.     STACK unchanged
  6876. --------b-60----DI0C05-----------------------
  6877. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  6878.     DI = 0C05h
  6879.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6880.         WORD    ???
  6881.         DWORD    pointer to ???
  6882. Return: ???
  6883.     STACK unchanged
  6884. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6885. --------b-60----DI0E00-----------------------
  6886. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  6887.     DI = 0E00h
  6888.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6889.         DWORD    pointer to ???
  6890. Return: ???
  6891.     STACK unchanged
  6892. SeeAlso: #1726,INT 60/DI=0E01h,INT 60/DI=0E02h
  6893.  
  6894. (Table 1726)
  6895. Values for HP 95LX error code:
  6896.  0000h    successful
  6897.  FFF1h    "E_BUSY"
  6898.  FFF2h    timeout
  6899.  FFF3h    framing error
  6900.  FFF4h    parity error
  6901.  FFF5h    overrun error
  6902.  FFF6h    "E_EMPTY"
  6903.  FFF7h    "E_CONECT"
  6904.  FFF8h    not open
  6905.  FFF9h    out of memory
  6906.  FFFAh    buffer overflow
  6907.  FFFBh    "E_NOFIT"
  6908.  FFFCh    unsupported
  6909.  FFFDh    "E_IVOPR"
  6910.  FFFEh    "E_IVCHN"
  6911.  FFFFh    "E_REOPEN"
  6912. --------b-60----DI0E01-----------------------
  6913. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  6914.     DI = 0E01h
  6915.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6916.         DWORD    pointer to WORD buffer for comm channel handle
  6917.         WORD    communications line number (01h-04h)
  6918. Return: ???
  6919.     STACK unchanged
  6920. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  6921. --------b-60----DI0E02-----------------------
  6922. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  6923.     DI = 0E02h
  6924.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6925.         WORD    comm channel handle
  6926. Return: ???
  6927.     STACK unchanged
  6928. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  6929. --------b-60----DI0E03-----------------------
  6930. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  6931.     DI = 0E03h
  6932.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6933.         WORD    ???
  6934. Return: ???
  6935.     STACK unchanged
  6936. --------b-60----DI0E04-----------------------
  6937. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  6938.     DI = 0E04h
  6939.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6940.         WORD    ???
  6941.         WORD    ???
  6942. Return: ???
  6943.     STACK unchanged
  6944. --------b-60----DI0E05-----------------------
  6945. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  6946.     DI = 0E05h
  6947.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6948.         WORD    ???
  6949.         DWORD    pointer to ???
  6950. Return: ???
  6951.     STACK unchanged
  6952. --------b-60----DI0E06-----------------------
  6953. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  6954.     DI = 0E06h
  6955.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6956.         WORD    comm channel handle
  6957.         WORD    reset options (see #1727)
  6958. Return: ???
  6959.     STACK unchanged
  6960.  
  6961. Bitfields for HP 95LX reset options:
  6962. Bit(s)    Description    (Table 1727)
  6963.  0    reset line
  6964.  1    flush transmit buffer
  6965.  2    flush receive buffer
  6966.  3    reset modem
  6967.  4    reset receiver's ^S state
  6968.  5    reset transmitter's ^S state
  6969. --------b-60----DI0E07-----------------------
  6970. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  6971.     DI = 0E07h
  6972.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6973.         WORD    ???
  6974. Return: ???
  6975.     STACK unchanged
  6976. --------b-60----DI0E08-----------------------
  6977. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  6978.     DI = 0E08h
  6979.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6980.         WORD    comm channel handle
  6981.         DWORD    pointer to data to be sent
  6982.         WORD    option flags
  6983.             bit 0: send partial buffer
  6984.             bit 1: turn on receiver after sending
  6985.         DWORD    pointer to WORD containing length of data to be sent
  6986. Return: length WORD updated to contain number of bytes actually sent???
  6987.     STACK unchanged
  6988. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  6989. --------b-60----DI0E09-----------------------
  6990. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  6991.     DI = 0E09h
  6992.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6993.         WORD    ???
  6994.         DWORD    pointer to ??? WORD
  6995.         DWORD    pointer to ??? WORD
  6996. Return: ???
  6997.     STACK unchanged
  6998. SeeAlso: INT 60/DI=0E0Ah
  6999. --------b-60----DI0E0A-----------------------
  7000. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  7001.     DI = 0E0Ah
  7002.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7003.         WORD    comm channel handle
  7004.         DWORD    pointer to WORD to get receive buffer size
  7005.         DWORD    pointer to WORD to get free bytes in receive buffer
  7006. Return: ???
  7007.     STACK unchanged
  7008. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  7009. --------b-60----DI0E0B-----------------------
  7010. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  7011.     DI = 0E0Bh
  7012.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7013.         WORD    comm channel handle
  7014.         DWORD    pointer to data buffer
  7015.         DWORD    pointer to WORD (call) length of data buffer
  7016.                     (return) number of bytes received
  7017. Return: ???
  7018.     STACK unchanged
  7019. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  7020. --------b-60----DI0E0C-----------------------
  7021. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  7022.     DI = 0E0Ch
  7023.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7024.         WORD    ???
  7025.         DWORD    pointer to ???
  7026.         WORD    ???
  7027. Return: ???
  7028.     STACK unchanged
  7029. --------b-60----DI0E0D-----------------------
  7030. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  7031.     DI = 0E0Dh
  7032.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7033.         WORD    ???
  7034.         DWORD    pointer to ???
  7035.         WORD    ???
  7036. Return: ???
  7037.     STACK unchanged
  7038. --------b-60----DI0E0E-----------------------
  7039. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  7040.     DI = 0E0Eh
  7041.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7042.         WORD    ???
  7043.         WORD    ???
  7044. Return: ???
  7045.     STACK unchanged
  7046. --------b-60----DI0E0F-----------------------
  7047. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  7048.     DI = 0E0Fh
  7049.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7050.         WORD    ???
  7051. Return: ???
  7052.     STACK unchanged
  7053. --------b-60----DI0E10-----------------------
  7054. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  7055.     DI = 0E10h
  7056.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7057.         WORD    ???
  7058. Return: ???
  7059.     STACK unchanged
  7060. --------b-60----DI0E11-----------------------
  7061. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  7062.     DI = 0E11h
  7063.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7064.         WORD    ???
  7065.         WORD    ???
  7066. Return: ???
  7067.     STACK unchanged
  7068. --------b-60----DI0E12-----------------------
  7069. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  7070.     DI = 0E12h
  7071.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7072.         WORD    ???
  7073. Return: ???
  7074.     STACK unchanged
  7075. --------b-60----DI0E13-----------------------
  7076. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  7077.     DI = 0E13h
  7078.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7079.         WORD    ???
  7080. Return: ???
  7081.     STACK unchanged
  7082. --------b-60----DI0E14-----------------------
  7083. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  7084.     DI = 0E14h
  7085.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7086.         WORD    comm channel handle
  7087.         DWORD    pointer to comm settings (see #1728)
  7088. Return: ???
  7089.     STACK unchanged
  7090. SeeAlso: INT 60/DI=0E15h
  7091.  
  7092. Format of HP 95LX comm settings:
  7093. Offset    Size    Description    (Table 1728)
  7094.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  7095.  01h    WORD    baud rate divisor (115200/baud_rate)
  7096.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  7097.  04h    BYTE    stop bits (00h one, 04h two)
  7098.  05h    BYTE    data bits - 5
  7099.  06h    BYTE    software handshake
  7100.         01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  7101.  07h    BYTE    infrared (01h off, 02h on)
  7102.  08h    BYTE    duplex (01h half, 02h full)
  7103.  09h    BYTE    echo (01h echo, 02h no echo)
  7104. --------b-60----DI0E15-----------------------
  7105. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  7106.     DI = 0E15h
  7107.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7108.         WORD    ???
  7109.         DWORD    pointer to buffer for settings (see INT 60/DI=0E14h)
  7110. Return: ???
  7111.     STACK unchanged
  7112. SeeAlso: INT 60/DI=0E14h
  7113. --------b-60----DI0E16-----------------------
  7114. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  7115.     DI = 0E16h
  7116.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7117.         WORD    ???
  7118.         WORD    ???
  7119.         WORD    ???
  7120.         WORD    ???
  7121.         WORD    ???
  7122. Return: ???
  7123.     STACK unchanged
  7124. --------b-60----DI0E17-----------------------
  7125. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  7126.     DI = 0E17h
  7127.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7128.         WORD    ???
  7129. Return: ???
  7130.     STACK unchanged
  7131. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7132. --------b-60----DI0F00-----------------------
  7133. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  7134.     DI = 0F00h
  7135.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7136.         WORD    ???
  7137.         DWORD    pointer to ???
  7138.         WORD    ???
  7139.         DWORD    pointer to ???
  7140. Return: ???
  7141.     STACK unchanged
  7142. --------b-60----DI0F01-----------------------
  7143. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  7144.     DI = 0F01h
  7145.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7146.         DWORD    pointer to ASCIZ title string
  7147. Return: ???
  7148.     STACK unchanged
  7149. --------b-60----DI0F02-----------------------
  7150. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  7151.     DI = 0F02h
  7152.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7153.         DWORD    pointer to ???
  7154. Return: ???
  7155.     STACK unchanged
  7156. --------b-60----DI0F03-----------------------
  7157. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  7158.     DI = 0F03h
  7159.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7160.         DWORD    pointer to first line of message
  7161.         WORD    length of first line
  7162.         DWORD    pointer to second line of message
  7163.         WORD    length of second line
  7164. Return: ???
  7165.     STACK unchanged
  7166. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  7167. --------b-60----DI0F04-----------------------
  7168. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  7169.     DI = 0F04h
  7170.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7171. Return: ???
  7172.     STACK unchanged
  7173. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  7174. --------b-60----DI0F05-----------------------
  7175. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  7176.     DI = 0F05h
  7177.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7178. Return: DX:AX -> ???
  7179.     STACK unchanged
  7180. --------b-60----DI0F06-----------------------
  7181. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  7182.     DI = 0F06h
  7183.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7184. Return: DX:AX -> ???
  7185.     STACK unchanged
  7186. --------b-60----DI0F07-----------------------
  7187. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  7188.     DI = 0F07h
  7189.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7190. Return: DX:AX -> ???
  7191.     STACK unchanged
  7192. --------b-60----DI0F08-----------------------
  7193. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  7194.     DI = 0F08h
  7195.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7196.         ???
  7197. Return: ???
  7198.     STACK unchanged
  7199. --------b-60----DI0F09-----------------------
  7200. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  7201.     DI = 0F09h
  7202.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7203.         DWORD    pointer to first line of message
  7204.         WORD    length of first line
  7205.         DWORD    pointer to second line of message
  7206.         WORD    length of second line
  7207.         DWORD    pointer to third line of message
  7208.         WORD    length of third line
  7209. Return: ???
  7210.     STACK unchanged
  7211. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  7212. --------b-60----DI0F0A-----------------------
  7213. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  7214.     DI = 0F0Ah
  7215.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7216. Return: ???
  7217.     STACK unchanged
  7218. SeeAlso: INT 60/DI=0F0Bh
  7219. --------b-60----DI0F0B-----------------------
  7220. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  7221.     DI = 0F0Bh
  7222.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7223. Return: ???
  7224.     STACK unchanged
  7225. SeeAlso: INT 60/DI=0F0Ah
  7226. --------b-60----DI0F0C-----------------------
  7227. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  7228.     DI = 0F0Ch
  7229.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7230.         ???
  7231. Return: ???
  7232.     STACK unchanged
  7233. --------b-60----DI0F0D-----------------------
  7234. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  7235.     DI = 0F0Dh
  7236.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7237.         DWORD    pointer to ???
  7238. Return: DX:AX -> ???
  7239.     STACK unchanged
  7240. --------b-60----DI0F0E-----------------------
  7241. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  7242.     DI = 0F0Eh
  7243.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7244.         DWORD    pointer to ???
  7245. Return: DX:AX -> ???
  7246.     STACK unchanged
  7247. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7248. --------b-60----DI1005-----------------------
  7249. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  7250.     DI = 1005h
  7251.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7252. Return: ???
  7253.     STACK unchanged
  7254. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  7255. --------b-60----DI1200-----------------------
  7256. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  7257.     DI = 1200h
  7258.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7259.         DWORD    pointer to ???
  7260. Return: ???
  7261.     STACK unchanged
  7262. --------b-60----DI1201-----------------------
  7263. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  7264.     DI = 1201h
  7265.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7266.         WORD    ???
  7267. Return: DX:AX -> ???
  7268.     STACK unchanged
  7269. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7270. --------b-60----DI1202-----------------------
  7271. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  7272.     DI = 1202h
  7273.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7274. Return: DX:AX -> ???
  7275.     STACK unchanged
  7276. --------b-60----DI1203-----------------------
  7277. INT 60 u - HP 95LX System Manager - "INIT_SYSMGR_RSRCS"
  7278.     DI = 1203h
  7279.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7280. Return: ???
  7281.     STACK unchanged
  7282. --------b-60----DI1300-----------------------
  7283. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  7284.     DI = 1300h
  7285.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7286.         DWORD    pointer to ???
  7287.         DWORD    pointer to ???
  7288.         WORD    ???
  7289. Return: ???
  7290.     STACK unchanged
  7291. --------b-60----DI1301-----------------------
  7292. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  7293.     DI = 1301h
  7294.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7295.         DWORD    pointer to ???
  7296. Return: ???
  7297.     STACK unchanged
  7298. --------b-60----DI1302-----------------------
  7299. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  7300.     DI = 1302h
  7301.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7302.         DWORD    pointer to ???
  7303.         WORD    ???
  7304. Return: ???
  7305.     STACK unchanged
  7306. --------b-60----DI1303-----------------------
  7307. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  7308.     DI = 1303h
  7309.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7310.         DWORD    pointer to ???
  7311. Return: ???
  7312.     STACK unchanged
  7313. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7314. --------b-60----DI1400-----------------------
  7315. INT 60 u - HP 95LX System Manager - "M_ColInit"
  7316.     DI = 1400h
  7317.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7318. Return: AX = ???
  7319.     STACK unchanged
  7320. --------b-60----DI1401-----------------------
  7321. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  7322.     DI = 1401h
  7323.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7324.         DWORD    pointer to ???
  7325.         WORD    ???
  7326.         DWORD    pointer to ???
  7327.         WORD    ???
  7328. Return: ???
  7329.     STACK unchanged
  7330. --------b-60----DI1402-----------------------
  7331. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  7332.     DI = 1402h
  7333.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7334.         ???
  7335. Return: ???
  7336.     STACK unchanged
  7337. --------b-60----DI1403-----------------------
  7338. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  7339.     DI = 1403h
  7340.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7341.         ???
  7342. Return: ???
  7343.     STACK unchanged
  7344. --------b-60----DI1404-----------------------
  7345. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  7346.     DI = 1404h
  7347.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7348.         DWORD    pointer to ???
  7349.         WORD    ???
  7350. Return: ???
  7351.     STACK unchanged
  7352. --------b-60----DI1405-----------------------
  7353. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  7354.     DI = 1405h
  7355.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7356.         DWORD    pointer to ???
  7357.         WORD    ???
  7358.         DWORD    pointer to ???
  7359.         WORD    ???
  7360.         WORD    ???
  7361. Return: ???
  7362.     STACK unchanged
  7363. --------b-60----DI1406-----------------------
  7364. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  7365.     DI = 1406h
  7366.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7367.         DWORD    pointer to ???
  7368.         WORD    ???
  7369. Return: ???
  7370.     STACK unchanged
  7371. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7372. --------b-60----DI1500-----------------------
  7373. INT 60 u - HP 95LX System Manager - "GrDispInit"
  7374.     DI = 1500h
  7375.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7376.         ???
  7377. Return: ???
  7378.     STACK unchanged
  7379. --------b-60----DI1501-----------------------
  7380. INT 60 u - HP 95LX System Manager - "GrDispClear"
  7381.     DI = 1501h
  7382.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7383.         ???
  7384. Return: ???
  7385.     STACK unchanged
  7386. --------b-60----DI1502-----------------------
  7387. INT 60 u - HP 95LX System Manager - "GrDispDot"
  7388.     DI = 1502h
  7389.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7390.         ???
  7391. Return: ???
  7392.     STACK unchanged
  7393. --------b-60----DI1503-----------------------
  7394. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  7395.     DI = 1503h
  7396.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7397.         ???
  7398. Return: ???
  7399.     STACK unchanged
  7400. --------b-60----DI1504-----------------------
  7401. INT 60 u - HP 95LX System Manager - "GrDispFill"
  7402.     DI = 1504h
  7403.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7404.         ???
  7405. Return: ???
  7406.     STACK unchanged
  7407. --------b-60----DI1505-----------------------
  7408. INT 60 u - HP 95LX System Manager - "GrDispRead"
  7409.     DI = 1505h
  7410.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7411.         ???
  7412. Return: ???
  7413.     STACK unchanged
  7414. --------b-60----DI1506-----------------------
  7415. INT 60 u - HP 95LX System Manager - "GrDispString"
  7416.     DI = 1506h
  7417.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7418.         ???
  7419. Return: ???
  7420.     STACK unchanged
  7421. --------b-60----DI1507-----------------------
  7422. INT 60 u - HP 95LX System Manager - "GrDispPan"
  7423.     DI = 1507h
  7424.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7425.         ???
  7426. Return: ???
  7427.     STACK unchanged
  7428. --------b-60----DI1508-----------------------
  7429. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  7430.     DI = 1508h
  7431.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7432.         ???
  7433. Return: ???
  7434.     STACK unchanged
  7435. --------b-60----DI1509-----------------------
  7436. INT 60 u - HP 95LX System Manager - "GrDispSave"
  7437.     DI = 1509h
  7438.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7439.         ???
  7440. Return: ???
  7441.     STACK unchanged
  7442. --------b-60----DI150A-----------------------
  7443. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  7444.     DI = 150Ah
  7445.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7446.         ???
  7447. Return: ???
  7448.     STACK unchanged
  7449. --------b-60----DI150B-----------------------
  7450. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  7451.     DI = 150Bh
  7452.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7453.         ???
  7454. Return: ???
  7455.     STACK unchanged
  7456. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7457. --------b-60----DI1604-----------------------
  7458. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  7459.     DI = 1604h
  7460.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7461.         ???
  7462. Return: ???
  7463.     STACK unchanged
  7464. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7465. --------G-6000-------------------------------
  7466. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  7467.     AH = 00h
  7468. Return: AX = 0000h    profiling is off
  7469.         otherwise profiling is on
  7470. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7471.       Issue 47
  7472. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  7473. --------G-6000-------------------------------
  7474. INT 60 - MDEBUG - GET STATUS
  7475.     AH = 00h
  7476.     DS:SI -> password or a null byte
  7477. Return: AX = return code
  7478.         FFFEh password is invalid
  7479.         FFFDh display mode is invalid
  7480.         else successful
  7481.         ES = value of the monitor register SE
  7482.         DI = value of the monitor register OF
  7483.         CH = monitor color
  7484.         CL = interpreter color
  7485.         BH = monitor start line
  7486.         BL = interpreter start line
  7487.         AH = makecode of the hotkey
  7488.         AL = ASCII code of the hotkey
  7489.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  7490.               hotkey (coded as for the keyboard flag at 0040h:0017h)
  7491.         DH = basic process number for the communication with drivers
  7492.               process number for the display driver, DH+1 = process
  7493.               number for the command driver(s)
  7494.     DS:SI -> MDEBUG identification table
  7495. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  7496.       Schemmer, including a memory monitor, an interpreter, and a
  7497.       disassembler
  7498. Notes:    MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  7499.       through INT 67; the interrupt handler is preceded by the signature
  7500.       "USERINT" and is not chained
  7501.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  7502.       passwords are active; enough stack space must be provided for an
  7503.       INT 10h call (which MDEBUG uses while prompting for the password)
  7504. SeeAlso: AH=02h"MDEBUG"
  7505. Index:    hotkeys;MDEBUG
  7506.  
  7507. Format of MDEBUG identification table:
  7508. Offset    Size    Description    (Table 1729)
  7509.  -2    WORD    entry offset
  7510.  00h    WORD    CS of MDEBUG
  7511.  02h    DWORD    old INT 08h vector
  7512.  06h    DWORD    old INT 09h vector
  7513.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  7514.  0Eh    BYTE    length of version string
  7515.  0Fh  N BYTEs    version string
  7516. --------G-6001-------------------------------
  7517. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  7518.     AH = 01h
  7519.     DS:SI -> password or a null byte
  7520. Return: AX = return code
  7521.         FFFEh password is invalid
  7522.         FFFDh display mode is invalid
  7523.         else successful
  7524.         ES:DI point to the help registers of MDEBUG
  7525.            ES:DI-02h  -> R0 (WORD)
  7526.            ES:DI      -> R1 (WORD)
  7527.            ES:DI+02h  -> R2 (WORD)
  7528.            ES:DI+04h  -> R3 (WORD)
  7529.            ...
  7530.            ES:DI+0Eh  -> R8 (WORD)
  7531. --------G-6001-------------------------------
  7532. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  7533.     AH = 01h
  7534. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7535.       Issue 47
  7536. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  7537. --------N-6001FF-----------------------------
  7538. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  7539.     AX = 01FFh
  7540.     BX = handle returned by function 02h
  7541. Return: CF set on error
  7542.         DH = error code (see #1730)
  7543.     CF clear if successful
  7544.         BX = version
  7545.         CH = network interface class (see #1731)
  7546.         DX = interface type (see #1731)
  7547.         CL = number
  7548.         DS:SI -> name
  7549.         AL = driver functions supported
  7550.         01h basic
  7551.         02h basic and extended
  7552.         05h basic and high-performance
  7553.         06h basic, high-performance, and extended
  7554.         FFh not installed
  7555. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  7556.       the packet driver specification
  7557.  
  7558. (Table 1730)
  7559. Values for Packet Driver error code:
  7560.  01h "BAD_HANDLE"    invalid handle number
  7561.  02h "NO_CLASS"        no interfaces of the specified class found
  7562.  03h "NO_TYPE"        no interfaces of the specified type found
  7563.  04h "NO_NUMBER"    no interfaces of the specified number found
  7564.  05h "BAD_TYPE"        bad packet type
  7565.  06h "NO_MULTICAST"    interface does not support multicast messages
  7566.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  7567.  08h "BAD_MODE"        invalid receiver mode
  7568.  09h "NO_SPACE"        insufficient space
  7569.  0Ah "TYPE_INUSE"    type accessed but never released
  7570.  0Bh "BAD_COMMAND"    bad command
  7571.  0Ch "CANT_SEND"    packet could not be sent
  7572.  0Dh "CANT_SET"        hardware address could not be changed
  7573.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  7574.  0Fh "CANT_RESET"    could not reset interface
  7575.  
  7576. (Table 1731)
  7577. Values for Packet Driver network interface classes/types:
  7578.     Class 01h  Ethernet/IEEE 802.3
  7579.     01h 3COM 3C500/3C501
  7580.     02h 3COM 3C505
  7581.     03h MICOM-Interlan NI5010
  7582.     04h BICC Data Networks 4110
  7583.     05h BICC Data Networks 4117
  7584.     06h MICOM-Interlan NP600
  7585.     08h Ungermann-Bass PC-NIC
  7586.     09h Univation NC-516
  7587.     0Ah TRW PC-2000
  7588.     0Bh MICOM-Interlan NI5210
  7589.     0Ch 3COM 3C503
  7590.     0Dh 3COM 3C523
  7591.     0Eh Western Digital WD8003
  7592.     0Fh Spider Systems S4
  7593.     10h Torus Frame Level
  7594.     11h 10Net Communications
  7595.     12h Gateway PC-bus
  7596.     13h Gateway AT-bus
  7597.     14h Gateway MCA-bus
  7598.     15h IMC PCnic
  7599.     16h IMC PCnic II
  7600.     17h IMC PCnic 8-bit
  7601.     18h Tigan Communications
  7602.     19h Micromatic Research
  7603.     1Ah Clarkson "Multiplexor"
  7604.     1Bh D-Link 8-bit
  7605.     1Ch D-Link 16-bit
  7606.     1Dh D-Link PS/2
  7607.     1Eh Research Machines 8
  7608.     1Fh Research Machines 16
  7609.     20h Research Machines MCA
  7610.     21h Radix Microsystems EXM1 16-bit
  7611.     22h Interlan Ni9210
  7612.     23h Interlan Ni6510
  7613.     24h Vestra LANMASTER 16-bit
  7614.     25h Vestra LANMASTER 8-bit
  7615.     26h Allied Telesis PC/XT/AT
  7616.     27h Allied Telesis NEC PC-98
  7617.     28h Allied Telesis Fujitsu FMR
  7618.     29h Ungermann-Bass NIC/PS2
  7619.     2Ah Tiara LANCard/E AT
  7620.     2Bh Tiara LANCard/E MC
  7621.     2Ch Tiara LANCard/E TP
  7622.     2Dh Spider Communications SpiderComm 8
  7623.     2Eh Spider Communications SpiderComm 16
  7624.     2Fh AT&T Starlan NAU
  7625.     30h AT&T Starlan-10 NAU
  7626.     31h AT&T Ethernet NAU
  7627.     32h Intel smart card
  7628.     33h Xircom Packet Adapter
  7629.     34h Aquila Ethernet
  7630.     35h Novell NE1000
  7631.     36h Novell NE2000
  7632.     37h SMC PC-510
  7633.     38h AT&T Fiber NAU
  7634.     39h NDIS to Packet Driver adapter
  7635.     3Ah Racal-InterLan ES3210
  7636.     3Bh General Systems ISDN simulated Ethernet
  7637.     3Ch Hewlett-Packard
  7638.     3Dh IMC EtherNic-8
  7639.     3Eh IMC EtherNic-16
  7640.     3Fh IMC EtherNic-MCA
  7641.     40h NetWorth EtherNext
  7642.     41h Dataco Scanet
  7643.     42h DEC DEPCA
  7644.     43h C-Net
  7645.     44h Gandalf LANLine
  7646.     45h Apricot built-in
  7647.     46h David Systems Ether-T
  7648.     47h ODI to Packet Driver adapter (see also AX=5100h)
  7649.     48h AMD Am21110-16
  7650.     49h Intel ICD Network controller family
  7651.     4Ah Intel ICD PCL2
  7652.     4Bh Intel ICD PCL2A
  7653.     4Ch AT&T LANPacer
  7654.     4Dh AT&T LANPacer+
  7655.     4Eh AT&T EVB
  7656.     4Fh AT&T StarStation
  7657.     50h SLIP simulated ethernet
  7658.     51h Racal-Interlan NIA310
  7659.     52h Racal-Interlan NISE
  7660.     53h Racal-Interlan NISE30
  7661.     54h Racal-Interlan NI6610
  7662.     55h Ethernet over IP/UDP
  7663.     56h ICL EtherTeam 16
  7664.     57h David Systems
  7665.     58h NCR WaveLAN
  7666.     59h Thomas Contrad TC5045
  7667.     5Ah Russ Nelson's Parallel Port driver
  7668.     5Bh Intell EtherExpress 16
  7669.     5Ch IBMTOKEN
  7670.     5Dh Zenith Z-Note
  7671.     5Eh 3Com 3C509
  7672.     5Fh Mylex LNE390
  7673.     60h Madge Smart Ringnode
  7674.     61h Novell NE2100
  7675.     62h Allied Telesis 1500
  7676.     63h Allied Telesis 1700
  7677.     64h Fujitsu EtherCoupler
  7678.     Class 02h  ProNET-10
  7679.     01h Proteon p1300
  7680.     02h Proteon p1800
  7681.     Class 03h  IEEE 802.5/ProNet-4 (without expanded RIFs)
  7682.     01h IBM Token-Ring Adapter
  7683.     02h Proteon p1340
  7684.     03h Proteon p1344
  7685.     04h Gateway PC-bus
  7686.     05h Gateway AT-bus
  7687.     06h Gateway MCA-bus
  7688.     07h Madge board
  7689.     39h NDIS to Packet Driver adapter
  7690.     47h ODI to Packet Driver adapter
  7691.     Class 04h  Omninet
  7692.     Class 05h  Appletalk
  7693.     01h ATALK.SYS adapter
  7694.     Class 06h  Serial Line
  7695.     01h Clarkson 8250-SLIP
  7696.     02h Clarkson "Multiplexor"
  7697.     03h Eicon Technologies
  7698.     Class 07h  StarLAN (subsumed by Ethernet class)
  7699.     Class 08h  ARCnet
  7700.     01h Datapoint RIM
  7701.     Class 09h  AX.25
  7702.     01h Ottawa PI card
  7703.     02h Eicon Technologies
  7704.     Class 0Ah  KISS
  7705.     Class 0Bh  IEEE 802.3 with 802.2 headers
  7706.     types same as for class 01h
  7707.     Class 0Ch  FDDI with 802.2 headers
  7708.     01h Western Digital
  7709.     02h Frontier Technology
  7710.     Class 0Dh  Internet X.25
  7711.     01h Western Digital
  7712.     02h Frontier Technology
  7713.     03h Emerging Technologies
  7714.     04h The Software Forge
  7715.     05h Link Data Intelligent X.25
  7716.     06h Eicon Technologies
  7717.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  7718.     01h NT LANSTAR/8
  7719.     02h NT LANSTAR/MC
  7720.     Class 0Fh  SLFP (MIT serial specification)
  7721.     01h MERIT
  7722.     Class 10h  PPP (Point-to-Point Protocol)
  7723.     01h 8250/16550 UART
  7724.     02h Niwot Networks synch
  7725.     03h Eicon Technologies
  7726.     Class 11h  802.5 with expanded RIFs
  7727.     types same as for class 3
  7728.     Class 12h  reserved for LCP/NCPs
  7729. Note: class and type numbers are cleared through FTP Software
  7730. --------G-6002-------------------------------
  7731. INT 60 - MDEBUG - SET STATUS
  7732.     AH = 02h
  7733.     DS:SI -> password or a null byte
  7734.     ES = new value for the register SE
  7735.     DI = new value for the register OF
  7736.     CH = new monitor color if nonzero
  7737.     CL = new interpreter color if nonzero
  7738.     BH = new monitor start line if nonzero
  7739.     BL = new interpreter start line if nonzero
  7740.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  7741.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  7742.           if nonzero
  7743.     DH = if nonzero, new basic process number for communication with the
  7744.           drivers (DH = multiplex number for the display driver,
  7745.           DH+1 = multiplex number for the command driver or drivers)
  7746. Return: AX = return code
  7747.         FFFFh call not allowed
  7748.         FFFEh password is invalid
  7749.         FFFDh display mode is invalid
  7750.         0000h successful, status changed
  7751.         else AL = error reasons (see #1732)
  7752. Note:    the values of the registers SE and OF are always changed, the other
  7753.       values are only changed if they are valid
  7754. SeeAlso: AH=00h"MDEBUG"
  7755. Index:    hotkeys;MDEBUG
  7756.  
  7757. Bitfields for MDEBUG error reasons:
  7758. Bit(s)    Description    (Table 1732)
  7759.  0    invalid monitor start line
  7760.  1    invalid interpreter start line
  7761.  2    invalid hotkey
  7762.  3    invalid process number
  7763.  4-7    reserved
  7764. --------N-6002-------------------------------
  7765. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  7766.     AH = 02h
  7767.     AL = interface class
  7768.     BX = interface type
  7769.     DL = interface number
  7770.     DS:SI -> type
  7771.     CX = length of type (0000h for all packets)
  7772.     ES:DI -> receiver
  7773. Return: CF set on error
  7774.         DH = error code (see #1730)
  7775.     CF clear if successful
  7776.         AX = handle
  7777. SeeAlso: AH=03h"FTP"
  7778.  
  7779. (Table 1733)
  7780. Values packet driver receiver is called with when a packet is received:
  7781.     AX = subfunction
  7782.         00h get packet buffer
  7783.         CX = buffer length
  7784.         DX = lookahead length (v1.10+)
  7785.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  7786.         DI = error flags (class dependent) (v1.10+)
  7787.         Return: ES:DI -> packet buffer
  7788.                 0000h:0000h means throw away packet
  7789.             CX = size of buffer (v1.10+), may be smaller than
  7790.                   incoming data
  7791.         01h copy completed
  7792.         DS:SI -> buffer
  7793.         CX = bytes actually copied (v1.10+)
  7794.     BX = handle
  7795. --------G-6002-------------------------------
  7796. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  7797.     AH = 02h
  7798. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7799.       Issue 47
  7800. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  7801. --------G-6003-------------------------------
  7802. INT 60 - MDEBUG - POP UP
  7803.     AH = 03h
  7804.     DS:SI -> password or a null byte
  7805.     ES -> new value for the register SE
  7806.     DI -> new value for the register OF
  7807. Return: AX = return code (see #1734)
  7808. SeeAlso: AH=04h"MDEBUG"
  7809.  
  7810. (Table 1734)
  7811. Values for MDEBUG return code:
  7812.  FFFFh    call not allowed
  7813.  FFFEh    password is invalid
  7814.  FFFDh    display mode is invalid
  7815.  else    successful
  7816. --------N-6003-------------------------------
  7817. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  7818.     AH = 03h
  7819.     BX = handle
  7820. Return: CF set on error
  7821.        DH = error code (see #1730)
  7822.     CF clear if successful
  7823. SeeAlso: AH=02h"FTP"
  7824. --------G-6003-------------------------------
  7825. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  7826.     AH = 03h
  7827. Return: ES:BX -> profiling table
  7828. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7829.       Issue 47
  7830. SeeAlso: AH=04h"SYS_PROF"
  7831. --------N-6004-------------------------------
  7832. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  7833.     AH = 04h
  7834.     DS:SI -> buffer
  7835.     CX = length
  7836. Return: CF set on error
  7837.         DH = error code (see #1730)
  7838.     CF clear if successful
  7839. Note:    the buffer may be modified immediately upon return from this call
  7840. SeeAlso: AH=0Bh
  7841. --------G-6004-------------------------------
  7842. INT 60 - MDEBUG - POP UP
  7843.     AH = 04h
  7844.     DS:SI -> password or a null byte
  7845. Return: AX = return code (see #1734)
  7846. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  7847. --------G-6004-------------------------------
  7848. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  7849.     AH = 04h
  7850. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7851.       Issue 47
  7852. SeeAlso: AH=03h"SYS_PROF"
  7853. --------N-6005-------------------------------
  7854. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  7855.     AH = 05h
  7856.     BX = handle (optional for v1.10+)
  7857. Return: CF set on error
  7858.        DH = error code (see #1730)
  7859.     CF clear if successful
  7860. --------G-6005-------------------------------
  7861. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  7862.     AH = 05h
  7863.     DS:SI -> password or a null byte
  7864.     BL = new value for the semaphor of MDEBUG
  7865.          00h  enable popup of MDEBUG
  7866.          else disable popup of MDEBUG
  7867. Return: AX = return code
  7868.         FFFEh password is invalid
  7869.         FFFDh display mode is invalid
  7870.         else successful
  7871.         BL = old value of the semaphor of MDEBUG
  7872.         BH = old value of the INT 08h semaphor
  7873.             (this semaphor is always reset after this function)
  7874. --------N-6006-------------------------------
  7875. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  7876.     AH = 06h
  7877.     BX = handle (optional for v1.10+)
  7878.     ES:DI -> buffer
  7879.     CX = length
  7880. Return: CF set on error
  7881.         DH = error code (see #1730)
  7882.     CF clear if successful
  7883.         CX = length
  7884. Note:    copies the local net address associated with the handle into the buffer
  7885. --------G-6006-------------------------------
  7886. INT 60 - MDEBUG - GET PASSWORD STATUS
  7887.     AH = 06h
  7888. Return: AL = status
  7889.         00h password inactive
  7890.         01h password active
  7891. --------N-6007-------------------------------
  7892. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  7893.     AH = 07h
  7894.     BX = handle (optional for v1.10+)
  7895. Return: CF set on error
  7896.         DH = error code (see #1730)
  7897.     CF clear if successful
  7898. --------G-6007-------------------------------
  7899. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  7900.     AH = 07h
  7901. Return: AL = active part for the next popup session of MDEBUG:
  7902.         bit 0: the next popup session will start in the interpreter rather
  7903.           than in the monitor
  7904.         bit 1: the next popup session will sart in the online-help
  7905. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  7906. --------G-6008-------------------------------
  7907. INT 60 - MDEBUG - UNUSED
  7908.     AH = 08h-FFh
  7909. Return: AX = FFFCh
  7910. --------N-600A-------------------------------
  7911. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  7912.     AH = 0Ah
  7913. Return: CF set on error
  7914.         DH = error code (0Bh) (see #1730)
  7915.     CF clear if successful
  7916.         ES:DI -> parameter table (see #1735)
  7917.  
  7918. Format of packet driver parameter table:
  7919. Offset    Size    Description    (Table 1735)
  7920.  00h    BYTE    major revision of packet driver spec driver conforms to
  7921.  01h    BYTE    minor revision of packet driver spec
  7922.  02h    BYTE    length of this structure in bytes
  7923.  03h    BYTE    length of a MAC-layer address
  7924.  04h    WORD    maximum transfer unit, including MAC headers
  7925.  06h    WORD    buffer size for multicast addr
  7926.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  7927.  0Ah    WORD    number of transmit buffers
  7928.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  7929. --------N-600B-------------------------------
  7930. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  7931.     AH = 0Bh
  7932.     DS:SI -> buffer
  7933.     CX = length of buffer
  7934.     ES:DI -> FAR function to call when buffer becomes available
  7935. Return: CF set on error
  7936.         DH = error code (0Bh,0Ch) (see #1730)
  7937.     CF clear if successful
  7938. Notes:    unlike function 04h, the buffer is not available for modification as
  7939.       soon as the call returns; the buffer may be queued by the driver and
  7940.       not processed until later
  7941.     this function has been dropped from v1.10+ of the specification and
  7942.       replaced by function 0Ch
  7943. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  7944.  
  7945. (Table 1736)
  7946. Values packet driver completion function is called with:
  7947.     AX = result
  7948.         00h copy OK
  7949.         nonzero error
  7950.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  7951. --------N-600C-------------------------------
  7952. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  7953.     AH = 0Ch
  7954.     ES:DI -> pointer to IOCB
  7955. Return: CF set on error
  7956.         DH = error code (see #1730)
  7957.     CF clear if successful
  7958. SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
  7959.  
  7960. Format of packet driver IOCB:
  7961. Offset    Size    Description    (Table 1737)
  7962.  00h    DWORD    pointer to buffer
  7963.  04h    WORD    length of buffer
  7964.  06h    BYTE    flags
  7965.         bit 0: packet driver is finished with IOCB
  7966.         bit 1: application requests upcall when driver completes
  7967.  07h    DWORD    function address for upcall
  7968.  0Bh  4 BYTEs    future gather write
  7969.  0Fh    BYTE    ???
  7970.  10h  8 BYTEs    private driver workspace
  7971.  
  7972. (Table 1738)
  7973. Values completion function is called with:
  7974.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  7975. --------N-600C-------------------------------
  7976. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  7977.     AH = 0Ch
  7978. Return: AL = status
  7979.         00h successful
  7980.         ES:SI -> 6-byte station address
  7981.         02h semaphore service is unavailable
  7982. --------N-600D-------------------------------
  7983. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  7984.     AH = 0Dh
  7985.     ES:DI -> IOCB
  7986. Return: CF set on error
  7987.         DH = error code (see #1730)
  7988.     CF clear if successful
  7989. SeeAlso: AH=0Ch"Packet Driver"
  7990. --------N-6011-------------------------------
  7991. INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
  7992.     AH = 11h
  7993.     AL = drive number or 0
  7994.     DX = number of seconds to wait
  7995.     ES:SI = Ethernet address or 0
  7996.     DS:BX -> 31-byte ASCIZ semaphore name
  7997. Return: AL = status (see #1739)
  7998. SeeAlso: AH=12h,AH=13h
  7999.  
  8000. (Table 1739)
  8001. Values for 3com semaphore status:
  8002.  00h    successful
  8003.  01h    timeout
  8004.  02h    server not responding
  8005.  03h    invalid semaphore name
  8006.  04h    semaphore list is full
  8007.  05h    invalid drive ID
  8008.  06h    invalid Ethernet address
  8009.  07h    not logged in
  8010.  08h    write to network failed
  8011.  09h    semaphore already logged for this CPU
  8012. --------N-6012-------------------------------
  8013. INT 60 - 3com, 10NET, Banyan VINES - LOCK
  8014.     AH = 12h
  8015.     AL = drive number or 00h
  8016.     ES:SI = Ethernet address or 0000h:0000h
  8017.     DS:BX -> 31-byte ASCIZ semaphore name
  8018. Return: AL = status (see also #1739)
  8019.         01h semaphore currently locked by another PC
  8020. Note:    unlike function 11h, this function returns immediately
  8021. SeeAlso: AH=11h,AH=13h
  8022. --------N-6013-------------------------------
  8023. INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
  8024.     AH = 13h
  8025.     AL = drive number or 00h
  8026.     ES:SI = Ethernet address or 0000h:0000h
  8027.     DS:BX -> 31-byte ASCIZ semaphore name
  8028. Return: AL = status (see also #1739)
  8029.         01h semaphore not locked
  8030. SeeAlso: AH=11h,AH=12h
  8031. --------N-6014-------------------------------
  8032. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  8033.     AH = 14h
  8034.     BX = handle (optional for v1.10+)
  8035.     CX = mode (see #1740)
  8036. Return: CF set on error
  8037.        DH = error code (01h,08h) (see #1730)
  8038.     CF clear if successful
  8039. SeeAlso: AH=15h
  8040.  
  8041. (Table 1740)
  8042. Values for packet driver receive mode:
  8043.  01h    turn off receiver
  8044.  02h    receive only packets sent to this interface
  8045.  03h    mode 2 plus broadcast packets
  8046.  04h    mode 3 plus limited multicast packets
  8047.  05h    mode 3 plus all multicast packets
  8048.  06h    all packets
  8049.  07h    raw mode for serial line only (v1.10+)
  8050. --------N-6015-------------------------------
  8051. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  8052.     AH = 15h
  8053.     BX = handle (optional for v1.10+)
  8054. Return: CF set on error
  8055.         DH = error code (01h) (see #1730)
  8056.     CF clear if successful
  8057.         AX = receive mode (see #1740)
  8058. SeeAlso: AH=14h
  8059. --------N-6016-------------------------------
  8060. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  8061.     AH = 16h
  8062.     ES:DI -> multicast list
  8063.     CX = length of list in bytes
  8064. Return: CF set on error
  8065.         DH = error code (06h,09h,0Eh) (see #1730)
  8066.     CF clear if successful
  8067. SeeAlso: AH=17h
  8068. --------N-6017-------------------------------
  8069. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  8070.     AH = 17h
  8071. Return: CF set on error
  8072.         DH = error code (06h,09h) (see #1730 at AX=01FFh)
  8073.     CF clear if successful
  8074.         ES:DI -> multicast addresses (do not modify)
  8075.         CX = bytes of multicast addresses currently in use
  8076. SeeAlso: AH=16h
  8077. --------N-6018-------------------------------
  8078. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  8079.     AH = 18h
  8080.     BX = handle (optional for v1.10+)
  8081. Return: CF set on error
  8082.         DH = error code (01h) (see #1730)
  8083.     CF clear if successful
  8084.         DS:SI -> statistics (see #1741)
  8085.  
  8086. Format of packet driver statistics:
  8087. Offset    Size    Description    (Table 1741)
  8088.  00h    DWORD    packets in
  8089.  04h    DWORD    packets out
  8090.  08h    DWORD    bytes in
  8091.  0Ch    DWORD    bytes out
  8092.  10h    DWORD    errors in
  8093.  14h    DWORD    errors out
  8094.  18h    DWORD    packets dropped
  8095. --------N-6019-------------------------------
  8096. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  8097.     AH = 19h
  8098.     ES:DI -> address
  8099.     CX = length of address
  8100. Return: CF set on error
  8101.         DH = error code (0Dh,0Eh) (see #1730)
  8102.     CF clear if successful
  8103.         CX = length
  8104. --------N-601A-------------------------------
  8105. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  8106.     AH = 1Ah
  8107.     DS:SI -> buffer
  8108.     CX = length of buffer
  8109. Return: CF set on error
  8110.         DH = error code (see #1730 at AX=01FFh)
  8111.     CF clear if successful
  8112. SeeAlso: AH=1Ch
  8113. --------N-601B-------------------------------
  8114. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  8115.     AH = 1Bh
  8116. Return: CF set on error
  8117.         DH = error code (see #1730)
  8118.     CF clear if successful
  8119. SeeAlso: AH=1Ch
  8120. --------N-601C-------------------------------
  8121. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  8122.     AH = 1Ch
  8123.     DS:SI -> buffer
  8124.     CX = length of buffer
  8125.     DX = timeout in clock ticks
  8126. Return: CF set on error
  8127.         DH = error code (see #1730 at AX=01FFh)
  8128.     CF clear if successful
  8129.         CX = number of bytes transferred to buffer
  8130. SeeAlso: AH=1Ah,AH=1Bh
  8131. --------a-60AD-------------------------------
  8132. INT 60 - AccessDOS - API
  8133.     AH = ADh
  8134.     AL = function
  8135.         E1h ???
  8136.         Return: AX = ???
  8137.         E2h get configuration
  8138.         Return: BX:AX -> configuration data
  8139. Program: AccessDOS is a public domain TSR developed at The Trace Research and
  8140.       Development Center which provides extensions for keyboard, mouse,
  8141.       and sound access by the visually, hearing, or motor-control
  8142.       impaired.
  8143. Range:    INT 60 to INT 66, selected by scanning for 0000h:0000h vector
  8144. --------N-60E9-------------------------------
  8145. INT 60 - FTP Packet Driver - Crynwr Software - AUTOSELECT TRANSCEIVER
  8146.     AH = E9h
  8147.     ???
  8148. Return: ???
  8149. --------!---Section--------------------------
  8150.