home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / dos / tools / inter47 / interrup.h < prev    next >
Text File  |  1995-08-13  |  359KB  |  9,932 lines

  1. Interrupt List, part 8 of 13
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown
  3. --------m-2F4300-----------------------------
  4. INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - INSTALLATION CHECK
  5.     AX = 4300h
  6. Return: AL = 80h XMS driver installed
  7.     AL <> 80h no driver
  8. Notes:    XMS gives access to extended memory and noncontiguous/nonEMS memory
  9.       above 640K
  10.     this installation check DOES NOT follow the format used by other
  11.       software
  12. SeeAlso: AX=4310h
  13. Index:    installation check;XMS version 2+
  14. --------m-2F4308-----------------------------
  15. INT 2F U - HIMEM.SYS v2.77+ - GET A20 HANDLER NUMBER
  16.     AX = 4308h
  17. Return: AL = 43h if supported
  18.         BL = A20 handler number (value of /MACHINE:nn switch)
  19.         BH = AT A20 switch time (00h medium, 01h fast, 02h slow)
  20. Note:    if the A20 handler number returned in BL is 00h, an external handler
  21.       is being used (see AX=4330h)
  22. SeeAlso: AX=4309h,AX=4330h
  23. --------m-2F4309-----------------------------
  24. INT 2F U - HIMEM.SYS v3.09+ - GET XMS HANDLE TABLE
  25.     AX = 4309h
  26. Return: AL = 43h if function supported
  27.         ES:BX -> XMS handle table (see #1466)
  28. Note:    HIMEM.SYS v3.09 is part of MS-DOS 6.0.
  29. SeeAlso: AX=4308h
  30.  
  31. Format of XMS handle table:
  32. Offset    Size    Description    (Table 1466)
  33.  00h    BYTE    ??? (01h in HIMEM.SYS v3.09)
  34.  01h    BYTE    size of one handle descriptor
  35.  02h    WORD    number of handles (default = 20h)
  36.  04h    DWORD    pointer to XMS handle array (see #1467)
  37. SeeAlso: #1496
  38.  
  39. Format of XMS handle descriptor [array]:
  40. Offset    Size    Description    (Table 1467)
  41.  00h    BYTE    flag
  42.         01h=free, 02h=used, 04h=in pool but not associated with any EMB
  43.  01h    BYTE    lock count (00h=unlocked)
  44.  02h    DWORD    address of XMS block in KB (shift left by 10 for abs. address)
  45.  06h    DWORD    size of XMS block in KB
  46. --------m-2F4310-----------------------------
  47. INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - GET DRIVER ADDRESS
  48.     AX = 4310h
  49. Return: ES:BX -> driver entry point (see #1468,#1469,#1472,#1479,#1488,#1493)
  50. Notes:    HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
  51.     HIMEM.SYS requires at least 256 bytes free stack space when calling
  52.       the driver entry point
  53. SeeAlso: AX=4300h,AX=4310h"Cloaking",AX=4310h"Netroom",AX=4310h"XMZ"
  54.  
  55. Format of XMS driver entry point:
  56. Offset    Size    Description    (Table 1468)
  57.  00h  5 BYTEs    jump to actual handler
  58.         either short jump (EBh XXh) followed by three NOPs or
  59.           far jump (EAh XXXX:XXXX) to a program which has hooked itself
  60.           into the XMS driver chain
  61. Note:    to hook into the XMS driver chain, a program should follow the chain of
  62.       far jumps until it reaches the short jump of the driver at the end
  63.       of the chain; this short jump is to be replaced with a far jump to
  64.       the new handler's entry point, which should contain a short jump
  65.       followed by three NOPs.  The new handler must return to the address
  66.       pointed at by the short jump which was overwritten.  Using this
  67.       method, the new handler becomes the first to see every XMS request.
  68.  
  69. (Table 1469)
  70. Call the XMS driver "Get XMS version number" function with:
  71.     AH = 00h
  72. Return: AX = XMS version (in BCD, AH=major, AL=minor)
  73.     BX = internal revision number (in BCD for HIMEM.SYS)
  74.     DX = High Memory Area (HMA) state
  75.         0001h HMA (1M to 1M + 64K) exists
  76.         0000h HMA does not exist
  77. SeeAlso: #1470,#1471,#1476,#1477,#1483
  78.  
  79. (Table 1470)
  80. Call the XMS driver "Request High Memory Area" function with:
  81.     AH = 01h
  82.     DX = memory in bytes (for TSR or device drivers)
  83.         FFFFh if application program
  84. Return: AX = status
  85.         0001h success
  86.         0000h failure
  87.         BL = error code (80h,81h,90h,91h,92h) (see #1494)
  88. Note:    HIMEM.SYS will fail function 01h with error code 91h if AL=40h and
  89.       DX=KB free extended memory returned by last call of function 08h
  90. SeeAlso: #1471,#1503
  91.  
  92. (Table 1471)
  93. Call the XMS driver "Release High Memory Area" function with:
  94.     AH = 02h
  95. Return: AX = status
  96.         0001h success
  97.         0000h failure
  98.         BL = error code (80h,81h,90h,93h) (see #1494)
  99. SeeAlso: #1470
  100.  
  101. (Table 1472)
  102. Call the XMS driver "Global enable A20, for using the HMA" function with:
  103.     AH = 03h
  104. Return: AX = status
  105.         0001h success
  106.         0000h failure
  107.         BL = error code (80h,81h,82h) (see #1494)
  108. SeeAlso: #1473,#1474
  109.  
  110. (Table 1473)
  111. Call the XMS driver "Global disable A20" function with:
  112.     AH = 04h
  113. Return: AX = status
  114.         0001h success
  115.         0000h failure
  116.         BL = error code (80h,81h,82h,94h) (see #1494)
  117. SeeAlso: #1472,#1475
  118.  
  119. (Table 1474)
  120. Call the XMS driver "Local enable A20" function with:
  121.     AH = 05h
  122. Return: AX = status
  123.         0001h success
  124.         0000h failure
  125.         BL = error code (80h,81h,82h) (see #1494)
  126. Note:    this function is used for direct access to extended memory
  127. SeeAlso: #1472,#1475
  128.  
  129. (Table 1475)
  130. Call the XMS driver "Local disable A20" function with:
  131.     AH = 06h
  132. Return: AX = status
  133.         0001h success
  134.         0000h failure
  135.         BL = error code (80h,81h,82h,94h) (see #1494)
  136. SeeAlso: #1473,#1474
  137.  
  138. (Table 1476)
  139. Call the XMS driver "Query A20 state" function with:
  140.     AH = 07h
  141. Return: AX = status
  142.         0001h enabled
  143.         0000h disabled
  144.         BL = error code (00h,80h,81h) (see #1494)
  145. SeeAlso: #1469,#1477
  146.  
  147. (Table 1477)
  148. Call the XMS driver "Query free extended memory" function with:
  149.     AH = 08h
  150.     BL = 00h (some implementations leave BL unchanged on success)
  151. Return: AX = size of largest extended memory block in KB
  152.     DX = total extended memory in KB
  153.     BL = error code (00h,80h,81h,A0h) (see #1494)
  154. Note:    this function does not include the HMA in the returned memory sizes
  155. SeeAlso: #1469,#1476,#1478,#1490
  156.  
  157. (Table 1478)
  158. Call the XMS driver "Allocate extended memory block" function with:
  159.     AH = 09h
  160.     DX = Kbytes needed
  161. Return: AX = status
  162.         0001h success
  163.         DX = handle for memory block
  164.         0000h failure
  165.         BL = error code (80h,81h,A0h) (see #1494)
  166. SeeAlso: #1477,#1480,#1483,#1484,#1485,#1491
  167.  
  168. (Table 1479)
  169. Call the XMS driver "Free extended memory block" function with:
  170.     AH = 0Ah
  171.     DX = handle of block to free
  172. Return: AX = status
  173.         0001h success
  174.         0000h failure
  175.         BL = error code (80h,81h,A2h,ABh) (see #1494)
  176. SeeAlso: #1478,#1491
  177.  
  178. (Table 1480)
  179. Call the XMS driver "Move extended memory block" function with:
  180.     AH = 0Bh
  181.     DS:SI -> EMM structure (see #1495)
  182. Return: AX = status
  183.         0001h success
  184.         0000h failure
  185.         BL = error code (80h-82h,A3h-A9h) (see #1494)
  186. Note:    if either handle in the EMM structure is 0000h, the corresponding
  187.       offset is considered to be an absolute segment:offset address in
  188.       directly addressable memory
  189. SeeAlso: #1478,#1481
  190.  
  191. (Table 1481)
  192. Call the XMS driver "Lock extended memory block" function with:
  193.     AH = 0Ch
  194.     DX = handle of block to lock
  195. Return: AX = status
  196.         0001h success
  197.         DX:BX = 32-bit physical address of locked block
  198.         0000h failure
  199.         BL = error code (80h,81h,A2h,ACh,ADh) (see #1494)
  200. Note:    MS Windows 3.x rejects this function for handles allocated after
  201.       Windows started
  202. SeeAlso: #1478,#1480,#1482
  203.  
  204. (Table 1482)
  205. Call the XMS driver "Unlock extended memory block" function with:
  206.     AH = 0Dh
  207.     DX = handle of block to unlock
  208. Return: AX = status
  209.         0001h success
  210.         0000h failure
  211.         BL = error code (80h,81h,A2h,AAh) (see #1494)
  212. SeeAlso: #1481
  213.  
  214. (Table 1483)
  215. Call the XMS driver "Get handle information" function with:
  216.     AH = 0Eh
  217.     DX = handle for which to get info
  218. Return: AX = status
  219.         0001h success
  220.         BH = block's lock count
  221.         BL = number of free handles left
  222.         DX = block size in KB
  223.         0000h failure
  224.         BL = error code (80h,81h,A2h) (see #1494)
  225. BUG:    MS Windows 3.10 acts as though unallocated handles are in use
  226. Note:    MS Windows 3.00 has problems with this call
  227. SeeAlso: #1469,#1478,#1492
  228.  
  229. (Table 1484)
  230. Call the XMS driver "Reallocate extended memory block" function with:
  231.     AH = 0Fh
  232.     DX = handle of block
  233.     BX = new size of block in KB
  234. Return: AX = status
  235.         0001h success
  236.         0000h failure
  237.         BL = error code (80h,81h,A0h-A2h,ABh) (see #1494)
  238. SeeAlso: #1478,#1487
  239.  
  240. (Table 1485)
  241. Call the XMS driver "Request upper memory block" function with:
  242.     AH = 10h
  243.     DX = size of block in paragraphs
  244. Return: AX = status
  245.         0001h success
  246.         BX = segment address of UMB
  247.         DX = actual size of block
  248.         0000h failure
  249.         BL = error code (80h,B0h,B1h) (see #1494)
  250.         DX = largest available block
  251. Notes:    Upper Memory consists of non-EMS memory between 640K and 1024K
  252.     the XMS driver need not implement functions 10h through 12h to be
  253.       considered compliant with the standard
  254.     under DOS 5+, if CONFIG.SYS contains the line DOS=UMB, then no upper
  255.       memory blocks will be available for allocation because all blocks
  256.       have been grabbed by MS-DOS while booting
  257. SeeAlso: #1478,#1486,#1504,INT 21/AH=58h"UMB"
  258.  
  259. (Table 1486)
  260. Call the XMS driver "Release upper memory block" function with:
  261.     AH = 11h
  262.     DX = segment address of UMB to release
  263. Return: AX = status
  264.         0001h success
  265.         0000h failure
  266.         BL = error code (80h,B2h) (see #1494)
  267. Note:    the XMS driver need not implement functions 10h through 12h to be
  268.       considered compliant with the standard
  269. SeeAlso: #1479,#1485,#1487
  270.  
  271. (Table 1487)
  272. Call the XMS v3.0+ driver "Reallocate upper memory block" function with:
  273.     AH = 12h
  274.     DX = segment address of UMB to resize
  275.     BX = new size of block in paragraphs
  276. Return: AX = status
  277.         0001h success
  278.         0000h failure
  279.         BL = error code (80h,B0h,B2h) (see #1494)
  280.         DX = maximum available size (RM386)
  281. Note:    the XMS driver need not implement functions 10h through 12h to be
  282.       considered compliant with the standard
  283. SeeAlso: #1484,#1485,#1486,#1502
  284.  
  285. (Table 1488)
  286. Call the QEMM v5.11 "???" function with:
  287.     AH = 34h  (QEMM 5.11 only, undocumented)
  288.     ???
  289. Return: ???
  290. SeeAlso: #1489
  291.  
  292. (Table 1489)
  293. Call the QEMM v5.11 "???" function with:
  294.     AH = 44h  (QEMM 5.11 only, undocumented)
  295.     ???
  296. Return: ???
  297. SeeAlso: #1488,#1502
  298.  
  299. (Table 1490)
  300. Call the XMS v3.0 driver "Query free extended memory" function with:
  301.     AH = 88h
  302. Return: EAX = largest block of extended memory, in KB
  303.     BL = status (00h,80h,81h,A0h) (see #1494)
  304.     ECX = physical address of highest byte of memory
  305.         (valid even on error codes 81h and A0h)
  306.     EDX = total Kbytes of extended memory (0 if status A0h)
  307. BUG:    HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
  308.       are called
  309. SeeAlso: #1477,#1491
  310.  
  311. (Table 1491)
  312. Call the XMS v3.0 driver "Allocate any extended memory" function with:
  313.     AH = 89h
  314.     EDX = Kbytes needed
  315. Return: AX = status
  316.         0001h success
  317.         DX = handle for allocated block (free with AH=0Ah) (see #1479)
  318.         0000h failure
  319.         BL = status (80h,81h,A0h,A1h,A2h) (see #1494)
  320. SeeAlso: #1478,#1490
  321.  
  322. (Table 1492)
  323. Call the XMS v3.0 driver "Get extended EMB handle information" function with:
  324.     AH = 8Eh
  325.     DX = handle
  326. Return: AX = status
  327.         0001h success
  328.         BH = block's lock count
  329.         CX = number of free handles left
  330.         EDX = block size in KB
  331.         0000h failure
  332.         BL = status (80h,81h,A2h) (see #1494)
  333. BUG:    MS-DOS 6.0 HIMEM.SYS leaves CX unchanged
  334. SeeAlso: #1483,#1491,#1493
  335.  
  336. (Table 1493)
  337. Call the XMS v3.0 driver "Reallocate any extended memory block" function with:
  338.     AH = 8Fh
  339.     DX = unlocked memory block handle
  340.     EBX = new size in KB
  341. Return: AX = status
  342.         0001h success
  343.         0000h failure
  344.         BL = status (80h,81h,A0h-A2h,ABh) (see #1494)
  345. BUG:    HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
  346.       are called
  347. SeeAlso: #1484,#1492
  348.  
  349. (Table 1494)
  350. Values for XMS error code returned in BL:
  351.  00h    successful
  352.  80h    function not implemented
  353.  81h    Vdisk was detected
  354.  82h    an A20 error occurred
  355.  8Eh    a general driver error
  356.  8Fh    unrecoverable driver error
  357.  90h    HMA does not exist or is not managed by XMS provider
  358.  91h    HMA is already in use
  359.  92h    DX is less than the /HMAMIN= parameter
  360.  93h    HMA is not allocated
  361.  94h    A20 line still enabled
  362.  A0h    all extended memory is allocated
  363.  A1h    all available extended memory handles are allocated
  364.  A2h    invalid handle
  365.  A3h    source handle is invalid
  366.  A4h    source offset is invalid
  367.  A5h    destination handle is invalid
  368.  A6h    destination offset is invalid
  369.  A7h    length is invalid
  370.  A8h    move has an invalid overlap
  371.  A9h    parity error occurred
  372.  AAh    block is not locked
  373.  ABh    block is locked
  374.  ACh    block lock count overflowed
  375.  ADh    lock failed
  376.  B0h    only a smaller UMB is available
  377.  B1h    no UMB's are available
  378.  B2h    UMB segment number is invalid
  379.  
  380. Format of EMM structure:
  381. Offset    Size    Description    (Table 1495)
  382.  00h    DWORD    number of bytes to move (must be even)
  383.  04h    WORD    source handle
  384.  06h    DWORD    offset into source block
  385.  0Ah    WORD    destination handle
  386.  0Ch    DWORD    offset into destination block
  387. Notes:    if source and destination overlap, only forward moves (source base
  388.       less than destination base) are guaranteed to work properly
  389.     if either handle is zero, the corresponding offset is interpreted
  390.       as a real-mode address referring to memory directly addressable
  391.       by the processor
  392.  
  393. Format of XMS handle info [array]:
  394. Offset    Size    Description    (Table 1496)
  395.  00h    BYTE    handle
  396.  01h    BYTE    lock count
  397.  02h    DWORD    handle size
  398.  06h    DWORD    handle physical address (only valid if lock count nonzero)
  399. SeeAlso: #1466
  400. --------m-2F4310-----------------------------
  401. INT 2F - Cloaking - REAL-MODE API
  402.     AX = 4310h
  403. Return: ES:BX -> driver entry point (see #1468,#1497,#1498,#1499,#1500)
  404. SeeAlso: AX=4310h"XMS"
  405.  
  406. (Table 1497)
  407. Call the Cloaking v1.01 "Client Registration" function with:
  408.     AH = 7Eh
  409.     BX = subfunction
  410.         0000h get client registration count
  411.         0001h get client registration structures
  412.         ES:DI -> buffer for registration structures
  413. Return: AX = status
  414.         0000h failed
  415.         0001h successful
  416.         ---subfunction 00h---
  417.         BX = size of client structure in bytes
  418.         CX = number of clients installed
  419.         ---subfunction 01h---
  420.         ES:DI buffer filled
  421. SeeAlso: #1498,#1500,INT 2C/AX=0033h
  422.  
  423. (Table 1498)
  424. Call the Cloaking v1.01 "Verify Cloaking Host" function with:
  425.     AH = 7Fh
  426. Return: AX = status
  427.         0000h failed
  428.         0001h (successful) if installed
  429.         BX = version (0101h for v1.01)
  430.         CX = flags
  431.             bit 0: host is VCPI-based
  432.         DS:DX -> ASCIZ Cloaking host signature
  433.             "CLOAKING.EXE"0, followed by a far-call entry point to
  434.               uninstall host (see #1499) in Helix's CLOAKING.EXE
  435. SeeAlso: #1497,#1500
  436. Index:    installation check;Cloaking host|installation check;CLOAKING.EXE
  437.  
  438. (Table 1499)
  439. Call the CLOAKING.EXE "Uninstall Host" function with:
  440. Return:    AX = 4F4Bh ('OK') if successfully uninstalled protected-mode code
  441.  
  442. (Table 1500)
  443. Call the Cloaking "Start Protected-Mode Client" function with:
  444.     AH = 82h
  445.     DX = XMS handle of locked block containing protected-mode code
  446.     CL = code size (00h 16-bit, else 32-bit)
  447.     ESI, EDI = parameters to pass to protected-mode code
  448. Return: AX = status
  449.         nonzero success
  450.         0000h failed
  451.         BL = error code (A2h,B0h) (see #1494)
  452. Notes:    this function calls a user initialization function at offset 0 in
  453.       the XMS memory block (see #1501)
  454.     supported by Helix's RM386 v6.00 and Helix's CLOAKING.EXE
  455. SeeAlso: #1497,#1498
  456.  
  457. (Table 1501)
  458. Values user initialization function is called with:
  459.     EBX = physical address of block's start
  460.     ESI = user data from function 82h call
  461.     EDI = user data from function 82h call
  462.     CS = code selector for XMS block at EBX (16-bit or 32-bit)
  463.     DS = data selector for XMS block, starting at EBX
  464.     ES = selector for V86 memory access to full real-mode 1088K
  465.     GS = selector for full 4G flat address space
  466.     SS:ESP -> stack provided by host
  467. Return: via 32-bit FAR return
  468. Note:    the initialization function may call any protected-mode Cloaking
  469.       service; it should store the values of DS, ES, and GS for future
  470.       reference
  471. --------m-2F4310-----------------------------
  472. INT 2F - Helix Netroom RM386 v6.00 - XMS EXTENSIONS
  473.     AX = 4310h
  474. Return: ES:BX -> driver entry point (see #1502,#1503,#1504,#1505)
  475. Notes:    HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
  476.     HIMEM.SYS requires at least 256 bytes free stack space when calling
  477.       the driver entry point
  478. SeeAlso: AX=4300h,AX=4310h"XMS",AX=4310h"Cloaking"
  479.  
  480. (Table 1502)
  481. Call the Netroom RM386 v6.00 "Reallocate upper memory block" function with:
  482.     AH = 80h
  483.     DX = segment address of UMB to resize
  484.     BX = new size of block in paragraphs
  485. Return: AX = status
  486.         0001h success
  487.         0000h failure
  488.         BL = error code (80h,B0h,B2h) (see #1494)
  489.         DX = maximum available size
  490. Note:    this function is identical to function 12h
  491. SeeAlso: #1487,#1503
  492.  
  493. (Table 1503)
  494. Call the Netroom RM386 v6.00 "re-enable HMA allocation" function with:
  495.     AH = 81h
  496. Return: AX = 0001h (success)
  497. SeeAlso: #1470,#1502,#1504
  498.  
  499. (Table 1504)
  500. Call the Netroom RM386 v6.00 "Create new UMB entry" function with:
  501.     AH = 83h
  502.     BX = segment of high-memory block
  503.     DX = first page of start of block
  504.     CX = number of consecutive pages in block
  505.     DI = start of UMB in block
  506. Return: AX = 0001h (success)
  507.     DI = segment of first high-DOS block
  508. Note:    the new UMB is not linked into the high-memory chain
  509. SeeAlso: #1485,#1503,#1505
  510.  
  511. (Table 1505)
  512. Call the Netroom RM386 v6.00 "Get all XMS handles info" function with:
  513.     AH = 84h
  514.     CX = size of buffer for handle info
  515.     ES:DI -> buffer for handle info (see #1496)
  516. Return: AX = 0001h (success)
  517.     DX = current number of allocated XMS handles
  518. SeeAlso: #1504,#1490
  519. --------m-2F4310-----------------------------
  520. INT 2F - NEC PC-9800 - XMZ - PRIVATE API
  521.     AX = 4310h
  522. Return: ES:BX -> driver entry point (see #2712,2713)
  523. Program: XMZ is an XMS 2.x-compatible driver for the NEC PC-98 series written
  524.       by ZOBplus Hayami and available at
  525.       ftp:/ftp.tohoku.ac.jp/pub/msdos/Memory/xmz/
  526. SeeAlso: AX=4300h,AX=4310h"XMS"
  527.  
  528. (Table 2712)
  529. Call XMZ v1.02 "Get HMA Information" function with:
  530.     AH = FFh  (XMZ only)
  531.     AL = 01h
  532. Return: AX = 1 on success
  533.     DX = minimum HMA allocation size (/HMAMIN=)
  534.     BX = actual size of HMA allocation, if in use (i.e. the value in DX
  535.           when XMS function 1 was called)
  536. SeeAlso: #2713
  537.  
  538. (Table 2713)
  539. Call XMZ v1.02 "Get EMB Handle Information" function with:
  540.     AH = FFh  (XMZ only)
  541.     AL = 02h
  542. Return: AX = 1 on success
  543.     DX = number of EMB handles configured (/NUMHANDLES=)
  544.     BX = offset in XMZ's segment of the handle table (use segment of
  545.           entry point) (see #2714)
  546. SeeAlso: #2712
  547.  
  548. Format of XMZ v1.02 EMB Handle structure:
  549. Offset    Size    Description    (Table 2714)
  550.  00h    BYTE    flag byte
  551.                 04h unused handle slot
  552.                 02h in-use handle slot
  553.                 01h handle slot that represents a free block
  554.  01h    BYTE    lock count
  555.  02h    WORD    block start address (1K increments)
  556.  04h    WORD    block length (1K increments)
  557. SeeAlso: #2713
  558. --------m-2F4320-----------------------------
  559. INT 2F U - HIMEM.SYS - Mach 20 SUPPORT
  560.     AX = 4320h
  561.     ???
  562. Return: ???
  563. --------m-2F4330-----------------------------
  564. INT 2F CU - HIMEM.SYS v2.77+ - GET EXTERNAL A20 HANDLER ADDRESS
  565.     AX = 4330h
  566. Return: AL = 80h if external A20 handler provided
  567.         ES:BX -> external A20 handler (see #1506)
  568.         CL = A20 detection support
  569.         00h handler is unable to report A20 state
  570.         01h handler supports function 0002h to report A20 state
  571. Note:    HIMEM.SYS calls this function to allow an external program to provide
  572.       an A20 handler (i.e. to support a machine not supported by HIMEM
  573.       itself)
  574. SeeAlso: AX=4308h,AX=4310h
  575.  
  576. (Table 1506)
  577. Call parameters for external A20 handler are:
  578.     AX = function
  579.         0000h disable A20
  580.         0001h enable A20
  581.         0002h get A20 state
  582. Return: AX = status (functions 0000h and 0001h)
  583.         0000h failure
  584.         0001h successful
  585.     AX = A20 state (function 0002h)
  586.         0000h disabled
  587.         0001h enabled
  588. Note:    HIMEM.SYS only calls function 0002h if the returned CL indicated that
  589.       the handler supports the call
  590. --------E-2F43E0BX0000-----------------------
  591. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - INSTALLATION CHECK
  592.     AX = 43E0h
  593.     BX = 0000h
  594.     CX = 4450h ('DP')
  595.     DX = 4D53h ('MS')
  596. Return: AX = 0000h if installed
  597.         CF clear
  598.         ES:DI -> server structure (see #1507)
  599.         ES:BX -> registration structure (pre-NWDOS 7 beta spec) (see #1509)
  600. Note:    the DPMS 1.0 server included with the original release of Novell DOS
  601.       7.0 supports both the beta and 1.0 specification, setting ES:BX even
  602.       if CX and DX are not as specified on entry (since the beta
  603.       specification did not use those registers).  However, the DPMS 1.1
  604.       server included with the March 1994 update does not support the beta
  605.       specification
  606. SeeAlso: AX=43E1h,AX=43E2h,AX=43E3h,INT 2F/AX=1687h
  607. Index:    signature strings;DPMS
  608.  
  609. Format of DPMS 1.0 server structure:
  610. Offset    Size    Description    (Table 1507)
  611.  00h  4 BYTEs    signature string "DPMS"
  612.  04h  2 BYTEs    DPMS version (major,minor)
  613.  06h  8 BYTEs    blank-padded server OEM name
  614.  0Eh  2 BYTEs    OEM server version (major,minor)
  615.  10h    WORD    DPMS flags (see #1508)
  616.  12h    BYTE    CPU type
  617.         (02h = 286, 03h = 386 or higher, higher values allowed)
  618.  
  619. Bitfields for DPMS flags:
  620. Bit(s)    Description    (Table 1508)
  621.  0    fast processor reset available (286 only)
  622.  1    DPMS server is enabled
  623.  2    memory is remapped
  624.  3-15    reserved (undefined)
  625.  
  626. Format of beta DPMS registration structure:
  627. Offset    Size    Description    (Table 1509)
  628.  00h    DWORD    real-mode API entry point (see #1511)
  629.  04h    DWORD    16-bit protected-mode API entry point (see #1511)
  630.  08h  8 BYTEs    reserved (0)
  631.  10h  8 BYTEs    blank-padded server OEM name
  632.  18h    WORD    flags
  633.         bit 0: fast processor reset available (286 only)
  634.         bits 1-15 reserved (undefined)
  635.  1Ah  2 BYTEs    DPMS version (major,minor)
  636.  1Ch    BYTE    CPU type (02h = 286, 03h = 386 or higher)
  637. --------m-2F43E1-----------------------------
  638. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - REGISTER CLIENT
  639.     AX = 43E1h
  640.     CX = required protected-mode stack size in bytes
  641.     ES:DI -> DPMS client interface structure (see #1510)
  642. Return: AX = 0000h if supported
  643.        CF clear
  644.        ES:DI buffer filled with API entry point code from offset 0Ah
  645. Note:    the client is allowed to copy the returned API code to any location in
  646.       memory, and need not keep the three code fields together
  647. SeeAlso: AX=43E0h,AX=43E2h,AX=43E3h
  648.  
  649. Format of DPMS client interface structure:
  650. Offset    Size    Description    (Table 1510)
  651.  00h    WORD    0000h (structure version / flags)
  652.  02h  8 BYTEs    blank-padded client name
  653.  0Ah  7 BYTEs    real/virtual-86 mode API code (see #1511)
  654.  11h    BYTE    space for return instruction
  655.         set to C3h for near return, CBh for far return
  656.  12h  7 BYTEs    16-bit protected-mode API code (see #1511)
  657.  19h    BYTE    space for return instruction
  658.         set to C3h for near return, CBh for far return
  659.  1Ah  9 BYTEs    32-bit protected-mode API code (see #1511)
  660.  23h    BYTE    space for return instruction
  661.         set to C3h for near return, CBh for far return
  662. Note:    the DPMS server fills the return opcode bytes with zeros and DPMS
  663.       requests will thus crash the system unless the application
  664.       explicitly sets them (some early versions set them to C3h by
  665.       default, but one should not rely on that)
  666.  
  667. (Table 1511)
  668. Call DPMS entry point with:
  669.     AX = 0000h unregister client from server
  670.  ---control transfer functions---
  671.     AX = 0100h call protected-mode procedure
  672.         CX = number of words of stack to copy
  673.         ES:(E)DI -> callup/down register structure (see #1513)
  674.         Return: CF clear if successful
  675.             CF set on error
  676.                 AX = error code (see #1512)
  677.     AX = 0101h call real-mode procedure (RETF return)
  678.         CX = number of words of stack to copy
  679.         ES:(E)DI -> callup/down register structure (see #1513)
  680.         Return: CF clear if successful
  681.             CF set on error
  682.                 AX = error code (see #1512)
  683.     AX = 0102h call real-mode procedure (IRET return)
  684.         CX = number of words of stack to copy
  685.         ES:(E)DI -> callup/down register structure (see #1513)
  686.         Return: CF clear if successful
  687.             CF set on error
  688.                 AX = error code (see #1512)
  689.     AX = 0103h call real-mode interrupt handler
  690.         BL = interrupt number
  691.         CX = number of words of stack to copy
  692.         ES:(E)DI -> callup/down register structure (see #1513)
  693.         Return: CF clear if successful
  694.             CF set on error
  695.                 AX = error code (see #1512)
  696.     AX = 0104h register default protected mode procedure
  697.         ES:(E)DI -> default register structure (see #1514)
  698.         Return: CF clear if successful
  699.             CF set on error
  700.                 AX = error code (see #1512)
  701.     AX = 0105h register default real-mode procedure (RETF return)
  702.         ES:(E)DI -> default register structure (see #1514)
  703.         Return: CF clear if successful
  704.             CF set on error
  705.                 AX = error code (see #1512)
  706.         Note:    the procedure will be called from 16-bit prot. mode
  707.     AX = 0106h register default real-mode procedure (IRET return)
  708.         ES:(E)DI -> default register structure (see #1514)
  709.         Return: CF clear if successful
  710.             CF set on error
  711.                 AX = error code (see #1512)
  712.         Note:    the procedure will be called from 16-bit prot. mode
  713.     AX = 0107h register default real-mode interrupt handler
  714.         BL = interrupt number
  715.         ES:(E)DI -> default register structure (see #1514)
  716.         Return: CF clear if successful
  717.             CF set on error
  718.                 AX = error code (see #1512)
  719.         Note:    the handler will be called from 16-bit protected mode
  720.     AX = 0108h register default real-mode procedure (RETF return)
  721.         ES:(E)DI -> default register structure (see #1514)
  722.         Return: CF clear if successful
  723.             CF set on error
  724.                 AX = error code (see #1512)
  725.         Note:    the procedure will be called from 32-bit prot. mode
  726.     AX = 0109h register default real-mode procedure (IRET return)
  727.         ES:(E)DI -> default register structure (see #1514)
  728.         Return: CF clear if successful
  729.             CF set on error
  730.                 AX = error code (see #1512)
  731.         Note:    the procedure will be called from 32-bit prot. mode
  732.     AX = 010Ah register default real-mode interrupt handler
  733.         BL = interrupt number
  734.         ES:(E)DI -> default register structure (see #1514)
  735.         Return: CF clear if successful
  736.             CF set on error
  737.                 AX = error code (see #1512)
  738.         Note:    the handler will be called from 32-bit protected mode
  739.  ---descriptor management---
  740.     AX = 0200h allocate descriptors
  741.         CX = number of descriptors to allocate
  742.         Return: CF clear if successful
  743.                 AX = selector for first descriptor allocated
  744.             CF set on error
  745.                 AX = error code (see #1512)
  746.     AX = 0201h free a descriptor
  747.         BX = selector for descriptor
  748.         Return: CF clear if successful
  749.             CF set on error
  750.                 AX = error code (see #1512)
  751.     AX = 0202h create alias descriptor
  752.         BX = selector for descriptor to be aliased
  753.         Return: CF clear if successful
  754.                 AX = alias descriptor
  755.             CF set on error
  756.                 AX = error code (see #1512)
  757.     AX = 0203h build alias to real-mode segment
  758.         BX = descriptor
  759.         CX = real-mode segment
  760.         Return: CF clear if successful
  761.             CF set on error
  762.                 AX = error code (see #1512)
  763.     AX = 0204h set descriptor base
  764.         BX = descriptor
  765.         CX:DX = base address
  766.         Return: CF clear if successful
  767.             CF set on error
  768.                 AX = error code (see #1512)
  769.     AX = 0205h set descriptor limit
  770.         BX = descriptor
  771.         CX = limit
  772.         Return: CF clear if successful
  773.             CF set on error
  774.                 AX = error code (see #1512)
  775.     AX = 0206h set descriptor type/attribute
  776.         BX = descriptor
  777.         CL = type
  778.         CH = attribute
  779.         Return: CF clear if successful
  780.             CF set on error
  781.                 AX = error code (see #1512)
  782.     AX = 0207h get descriptor base
  783.         BX = descriptor
  784.         Return: CF clear if successful
  785.                 CX:DX = base address
  786.             CF set on error
  787.                 AX = error code (see #1512)
  788.  ---linear memory functions---
  789.     AX = 0300h get size of largest free block of memory
  790.         Return: CF clear if successful
  791.                 BX:CX = size
  792.             CF set on error
  793.                 AX = error code (see #1512)
  794.     AX = 0301h allocate block of extended memory
  795.         BX:CX = required size
  796.         Return: CF clear if successful
  797.                 BX:CX = base address
  798.                 SI:DI = handle
  799.             CF set on error
  800.                 AX = error code (see #1512)
  801.     AX = 0302h free block of extended memory
  802.         SI:DI = handle
  803.         Return: CF clear if successful
  804.             CF set on error
  805.                 AX = error code (see #1512)
  806.     AX = 0303h map linear memory
  807.         ES:(E)DI -> DDS (see #1515)
  808.         Return: CF clear if successful
  809.                 BX:CX = base address
  810.                 SI:DI = handle
  811.             CF set on error
  812.                 AX = error code (see #1512)
  813.     AX = 0304h unmap linear memory
  814.         SI:DI = handle
  815.         Return: CF clear if successful
  816.             CF set on error
  817.                 AX = error code (see #1512)
  818.     AX = 0305h get page table entries
  819.         ESI = linear address
  820.         (E)CX = count
  821.         ES:(E)DI -> buffer for page table entries
  822.         Return: CF clear if successful
  823.                 ES:(E)DI buffer filled
  824.             CF set on error
  825.                 AX = error code (see #1512)
  826.     AX = 0306h set page table entries
  827.         EBX = linear memory handle
  828.         ESI = linear address
  829.         (E)CX = count
  830.         ES:(E)DI -> buffer containing page table entries
  831.         Return: CF clear if successful
  832.             CF set on error
  833.                 AX = error code (see #1512)
  834.     AX = 0307h get largest mappable block size
  835.         Return: CF clear if successful
  836.                 BX:CX = size
  837.             CF set on error
  838.                 AX = error code (see #1512)
  839.  ---miscellaneous---
  840.     AX = 0400h relocate segment to extended memory
  841.         ES:SI = base address
  842.         CX = limit
  843.         BL = type
  844.         BH = attribute
  845.         DX = selector or 0000h
  846.         Return: CF clear if successful
  847.                 AX = selector
  848.                 BX:CX = new base address
  849.                 SI:DI = handle
  850.             CF set on error
  851.                 AX = error code (see #1512)
  852. Note:    the beta DPMS specification, which is still supported by the Novell
  853.       DOS 7.0 DPMS host, only supported functions 0100h-0103h, 0200h-0207h,
  854.       0300h-0304h, and 0400h
  855.  
  856. (Table 1512)
  857. Values for DPMS error code:
  858.  8000h    general error
  859.  8001h    unsupported function
  860.  8002h    unable to switch to protected mode
  861.  8004h    no default stack defined
  862.  8005h    unknown client
  863.  8010h    resource unavailable
  864.  8011h    descriptor unavailable
  865.  8012h    linear memory unavailable
  866.  8013h    physical memory unavailable
  867.  8021h    invalid value
  868.  8022h    invalid selector
  869.  8023h    invalid handle
  870.  8025h    invalid linear address
  871.  
  872. Format of DPMS callup/down register structure:
  873. Offset    Size    Description    (Table 1513)
  874.  00h    DWORD    EDI
  875.  04h    DWORD    ESI
  876.  08h    DWORD    EBP
  877.  0Ch  4 BYTEs    reserved (0) (ESP, may be used by DPMS server)
  878.  10h    DWORD    EBX
  879.  14h    DWORD    EDX
  880.  18h    DWORD    ECX
  881.  20h    DWORD    EAX
  882.  24h    DWORD    EIP
  883.  28h    WORD    CS
  884.  2Ah  2 BYTEs    reserved (0)
  885.  2Ch    DWORD    EFLAGS
  886.  30h    DWORD    ESP
  887.  34h    WORD    SS
  888.  36h  2 BYTEs    reserved (0)
  889.  38h    WORD    ES
  890.  3Ah  2 BYTEs    reserved (0)
  891.  3Ch    WORD    DS
  892.  3Eh  2 BYTEs    reserved (0)
  893.  40h    WORD    FS
  894.  42h  2 BYTEs    reserved (0)
  895.  44h    WORD    GS
  896.  46h  2 BYTEs    reserved (0)
  897.  
  898. Format of DPMS default register structure:
  899. Offset    Size    Description    (Table 1514)
  900.  00h    DWORD    EIP
  901.  04h    WORD    CS
  902.  06h  2 BYTEs    reserved (0)
  903.  08h    WORD    number of words to copy from stack to stack
  904.  0Ah    BYTE    (call) 00h
  905.         (ret) nonzero if call could not be made
  906.  0Bh    BYTE    reserved (may be used by some servers)
  907.  0Ch    DWORD    ESP
  908.  10h    WORD    SS
  909.  12h  2 BYTEs    reserved (0)
  910.  14h    WORD    ES
  911.  16h  2 BYTEs    reserved (0)
  912.  18h    WORD    DS
  913.  1Ah  2 BYTEs    reserved (0)
  914.  1Ch    WORD    FS
  915.  1Eh  2 BYTEs    reserved (0)
  916.  20h    WORD    GS
  917.  22h  2 BYTEs    reserved (0)
  918.  24h  9 BYTEs    API entry code (filled in by server)
  919.  
  920. Format of DPMS lock DDS:
  921. Offset    Size    Description    (Table 1515)
  922.  00h    DWORD    total size in bytes
  923.  04h    DWORD    offset
  924.  08h    WORD    segment or selector
  925.  0Ah    WORD    reserved
  926.  0Ch    WORD    maximum number of physical blocks structure has space for
  927.  0Eh    WORD    number of physical blocks listed
  928.  10h    DWORD    physical address of first block
  929.  14h    DWORD    size in bytes of first block
  930.     ...
  931. --------m-2F43E2-----------------------------
  932. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - ENABLE/DISABLE DPMS
  933.     AX = 43E2h
  934.     BX = new state (0000h disable, 0001h enable)
  935. Return: AX = 0000h if supported
  936. Note:    this function should normally be called only by system software
  937. SeeAlso: AX=43E0h,AX=43E1h,AX=43E3h
  938. --------m-2F43E3BX0000-----------------------
  939. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - DPMS STARTUP BROADCAST
  940.     AX = 43E3h
  941.     BX = 0000h
  942.     CX = 4450h ('DP')
  943.     DX = 4D53h ('MS')
  944. SeeAlso: AX=43E0h,AX=43E4h
  945. --------m-2F43E4BX0000-----------------------
  946. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - DPMS EXIT BROADCAST
  947.     AX = 43E4h
  948.     BX = 0000h
  949.     CX = 4450h ('DP')
  950.     DX = 4D53h ('MS')
  951. SeeAlso: AX=43E0h,AX=43E3h
  952. --------E-2F44-------------------------------
  953. INT 2F U - DOS Extender support???
  954.     AH = 44h
  955.     AL = function (at least 0Bh, 15h, 17h)
  956.     ???
  957. Return: ???
  958. Note:    called by Codeview for Windows
  959. SeeAlso: AH=86h
  960. --------G-2F4500-----------------------------
  961. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - INSTALLATION CHECK
  962.     AX = 4500h
  963. Return: AL = installation status
  964.         01h if PROF.COM installed
  965.         02h if VPROD.386 installed
  966. SeeAlso: AX=4501h,AX=4502h
  967. --------G-2F4501-----------------------------
  968. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SETUP PROFILER
  969.     AX = 4501h
  970.     BX = CSIPS buffer size in KB (first parameter for ProfSetup)
  971.     CX = output limit in KB (second parameter for ProfSetup)
  972. Note:    this call is not supported by PROF.COM
  973. SeeAlso: AX=4502h,AX=4503h
  974. --------G-2F4502-----------------------------
  975. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SET SAMPLING RATE
  976.     AX = 4502h
  977.     BL = sampling rate for PROF.COM (0 < BL <= 13)
  978.         (01h = 8192/s, 04h = 1024/s, 08h = 32/s, 0Dh = 1/s)
  979.     CX = sampling rate for VPROD.386
  980. Note:    for PROF.COM, this programs the CMOS clock by setting BL+2 as the
  981.       low four bits of CMOS register 0Ah.  The interruption rate is
  982.       1 SHL (15 - BL) per second.
  983. SeeAlso: AX=4501h,AX=4503h
  984. --------G-2F4503-----------------------------
  985. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - START PROFILING
  986.     AX = 4503h
  987. Notes:    Profiling is also turned on by the key combinations
  988.       LeftShift + RightShift + Alt and LeftShift + RightShift + Ctrl
  989.     for PROF.COM, this call programs the CMOS clock by reading register
  990.       0Ch, and setting bit 6 of register 0Bh.  It then makes sure that IRQ8
  991.       is unmasked
  992. SeeAlso: AX=4504h
  993. --------G-2F4504-----------------------------
  994. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - STOP PROFILING
  995.     AX = 4504h
  996. Notes:    profiling is also turned off by the key combination
  997.       LeftShift + RightShift
  998.     for PROF.COM, this programs the CMOS clock by reading register 0Ch
  999.       and clearing bit 6 of register 0Bh.  It then masks IRQ8.
  1000. SeeAlso: AX=4503h,AX=4505h,AX=4506h,AX=4507h
  1001. --------G-2F4505-----------------------------
  1002. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - CLEAR PROFILING DATA
  1003.     AX = 4505h
  1004. SeeAlso: AX=4503h,AX=4504h,AX=4506h
  1005. --------G-2F4506-----------------------------
  1006. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFlush"
  1007.     AX = 4506h
  1008. SeeAlso: AX=4505h,AX=4507h
  1009. --------G-2F4507-----------------------------
  1010. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFinish"
  1011.     AX = 4507h
  1012. Note:    this call is essentially a "ProfStop" (AX=4504h) followed by
  1013.       "ProfFlush" (AX=4506h)
  1014. SeeAlso: AX=4504h,AX=4505h,AX=4506h
  1015. --------G-2F4508-----------------------------
  1016. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - ALTERNATE SEGDEBUG IFACE
  1017.     AX = 4508h
  1018.     BX = ordinal (or 0000h)
  1019.     CX = segment
  1020.     DX = instance (or 0000h)
  1021.     SI = type (or 0000h)
  1022.     ES:DI -> ASCIZ module name
  1023. Notes:    this call is an alternate entry to the profiler's SEGDEBUG
  1024.       interface, but only to function 0, for notifying the profiler of
  1025.       each new segment loaded.  The SHOWHITS utility then examines the
  1026.       profiler's output files (CSIPS.DAT and SEGENTRY.DAT) in conjunction
  1027.       with symbol files to provide information in a useful form.
  1028.     this call does not have a corresponding Windows function
  1029. SeeAlso: AX=4500h
  1030. --------D-2F4601-----------------------------
  1031. INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
  1032.     AX = 4601h
  1033. Return: ???
  1034. Note:    the DOS 5+ kernel intercepts this function and copies the MCB
  1035.        following the caller's PSP memory block into the DOS data segment;
  1036.        in conjunction with AX=4602h, this intercept is used by DOS to
  1037.        avoid corruption of the Windows real-mode heap's end sentinel
  1038. SeeAlso: AX=1700h,AX=4602h
  1039. --------D-2F4602-----------------------------
  1040. INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
  1041.     AX = 4602h
  1042. Return: ???
  1043. Note:    the DOS 5+ kernel intercepts this function and copies the
  1044.       previously-saved MCB from the DOS data segment into the MCB following
  1045.       the caller's PSP memory block; in conjunction with AX=4601h, this
  1046.       intercept is used by DOS to avoid corruption of the Windows real-mode
  1047.       heap's end sentinel
  1048. SeeAlso: AX=1700h,AX=4601h
  1049. --------E-2F46-------------------------------
  1050. INT 2F U - Windows/286 DOS Extender
  1051.     AH = 46h
  1052.     AL = subfunction (03h,04h)
  1053. Return: ???
  1054. Note:    these two subfunctions are called by MS Windows 3.0
  1055. --------v-2F4653CX0002-----------------------
  1056. INT 2F - F-PROT v1.x only - F-LOCK.EXE - API
  1057.     AX = 4653h
  1058.     CX = 0002h
  1059.     BX = subfunction
  1060.         0000h  installation check
  1061.         Return: AX = FFFFh
  1062.         0001h  uninstall
  1063.         Return: AX,BX,ES destroyed
  1064.         0002h  disable (v1.08 and below only)
  1065.         0003h  enable (v1.08 and below only)
  1066. Program: F-LOCK is part of the shareware F-PROT virus/trojan protection
  1067.       package by Fridrik Skulason
  1068. SeeAlso: AX=4653h/CX=0003h,AX=CA00h,INT 21/AX=4BEEh
  1069. Index:    installation check;F-LOCK|uninstall;F-LOCK
  1070. --------v-2F4653CX0003-----------------------
  1071. INT 2F - F-PROT v1.x only - F-XCHK.EXE - API
  1072.     AX = 4653h
  1073.     CX = 0003h
  1074.     BX = subfunction
  1075.         0000h  installation check
  1076.         Return: AX = FFFFh
  1077.         0001h  uninstall
  1078.         Return: AX,BX,ES destroyed
  1079. Program: F-XCHK is part of the shareware F-PROT virus/trojan protection
  1080.       package by Fridrik Skulason
  1081. SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0004h,AX=CA00h
  1082. Index:    installation check;F-XCHK|uninstall;F-XCHK
  1083. --------v-2F4653CX0004-----------------------
  1084. INT 2F - F-PROT v1.x only - F-POPUP.EXE - API
  1085.     AX = 4653h
  1086.     CX = 0004h
  1087.     BX = subfunction
  1088.         0000h  installation check
  1089.         Return: AX = FFFFh
  1090.         0001h  uninstall
  1091.         Return: AX,BX,ES destroyed
  1092.         0002h  disable (v1.08 and below only)
  1093.            display message (v1.14+)
  1094.             other registers: ???
  1095.         0003h  enable (v1.08 and below only)
  1096.            display message (v1.14+)
  1097.             other registers: ???
  1098.             Return: AX = key pressed by user
  1099. Program: F-POPUP is part of the shareware F-PROT virus/trojan protection
  1100.       package by Fridrik Skulason
  1101. SeeAlso: AX=4653h/CX=0003h,AX=4653h/CX=0005h,AX=CA00h
  1102. Index:    installation check;F-POPUP|uninstall;F-POPUP
  1103. --------v-2F4653CX0005-----------------------
  1104. INT 2F - F-PROT v1.x only - F-DLOCK.EXE - API
  1105.     AX = 4653h
  1106.     CX = 0005h
  1107.     BX = subfunction
  1108.         0000h installation check
  1109.         Return: AX = FFFFh
  1110.         0001h uninstall
  1111.         Return: AX,BX,ES destroyed
  1112. Program: F-DLOCK is part of the shareware F-PROT virus/trojan protection
  1113.       package by Fridrik Skulason
  1114. SeeAlso: AX=4653h/CX=0004h,AX=CA00h
  1115. Index:    installation check;F-DLOCK|uninstall;F-DLOCK
  1116. --------W-2F4680-----------------------------
  1117. INT 2F U - MS Windows v3.0 - INSTALLATION CHECK
  1118.     AX = 4680h
  1119. Return: AX = result
  1120.         0000h MS Windows 3.0 running in real (/R) or standard (/S) mode,
  1121.           or DOS 5 DOSSHELL active
  1122.         nonzero  no Windows, Windows prior to 3.0, or Windows3 in enhanced
  1123.           mode
  1124. Note:    Windows 3.1 finally provides an installation check which works in all
  1125.       modes (see AX=160Ah)
  1126. SeeAlso: AX=1600h,AX=160Ah
  1127. ----------2F47-------------------------------
  1128. INT 2F U - ???
  1129.     AH = 47h
  1130.     ???
  1131. Return: ???
  1132. Note:    reportedly called by Microsoft BASIC Compiler v7.0
  1133. --------K-2F4800-----------------------------
  1134. INT 2F - DOS 5+ DOSKEY - INSTALLATION CHECK
  1135.     AX = 4800h
  1136. Return: AL = nonzero if installed (DOS 5.0 and 6.0 return AX=AA02h)
  1137.         ES = segment of DOSKEY resident portion
  1138. Note:    DOSKEY chains if AL is not 00h or 10h on entry
  1139. SeeAlso: AX=4800h"PCED",AX=4810h
  1140. --------K-2F4800-----------------------------
  1141. INT 2F - PCED v2.1 - INSTALLATION CHECK
  1142.     AX = 4800h
  1143. Return: AX = AACDh if installed
  1144.         ES = segment of PCED kernel (PCED has multiple code segments)
  1145. Program: PCED v2.1 is a command line editor/history/macro facility by
  1146.       Cove Software.  It is the commercial version of the freeware CED.
  1147. Notes:    DOSKEY also responds to this call if installed, returning AX=AA02h.
  1148.     unlike DOSKEY, PCED does *not* chain if AL contains an
  1149.       unsupported function code.  It IRETs with all registers intact.
  1150. --------K-2F4810-----------------------------
  1151. INT 2F - DOS 5+ DOSKEY, PCED v2.1 - READ INPUT LINE FROM CONSOLE
  1152.     AX = 4810h
  1153.     DS:DX -> line buffer (see #0573 at INT 21/AH=0Ah)
  1154. Return: AX = 0000h if successful
  1155. Notes:    the first byte (length) of the buffer MUST be 80h, or DOSKEY chains to
  1156.       the previous handler; PCED allows sizes other than 80h
  1157.     if the user's input is a macro name, no text is placed in the buffer
  1158.       even though AX=0000h on return; the program must immediately issue
  1159.       this call again to retrieve the expansion of the macro.  Similarly,
  1160.       if the user enters a special parameter such as $*, this call must
  1161.       be repeated to retrieve the expansion; on the second call, DOSKEY
  1162.       overwrites the macro name on the screen with its expansion.
  1163.     unlike DOSKEY, PCED expands all macros on the first call, so it is
  1164.       not necessary to make two calls; since the buffer is not empty on
  1165.       return, DOSKEY-aware programs will not make the second call
  1166.     DOSKEY chains if AL is not 00h or 10h on entry
  1167. SeeAlso: AX=4800h,INT 21/AH=0Ah
  1168. --------K-2F48C0-----------------------------
  1169. INT 2F - PCED v2.1 - PCED API
  1170.     AX = 48C0h
  1171.     DX = API function code
  1172.     other registers as required by the specified function
  1173. Return: CF clear if successful
  1174.     CF set on error
  1175.         AX = PCED error code
  1176.     other registers as appropriate for API function
  1177. Program: PCED v2.1 is a command line editor/history/macro facility by
  1178.       Cove Software.  It is the commercial version of the freeware CED.
  1179. Note:    the full API information is available from Cove Software
  1180. SeeAlso: AX=4800h"PCED",AX=48C1h,AX=48C2h,AX=48C3h
  1181. --------U-2F48C1BL00-------------------------
  1182. INT 2F - PCED/VSTACK - INSTALLATION CHECK
  1183.     AX = 48C1h
  1184.     BL = 00h
  1185. Return: AX = 0000h if installed
  1186.         BX = VSTACK resident segment
  1187. Program: VSTACK is a resident backscroll utility included as part of the PCED
  1188.       package by Cove Software
  1189. Note:    chains if BL <> 00h on entry
  1190. SeeAlso: AX=48C0h,AX=48C2h
  1191. --------U-2F48C2BL00-------------------------
  1192. INT 2F - PCED/ATTRIB - INSTALLATION CHECK
  1193.     AX = 48C2h
  1194.     BL = 00h
  1195. Return: AX = 0000h if installed
  1196.         BX = ATTRIB resident segment
  1197. Program: ATTRIB is a resident file attribute changer included as part of the
  1198.       PCED package by Cove Software
  1199. Note:    chains if BL <> 00h on entry
  1200. SeeAlso: AX=48C0h,AX=48C1h,AX=48C3h
  1201. --------K-2F48C3BL00-------------------------
  1202. INT 2F - PCED/KEYDEF - INSTALLATION CHECK
  1203.     AX = 48C3h
  1204.     BL = 00h
  1205. Return: AX = 0000h if installed
  1206.         BX = KEYDEF resident segment
  1207. Program: KEYDEF is a resident keyboard redefinition utility included as part
  1208.       of the PCED package by Cove Software
  1209. Note:    chains if BL <> 00h on entry
  1210. SeeAlso: AX=48C0h,AX=48C2h,AX=48C4h
  1211. --------U-2F48C4BL00-------------------------
  1212. INT 2F - PCED/FLIST - INSTALLATION CHECK
  1213.     AX = 48C4h
  1214.     BL = 00h
  1215. Return: AX = 0000h if installed
  1216.         BX = FLIST resident segment
  1217. Program: FLIST is a resident filelist processor included as part of the PCED
  1218.       package by Cove Software
  1219. Note:    chains if BL <> 00h on entry
  1220. SeeAlso: AX=48C0h,AX=48C3h,AX=48C5h
  1221. --------U-2F48C5BL00-------------------------
  1222. INT 2F - PCED/ASSOC - INSTALLATION CHECK
  1223.     AX = 48C5h
  1224.     BL = 00h
  1225. Return: AX = 0000h if installed
  1226.         BX = ASSOC resident segment
  1227. Program: ASSOC is a resident utility included as part of the PCED package which
  1228.       associated files with executable programs based on their extensions
  1229. Note:    chains if BL > 02h on entry
  1230. SeeAlso: AX=48C0h,AX=48C4h,AX=48C5h/BL=01h,AX=48C5h/BL=02h
  1231. --------U-2F48C5BL01-------------------------
  1232. INT 2F - PCED/ASSOC - VERSION CHECK
  1233.     AX = 48C5h
  1234.     BL = 01h
  1235. Return: AX = 0000h if installed
  1236.         BX = binary ASSOC version (BL = major, BH = minor)
  1237. Note:    chains if BL > 02h on entry
  1238. SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=02h
  1239. --------U-2F48C5BL02-------------------------
  1240. INT 2F - PCED/ASSOC - ASSOCIATION TEST
  1241.     AX = 48C5h
  1242.     BL = 02h
  1243.     DS:SI -> ASCIZ filename
  1244. Return: AX = status
  1245.         0000h if filename is unknown
  1246.         0001h if there is an association defined for the file
  1247.     BX destroyed
  1248. Program: ASSOC is a resident utility included as part of the PCED package which
  1249.       associated files with executable programs based on their extensions
  1250. Note:    chains if BL > 02h on entry
  1251. SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=01h
  1252. ----------2F49-------------------------------
  1253. INT 2F U - ???
  1254.     AH = 49h
  1255.     ???
  1256. Return: ???
  1257. Note:    reportedly called by DOS 5.0 installation
  1258. --------D-2F4A00CX0000-----------------------
  1259. INT 2F CU - DOS 5+ - FLOPPY-DISK LOGICAL DRIVE CHANGE NOTIFICATION
  1260.     AX = 4A00h
  1261.     CX = 0000h
  1262.     DH = new drive number
  1263.     DL = current drive number
  1264. Return: CX = FFFFh to skip "Insert diskette for drive X:" message
  1265. Note:    called by MS-DOS 5.0+ IO.SYS just before displaying the message
  1266.       "Insert diskette for drive X:" on single-floppy systems
  1267. --------D-2F4A01-----------------------------
  1268. INT 2F - DOS 5+ - QUERY FREE HMA SPACE
  1269.     AX = 4A01h
  1270. Return: BX = number of bytes available in HMA (0000h if DOS not using HMA)
  1271.     ES:DI -> start of available HMA area (FFFFh:FFFFh if not using HMA)
  1272. Notes:    called by Windows 3.1 DOSX.EXE
  1273.     supported by Novell DOS 7
  1274. SeeAlso: AX=4310h,AX=4A02h
  1275. --------D-2F4A02-----------------------------
  1276. INT 2F - DOS 5+ - ALLOCATE HMA SPACE
  1277.     AX = 4A02h
  1278.     BX = number of bytes
  1279. Return: ES:DI -> start of allocated HMA block or FFFFh:FFFFh
  1280.     BX = number of bytes actually allocated (rounded up to next paragraph
  1281.           for DOS 5.0 and 6.0)
  1282. Notes:    this call is not valid unless DOS is loaded in the HMA (DOS=HIGH)
  1283.     called by Windows 3.1 DOSX.EXE
  1284.     supported by Novell DOS 7
  1285. SeeAlso: AX=4A01h
  1286. --------T-2F4A05-----------------------------
  1287. INT 2F U - DOS 5+ DOSSHELL - TASK SWITCHING API???
  1288.     AX = 4A05h
  1289.     SI = function
  1290.         0000h reset???
  1291.         0001h ???
  1292.         ES:BP -> 80-byte buffer containing ???
  1293.         0002h ???
  1294.         0003h ???
  1295.         0004h ???
  1296.         BL = ???
  1297.         0005h ???
  1298.         0006h get ???
  1299.         Return: ES:SI -> ???
  1300.         0007h get ???
  1301.         Return: AX = ???
  1302.         0008h get ???
  1303.         Return: DX:AX -> ??? (internal control data of some kind)
  1304.         0009h get ???
  1305.         Return: ES:SI -> ??? (apparently identical to function 0006h)
  1306.         000Ah ???
  1307.         BL = length of buffer
  1308.         ES:BP -> buffer containing ???
  1309.         000Bh get ???
  1310.         Return: AX = ???
  1311.         000Ch ???
  1312.         BL = ???
  1313.         Return: if BL nonzero on entry
  1314.                 DX:AX -> ???
  1315.             if BL = 00h on entry
  1316.                 ES:SI -> ???
  1317. Notes:    DOSSHELL chains to the previous handler if SI is not one of the values
  1318.       listed above
  1319.     the DOSSWAP.EXE module calls functions 03h,04h,05h,07h,08h,09h,0Ch
  1320.     the Windows 3.1 DSWAP.EXE and WSWAP.EXE task switchers use these calls
  1321. SeeAlso: AX=4B01h
  1322. --------D-2F4A06-----------------------------
  1323. INT 2F CU - DOS 5+ - DOS SUPERVISOR "REBOOT PANEL" - ADJUST MEMORY SIZE
  1324.     AX = 4A06h
  1325.     DX = segment following last byte of conventional memory
  1326. Return: DX = segment following last byte of memory available for use by DOS
  1327. Desc:    used to override the default memory size when booting diskless
  1328.       workstations
  1329. Notes:    called by MS-DOS 5+ IO.SYS startup code if the signature "RPL" is
  1330.       present three bytes beyond the INT 2F handler; this call overrides
  1331.       the value returned by INT 12
  1332.     hooked by RPL code at the top of memory to protect itself from being
  1333.       overwritten; DOS builds a memory block with owner = 0008h and name
  1334.       "RPL" which must be freed by the RPL code when it is done
  1335. SeeAlso: INT 12,INT 18
  1336. --------N-2F4A07-----------------------------
  1337. INT 2F U - RESERVED FOR PROTMAN SUPPORT
  1338.     AX = 4A07h
  1339.     ???
  1340. Return: ???
  1341. --------c-2F4A10BX0000-----------------------
  1342. INT 2F - SMARTDRV v4.00+ - INSTALLATION CHECK AND HIT RATIOS
  1343.     AX = 4A10h
  1344.     BX = 0000h
  1345.     CX = EBABh (v4.1+; see Note)
  1346. Return: AX = BABEh if installed
  1347.         DX:BX = cache hits
  1348.         DI:SI = cache misses
  1349.         CX = number of dirty cache elements
  1350.         BP = version in BCD (4.10 = 0410h)
  1351. Notes:    most of the SMARTDRV API, including this call, is supported by
  1352.       PC-Cache v8.0 and recent versions of the Norton Caches
  1353.     if DBLSPACE.BIN is installed but SMARTDRV has not yet been installed,
  1354.       then calls of this function with CX<>EBABh on entry cause
  1355.       DBLSPACE.BIN to display the error message
  1356.       "Cannot run SMARTDrive 4.0 with DoubleSpace" and abort the caller
  1357.       with INT 21/AX=4C00h
  1358.     SMARTDRV v3.x had a completely different API using IOCTL calls, which
  1359.       was also supported by the Norton Caches
  1360. SeeAlso: AX=4A10h/BX=0001h,AX=4A10h/BX=0004h,AX=4A10h/BX=0005h
  1361. SeeAlso: AX=4A10h/BX=0007h,AX=4A10h/BX=1234h,AX=4A11h/BX=0000h
  1362. SeeAlso: INT 21/AX=4402h"SMARTDRV",INT 21/AX=4403h"SMARTDRV"
  1363. --------c-2F4A10BX0000-----------------------
  1364. INT 2F U - Novell NWCACHE - ???
  1365.     AX = 4A10h
  1366.     BX = 0000h
  1367.     CX = 0EDCh ('EDC' = Novell European Development Center)
  1368. Return: ???
  1369. SeeAlso: AX=4A10h/BX=0001h"NWCACHE"
  1370. --------c-2F4A10BX0001-----------------------
  1371. INT 2F - SMARTDRV v4.00+ - FLUSH BUFFERS (COMMIT CACHE)
  1372.     AX = 4A10h
  1373.     BX = 0001h
  1374. Note:    this function is also supported by PC-Cache v8.0.
  1375. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0002h
  1376. --------c-2F4A10BX0001-----------------------
  1377. INT 2F U - Novell NWCACHE - ???
  1378.     AX = 4A10h
  1379.     BX = 0001h
  1380.     CX = 0EDCh ('EDC' = Novell European Development Center)
  1381. Return: ???
  1382. SeeAlso: AX=4A10h/BX=0000h"NWCACHE"
  1383. --------c-2F4A10BX0002-----------------------
  1384. INT 2F - SMARTDRV v4.00+ - RESET CACHE
  1385.     AX = 4A10h
  1386.     BX = 0002h
  1387. Note:    this function is also supported by PC-Cache v8.0.
  1388. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0001h
  1389. --------c-2F4A10BX0003-----------------------
  1390. INT 2F - SMARTDRV v4.00+ - STATUS
  1391.     AX = 4A10h
  1392.     BX = 0003h
  1393.     BP = drive number (0=A, 1=B, etc.)
  1394.     DL = subfunction
  1395.         00h only get information
  1396.         01h turn on read cache
  1397.         02h turn off read cache
  1398.         03h turn on write cache
  1399.         04h turn off write cache
  1400. Return: AX = BABEh if OK
  1401.     DL = status (see #1516)
  1402.     DL = FFh if drive does not exist
  1403. Notes:    If the read cache is off, reads will not be cached, but writes will
  1404.       continue to be cached if the write-cache is enabled.
  1405.     this function is also supported by PC-Cache v8.0.
  1406. SeeAlso: AX=4A10h/BX=0000h
  1407.  
  1408. Bitfields for SMARTDRV status:
  1409. Bit(s)    Description    (Table 1516)
  1410.  7    not cached
  1411.  6    write-through (not write-cached)
  1412.  0-5    real drive number (0=A, 1=B...)
  1413. --------c-2F4A10BX0004-----------------------
  1414. INT 2F - SMARTDRV v4.00+ - GET CACHE SIZE
  1415.     AX = 4A10h
  1416.     BX = 0004h
  1417. Return: AX = size in elements of full-sized cache
  1418.     BX = current size in elements
  1419.     CX = size of one element in bytes
  1420.     DX = number of elements under Windows
  1421. Note:    this function is also supported by PC-Cache v8.0.
  1422. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0005h
  1423. --------c-2F4A10BX0005-----------------------
  1424. INT 2F - SMARTDRV v4.00+ - GET DOUBLE-BUFFER STATUS
  1425.     AX = 4A10h
  1426.     BX = 0005h
  1427.     BP = drive number (0=A, 1=B...)
  1428. Return: AX = BABEh if double-buffered
  1429.         ES:DI -> 16-byte array of status bytes for fixed disks (see #1517)
  1430. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0006h
  1431.  
  1432. (Table 1517)
  1433. Values for SMARTDRV status byte:
  1434.  00h    state unknown
  1435.  FFh    drive double-buffered
  1436.  else    not double-buffered
  1437. --------c-2F4A10BX0006-----------------------
  1438. INT 2F CU - SMARTDRV v4.00+ - CHECK IF DRIVE CACHEABLE
  1439.     AX = 4A10h
  1440.     BX = 0006h
  1441.     CL = drive number (01h = A:)
  1442. Return: AX = 0006h if drive should not be cached by SMARTDRV
  1443. Note:    called by SMARTDRV at startup to determine whether it should cache
  1444.       a particular drive
  1445. SeeAlso: AX=4A10h/BX=0000h
  1446. --------c-2F4A10BX0007-----------------------
  1447. INT 2F - SMARTDRV v4.00+ - GET DEVICE DRIVER FOR DRIVE
  1448.     AX = 4A10h
  1449.     BX = 0007h
  1450.     BP = drive number (00h=A:)
  1451. Return: DL = unit number within device driver
  1452.     ES:DI -> device driver header for drive
  1453. Note:    this function is also supported by PC-Cache v8.0.
  1454.     this call is reported to always return the driver header of the
  1455.       standard block driver (A:-C:+) for SmartDrive v5.00 from MS-DOS 6.2
  1456. SeeAlso: AX=4A10h/BX=0000h,AX=4A11h/BX=0003h,AX=4A11h/BX=0004h
  1457. --------c-2F4A10BX0008-----------------------
  1458. INT 2F - SMARTDRV v4.20+ - GET/SET FLUSH BEFORE PROMPT, CD-ROM SUPPORT
  1459.     AX = 4A10h
  1460.     BX = 0008h
  1461.     DL = subfunction
  1462.         00h set
  1463.         DH = new states
  1464.             bit 0: flush before prompt
  1465.             bits 1-7 reserved (0)
  1466.         01h get
  1467.         Return: DH = status flags
  1468.                 bit 0: (v4.2+) flush before prompt
  1469.                 bit 1: (v5.0+) CD-ROM caching support installed
  1470. Note:    v4.2 was an interim release to fix problems in the SMARTDRV included
  1471.       with MS-DOS 6.00; v5.00 is included with MS-DOS 6.2
  1472. --------c-2F4A10BX000A-----------------------
  1473. INT 2F - SMARTDRV v4.00+ - GET ELEMENT STATUS TABLE
  1474.     AX = 4A10h
  1475.     BX = 000Ah
  1476. Return: ES:BX -> information pointer table (see #1518)
  1477. Note:    this function is also supported by PC-Cache v8.0.
  1478. SeeAlso: AX=4A10h/BX=0000h
  1479.  
  1480. Format of SMARTDRV information pointer table:
  1481. Offset    Size    Description    (Table 1518)
  1482.  00h    WORD    offset of ??? byte/word array (byte if elements < 2000h bytes)
  1483.  02h    WORD    offset of dirty flag byte/word array (byte if elts < 2000h)
  1484.         each byte/word is a bit string of the dirty sectors in element
  1485.  04h    WORD    offset of word array containing low halves of unique
  1486.           identifiers for the corresponding element's contents
  1487.  06h    WORD    offset of word array containing high halves of unique
  1488.           identifiers for the corresponding element's contents
  1489.  08h    WORD    offset of WORD containing current number of elements in cache
  1490. --------c-2F4A10BX1234-----------------------
  1491. INT 2F - SMARTDRV v4.00+ - SIGNAL SERIOUS ERROR
  1492.     AX = 4A10h
  1493.     BX = 1234h
  1494. Desc:    this function pops up a message box saying that a serious error
  1495.       occurred and to hit R to retry, then waits for the keypress
  1496. Note:    this function is also supported by PC-Cache v8.0.
  1497. SeeAlso: AX=4A10h/BX=0000h
  1498. --------k-2F4A11BX0000-----------------------
  1499. INT 2F - DBLSPACE.BIN - "GetVersion" - INSTALLATION CHECK
  1500.     AX = 4A11h
  1501.     BX = 0000h
  1502. Return: AX = 0000h (successful)
  1503.     BX = 444Dh ("DM")
  1504.     CL = first drive letter used by DBLSPACE (41h ['A'] = A:)
  1505.     CH = number of drive letters used by DBLSPACE
  1506.     DX = internal DBLSPACE.BIN version number (bits 14-0)
  1507.         bit 15 set if DBLSPACE.BIN has not yet been relocated to final
  1508.           position in memory (i.e. DBLSPACE.SYS /MOVE)
  1509. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  1510.       disk-compression software bundled with MS-DOS 6.0 and 6.20
  1511. Notes:    this function is also supported by the version of SuperStor bundled
  1512.       with IBM DOS 6.x and "preloading" versions of Stacker
  1513.     the complete DBLSPACE.BIN API is still supported by MS-DOS 6.22's
  1514.       DRVSPACE.BIN
  1515. SeeAlso: AX=4A11h/BX=0001h,AX=4A11h/BX=0002h,AX=4A11h/BX=0003h
  1516. SeeAlso: AX=4A11h/BX=0005h,AX=4A11h/BX=0007h,AX=4A11h/BX=FFFFh
  1517. SeeAlso: INT 21/AX=4404h"DBLSPACE"
  1518. --------k-2F4A11BX0001-----------------------
  1519. INT 2F - DBLSPACE.BIN - "GetDriveMapping" - GET DRIVE MAPPING
  1520.     AX = 4A11h
  1521.     BX = 0001h
  1522.     DL = drive number (0=A:)
  1523. Return: AX = status (see also #1519)
  1524.         0000h successful
  1525.         if DL was compressed drive,
  1526.             BL = host drive (bit 7 set if drive is compressed)
  1527.         else if DL was host drive,
  1528.             BL = compressed drive
  1529.         else
  1530.             BL = specified drive (if available for DoubleSpace)
  1531.         BH = DoubleSpace sequence number
  1532.         other error code (0101h) (see #1519)
  1533.         apparently never returned for the MS-DOS 6.2 DoubleSpace
  1534. Note:    the compressed volume file for the specified compressed drive is
  1535.       host:\DBLSPACE.sequence
  1536. SeeAlso: AX=4A11h/BX=0000h
  1537.  
  1538. (Table 1519)
  1539. Values for DBLSPACE function status:
  1540.  0000h    successful
  1541.  0100h    bad function
  1542.  0101h    invalid drive
  1543.  0102h    not a compressed drive
  1544.  0103h    drive already swapped
  1545.  0104h    drive not swapped
  1546. --------k-2F4A11BX0002-----------------------
  1547. INT 2F - DBLSPACE.BIN - "Swap Drive" - SWAP DRIVE LETTERS OF CVF AND HOST DRIVE
  1548.     AX = 4A11h
  1549.     BX = 0002h
  1550.     DL = drive number (0=A:) of compressed drive to swap with its host
  1551. Return: AX = status (0000h,0101h,0102h,0103h) (see #1519)
  1552. Note:    this function is intended for use by DBLSPACE.EXE only
  1553. SeeAlso: AX=4A11h/BX=0000h
  1554. --------k-2F4A11BX0003-----------------------
  1555. INT 2F - DBLSPACE.BIN - "DSGetEntryPoints" - GET DEVICE DRIVER ENTRY POINTS
  1556.     AX = 4A11h
  1557.     BX = 0003h
  1558.     CL = drive number (0=A:) of compressed drive
  1559. Return: CL = FFh on error (not compressed drive)
  1560.     CL <> FFh driver unit number of host drive
  1561.         ES:SI -> device driver's strategy routine
  1562.         ES:DI -> device driver's interrupt routine
  1563.     BX destroyed
  1564. Note:    in conjunction with subfunction 0004h, this call allows disk caches
  1565.       like SMARTDRV to apply a device driver wrapper to DoubleSpaced
  1566.       drives just like SMARTDRV applies to regular block devices
  1567. SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0004h
  1568. --------k-2F4A11BX0004-----------------------
  1569. INT 2F - DBLSPACE.BIN - "DSSetEntryPoints" - SET DEVICE DRIVER ENTRY POINTS
  1570.     AX = 4A11h
  1571.     BX = 0004h
  1572.     CL = drive number (0=A:) of compressed drive
  1573.     DL = unit number for new driver entry points
  1574.     DH = 00h
  1575.     ES:SI -> device driver strategy routine to call for drive
  1576.     ES:DI -> device driver interrupt routine to call for drive
  1577. Return: CL = FFh on error (not a compressed drive)
  1578.     BX destroyed
  1579. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  1580.       disk-compression software bundled with MS-DOS 6.0
  1581. Note:    in conjunction with subfunction 0003h, this call allows disk caches
  1582.       like SMARTDRV to apply a device driver wrapper to DoubleSpaced
  1583.       drives just like SMARTDRV applies to regular block devices
  1584. SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0003h
  1585. --------k-2F4A11BX0005-----------------------
  1586. INT 2F - DBLSPACE.BIN - "ActivateDrive" - MOUNT COMPRESSED DRIVE
  1587.     AX = 4A11h
  1588.     BX = 0005h
  1589.     DL = drive number (0=A:) to assign to new drive
  1590.     ES:SI -> activation record (see #1520)
  1591. Return: status returned in activation record (see #1521)
  1592. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0006h
  1593.  
  1594. Format of DBLSPACE activation record:
  1595. Offset    Size    Description    (Table 1520)
  1596.  00h  2 BYTEs    signature "MD" (4Dh 44h)
  1597.  02h    BYTE    4Dh ('M') mount command
  1598.  03h    BYTE    error code (set to FFh before calling) (see #1521)
  1599.  04h    BYTE    host drive number (0=A:)
  1600.  05h    ???    DISK_UNIT structure (not documented)
  1601.  
  1602. (Table 1521)
  1603. Values for DBLSPACE Mount error code:
  1604.  00h    successful
  1605.  01h    drive letter not available for DoubleSpace
  1606.  02h    drive letter already in use
  1607.  03h    no more disk units (increase MaxRemovableDrives in .INI)
  1608.  09h    CVF too fragmented
  1609. --------k-2F4A11BX0006-----------------------
  1610. INT 2F - DBLSPACE.BIN - "DeactivateDrive" - UNMOUNT COMPRESSED DRIVE
  1611.     AX = 4A11h
  1612.     BX = 0006h
  1613.     DL = drive number (0=A:) to unmount
  1614. Return: AX = status (0000h,0102h) (see #1519)
  1615. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0005h
  1616. --------k-2F4A11BX0007-----------------------
  1617. INT 2F - DBLSPACE.BIN - "GetDriveSpace" - GET SPACE AVAIL ON COMPRESSED DRIVE
  1618.     AX = 4A11h
  1619.     BX = 0007h
  1620.     DL = compressed drive number (0=A:)
  1621. Return: AX = status (0000h,0102h) (see also #1519)
  1622.         0000h successful
  1623.         DS:SI -> free space record (see #1522)
  1624. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  1625.       disk-compression software bundled with MS-DOS 6.0
  1626. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
  1627.  
  1628. Format of DBLSPACE free space record:
  1629. Offset    Size    Description    (Table 1522)
  1630.  00h    DWORD    total number of sectors in drive's sector heap
  1631.  04h    DWORD    number of free sectors in drive's sector heap
  1632. --------k-2F4A11BX0008-----------------------
  1633. INT 2F - DBLSPACE.BIN - "GetFileFragmentSpace" - GET SIZE OF FRAGMENT HEAP
  1634.     AX = 4A11h
  1635.     BX = 0008h
  1636.     DL = compressed drive number (0=A:)
  1637. Return: AX = status (0000h,0102h) (see also #1519)
  1638.         0000h successful
  1639.         BX = maximum entries in File Fragment heap
  1640.         CX = available entries in File Fragment heap
  1641. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0007h,AX=4A11h/BX=0009h
  1642. --------k-2F4A11BX0009-----------------------
  1643. INT 2F - DBLSPACE.BIN - "GetExtraInfo" - DETERMINE NUMBER OF DISK_UNIT STRUCTS
  1644.     AX = 4A11h
  1645.     BX = 0009h
  1646.     DL = compressed drive number (0=A:)
  1647. Return: AX = status (see also #1519)
  1648.         0000h successful
  1649.         CL = number of DISK_UNIT structures allocated
  1650.               (see AX=4A11h/BX=0005h)
  1651.         CH = DoubleGuard enabled-checks bitflags in bits 6-0 (DOS 6.2)
  1652. Note:    the DoubleGuard checks are enabled or disabled as a block by the
  1653.       DoubleGuard= line in DBLSPACE.INI; they may be individually set with
  1654.       the CheckSum= line.
  1655. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
  1656. --------k-2F4A11BX000A-----------------------
  1657. INT 2F - DBLSPACE.BIN v6.2 - SET AUTOMOUNT DRIVES
  1658.     AX = 4A11h
  1659.     BX = 000Ah
  1660.     CX:DX = bitmask of drives on which to enable AutoMount
  1661.         (DX bit 0 = A:, CX bit 0 = P:, etc.)
  1662. Return: AX = 0000h if supported
  1663.         CX:DX = old mask or 0000h:0000h on error
  1664.     BX destroyed
  1665. SeeAlso: AX=4A11h/BX=000Bh
  1666. --------k-2F4A11BX000B-----------------------
  1667. INT 2F - DBLSPACE.BIN v6.2 - GET AUTOMOUNT DRIVES
  1668.     AX = 4A11h
  1669.     BX = 000Bh
  1670. Return: AX = 0000h if supported
  1671.         CX:DX = mask of drives with AutoMount enabled
  1672.         0000h:0000h on error
  1673.     BX destroyed
  1674. SeeAlso: AX=4A11h/BX=000Ah
  1675. --------k-2F4A11BXFFFE-----------------------
  1676. INT 2F U - DBLSPACE.BIN - RELOCATE
  1677.     AX = 4A11h
  1678.     BX = FFFEh
  1679.     ES = segment to which to relocate DBLSPACE.BIN
  1680. Return: ???
  1681. Notes:    called by DBLSPACE.SYS to relocate DBLSPACE.BIN to its final position
  1682.       in memory
  1683.     this function also unhooks and discards the code providing this
  1684.       function and AX=4A11h/BX=FFFFh
  1685.     this function is also supported by the version of SuperStor bundled
  1686.       with IBM DOS 6.x and "preloading" versions of Stacker
  1687. SeeAlso: AX=4A11h/BX=FFFFh
  1688. --------k-2F4A11BXFFFF-----------------------
  1689. INT 2F U - DBLSPACE.BIN - GET RELOCATION SIZE
  1690.     AX = 4A11h
  1691.     BX = FFFFh
  1692. Return: AX = number of paragraphs needed by DBLSPACE.BIN
  1693. Note:    used by DBLSPACE.SYS to relocate the DBLSPACE driver to its final
  1694.       position in memory
  1695.     this function is also supported by the version of SuperStor bundled
  1696.       with IBM DOS 6.x and "preloading" versions of Stacker
  1697. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=FFFEh
  1698. --------k-2F4A12CX4D52-----------------------
  1699. INT 2F - Microsoft Realtime Compression Interface (MRCI) - RAM-BASED SERVER
  1700.     AX = 4A12h
  1701.     CX = 4D52h ("MR")
  1702.     DX = 4349h ("CI")
  1703. Return: CX = 4943h ("IC") if installed
  1704.     DX = 524Dh ("RM") if installed
  1705.         ES:DI -> MRCINFO structure (see #0544 at INT 1A/AX=B001h)
  1706. Note:    this call is functionally identical to INT 1A/AX=B001h, but should be
  1707.       called first, as the latter call is used for the first, ROM-based
  1708.       MRCI server, while this call is used for RAM-based servers which
  1709.       may be partially or entirely replacing a prior server
  1710. SeeAlso: AX=4A12h/CX=5354h,INT 1A/AX=B001h
  1711. --------k-2F4A12CX5354-----------------------
  1712. INT 2F - Stacker 4 LZS Compression Interface (LZSAPI)
  1713.     AX = 4A12h
  1714.     CX = 5354h ("ST")
  1715.     DX = 4143h ("AC")
  1716. Return: AX = 4F4Bh ("OK") if installed
  1717.     CX = 7374h ("st") if installed
  1718.     DX = 6163h ("ac") if installed
  1719.         ES:DI -> entry point in LZSAPI server (usually, driver
  1720.               STACKER.COM) containing far address of an actual
  1721.               LZSINFO structure (see #1523)
  1722. SeeAlso: AX=4A12h/CX=4D52h,INT 25/AX=CDCDh
  1723.  
  1724. Format of LZSINFO structure:
  1725. Offset    Size    Description    (Table 1523)
  1726.  00h  6 BYTEs    signature "LZSAPI"
  1727.  06h    WORD    server version (200 (0C8h) for Stacker 4 and Stacker Anywhere)
  1728.  08h  4 BYTEs    vendor signature
  1729.         "STAC" = Stac Electronics, Inc.
  1730.  0Ch  6 BYTEs    ???
  1731.  12h    WORD    bit flags: server status/capabilities (see #1524)
  1732.  14h    DWORD    -> Stacker 3.X-compatible compression procedure
  1733.  18h    DWORD    -> Stacker 3.X-compatible decompression procedure
  1734.  1Ch  4 BYTEs    reserved (always set to 0)
  1735.  20h    DWORD    -> incremental Stacker 3.x-compatible compression procedure
  1736.           (see #1525)
  1737.  24h  4 BYTEs    ???
  1738.  28h    DWORD    -> incremental Stacker 3.x-compatible decompression procedure
  1739.           (see #1526)
  1740.  2Ch  4    BYTES    ???
  1741.  30h    DWORD    -> new (Stacker 4) compression procedure
  1742.  34h  4 BYTEs    ???
  1743.  38h    DWORD    -> new (Stacker 4) decompression procedure
  1744. Notes:    Stacker 4 usally keeps two different data-compression algorithms in
  1745.       memory (preferably in XMA):
  1746.         1) new (Stacker 4) data compression algorithm (4K LZ77 with hashing
  1747.           and static Huffman encoding), and
  1748.         2) old (Stacker 3.x-compatible) one (2K LZ77 with hashing), which
  1749.           is used to work with STACVOL files created under older
  1750.           versions of Stacker.
  1751.  
  1752. Bitfields for LZSAPI capabilities:
  1753. Bit(s)    Description    (Table 1524)
  1754.  0    ???
  1755.  1    busy/error flag
  1756.  2-10    ???
  1757.  11    maximum compressor/decompressor presented
  1758.  
  1759. (Table 1525)
  1760. Call Stacker 3.x-style non-incremental functions with:
  1761.     STACK:    DWORD    return address for compress/decompress procedure
  1762.         WORD    compression algorithm parameters (see #1527)
  1763.         WORD    size of destination buffer (in bytes)
  1764.         DWORD    address of destination buffer
  1765.         WORD    size of source buffer (in bytes)
  1766.         DWORD    address of source buffer
  1767. Return: (compression/decompression procedure)
  1768.     AX = size of resulting data in destination buffer
  1769.         0000h if error (either destination buffer too small or error in
  1770.           compressed data)
  1771.  
  1772. (Table 1526)
  1773. Call Stacker 4-style incremental procedures with:
  1774.     STACK:    DWORD    return address for compr./decompr. procedure
  1775.         DWORD    address of LZSSWAP structure (see #1528)
  1776.             if 0000:0000, procedure uses non-incremental technique
  1777.         WORD    compression algorithm parameters (see #1527)
  1778.         WORD    size of destination buffer (in bytes)
  1779.         DWORD    address of destination buffer
  1780.         WORD    size of source buffer (in bytes)
  1781.         DWORD    address of source buffer
  1782.  
  1783. (Table 1527)
  1784. Values for Compression algorithm parameters:
  1785. Value    Compression level (/P=xx parameter)
  1786.  07F9h      1
  1787.  0621h      2
  1788.  0625h      3
  1789.  0665h      4
  1790.  0669h      5
  1791.  06E9h      6
  1792.  06EDh      7
  1793.  07D1h      8
  1794.  07D9h      9
  1795.  
  1796. Format of LZSSWAP structure:
  1797. Offset    Size    Description    (Table 1528)
  1798.  00h  2 BYTEs    signature "CS"
  1799.  02h  6 BYTEs    reserved
  1800.  08h    DWORD    address of destination buffer swapping procedure
  1801.  0Ch    DWORD    address of stack swapping procedure
  1802. --------k-2F4A13-----------------------------
  1803. INT 2F U - DBLSPACE.BIN - GET ??? ENTRY POINTS
  1804.     AX = 4A13h
  1805. Return: AX = 134Ah if supported
  1806.         ES:BX -> entry point record (see #1529)
  1807. SeeAlso: AX=4A11h/BX=0000h
  1808.  
  1809. Format of DBLSPACE entry point record:
  1810. Offset    Size    Description    (Table 1529)
  1811.  00h    DWORD    pointer to FAR function for ???
  1812.  04h  5 BYTEs    FAR JUMP instruction to ???
  1813. --------N-2F4B-------------------------------
  1814. INT 2F - LAN Manager 2.0 DOS Enh NETWKSTA.EXE - NETWORK WORKSTATION REDIRECTOR
  1815.     AH = 4Bh
  1816.     ???
  1817. Return: ???
  1818. Note:    LAN Manager enhanced mode adds features beyond the standard redirector
  1819.       file/printer services
  1820. SeeAlso: AX=118Ah,AX=4100h,AH=42h
  1821. --------T-2F4B01-----------------------------
  1822. INT 2F C - DOS 5+ TASK SWITCHER - BUILD CALLOUT CHAIN
  1823.     AX = 4B01h
  1824.     CX:DX -> task switcher entry point (see #1532)
  1825.     ES:BX = 0000h:0000h
  1826. Return: ES:BX -> callback info structure (see #1530) or 0000h:0000h
  1827. Notes:    called by the task switcher
  1828.     this function is hooked by clients which require notification of task
  1829.       switcher activities; the call must first be passed on to the prior
  1830.       handler with registers unchanged using a simulated interrupt.     On
  1831.       return, the client must build a callback info structure and store
  1832.       the returned ES:BX in the "next" field, then return the address of
  1833.       its own callback info structure.
  1834.     a client program must add itself to the notification chain if it
  1835.       provides services to other programs; before terminating, it must
  1836.       remove itself from the chain by calling the task switcher's entry
  1837.       point with AX=0005h (see #1532)
  1838.     the task switcher entry point should not be saved, as it is subject to
  1839.       change and will be provided on any notification call
  1840.     the Windows 3.1 Standard Mode supports this API
  1841. SeeAlso: AX=160Bh,AX=4B02h
  1842.  
  1843. Format of task switcher callback info structure:
  1844. Offset    Size    Description    (Table 1530)
  1845.  00h    DWORD    pointer to next callback info structure
  1846.  04h    DWORD    pointer to notification function (see #1531)
  1847.  08h    DWORD    reserved
  1848.  0Ch    DWORD    address of zero-terminated list of API info structures
  1849.         (see #1534)
  1850.  
  1851. (Table 1531)
  1852. Values task switcher notification function is called with:
  1853.     AX = function
  1854.         0000h switcher initialization
  1855.         Return: AX = status
  1856.                 0000h if OK to load
  1857.                 nonzero to abort task switcher
  1858.         0001h query suspend
  1859.         BX = session ID
  1860.         Return: AX = status
  1861.                 0000h if OK to switch session
  1862.                 0001h if not
  1863.         0002h suspend session
  1864.         BX = session ID
  1865.         interrupts disabled
  1866.         Return: AX = 0000h if OK to switch session
  1867.                = 0001h if not
  1868.         0003h activate session
  1869.         BX = session ID
  1870.         CX = session status flags
  1871.             bit 0: set if first activation of session
  1872.             bits 1-15: reserved (0)
  1873.         interrupts disabled
  1874.         Return: AX = 0000h
  1875.         0004h session active
  1876.         BX = session ID
  1877.         CX = session status flags
  1878.             bit 0: set if first activation of session
  1879.             bits 1-15: reserved (0)
  1880.         Return: AX = 0000h
  1881.         0005h create session
  1882.         BX = session ID
  1883.         Return: AX = 0000h if OK to create session
  1884.                = 0001h if not
  1885.         0006h destroy session
  1886.         BX = session ID
  1887.         Return: AX = 0000h
  1888.         0007h switcher termination
  1889.         BX = flags
  1890.             bit 0: set if calling switcher is only switcher loaded
  1891.             bits 1-15: reserved (0)
  1892.         Return: AX = 0000h
  1893.     ES:DI -> task switcher entry point (see #1532)
  1894. Notes:    function 0000h is generally called by the program which controls or
  1895.       invokes the task switcher, rather than by the task switcher itself;
  1896.       the entry point supplied to this function is not necessarily the
  1897.       entry point to the task switcher itself, and may be 0000h:0000h.  If
  1898.       any client indicates that loading is not possible, all clients will
  1899.       be called with function 0007h; thus it is possible for a client to
  1900.       receive a termination notice without a corresponding initialization
  1901.       notice.
  1902.     except for functions 0002h and 0003h, the notification handler is
  1903.       called with interrupts enabled and may make any INT 21h function
  1904.       call; interrupts must not be enabled in functions 0002h and 0003h
  1905.     function 0007h may be called with ES:DI = 0000h:0000h if the entry
  1906.       point is no longer valid
  1907. --------T-2F4B02BX0000-----------------------
  1908. INT 2F - DOS 5+ TASK SWITCHER - INSTALLATION CHECK
  1909.     AX = 4B02h
  1910.     BX = 0000h
  1911.     ES:DI = 0000h:0000h
  1912. Return: ES:DI = 0000h:0000h if task switcher not loaded
  1913.     ES:DI -> task switcher entry point (see #1532) if loaded
  1914.         AX = 0000h
  1915. Notes:    the returned entry point is that for the most-recently loaded task
  1916.       switcher; the entry points for prior task switchers may be determined
  1917.       with the "get version" call (see #1532)
  1918.     this function is supported by PC Tools v8+ CPTASK
  1919. SeeAlso: AX=4A05h,AX=4B03h
  1920.  
  1921. (Table 1532)
  1922. Call task switcher entry point with:
  1923.     AX = 0000h get version
  1924.         Return: CF clear if successful
  1925.                 AX = 0000h
  1926.                 ES:BX -> task switcher version struct (see #1533)
  1927.             CF set if unsupported function
  1928.     AX = 0001h test memory region
  1929.         ES:DI -> first byte to be tested
  1930.         CX = size of region to test
  1931.         Return: CF clear if successful
  1932.                 AX = memory type of tested region
  1933.                 0000h global
  1934.                 0001h global and local
  1935.                 0002h local (replaced on session switch)
  1936.             CF set if unsupported function
  1937.     AX = 0002h suspend switcher
  1938.         ES:DI -> new task switcher's entry point
  1939.         Return: CF clear if successful
  1940.                 AX = state
  1941.                 0000h switcher has been suspended
  1942.                 0001h switcher not suspended, new switcher must
  1943.                     abort
  1944.                 0002h switcher not suspended, but new switcher
  1945.                     may run anyway
  1946.             CF set if unsupported function
  1947.     AX = 0003h resume switcher
  1948.         ES:DI -> new task switcher's entry point
  1949.         Return: CF clear if successful
  1950.                 AX = 0000h
  1951.             CF set if unsupported function
  1952.     AX = 0004h hook notification chain
  1953.         ES:DI -> callback info structure to be added to chain
  1954.               (see #1530)
  1955.         Return: CF clear if successful
  1956.                 AX = 0000h
  1957.             CF set if unsupported function
  1958.     AX = 0005h unhook notification chain
  1959.         ES:DI -> callback info structure to be removed from chain
  1960.               (see #1530)
  1961.         Return: CF clear if successful
  1962.                 AX = 0000h
  1963.             CF set if unsupported function
  1964.     AX = 0006h query API support
  1965.         BX = asynchronous API identifier
  1966.         Return: CF clear if successful
  1967.                 AX = 0000h
  1968.                 ES:BX -> API info structure (see #1534) for the
  1969.                       client which provides the highest
  1970.                       level of API support
  1971.             CF set if unsupported function
  1972.  
  1973. Format of task switcher version structure:
  1974. Offset    Size    Description    (Table 1533)
  1975.  00h    WORD    major version of supported protocol  (current protocol is 1.0)
  1976.  02h    WORD    minor version of supported protocol
  1977.  04h    WORD    major version of task switcher
  1978.  06h    WORD    minor version of task switcher
  1979.  08h    WORD    task switcher ID (see AX=4B03h)
  1980.  0Ah    WORD    operation flags
  1981.         bit 0: set if task switcher disabled
  1982.         bits 1-15: reserved (0)
  1983.  0Ch    DWORD    pointer to ASCIZ task switcher name
  1984.         ("MS-DOS Shell Task Switcher" for DOSSHELL task switcher)
  1985.  10h    DWORD    pointer to previous task switcher's entry point or 0000h:0000h
  1986.  
  1987. Format of API info structure:
  1988. Offset    Size    Description    (Table 1534)
  1989.  00h    WORD    size of structure in bytes (000Ah)
  1990.  02h    WORD    API identifier
  1991.         0001h NetBIOS
  1992.         0002h 802.2
  1993.         0003h TCP/IP
  1994.         0004h LAN Manager named pipes
  1995.         0005h Novell NetWare IPX
  1996.  04h    WORD    major version \ of highest version of API for which the support
  1997.  06h    WORD    minor version / level specified in the next field is provided
  1998.  08h    WORD    support level
  1999.         0001h minimal support
  2000.         0002h API-level support
  2001.         0003h switcher compatibility
  2002.         0004h seamless compatibility
  2003. --------T-2F4B03-----------------------------
  2004. INT 2F - DOS 5+ TASK SWITCHER - ALLOCATE SWITCHER ID
  2005.     AX = 4B03h
  2006.     ES:DI -> task switcher entry point (see #1532)
  2007. Return: AX = 0000h
  2008.     BX = switcher ID (0001h-000Fh), or 0000h if no more available
  2009. Notes:    if a task switcher has determined that it is the first to be loaded, it
  2010.       must allocate an identifier for itself and provide this function to
  2011.       all subsequent task switchers; if it is not the first to be loaded,
  2012.       it must call this function to allocate an ID.     The switcher ID is
  2013.       used as the high four bits of all session identifiers to ensure
  2014.       unique session IDs.
  2015.     if no more switcher IDs are available, the new task switcher making the
  2016.       call must terminate or disable itself
  2017.     the task switcher providing the identifiers may call the new task
  2018.       switcher's entry point as needed
  2019.     this call is available from within DOSSHELL even if the task switcher
  2020.       is not installed
  2021.     this function is supported by PC Tools v8+ CPTASK, but appears to
  2022.       always return an ID of 0000h
  2023. SeeAlso: AX=4B02h,AX=4B04h
  2024. --------T-2F4B04-----------------------------
  2025. INT 2F - DOS 5+ TASK SWITCHER - FREE SWITCHER ID
  2026.     AX = 4B04h
  2027.     BX = switcher ID
  2028.     ES:DI -> task switcher entry point (see #1532)
  2029. Return: AX = 0000h
  2030.     BX = status
  2031.         0000h successful
  2032.         other error (invalid ID or ID not allocated)
  2033. Notes:    called by a task switcher when it exits, unless it was the first loaded
  2034.       and is providing the support for AX=4B03h and AX=4B04h
  2035.     the task switcher providing the identifiers may call the terminating
  2036.       task switcher's entry point as needed
  2037.     this call is available from within DOSSHELL even if the task switcher
  2038.       is not installed
  2039.     this call is supported by PC Tools v8+ CPTASK, but appears to return
  2040.       sucessfully no matter which ID is given
  2041. SeeAlso: AX=4B02h,AX=4B03h
  2042. --------T-2F4B05-----------------------------
  2043. INT 2F C - DOS 5+ TASK SWITCHER - IDENTIFY INSTANCE DATA
  2044.     AX = 4B05h
  2045.     ES:BX = 0000h:0000h
  2046.     CX:DX -> task switcher entry point (see #1532)
  2047. Return: ES:BX -> startup info structure (see #1535) or 0000h:0000h
  2048. Notes:    called by task switcher
  2049.     clients with instance data should hook this call, pass it through to
  2050.       the previous handler with unchanged registers using a simulated
  2051.       interrupt.  On return, the client should create a startup info
  2052.       structure (see #1535), store the returned ES:BX in the "next"
  2053.       field, and return the address of the created structure in ES:BX
  2054.     all MS-DOS function calls are available from within this call
  2055. SeeAlso: AX=1605h,AX=160Bh,AX=4B02h
  2056.  
  2057. Format of task switcher startup info structure:
  2058. Offset    Size    Description    (Table 1535)
  2059.  00h  2 BYTEs    major, minor version of info structure (03h,00h)
  2060.  02h    DWORD    pointer to next startup info structure or 0000h:0000h
  2061.  06h    DWORD    0000h:0000h (ignored)
  2062.  0Ah    DWORD    ignored
  2063.  0Eh    DWORD    pointer to instance data records (see #1536)
  2064.  
  2065. Format of one instance data record in array:
  2066. Offset    Size    Description    (Table 1536)
  2067.  00h    DWORD    address of instance data (end of array if 0000h:0000h)
  2068.  04h    WORD    size of instance data
  2069. --------W-2F4B06-----------------------------
  2070. INT 2F - MS Windows - WIN.COM - GET ??? POINTER TO WIN.COM
  2071.     AX = 4B06h
  2072. Return:    AX = 0000h
  2073.     ES:BX -> ??? function in WIN.COM
  2074. Note:    the entry point is called with
  2075.         AX = 0001h or 0003h
  2076.         BX = ???
  2077. SeeAlso: AX=4B80h
  2078. --------W-2F4B20-----------------------------
  2079. INT 2F - MS Windows 3 - WIN.COM - SET PROGRAM TO EXECUTE ON EXIT
  2080.     AX = 4B20h
  2081. Return: AX = 0000h if successful
  2082.         DX:CX -> 256-byte buffer for pathname and commandline (see #1537)
  2083. Note:    when the Windows function ExitWindows is called with an exit code of
  2084.       44h, WIN.COM executes the program specified in the returned buffer
  2085.       and then restarts Windows
  2086.  
  2087. Format of WIN.COM buffer:
  2088. Offset    Size    Description    (Table 1537)
  2089.  00h 128 BYTEs    ASCIZ pathname of program to execute
  2090.  80h 128 BYTEs    commandline for program
  2091. --------W-2F4B80-----------------------------
  2092. INT 2F - MS Windows - WSWAP.EXE - RESET INTERNAL VARIABLES
  2093.     AX = 4B80h
  2094. Return: nothing
  2095. Note:    called by WINOLDAP.MOD
  2096. SeeAlso: AX=4B06h
  2097. --------p-2F4C-------------------------------
  2098. INT 2F U - Advanced Power Management
  2099.     AH = 4Ch
  2100.     AL = function
  2101.         00h version check
  2102.         01h suspend system requested
  2103.         FFh suspend/resume battery notification
  2104.     ???
  2105. Return: ???
  2106. ----------2F4D-------------------------------
  2107. INT 2F U - ???
  2108.     AH = 4Dh
  2109.     ???
  2110. Return: ???
  2111. Note:    reportedly called by Kana Kanji Converter and MSKK
  2112. --------N-2F4E53BL00-------------------------
  2113. INT 2F - SilverNET v2+ - INSTALLATION CHECK
  2114.     AX = 4E53h ("NS")
  2115.     BL = 00h (function "installation check")
  2116.     BH = module ID (see #1538)
  2117. Return: AX = 0000h if specified module installed
  2118.     BX = 4E53h if installed
  2119. Program: SilverNET is an SMB-compatible peer-to-peer NOS for DOS or
  2120.       Windows systems, by Net-Source, Inc. of Santa Clara, CA.
  2121. SeeAlso: AX=4E53h/BL=01h,AX=4E53h/BL=02h,AX=B800h,AX=B809h
  2122.  
  2123. (Table 1538)
  2124. Values for SilverNET module ID:
  2125.  01h    SilverCACHE
  2126.  02h    Workstation
  2127.  03h    NetBIOS
  2128.  04h    Peer
  2129.  20h    NS Share
  2130.  80h    NetWare help TSR
  2131. --------N-2F4E53BL01-------------------------
  2132. INT 2F - SilverNET - GET RUNTIME PARAMETER
  2133.     AX = 4E53h ("NS")
  2134.     BL = 01h (function "get runtime parameter")
  2135.     BH = module ID (see #1538)
  2136.     CX = parameter index (see #1539,#1541,#1542)
  2137. Return: AX = WORD value at specified index (see #1540)
  2138. Desc:    retrieve a word of data from the specified SilverNET module
  2139.  
  2140. (Table 1539)
  2141. Values for SilverNET Peer parameter index (* = read-only):
  2142.  00h *    maximum outstanding SMB buffers
  2143.  02h *    maximum logged-in nodes
  2144.  04h *    number of shareable resources
  2145.  06h *    number of characters to print per time slice
  2146.  08h *    number of printers that can be shared
  2147.  0Ah *    number of nodes logged in
  2148.  0Ch *    number of files to allow opened
  2149.  0Eh    how fast to despool (/PSLICE)
  2150.  10h    audit flag
  2151.  24h *    far pointer to resource table (each resource is 96 bytes in length)
  2152.  32h *    far pointer to SFT (internal if SilverNET files > CONFIG.SYS files,
  2153.     else DOS SFT)
  2154.  36h    spool flags (see #1540)
  2155.  
  2156. Bitfields for spool flags:
  2157. Bit(s)    Description    (Table 1540)
  2158.  0    LPT1 needs despooling
  2159.  1    LPT2 needs despooling
  2160.  2    LPT2 needs despooling
  2161.  4    COM1 needs despooling
  2162.  5    COM2 needs despooling
  2163.  6    COM3 needs despooling
  2164.  
  2165. (Table 1541)
  2166. Values for NS Share parameter index (* = read-only):
  2167.  00h    version number (high byte = minor, low byte = major)
  2168.  10h *    segment of first lock record (other records in consecutive paragraphs)
  2169.     (if PSP field = 0000h, lock record is free)
  2170.  12h *    maximum possible number of lock records
  2171.  14h *    starting segment of sharing buffer
  2172.     (NS Share's sharing records are identical to DOS SHARE except that
  2173.       fields which are normally offsets into SHARE are segment numbers)
  2174.  18h *    size of sharing buffer in paragraphs
  2175.  1Ah *    total free paragraphs in sharing buffer
  2176.  1Ch *    current number of shared files
  2177.  1Eh *    current number of locked records
  2178.  
  2179. (Table 1542)
  2180. Values for Workstation parameter index (* = read-only):
  2181.  00h    version number (high byte = minor, low byte = major)
  2182.  02h *    size of each network buffer for file operations
  2183.  04h *    number of redirector file buffers
  2184.  06h *    size of each print cache buffer
  2185.  08h *    number of network LPT printers
  2186.  0Ch    flush time in ticks (idle time on network printer before flushing)
  2187.  0Eh    (16 WORDs) last active time for each printer
  2188.  2Eh *    stub segment if program split into two parts
  2189.  60h    receive name number for datagram listens
  2190.  62h *    18-byte machine name
  2191.  74h *    LASTDRIVE (01h = A:, etc.)
  2192.  7Ch    row number of message box on screen
  2193.  7Eh    message time in clock ticks
  2194.  82h *    number of network adapters in use
  2195.  84h    station ID broadcast flag (never set on redirectors)
  2196.  96h *    NetBIOS names left
  2197.  98h *    NCBs left
  2198.  9Ah *    sessions left
  2199.  A2h *    total number of network printers (LPT+COM)
  2200.  A4h *    number of serial network printers
  2201.  A8h *    segment containing file cache buffers
  2202.  AAh *    segment containing print cache buffers
  2203.  ACh *    bytes remaining free in HMA before program loaded
  2204.  AEh *    start of free memory in HMA
  2205.  B2h *    flag: using HMA
  2206. --------N-2F4E53BL02-------------------------
  2207. INT 2F - SilverNET - SET RUNTIME PARAMETERS
  2208.     AX = 4E53h ("NS")
  2209.     BL = 02h (function "set runtime parameters")
  2210.     BH = module ID (see #1538)
  2211.     CX = parameter index (see #1541,#1542)
  2212.     DX = new value for specified parameter
  2213. Desc:    set a WORD value in the specified SilverNET module
  2214. Note:    not all indexed parameters are writable; modifying a read-only
  2215.       parameter can result in system crashes
  2216. SeeAlso: AX=4E53h/BL=00h,AX=4E53h/BL=01h
  2217. --------N-2F5100-----------------------------
  2218. INT 2F U - ODIHLP.EXE - INSTALLATION CHECK
  2219.     AX = 5100h
  2220. Return: AL = FFh if installed
  2221.         BX = 0000h
  2222.         DX:SI -> signature string "ODI$HLP$"
  2223. Program: ODIHLP is a real-mode helper allowing the Windows for Workgroups 3.11
  2224.       protected-mode NDIS3 protocol to work with real-mode ODI drivers
  2225.       and LSL.COM
  2226. Note:    the returned signature string might be the first field of a structure
  2227. SeeAlso: AX=C000h"LSL.COM"
  2228. --------k-2F5200-----------------------------
  2229. INT 2F - JAM.SYS v1.10+ - "GetVersion" - INSTALLATION CHECK
  2230.     AX = 5200h
  2231. Return: AH = 80h (successful) if installed
  2232.     BX = internal JAM.SYS version number
  2233.     CX = size of JAMINFO structure (see #1543,#1544)
  2234.     DX = JAM.SYS segment address
  2235. Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
  2236.       Utilities by George A. Reznik and friends (JAM Software).
  2237. SeeAlso: AX=5201h
  2238.  
  2239. Format of JAMINFO v1.10 structure:
  2240. Offset    Size    Description    (Table 1543)
  2241.  00h 25 BYTEs    extended BIOS parameter block (BPB)
  2242.  19h 11 BYTEs    ???
  2243.  25h    DWORD    total number of sectors in JAM archive file
  2244.         (size of compressed data area)
  2245.  29h    BYTE    flags (see #1545)
  2246.  2Ah 127 BYTEs    full JAM archive file name
  2247.  A9h    WORD    the number of fragments in archive file
  2248.  ABh 96 BYTEs    archive file fragmentation list -
  2249.         array of 16 FRAGMENT structures (see #1546)
  2250. 10Bh    DWORD    address of the host-drive DPB (Drive Parameter Block)
  2251. 10Fh    DWORD    number of free sectors in JAM archive file
  2252. 113h    WORD    device status word (see #1547)
  2253. SeeAlso: #1544
  2254.  
  2255. Format of JAMINFO v1.20 structure:
  2256. Offset    Size    Description    (Table 1544)
  2257.  00h 25 BYTEs    extended BIOS parameter block (BPB)
  2258.  19h    BYTE    physical driver number
  2259.  1Ah    BYTE    reserved
  2260.  1Bh    BYTE    extended boot record signature
  2261.  1Ch    DWORD    volume serial number
  2262.  20h 11 BYTEs    volume label
  2263.  2Bh  8 BYTEs    file system ID
  2264.  33h    DWORD    total number of sectors in JAM archive file
  2265.         (size of compressed data area)
  2266.  37h    BYTE    flags (see #1545)
  2267.  38h 128 BYTEs    full JAM archive file name
  2268.  B8h    WORD    the number of fragments in archive file
  2269.  BAh 96 BYTEs    archive file fragmentation list -
  2270.         array of 16 FRAGMENT structures (see #1546)
  2271. 11Ah    DWORD    address of the host-drive DPB (Drive Parameter Block)
  2272. 11Eh    DWORD    number of free sectors in JAM archive file
  2273. 122h    WORD    device status word (see #1547)
  2274. Note:    the first 33h bytes are copied from the archive file's boot sector
  2275. SeeAlso: #1543
  2276.  
  2277. Bitfields for JAMINFO flags:
  2278. Bit(s)    Description    (Table 1545)
  2279.  2-0    reserved
  2280.  3    (v1.20+)
  2281.  4    enable direct write requests (Int 26h, non-DOS requests, etc.)
  2282.  5    read-only mode
  2283.  6    no write-behind caching
  2284.  7    full undelete-compatible allocation strategy
  2285. SeeAlso: #1543,#1544
  2286.  
  2287. Format of JAM FRAGMENT structure:
  2288. Offset    Size    Description    (Table 1546)
  2289.  00h    WORD    starting sector (low word)
  2290.  02h    BYTE    starting sector (high byte)
  2291.  03h    WORD    size of fragment (low word)
  2292.  05h    BYTE    size of fragment (high byte)
  2293. SeeAlso: #1543,#1544
  2294.  
  2295. (Table 1547)
  2296. Values for JAM.SYS status (high byte):
  2297.  00h    successful
  2298.  01h    drive is not a JAM drive
  2299.  02h    drive is already attached
  2300.  03h    archive file cluster size value is larger than driver's one
  2301.  04h    drive is not attached
  2302.  05h    drive is locked
  2303.  06h    drive is not locked
  2304.  07h    bad physical-level request
  2305.  08h    host drive reading/writing error
  2306.  09h    bad entries in JAM descriptor table
  2307.  0Ah    compressed data integrity error
  2308.  0Bh    archive file overflow
  2309.  0Ch    bad DOS request
  2310.  0Dh    incorrect parameters in JAMINFO structure
  2311. Note:    the low byte of the status is the DOS error code for the Host drive
  2312. SeeAlso: #1383 at INT 2F/AX=0802h
  2313. --------k-2F5201-----------------------------
  2314. INT 2F - JAM.SYS v1.10+ - "GetInfo" - GET COMPRESSED DRIVE INFORMATION
  2315.     AX = 5201h
  2316.     DL = compressed drive number (0-default, 1-A:, etc.)
  2317.     DS:BX -> buffer for JAMINFO structure (see #1543,#1544)
  2318. Return: AH = status (00h,01h) (see #1547)
  2319. SeeAlso: AX=5200h
  2320. --------k-2F5202-----------------------------
  2321. INT 2F - JAM.SYS v1.10+ - "Attach" - MOUNT COMPRESSED DRIVE
  2322.     AX = 5202h
  2323.     DL = drive number (0-default, 1-A:, etc.) to attach to the JAM
  2324.           archive file
  2325.     DS:BX -> pointer to JAMINFO structure (see #1543,#1544), which
  2326.           contains parameters of the JAM file to mount, and pointer
  2327.           to the host drive DPB (i.e. DPB of the drive on which the
  2328.           JAM file is located)
  2329. Return: AH = status (00h,02h,03h,08h,09h,0Dh) (see also #1547)
  2330.         03h archive file cluster size value is larger than driver's - not
  2331.           mounted
  2332.         09h bad entries in JAM descriptor table - file mounted read-only
  2333.     AL = host drive error code (see #1383 at INT 2F/AX=0802h)
  2334. SeeAlso: AX=5203h
  2335. --------k-2F5203-----------------------------
  2336. INT 2F - JAM.SYS v1.10+ - "Detach" - UNMOUNT COMPRESSED DRIVE
  2337.     AX = 5203h
  2338.     DL = drive number (0-default, 1-A:, etc.) to detach
  2339. Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #1547)
  2340.     AL = host drive error code (see #1383 at INT 2F/AX=0802h)
  2341. SeeAlso: AX=5202h
  2342. --------k-2F5204-----------------------------
  2343. INT 2F - JAM.SYS v1.10+ - "Lock" - LOCK COMPRESSED DRIVE
  2344.     AX = 5204h
  2345.     DL = drive number (0-default, 1-A:, etc.) to lock
  2346. Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #1547)
  2347.     AL = host drive error code (see #1383 at INT 2F/AX=0802h)
  2348. SeeAlso: AX=5205h, AX=5206h, AX=5207h
  2349. --------k-2F5205-----------------------------
  2350. INT 2F - JAM.SYS v1.10+ - "UnLock" - UNLOCK COMPRESSED DRIVE
  2351.     AX = 5205h
  2352.     DL = drive number (0-default, 1-A:, etc.) to unlock
  2353. Return: AH = status (00h,01h,04h,06h,08h,09h,0Dh) (see #1547)
  2354.     AL = host drive error code (see #1383 at INT 2F/AX=0802h)
  2355. SeeAlso: AX=5204h, AX=5206h, AX=5207h
  2356. Note:    Lock and UnLock functions were added to the JAM API to prevent
  2357.       asynchronous physical-level access (see AX=5206h,AX=5207h) to
  2358.       compressed data on JAM drives. In other words, two or more programs
  2359.       which use JAM API (say, JMAX optimizer and JCHKDSK - disk checker)
  2360.       cannot be run on the same JAM drive simultaneously.
  2361. --------k-2F5206-----------------------------
  2362. INT 2F - JAM.SYS v1.10+ - "Read" - PHYSICAL READ DATA FROM JAM ARCHIVE
  2363.     AX = 5206h
  2364.     DL = drive number (0-default, 1-A:, etc.)
  2365.     DS:BX -> disk transfer packet (see #1548)
  2366. Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #1547)
  2367.     AL = host drive error code (see #1383 at INT 2F/AX=0802h)
  2368. Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
  2369.       Utilities by George A. Reznik and friends (JAM Software).
  2370. SeeAlso: AX=5207h
  2371.  
  2372. Format of disk transfer packet:
  2373. Offset    Size    Description    (Table 1548)
  2374.  00h    DWORD    sector number
  2375.  04h    WORD    number of sectors to read(write)
  2376.  06h    DWORD    transfer address
  2377. --------k-2F5207-----------------------------
  2378. INT 2F - JAM.SYS v1.10+ - "Write" - PHYSICAL WRITE DATA TO JAM ARCHIVE
  2379.     AX = 5207h
  2380.     DL = drive number (0-default, 1-A:, etc.)
  2381.     DS:BX -> disk transfer packet (see #1548)
  2382. Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #1547)
  2383.     AL = host drive error code (see #1383 at INT 2F/AX=0802h)
  2384. SeeAlso: AX=5206h
  2385. --------p-2F53-------------------------------
  2386. INT 2F U - POWER.EXE - APM event broadcasting???
  2387.     AH = 53h
  2388.     AL = event???
  2389.         05h CPU idle
  2390.         0Bh PM event broadcast API
  2391. Return: ???
  2392. Note:    called by MS Windows 3.1 POWER.DRV; hooked by MS Mouse driver v8.20+
  2393.       and PC-Cache v8.0
  2394. SeeAlso: AX=530Bh,AH=54h,INT 33/AX=002Fh
  2395. --------p-2F530B-----------------------------
  2396. INT 2F U - ??? (MOUSEPWR.COM, others) - ???
  2397.     AX = 530Bh
  2398.     BX = subfunction
  2399.         0003h ???
  2400.         0004h ???
  2401.     ???
  2402. Return: ???
  2403. Note:    it appears that subfunction 0003h reads or restores the current mouse
  2404.       settings (the MS Mouse driver hooks AX=530Bh), and 0004h might be
  2405.       the converse
  2406. --------p-2F5400-----------------------------
  2407. INT 2F U - POWER.EXE - INSTALLATION CHECK
  2408.     AX = 5400h
  2409. Return: AX = POWER.EXE version (AH = major, AL = minor) if installed
  2410.     BX = 504Dh ("PM")
  2411.     CF clear
  2412. Note:    called by MS Windows 3.1 POWER.DRV
  2413. SeeAlso: AH=53h,AX=5401h,AX=5402h,AX=5481h,AX=5482h
  2414. --------p-2F5401-----------------------------
  2415. INT 2F U - POWER.EXE - GET/SET POWER STATUS
  2416.     AX = 5401h
  2417.     BH = function
  2418.         00h get status
  2419.         Return: BL = current power management status (see #1549)
  2420.         01h set status
  2421.         BL = new power managment status (see #1549)
  2422. Return: AX = function status (see #1550)
  2423. Note:    called by MS Windows 3.1 POWER.DRV
  2424. SeeAlso: AH=53h,AX=5400h,AX=5402h,AX=5403h
  2425.  
  2426. Bitfields for power management status:
  2427. Bit(s)    Description    (Table 1549)
  2428.  0    POWER.EXE power management enabled
  2429.  1    APM firmware power management enabled
  2430.  2-7    reserved (0)
  2431. Notes:    bit 1 is ignored if there is no APM firmware
  2432.     bits 1-0: 00 = POWER OFF, 10 = POWER STD, 11 = POWER ADV
  2433.  
  2434. (Table 1550)
  2435. Values for POWER.EXE function status:
  2436.  0000h    successful
  2437.  0002h    "ERROR_PM_ALREADY_CONNECTED"
  2438.  0003h    "ERROR_PM_NOT_CONNECTED"
  2439.  0087h    "ERROR_PM_INVALID_PARAMETER"
  2440. --------p-2F5402-----------------------------
  2441. INT 2F U - POWER.EXE - GET/SET IDLE DETECTION STRATEGY
  2442.     AX = 5402h
  2443.     BH = subfunction
  2444.         00h get
  2445.         other set
  2446.         BL = detection strategy (00h-0Fh or FFh)
  2447. Return: BX = current/new detection strategy
  2448. SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5481h,AX=5482h
  2449. --------p-2F5403-----------------------------
  2450. INT 2F U - POWER.EXE - GET/SET ADVANCED POWER MANAGEMENT SETTING
  2451.     AX = 5403h
  2452.     BX = new power management setting or 0000h to get current setting
  2453. Return: AX = status
  2454.         0000h successful
  2455.         BX = power management setting (see #1551)
  2456.         other error code
  2457. SeeAlso: AX=5401h,AX=5480h
  2458.  
  2459. (Table 1551)
  2460. Values for power management setting:
  2461.  0001h-0005h "min"
  2462.  0006h         "reg"
  2463.  0007h-0008h "max"
  2464. --------t-2F5453-----------------------------
  2465. INT 2F - TesSeRact RAM-RESIDENT PROGRAM INTERFACE
  2466.     AX = 5453h
  2467.     BX = subfunction
  2468.         00h installation check
  2469.         CX = 0000h
  2470.         DS:SI -> 8-char blank-padded name (see #1552)
  2471.         Return: AX = FFFFh installed
  2472.                 CX = ID number of already-installed copy
  2473.             AX = anything else, not installed
  2474.                 CX = ID number for TSR when installed
  2475.         01h get user parameters
  2476.         CX = TSR ID number
  2477.         Return: AX = status
  2478.                 0000h successful
  2479.                 ES:BX -> user parameter block (see #1553)
  2480.                 nonzero failed
  2481.         02h check if hotkey in use
  2482.         CL = scan code of hot key
  2483.         Return: AX = FFFFh hot key conflicts with another TSR
  2484.                  otherwise safe to use the hotkey
  2485.         03h replace default critical error handler
  2486.         CX = TSR ID number
  2487.         DS:SI -> new routine for INT 24h
  2488.         Return: AX = nonzero, unable to install new handler
  2489.         04h get internal data area
  2490.         CX = TSR ID number
  2491.         Return: AX = status
  2492.                 0000h successful
  2493.                 ES:BX -> TSR's internal data area (see #1554)
  2494.                 nonzero, TSR not found
  2495.         05h set multiple hot keys
  2496.         CX = TSR ID number
  2497.         DL = number of additional hot keys to allocate
  2498.         DS:SI -> table of hot keys
  2499.             BYTE  hotkey scan code
  2500.             BYTE  hotkey shift state
  2501.             BYTE  flag value to pass to TSR (nonzero)
  2502.         Return: AX = nonzero, unable to install hot keys
  2503.         06h - 0Fh reserved
  2504.         10h enable TSR
  2505.         CX = TSR ID number
  2506.         Return: AX = nonzero, unable to enable
  2507.         11h disable TSR
  2508.         CX = TSR ID number
  2509.         Return: AX = nonzero, unable to disable
  2510.         12h unload TSR
  2511.         CX = TSR ID number
  2512.         Return: AX = nonzero, invalid TSR number
  2513.         Note: if any interrupts used by TSR have been grabbed by
  2514.             another TSR, the TesSeRact routines will wait until
  2515.             it is safe to remove the indicated TSR from memory
  2516.         13h restart TSR
  2517.         CX = TSR ID number of TSR which was unloaded but is still in
  2518.              memory
  2519.         Return: AX = nonzero, unable to restart TSR
  2520.         14h get status word
  2521.         CX = TSR ID number
  2522.         Return: AX = FFFFh invalid ID number
  2523.                = other, successful
  2524.                 BX = bit flags
  2525.         15h set status word
  2526.         CX = TSR ID number
  2527.         DX = new bit flags
  2528.         Return: AX = nonzero, unable to set status word
  2529.         16h get INDOS state at popup
  2530.         CX = TSR ID number
  2531.         Return: AX = 0000h successful
  2532.                 BX = value of INDOS flag
  2533.         17h - 1Fh reserved
  2534.         20h call user procedure
  2535.         CX = TSR ID number
  2536.         ES:DI -> user-defined data
  2537.         Return: AX = 0000h successful
  2538.         21h stuff keystrokes into keyboard buffer
  2539.         CX = TSR ID number
  2540.         DL = speed
  2541.             00h stuff keystrokes only when buffer is empty
  2542.             01h stuff up to four keystrokes per clock tick
  2543.             02h stuff up to 15 keystrokes per clock tick
  2544.         DH = scan code flag
  2545.             if zero, buffer contains alternating ASCII and scan codes
  2546.             if nonzero, buffer contains only ASCII codes
  2547.         SI = number of keystrokes
  2548.         ES:DI -> buffer to stuff
  2549.         Return: AX = 0000h success
  2550.                  F0F0h user aborted with ^C or ^Break
  2551.                  other unable to stuff keystrokes
  2552.         22h (v1.10) trigger popup
  2553.         CX = TSR ID number
  2554.         Return: AX = 0000h success, TSR will either pop up or beep to
  2555.                    indicate that it is unable to pop up
  2556.                  nonzero invalid ID number
  2557.         23h (v1.10) invoke TSR's background function
  2558.         CX = TSR ID number
  2559.         Return: AX = 0000h success
  2560.                  FFFFh not safe to call background function
  2561.                  nonzero invalid ID number
  2562.         24h - 2Fh reserved
  2563. Notes:    Borland's THELP.COM popup help system for Turbo Pascal and Turbo C
  2564.       (versions 1.x and 2.x only) fully supports the TesSeRact API, as
  2565.       do the SWAP?? programs by Innovative Data Concepts.
  2566.     AVATAR.SYS supports functions 00h and 01h (only the first three fields
  2567.       of the user parameter block) using the name "AVATAR  "
  2568. SeeAlso: AX=CAFEh,INT 16/AX=55FFh,INT 2D"AMIS"
  2569. Index:    installation check;TesSeRact TSR interface|uninstall;TesSeRact
  2570.  
  2571. (Table 1552)
  2572. Values for TesSeRact names:
  2573.  "AVATAR  "    AVATAR.SYS
  2574.  "QeditTSR"    TSR version of SemWare's Qedit editor
  2575.  "SCRNBLNK"    Trusted Access screen blanker
  2576.  
  2577. Format of TesSeRact User Parameter Block:
  2578. Offset    Size    Description    (Table 1553)
  2579.  00h  8 BYTEs    blank-padded TSR name
  2580.  08h    WORD    TSR ID number
  2581.  0Ah    DWORD    bitmap of supported functions
  2582.  0Eh    BYTE    scan code of primary hotkey
  2583.         00h = pop up when shift states match
  2584.         FFh = no popup (if shift state also FFh)
  2585.  0Fh    BYTE    shift state of primary hotkey
  2586.         FFh = no popup (if scan code also FFh)
  2587.  10h    BYTE    number of secondary hotkeys
  2588.  11h    DWORD    pointer to extra hotkeys set by func 05h
  2589.  15h    WORD    current TSR status flags
  2590.  17h    WORD    PSP segment of TSR
  2591.  19h    DWORD    DTA for TSR
  2592.  1Dh    WORD    default DS for TSR
  2593.  1Fh    DWORD    stack at popup
  2594.  23h    DWORD    stack at background invocation
  2595. Index:    hotkeys;TesSeRact TSR interface
  2596.  
  2597. Format of TSR internal data area:
  2598. Offset    Size    Description    (Table 1554)
  2599.  00h    BYTE    revision level of TesSeRact library
  2600.  01h    BYTE    type of popup in effect
  2601.  02h    BYTE    INT 08 occurred since last invocation
  2602.  03h    BYTE    INT 13 occurred since last invocation
  2603.  04h    BYTE    active interrupts
  2604.  05h    BYTE    active soft interrupts
  2605.  06h    BYTE    DOS major version
  2606.  07h    BYTE    how long to wait before popping up
  2607.  08h    DWORD    pointer to INDOS flag
  2608.  0CH    DWORD    pointer to DOS critical error flag
  2609.  10h    WORD    PSP segment of interrupted program
  2610.  12h    WORD    PSP segment of prog interrupted by INT 28
  2611.  14h    DWORD    DTA of interrupted program
  2612.  18h    DWORD    DTA of program interrupted by INT 28
  2613.  1Ch    WORD    SS of interrupted program
  2614.  1Eh    WORD    SP of interrupted program
  2615.  20h    WORD    SS of program interrupted by INT 28
  2616.  22h    WORD    SP of program interrupted by INT 28
  2617.  24h    DWORD    INT 24 of interrupted program
  2618.  28h  3 WORDs    DOS 3.0+ extended error info
  2619.  2Eh    BYTE    old BREAK setting
  2620.  2Fh    BYTE    old VERIFY setting
  2621.  30h    BYTE    were running MS WORD 4.0 before popup
  2622.  31h    BYTE    MS WORD 4.0 special popup flag
  2623.  32h    BYTE    enhanced keyboard call in use
  2624.  33h    BYTE    delay for MS WORD 4.0
  2625. 11 times (for INTs 08h,09h,13h,16h,1Ch,21h,28h,2Fh,1Bh,23h, and 24h):
  2626.     DWORD    old interrupt vector
  2627.     BYTE    interrupt number
  2628.     WORD    offset in TesSeRact code segment of new interrupt handler
  2629. --------p-2F5480-----------------------------
  2630. INT 2F U - POWER.EXE - GET/SET ???
  2631.     AX = 5480h
  2632.     BX = direction
  2633.         0000h get
  2634.         other set
  2635.     CX = size of buffer (at least 0010h)
  2636.     DS:SI -> buffer
  2637. Return: AX = status
  2638.         0000h successful
  2639.         other error code
  2640. SeeAlso: AX=5400h,AX=5481h,AX=548Fh
  2641. --------p-2F5481-----------------------------
  2642. INT 2F U - POWER.EXE - GET STATISTICS
  2643.     AX = 5481h
  2644.     BX = which statistics
  2645.         0000h idle detection
  2646.         0001h APM statistics
  2647.     CX = length of buffer in bytes
  2648.     DS:SI -> buffer for statistics (see #1555,#1556)
  2649. Return: AX = status
  2650.         0000h successful
  2651.         0071h "ERROR_PM_BUFFER_TOO_SMALL"
  2652.         0087h "ERROR_PM_INVALID_PARAMETER"
  2653. SeeAlso: AH=53h,AX=5400h,AX=5480h,AX=5402h,AX=5482h
  2654.  
  2655. Format of POWER.EXE idle detection statistics:
  2656. Offset    Size    Description    (Table 1555)
  2657.  00h    DWORD    "CPU_ON_TIME" total time CPU is active with POWER.EXE idle
  2658.           detection enabled, in timer ticks
  2659.  04h    DWORD    "CPU_IDLE_TIME" timer ticks during which CPU was idle
  2660.         (divide by previous to get idle    rate)
  2661.  08h    DWORD    total idle calls
  2662.  0Ch    DWORD    "TOTAL_APP_IDLE" total INT 2Fh idle calls
  2663.  10h    DWORD    "TOTAL_DOS_YIELD" total INT 28h idle calls
  2664.  14h    DWORD    "TOTAL_KEY_IDLE" total INT 16h idle calls
  2665.  18h    DWORD    "TOTAL_DOS_IDLE" total INT 2Ah idle calls
  2666.  
  2667. Format of APM statistics:
  2668. Offset    Size    Description    (Table 1556)
  2669.  00h    DWORD    "RESUME_COUNT" total number of resumes since last APM_ENABLE
  2670. --------p-2F5482-----------------------------
  2671. INT 2F U - POWER.EXE - GET/SET APM POLLING FREQUENCY
  2672.     AX = 5482h
  2673.     BX = new polling frequency or 0000h to get current frequency
  2674. Return: AX = 0000h (successful)
  2675.     BX = current frequency if BX=0000h on entry
  2676. SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5480h,AX=5481h,AX=548Fh
  2677. --------p-2F548F-----------------------------
  2678. INT 2F U - POWER.EXE - GET/SET ???
  2679.     AX = 548Fh
  2680.     BX = ??? or 0000h to get current ???
  2681. Return: AX = 0000h (successful)
  2682.     BX = current ???
  2683.     CX = ???
  2684. SeeAlso: AX=5400h,AX=5480h,AX=5482h
  2685. --------l-2F5500-----------------------------
  2686. INT 2F U - DOS 5+ - COMMAND.COM INTERFACE
  2687.     AX = 5500h
  2688. Return: AX = 0000h if an instance of COMMAND.COM is already running
  2689.     DS:SI -> entry point table
  2690. Notes:    used to access the shareable portion of COMMAND.COM, which may have
  2691.       been moved into the HMA; only the primary COMMAND.COM retains this
  2692.       portion
  2693.     procedures called from a dispatcher in COMMAND's resident portion;
  2694.       most assume that the segment address of the resident portion is on
  2695.       the stack and are thus not of general use
  2696. SeeAlso: AX=5501h
  2697. --------l-2F5501-----------------------------
  2698. INT 2F U - DOS 5+ - ROM COMMAND.COM INTERFACE
  2699.     AX = 5501h
  2700. Return: ???
  2701. Note:    used to determine whether the caller is the first instance of ROM
  2702.       COMMAND.COM
  2703. SeeAlso: AX=5500h
  2704. --------R-2F5600-----------------------------
  2705. INT 2F - INTERLNK - INSTALLATION CHECK
  2706.     AX = 5600h
  2707.     DX = magic value FFFFh
  2708.     BL = instance number (00h = any, 01h = first loaded, etc.)
  2709. Return: AL = FFh if installed
  2710.         BL = instance number
  2711.         CX = ??? (apparently always 0001h)
  2712.         DX = resident CS of driver, DX:0000h -> header (see #1557)
  2713. SeeAlso: AX=5601h,AX=5602h,INT 60/AX=0000h
  2714.  
  2715. Format of Interlnk device driver header:
  2716. Offset    Size    Description    (Table 1557)
  2717.  00h    DWORD    pointer to next driver, offset=FFFFh if last driver
  2718.  04h    WORD    device attributes (see #0859,#0860)
  2719.  06h    WORD    device strategy entry point
  2720.  08h    WORD    device interrupt entry point
  2721.  0Ah  8 BYTEs    character device name "NUL2    "
  2722.  12h 165 BYTEs    ???
  2723.  B7h 67 BYTEs    fully qualified Interlnk filename
  2724.  FAh  6 BYTEs    ???
  2725. 100h    DWORD    pointer back to Interlnk filename at offset B7h
  2726. 104h  8 BYTEs    ???
  2727. 10Ch    BYTE    total number of redirected drives
  2728. 10Dh    BYTE    first local drive number (0=A:)
  2729. 10Eh    BYTE    printer redirection (0=no, 1=yes)
  2730. 10Fh    BYTE    ???
  2731. 110h  3    BYTEs    LPT1...3 status (0FFh=invalid)
  2732. 113h 26 BYTEs    remote drive number (0=A:, 0FEh=unused) (see note below)
  2733. 12Dh 26 BYTEs    always 0FEh ???
  2734. 147h 26 BYTEs    always 0FFh ???
  2735. Note:    to obtain the remote drive number, subtract the value at offset 10Ch
  2736.       from the local drive number before indexing into the table at 113h
  2737.       (example: if local drives F, G, H are remote drives C, F, E then
  2738.       the first three bytes at offset 113h are 02h, 05h, 04h)
  2739.     for each instance of Interlnk, an extra device driver is loaded, but
  2740.       all have the same device name NUL2
  2741. SeeAlso: #0858 at INT 21/AH=52h
  2742. --------R-2F5601-----------------------------
  2743. INT 2F - INTERLNK - CHECK IF REDIRECTED DRIVE
  2744.     AX = 5601h
  2745.     DX = magic value FFFFh
  2746.     BH = drive number (0=A:)
  2747.     BL = 00h
  2748. Return: (as for AL=00h if redirected drive)
  2749. SeeAlso: AX=5600h
  2750. --------R-2F5602-----------------------------
  2751. INT 2F - INTERLNK - GET ???
  2752.     AX = 5602h
  2753.     DX = magic value FFFFh
  2754. Return: CX = ???
  2755. SeeAlso: AX=5600h
  2756. ----------2F57-------------------------------
  2757. INT 2F U - ???
  2758.     AH = 57h
  2759.     ???
  2760. Return: ???
  2761. Note:    reportedly used by Iomega Corp.
  2762. --------c-2F5758BX4858-----------------------
  2763. INT 2F U - Helix Multimedia Cloaking - CACHECLK - INSTALLATION CHECK
  2764.     AX = 5758h
  2765.     BX = 4858h ('HX')
  2766.     DX = 4443h ('DC')
  2767.     CX <> 5758h
  2768. Return: BX = 6878h if installed
  2769.     DX = 6463h if installed
  2770.        CX = version (CH=major,CL=minor)
  2771. Program: CACHECLK is a 'Cloaked' disk cache by Helix Software
  2772. Note:    returns with registers unchanged if CX=5758h on entry
  2773. SeeAlso: INT 16/AX=5758h/BX=4858h,INT 2F/AX=4310h"Cloaking"
  2774. --------X-2F5D00-----------------------------
  2775. INT 2F U - PCMCIA - AWARD PCDISK - GET INFO FROM DRIVER ???
  2776.     AX = 5D00h
  2777. Return: ES:BX -> ???
  2778. Note:    supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
  2779. SeeAlso: AX=5D01h,INT 21/AX=440Dh
  2780. --------X-2F5D01-----------------------------
  2781. INT 2F U - PCMCIA - AWARD PCDISK - PUT INFO INTO DRIVER ???
  2782.     AX = 5D01h
  2783.     ES:BX -> ???
  2784. Return: nothing
  2785. Note:    supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
  2786. SeeAlso: AX=5D00h,INT 21/AX=440Dh
  2787. --------s-2F60FFDL00-------------------------
  2788. INT 2F U - IPLAY v1.00b - INSTALLATION CHECK
  2789.     AX = 60FFh
  2790.     DL = 00h (function number)
  2791.     BX = 5344h ('SD')
  2792.     CX = 4D50h ('MP')
  2793. Return: AX = 4F4Bh ('OK') if installed
  2794. Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
  2795.       (digitized music files)
  2796. Note:    in version 1.00b, any value for DL except 01h invokes this function
  2797. SeeAlso: AX=60FFh/DL=01h
  2798. --------s-2F60FFDL01-------------------------
  2799. INT 2F U - IPLAY v1.00b - GET DATA SEGMENT
  2800.     AX = 60FFh
  2801.     DL = 01h (function number)
  2802.     BX = 5344h ('SD')
  2803.     CX = 4D50h ('MP')
  2804. Return: AX = data segment
  2805. Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
  2806.       (digitized music files)
  2807. SeeAlso: AX=60FFh/DL=00h
  2808. --------v-2F6282-----------------------------
  2809. INT 2F U - PC Tools v7.0+ VDEFEND, VSAFE, VWATCH, DATAMON - SET ??? ADDRESS
  2810.     AX = 6282h
  2811.     CX:DX -> ??? or 0000h:0000h
  2812.     DI = segment of ??? record (see #1558) or 0000h/FFFFh to ignore
  2813. Return: BX = 0062h
  2814. Note:    if CX:DX = 0000h:0000h on entry, the ??? address is not changed
  2815.       (DATAMON only)
  2816. SeeAlso: INT 13/AH=FAh"VSAFE",INT 21/AH=FAh"VDEFEND"
  2817.  
  2818. Format of VSAFE/VWATCH record:
  2819. Offset    Size    Description    (Table 1558)
  2820.  00h    DWORD    ???
  2821.  04h    WORD    offset of ??? in record's segment
  2822.         VSAFE 2.0 sets byte at +01h to 56h or 58h
  2823.         VWATCH 2.1 sets byte at +02h to 56h or 58h
  2824.  06h  2 BYTEs    ???
  2825.  08h    BYTE    ??? (01h/other)
  2826. --------v-2F6284BX0000-----------------------
  2827. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT    - INSTALLATION CHECK
  2828.     AX = 6284h
  2829.     BX = 0000h
  2830.     CX = 0000h
  2831. Return: AX = segment of resident code
  2832.     BX = 5555h
  2833.     CX = 5555h
  2834. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  2835. SeeAlso: AX=6284h/BX=0001h,INT 16/AX=FFA3h
  2836. --------v-2F6284BX0001-----------------------
  2837. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  2838.     AX = 6284h
  2839.     BX = 0001h
  2840.     CX = 0001h
  2841. Return: AX:BX -> ??? data (see #1559)
  2842.     CX = BX
  2843. SeeAlso: AX=6284h/BX=0000h
  2844.  
  2845. Format of DPROTECT data for v9.0:
  2846. Offset    Size    Description    (Table 1559)
  2847.  00h  5 BYTEs    ???
  2848.  05h    WORD    resident code segment (may be segment of DWORD at +03h)
  2849.  07h    DWORD    -> FAR function to sound alert tone
  2850.     ???
  2851. --------v-2F6284BX0002-----------------------
  2852. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET OPTIONS
  2853.     AX = 6284h
  2854.     BX = 0002h
  2855.     CX = 0002h
  2856. Return: AX = options (see #1560)
  2857.     BX = ??? (0000h for v9)
  2858.     CX = AX
  2859.     DX = BX
  2860. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  2861. SeeAlso: AX=6284h/BX=0000h,AX=6284h/BX=0003h
  2862.  
  2863. Bitfields for DATAMON/DPROTECT options:
  2864. Bit(s)    Description    (Table 1560)
  2865.  1    ???
  2866.  12    disabled
  2867.  13    using Delete Sentry
  2868.  14    using Delete Tracker
  2869. --------v-2F6284BX0003-----------------------
  2870. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - SET OPTION??? FLAGS
  2871.     AX = 6284h
  2872.     BX = 0003h
  2873.     CX = flags (see #1561)
  2874.     DX = flags
  2875.         bit 15: ???
  2876. Note:    v9 DPROTECT only checks bit 12 of CX, and ignores DX entirely
  2877. SeeAlso: AX=6284h/BX=0002h
  2878.  
  2879. Bitfields for DATAMON/DPROTECT CX flags:
  2880. Bit(s)    Description    (Table 1561)
  2881.  3    ???
  2882.  5    ???
  2883.  10    ???
  2884.  12    disable DATAMON/DPROTECT
  2885. --------v-2F6284BX0004-----------------------
  2886. INT 2F U - PC Tools v8 DATAMON, v9+ DPROTECT - ???
  2887.     AX = 6284h
  2888.     BX = 0004h
  2889.     CX = 0004h
  2890. Return: AX = 5555h
  2891.     BX = ??? (0800h)
  2892.     CX = ??? (FCCCh for v8, FCCBh for v9)
  2893. --------V-2F6400-----------------------------
  2894. INT 2F - SCRNSAV2.COM - INSTALLATION CHECK
  2895.     AX = 6400h
  2896. Return: AL = installation state
  2897.         00h not installed
  2898.         FFh installed
  2899. Program: SCRNSAV2.COM is a screen saver for PS/2s with VGA by Alan Ballard
  2900. SeeAlso: INT 10/AX=5555h,INT 14/AX=AA01h
  2901. Index:    screen saver;SCRNSAV2
  2902. --------N-2F7000-----------------------------
  2903. INT 2F - License Service API - INSTALLATION CHECK
  2904.     AX = 7000h
  2905.     CX = license server index (0000h to 001Fh)
  2906. Return: AL = status
  2907.         00h not installed
  2908.         FFh installed
  2909. Notes:    The License Service API is being maintained by Microsoft but is being
  2910.       supported by a large number of companies including Apple, Banyan,
  2911.       DEC, HP, Lotus, Microsoft, Novell, Software Publishers Association,
  2912.       and Wordperfect (not a complete list!)
  2913.     Each license service provider must search for the next free index
  2914.       slot to use
  2915. SeeAlso: AX=7001h,AX=7003h,AX=7004h,AX=7005h
  2916. --------N-2F7001-----------------------------
  2917. INT 2F - License Service API - REQUEST LICENSE
  2918.     AX = 7001h
  2919.     CX = license server index (0000h to 001Fh)
  2920.     DS:DX -> SLSREQUEST structure (see #1562)
  2921. Return: AX = status
  2922.         0000h success
  2923.         else  provider error code
  2924.     ES:BX = provider specific handle for the license context
  2925. SeeAlso: AX=7002h,AX=7004h,AX=7005h
  2926.  
  2927. Format of License Service SLSREQUEST structure:
  2928. Offset    Size    Description    (Table 1562)
  2929.  00h    DWORD    (ret) status code
  2930.  04h    DWORD    (ret) handle identifying context
  2931.  08h    DWORD    (call) address of Publisher string
  2932.  0Ch    DWORD    (call) address of Product string
  2933.  10h    DWORD    (call) address of Version string
  2934.  14h    DWORD    units required
  2935.  18h    DWORD    address of comment string
  2936.  1Ch    DWORD    address of SLSCHALLENGE structure (see #1563)
  2937.  
  2938. Format of License Service SLSCHALLENGE structure:
  2939. Offset    Size    Description    (Table 1563)
  2940.  00h    DWORD    algorithm (currently always 1)
  2941.  04h    DWORD    secret to be challenged (1-255)
  2942.  08h    DWORD    size of challenge in bytes (1-255)
  2943.  0Ch  N BYTEs    challenge data
  2944. --------N-2F7002-----------------------------
  2945. INT 2F - License Service API - RELEASE LICENSE
  2946.     AX = 7002h
  2947.     CX = license server index (0000h to 001Fh)
  2948.     DS:DX -> SLSRELEASE structure (see #1564)
  2949.     ES:BX = provider specific handle for the license context
  2950. Return: AL = status
  2951.         00h not installed
  2952.         FFh installed
  2953. SeeAlso: AX=7001h,AX=7005h
  2954.  
  2955. Format of License Service SLSRELEASE structure:
  2956. Offset    Size    Description    (Table 1564)
  2957.  00h    DWORD    handle indentifying license context
  2958.  04h    DWORD    total units consumed
  2959.  08h    DWORD    address of comment string
  2960. --------N-2F7003-----------------------------
  2961. INT 2F - License Service API - UPDATE
  2962.     AX = 7003h
  2963.     CX = license server index (0000h to 001Fh)
  2964.     DS:DX -> SLSUPDATE structure (see #1565)
  2965.     ES:BX = provider specific handle for the license context
  2966. Return: AL = status
  2967.         00h not installed
  2968.         FFh installed
  2969. SeeAlso: AX=7004h,AX=7005h
  2970.  
  2971. Format of License Service SLSUPDATE structure:
  2972. Offset    Size    Description    (Table 1565)
  2973.  00h    DWORD    (ret) status code
  2974.  04h    DWORD    (call) handle identifying license context
  2975.  08h    DWORD    (call) total units consumed
  2976.  0Ch    DWORD    additional units required
  2977.  10h    DWORD    address of comment string
  2978.  14h    DWORD    address of SLSCHALLENGE structure (see #1563)
  2979. --------N-2F7004-----------------------------
  2980. INT 2F - License Service API - GET ERROR
  2981.     AX = 7004h
  2982.     CX = license server index (0000h to 001Fh)
  2983.     DS:DX -> SLSGETERROR structure (see #1566)
  2984.     ES:BX = provider specific handle for the license context
  2985. Return: AL = status
  2986.         00h not installed
  2987.         FFh installed
  2988. SeeAlso: AX=7000h,AX=7001h
  2989.  
  2990. Format of License Service SLSGETERROR structure:
  2991. Offset    Size    Description    (Table 1566)
  2992.  00h    DWORD    (ret) status code
  2993.  04h    DWORD    handle identifying license context
  2994.  08h    DWORD    error code
  2995.  0Ch    DWORD    buffer size in bytes
  2996.  10h  N BYTEs    data buffer
  2997. --------N-2F7005-----------------------------
  2998. INT 2F - License Service API - QUERY LICENSE
  2999.     AX = 7005h
  3000.     CX = license server index (0000h to 001Fh)
  3001.     DS:DX -> SLSQUERY structure (see #1567)
  3002.     ES:BX = provider specific handle for the license context
  3003. Return: AL = status
  3004.         00h not installed
  3005.         FFh installed
  3006. SeeAlso: AX=7001h,AX=7002h
  3007.  
  3008. Format of License Service SLSQUERY structure:
  3009. Offset    Size    Description    (Table 1567)
  3010.  00h    DWORD    (ret) status code
  3011.  04h    DWORD    handle identifying license context
  3012.  08h    DWORD    information index
  3013.  0Ch    DWORD    buffer size in bytes
  3014.  10h  N BYTEs    data buffer
  3015. --------K-2F7041BX4B70-----------------------
  3016. INT 2F U - HP 200LX - KEY200 - INSTALLATION CHECK
  3017.     AX = 7041h
  3018.     BX = 4B70h
  3019. Return: BX = 7965h if keyboard remapper KEY200.COM installed
  3020. --------d-2F7200-----------------------------
  3021. INT 2F - SRDISK v1.30+ - INSTALLATION CHECK
  3022.     AX = 7200h
  3023. Return: AL = FFh if installed
  3024.         ES = segment of device driver header (see #1568)
  3025. Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
  3026. SeeAlso: AX=7201h
  3027.  
  3028. Format of SRDISK device driver header:
  3029. Offset    Size    Description    (Table 1568)
  3030.  00h 10 BYTEs    same as standard device driver header
  3031.           (see #0858 at INT 21/AH=52h)
  3032.  0Ah    BYTE    number of subunits (drives) supported by driver
  3033.  0Bh  3 BYTEs    signature "SRD"
  3034.  0Eh  4 BYTEs    memory type string ("XMS "/"EMS ")
  3035.  12h  4 BYTEs    ASCII driver version string "N.NN"
  3036.  16h    BYTE    00h
  3037.  17h    BYTE    configuration format version (currently 00h or 01h)
  3038.  18h    WORD    offset of drive configuration data
  3039. --------d-2F7201-----------------------------
  3040. INT 2F - SRDISK v2.02 - GET CODE/DATA SEGMENT
  3041.     AX = 7201h
  3042. Return: AL = FFh if installed
  3043.         ES = segment of device driver header
  3044. Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
  3045. SeeAlso: AX=7200h
  3046. --------N-2F7A00-----------------------------
  3047. INT 2F - Novell NetWare - LOW-LEVEL API (IPX) INSTALLATION CHECK
  3048.     AX = 7A00h
  3049. Return: AL = status
  3050.         00h not installed
  3051.         FFh installed
  3052.         ES:DI -> FAR entry point for routines accessed exclusively
  3053.               through INT 7A in NetWare versions through 2.0a.
  3054.               Call with same values as INT 7A
  3055.         ES:BX -> two bytes containing IPX major/minor version
  3056.             (IPXODI v2.12; BX unchanged by older IPX drivers)
  3057. SeeAlso: AX=7AFFh/BX=0000h,AX=D800h,INT 64"Novell",INT 7A"Novell"
  3058. --------N-2F7A10-----------------------------
  3059. INT 2F U - Novell NetWare - TBMI v1.1+ - GET TBMI STATUS
  3060.     AX = 7A10h
  3061. Return: DH = major TBMI version number
  3062.     DL = minor TBMI version number (01h for v1.1)
  3063.     CX = segment address of TBMI resident part
  3064.     BX = status word of TBMI (see #1569)
  3065. Note:    TBMI is the Task-Switched Buffer Manager Interface
  3066. SeeAlso: AX=7A11h,AX=7A12h,AX=7A13h,AX=7A14h
  3067.  
  3068. Bitfields for NetWare TBMI status word:
  3069. Bit(s)    Description    (Table 1569)
  3070.  0    INT2F intercepted by TBMI
  3071.  1    INT7A intercepted by TBMI
  3072.  2    INT64 intercepted by TBMI
  3073.  3-14    reserved or unused ???
  3074.  15    outstanding task ID was detected
  3075. --------N-2F7A11-----------------------------
  3076. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT2F HANDLERS
  3077.     AX = 7A11h
  3078. Return: ES:BX -> old INT 2F handler
  3079.     DS:DX -> TBMI INT 2F handler
  3080. SeeAlso: AX=7A10h,AX=7A12h,AX=7A13h,AX=7A1Ah
  3081. --------N-2F7A12-----------------------------
  3082. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT64 HANDLERS
  3083.     AX = 7A12h
  3084. Return: ES:BX -> old INT 64 handler
  3085.     DS:DX -> TBMI INT 64 handler
  3086. SeeAlso: AX=7A10h,AX=7A11h,AX=7A13h
  3087. --------N-2F7A13-----------------------------
  3088. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT7A HANDLERS
  3089.     AX = 7A13h
  3090. Return: ES:BX -> old INT 7A handler
  3091.     DS:DX -> TBMI INT 7A handler
  3092. SeeAlso: AX=7A10h,AX=7A11h,AX=7A12h
  3093. --------N-2F7A14-----------------------------
  3094. INT 2F U - Novell NetWare - TBMI v1.1+ - GET STATISTICS
  3095.     AX = 7A14h
  3096.     CX = statistic to retrieve
  3097.         0000h available diagnostic functions???
  3098.         Return: CX = maximum available function??? (000Ch for v2.0)
  3099.         0001h buffers in use
  3100.         Return: CX = TBMI buffers currently in use
  3101.         0002h maximum buffers used
  3102.         Return: CX = maximum number of buffers ever in use
  3103.         0003h unavailable buffers
  3104.         Return: CX = count of unavailable TBMI buffers
  3105.         0004h old interrupt usage
  3106.         Return: CX = TBMI accesses to intercepted old vectors INT 2F,
  3107.                   INT 64, and INT 7A
  3108.         0005h far call usage
  3109.         Return: CX = TBMI accesses to IPX/SPX far call handler (not
  3110.                   including internal accesses)
  3111.         0006h task buffering
  3112.         Return: CX = TBMI task buffering status (enabled/disabled or
  3113.                   disable/enable switch count???)
  3114.         0007h current task ID
  3115.         Return: CX = TBMI current task ID number (0000h if ???)
  3116.         0008h outstanding ID count
  3117.         Return: CX = number of outstanding TBMI IDs
  3118.         0009h configured ECBs
  3119.         Return: CX = number of TBMI Event Control Blocks configured
  3120.         000Ah configured data ECBs
  3121.         Return: CX = number of TBMI data ECBs configured
  3122.         000Bh configured sockets
  3123.         Return: CX = number of TBMI sockets configured (from NETCFG)
  3124.         000Ch current sockets
  3125.         Return: CX = number of TBMI sockets currently in use
  3126. Return: BX = maximum supported subfunction (000Ch)
  3127. SeeAlso: AX=7A10h
  3128. --------N-2F7A15-----------------------------
  3129. INT 2F OU - Novell NetWare - TBMI v1.1 only - RESET ???
  3130.     AX = 7A15h
  3131. Return: BX = new value of ???
  3132. Desc:    set ??? to its default value
  3133. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  3134. SeeAlso: AX=7A17h
  3135. --------N-2F7A16-----------------------------
  3136. INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
  3137.     AX = 7A16h
  3138.     CX = ???
  3139.     ???
  3140. Return: ???
  3141. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  3142. --------N-2F7A17-----------------------------
  3143. INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
  3144.     AX = 7A17h
  3145.     ???
  3146. Return: BX = old value of ???
  3147.     CX = new value of ???
  3148. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  3149. SeeAlso: AX=7A15h
  3150. --------N-2F7A18-----------------------------
  3151. INT 2F U - Novell NetWare - TASKID v1.0 - INSTALLATION CHECK
  3152.     AX = 7A18h
  3153. Return: AL = FFh if installed
  3154.         BX = configuration flags (see #1570)
  3155.         CX = resident code segment
  3156. SeeAlso: AX=7A10h
  3157.  
  3158. Bitfields for NetWare TASKID configuration flags:
  3159. Bit(s)    Description    (Table 1570)
  3160.  0    INT 2F hooked
  3161.  3    INT 08 hooked
  3162.  other    unused
  3163. --------N-2F7A19-----------------------------
  3164. INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 08 HANDLERS
  3165.     AX = 7A19h
  3166. Return: AL = FFh
  3167.     DS:DX -> TASKID INT 08 handler
  3168.     ES:BX -> original INT 08 handler
  3169. --------N-2F7A1A-----------------------------
  3170. INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 2F HANDLERS
  3171.     AX = 7A1Ah
  3172. Return: AL = FFh
  3173.     DX:DX -> TASKID INT 2F handler
  3174.     ES:BX -> original INT 2F handler
  3175. SeeAlso: AX=7A11h,AX=7A19h
  3176. --------N-2F7A1B-----------------------------
  3177. INT 2F U - Novell NetWare - TASKID v1.0 - GET DIAGNOSTICS INFORMATION
  3178.     AX = 7A1Bh
  3179.     CX = desired information
  3180.         0000h supported functions
  3181.         0001h TASKID ID number
  3182.         Return: CX = ID number
  3183.         0002h set-ID count
  3184.         Return: CX = ID set count
  3185. Return: AL = FFh
  3186.     BX = highest supported subfunction number (0002h)
  3187. SeeAlso: AX=7A14h,AX=7A18h
  3188. --------N-2F7A1C-----------------------------
  3189. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  3190.     AX = 7A1Ch
  3191.     BP = ???
  3192.     CX:DX = ???
  3193. Return: AX = 70FFh
  3194. --------N-2F7A1D-----------------------------
  3195. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  3196.     AX = 7A1Dh
  3197.     ???
  3198. Return: ES = ???
  3199.     ???
  3200.     SI destroyed
  3201. --------N-2F7A1E-----------------------------
  3202. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  3203.     AX = 7A1Eh
  3204.     ES:SI -> ???
  3205.     ???
  3206. Return: ???
  3207. --------N-2F7A20BX0000-----------------------
  3208. INT 2F - Novell NetWare - Adv NetWare 4.0 DOS Requester - GET VLM CALL ADDRESS
  3209.     AX = 7A20h
  3210.     BX = 0000h
  3211. Return: AX = 0000h on success (installed)
  3212.         ES:BX -> far call address for DOS Requester (see #1571)
  3213. Notes:    the DOS Requester replaces the NetWare Shell (ANETx, NETx) on
  3214.       NetWare LAN's as of the release of Advanced NetWare 4.0 (1993).  It
  3215.       is backward compatible with NetWare 2.1x through 3.11 servers as
  3216.       well.     Note that there was a NetWare 4.0 in the early 1980's, which
  3217.       can cause confusion.
  3218.     this call is used as the installation check by VLM.EXE, which is the
  3219.       loader for all the modules of the DOS Requester
  3220.     .VLMs are standard old .EXE format executables whose normal entry point
  3221.       merely terminates to prevent loading from the command line.  The
  3222.       real entry point is found by looking at the VLM header at the
  3223.       beginning of the load image (see #1574)
  3224. Index:    installation check;NetWare 4.0 DOS Requester
  3225.  
  3226. (Table 1571)
  3227. Call DOS Requester entry point with:
  3228.     STACK:    WORD    destination function
  3229.         WORD    destination VLM ID (see #1573)
  3230.         WORD    source VLM ID (0000h = application program)
  3231.     registers as appropriate for function
  3232. Return: AX = status code (0000h,8811h,8846h,8848h,8853h) (see #1572)
  3233.     other registers as appropriate for function
  3234.     STACK popped
  3235.     BP destroyed
  3236.  
  3237. (Table 1572)
  3238. Values for VLM status code:
  3239.  0000h    successful
  3240.  88xxh    error generated by requester
  3241.  8801h    invalid or non-attached connection handle
  3242.  8803h    cannot add CDS
  3243.  8804h    bad path
  3244.  8805h    error sending or receiving NCP packets
  3245.  8811h    nonexistent function called
  3246.  8836h    attempted function with invalid parameter
  3247.  8846h    ???
  3248.  8848h    non-loaded or nonexistent VLM called
  3249.  884Dh    no more SFT entries (too many handles)
  3250.  8850h    too many reply fragments
  3251.  8853h    ???
  3252.  89xxh    error generated by server
  3253.     low byte = return code from server (see also #1101,#1135)
  3254.  8900h    server successful
  3255.  8901h    out of disk space
  3256.  897Eh    NCP boundary check failed
  3257.  897Fh    ???
  3258.  8980h    lock failed; file in use
  3259.  8981h    out of handles
  3260.  8982h    no open privileges
  3261.  8983h    hard (non-correctable) I/O error
  3262.  8984h    no creation privileges
  3263.  8985h    no create/delete privileges
  3264.  8986h    attempted to create a file which already exists read-only
  3265.  8987h    filename error during creation (wildcards in name)
  3266.  8988h    invalid file handle
  3267.  8989h    no search privileges
  3268.  898Ah    no deletion privileges
  3269.  898Bh    no rename privileges
  3270.  898Ch    no modify privileges
  3271.  898Dh    some affected files are in use
  3272.  898Eh    all affected files are in use
  3273.  898Fh    some affected files are read-only
  3274.  8990h    all affected files are read-only; volume read-only
  3275.  8991h    some files could not be renamed because target names already exist
  3276.  8992h    all affected names exist
  3277.  8993h    no read privileges
  3278.  8994h    no write privileges
  3279.  8995h    file detached
  3280.  8996h    server out of memory
  3281.  8997h    no disk space for spool file
  3282.  8998h    disk map error; volume does not exist
  3283.  8999h    directory full
  3284.  899Ah    attempt to rename across volumes
  3285.  899Bh    bad directory handle
  3286.  899Ch    invalid path; no more trustees
  3287.  899Dh    no directory handles
  3288.  899Eh    bad filename
  3289.  899Fh    directory active
  3290.  89A0h    directory not empty
  3291.  89A1h    directory I/O error
  3292.  89A2h    I/O lock error
  3293.  89A3h-89BEh ???
  3294.  89BFh    invalid name space
  3295.  89C0h    no account privileges
  3296.  89C1h    no account balance
  3297.  89C2h    credit limit exceeded
  3298.  89C4h    account disabled
  3299.  89C5h    login lockout (intruder detection activated)
  3300.  89C6h    no console rights
  3301.  89C7h-89CFh
  3302.  89D0h    queue error
  3303.  89D1h    no queue
  3304.  89D2h    no queue server
  3305.  89D3h    no queue rights
  3306.  89D4h    queue full
  3307.  89D5h    no queue job
  3308.  89D6h    no job rights; unencrypted password
  3309.  89D7h    queue servicing error; duplicate password; bad account
  3310.  89D8h    queue not active; password too short
  3311.  89D9h    station not queue server; maximum logins exceeded
  3312.  89DAh    queue halted; bad login time
  3313.  89DBh    maximum queue servers; unauthorized login station
  3314.  89DCh    account disabled or expired
  3315.  89DEh    password expired (all grace logins used up)
  3316.  89DFh    password expired but login allowed (grace login)
  3317.  89E0h-89E6h ???
  3318.  89E7h    no disk track
  3319.  89E8h    property is not an item property; write to group
  3320.  89E9h    member exists
  3321.  89EAh    no such member
  3322.  89EBh    property is not a set property
  3323.  89ECh    no such set
  3324.  89EDh    property exists
  3325.  89EEh    object exists
  3326.  89EFh    illegal name
  3327.  89F0h    illegal wildcard
  3328.  89F1h    invalid bindery security level
  3329.  89F2h    not allowed to read object
  3330.  89F3h    not allowed to write/rename object
  3331.  89F4h    not allowed to delete object
  3332.  89F5h    not allowed to create object
  3333.  89F6h    not allowed to delete property
  3334.  89F7h    not allowed to create property; attempt to use non-local drive
  3335.  89F8h    not allowed to write property; already attached to server
  3336.  89F9h    not allowed to read property; no free connection slots
  3337.  89FAh    temporary remap error; no more server slots
  3338.  89FBh    no such property; invalid parameters
  3339.  89FCh    no such object; internet packet request canceled; unknown file server
  3340.  89FDh    bad station number; lock collision
  3341.  89FEh    directory locked; bindery locked; timeout
  3342.  89FFh    general error; hard error; lock error
  3343. Note:    some server-generated error codes have multiple interpretations; use
  3344.       the one appropriate to the failing call
  3345.  
  3346. (Table 1573)
  3347. Values for VLM identifier:
  3348.  0001h    VLM.EXE        Virtual Loadable Modules manager (see also #1575)
  3349.  0010h    CONN.VLM    connection table manager (see also #1576)
  3350.  0020h    TRAN.VLM    transport protocol multiplexor (see also #1578)
  3351.  0021h    IPXNCP.VLM    transport protocol implementation using IPX (see #1580)
  3352.  0022h    TCPNCP.VLM    TCP/IP transport
  3353.  0030h    NWP.VLM        NetWare protocol multiplexor (see also #1581)
  3354.  0031h    BIND.VLM    bindery
  3355.  0032h    NDS.VLM        NetWare Directory Services (see also #1582)
  3356.  0033h    PNW.VLM        Personal NetWare
  3357.  0034h    RSA.VLM        RSA encryption for directory services re-authentication
  3358.  0040h    REDIR.VLM    DOS redirector (see also #1583)
  3359.  0041h    FIO.VLM        file I/O (see also #1585)
  3360.  0042h    PRINT.VLM    printer redirector (see also #1586)
  3361.  0043h    GENERAL.VLM    misc functions for NETx and REDIR (see also #1587)
  3362.  0050h    NETX.VLM    NetWare shell compatibility (see also #1588)
  3363.  0060h    AUTO.VLM    auto-reconnect/auto-retry
  3364.  0061h    SECURITY.VLM    enhanced security module
  3365.  0100h    NMR.VLM        NetWare management responder
  3366.  09F2h  DRVPRN.VLM      Desktop SNMP Services - Drive/Printer Mappings
  3367.  09F5h  SAA.VLM         SAA client API for Netware
  3368.  09F6h  IPXMIB.VLM      SNMP IPX-monitoring Module???
  3369.  09F7h  PNWMIB.VLM      Personal Netware SNMP Instrumentation Module
  3370.  09F8h  PNWTRAP.VLM     Personal Netware SNMP Trap Module
  3371.  09F9h  MIB2PROT.VLM    MIB-II Protocol Groups
  3372.  09FAh  MIB2IF.VLM      MIB-II Interfaces Group
  3373.  09FBh  NVT.VLM         ???
  3374.  09FCh  WSTRAP.VLM      Desktop SNMP Services - Trap Module
  3375.  09FDh  WSREG.VLM       Desktop SNMP Services - Registration Module
  3376.  09FEh  WSASN1.VLM      Desktop SNMP Services - ASN.1 Module
  3377.  09FFh  WSSNMP.VLM      Desktop SNMP Services - Agent Module
  3378.  
  3379. Format of VLM header:
  3380. Offset    Size    Description    (Table 1574)
  3381.  00h    DWORD    -> initialization entry point
  3382.  04h    DWORD    -> VLM API entry point
  3383.  08h    DWORD    -> ??? entry point
  3384.  0Ch    DWORD    -> ??? entry point
  3385.  10h    DWORD    -> ??? entry point
  3386.     ...
  3387.  var    DWORD    00000000h (end of entry point list)
  3388.       4 BYTEs    signature "NVlm"
  3389.     WORD    VLM identifier (see #1573)
  3390. ---v1.20+ ---
  3391.  1Eh    WORD    ???
  3392.  20h    WORD    Transient Switch Count
  3393.  22h    WORD    VLM Call Count
  3394.  24h    WORD    Offset ControlBlocks (See #2719)
  3395.  26h    WORD    Current VLMID
  3396.  28h    BYTE    Memory Type
  3397.         00h=Conventional 02h=EMS 04h=XMS
  3398.  29h    BYTE    Modules Loaded
  3399.  2Ah    WORD    BlockId
  3400.  2Ch    WORD    Transient Block
  3401.  2Eh    WORD    Global Segment
  3402.  30h  3    DWORDs    pointers to AsyncQueue head, tail, and s???
  3403.  3Ch  3    DWORDs    pointers BusyQueue head, tail, and s???
  3404.  48h    WORD    ReEntrance Level
  3405.  4Ah    WORD    Full Map Count
  3406.  4Ch    WORD    ???
  3407.  4Eh 80 BYTEs    ASCIZ configuration file filename
  3408. Note:    the number of entry points in the header is reported as "Func" in the
  3409.       VLM /D display.
  3410.  
  3411. Format of VLM Control Block for VLM v1.20 [array]:
  3412. Offset    Size    Description    (Table 2719)
  3413.  00h    WORD    Flag
  3414.  02h    WORD    VLM Identifier (See #1573)
  3415.  04h    WORD    Func
  3416.  06h    WORD    Maps
  3417.  08h    WORD    number of times called
  3418.  0Ah    WORD    ???
  3419.  0Ch    WORD    Transient Segment
  3420.  0Eh    WORD    Global Segment
  3421.  10h    WORD    Address Low
  3422.  12h    WORD    Address High
  3423.  14h    WORD    TSegSize
  3424.  16h    WORD    GSegSize
  3425.  18h    WORD    SSegSize
  3426.  1Ah    BYTE    VLMName[9] ASCIZ
  3427. Note:    this information is shown in VLM /d under the dashed line. There are 
  3428.       as many 35-byte blocks as modules loaded
  3429. SeeAlso: #1574
  3430.  
  3431. (Table 1575)
  3432. Call VLM Manager (VLM.EXE, ID 0001h) with:
  3433. Func    Description/Registers
  3434.  01h    VLM Statistics
  3435.  04h    VLM internal use
  3436.     BX = function
  3437.         0000h get interrupt vector (calls INT 21/AH=35h)
  3438.         0001h begin critical section (calls INT 2F/AX=1681h)
  3439.         0002h end critical section (calls INT 2F/AX=1682h)
  3440.         0003h ???
  3441.  
  3442. (Table 1576)
  3443. Call Connection Manager (CONN.VLM, ID 0010h) with:
  3444. Func    Description/Registers
  3445.  01h    Conn Get Version
  3446.  03h    Conn Statistics
  3447.     CX = length of buffer
  3448.     ES:DI -> buffer for connection statistics (see #2725)
  3449.  04h    Conn Alloc Handle
  3450.  05h    Conn Validate Handle
  3451.     CX = connection handle
  3452.     Return: AX = 0000h if valid handle
  3453.  06h    Conn Free Handle
  3454.  07h    Conn Get Entry Field
  3455.     BH = connection parameter (see #1577)
  3456.     CX = connection handle
  3457.     DX = value if BH is non-array parameter
  3458.     DH = offset in array if BH is array parameter
  3459.     DL = number of bytes to copy if BH is array
  3460.     ES:DI -> return buffer if BH is array
  3461.     Return: AX = 0000h if successful
  3462.         DX = value if non-array parameter
  3463.         DH = maximum number of bytes in buffer if array parameter
  3464.         DL = number of bytes copied if array
  3465.         BX destroyed
  3466.  08h    Conn Set Entry Field
  3467.     BH = connection parameter (see #1577)
  3468.     CX = connection handle
  3469.     DX = value if BH is non-array parameter
  3470.     DH = offset in array if BH is array parameter
  3471.     DL = number of bytes to copy if BH is array
  3472.     DS:SI -> buffer if BH is array
  3473.     Return: AX = 0000h if successful
  3474.         DH = maximum number of bytes in buffer
  3475.         DL = number of bytes copied
  3476.         BX destroyed
  3477.  09h    Conn Reset Entry Field
  3478.     BH = connection parameter (see #1577)
  3479.     CX = connection handle
  3480.     Return: AX = 0000h if successful
  3481.         BX,DX destroyed
  3482.  0Ah    Conn Lookup Handle
  3483.     BL = lookup type (00h equal, 40h not equal)
  3484.     BH = connection parameter (see #1577)
  3485.     CX = connection handle, 0000h if first
  3486.     DX = value if BH is non-array parameter
  3487.     DH = offset in array if BH is array parameter
  3488.     DL = number of bytes to copy if BH is array
  3489.     DS:SI -> buffer if BH is array
  3490.     Return: AX = 0000h if successful
  3491.         CX = handle matching given parameters
  3492.  0Dh    Conn Name Lookup
  3493.     CX = connection handle
  3494.     ES:DI -> 49-byte buffer for server name
  3495.     Return: AX = 0000h if successful
  3496.         BX = length of server name
  3497.  0Eh    Conn Name To Handle
  3498.     DS:SI -> uppercased server name
  3499.     CX = length of server name, 0000h if ASCIZ name
  3500.     Return: AX = error code or 0000h if successful
  3501.             CX = connection handle if successful
  3502.  0Fh    Conn Get Num Connections
  3503.     Return: DX = number of connections
  3504.         CX = segment of connection table 
  3505.              first entry in table (See #2720)
  3506.  
  3507. Format of VLM connection statistics:
  3508. Offset    Size    Description    (Table 2725)
  3509.  00h    WORD    total length of statistics record (including this word)
  3510.  02h    WORD    number of connection handles allocated
  3511.  04h    WORD    average name length (configured in NET.CFG)
  3512.  06h    WORD    maximum numbe of tasks (configured in NET.CFG)
  3513.  08h    WORD    ???
  3514.  0Ah    WORD    ???
  3515.  0Ch    WORD    ???
  3516. Note:    some versions of the NetWare requester reportedly do not implement
  3517.       this correctly
  3518. SeeAlso: #1576
  3519.  
  3520. Format of NetWare VLM Connection Table [array]:
  3521. Offset    Size    Description    (Table 2720)
  3522.  00h    WORD    Protocol VLMid      0032(NDS) 0031(BIND)        Func 07 equiv.
  3523.                   0033(PNW) 0000(unused)       bh=01h
  3524.  02h    BYTE    (connection status)
  3525.         bit 6: connection locked               bh=16h
  3526.         bit 5: authenticated                   bh=03h
  3527.         bit 4: permanent                   bh=02h
  3528.         bit 2: broadcast msg waiting               bh=12h
  3529.  03h    BYTE    (connection capabilities)
  3530.         bit 5: Large Internet Packets               none
  3531.         bit 3: Packet Burst Reset               bh=07h
  3532.         bit 2: Max I/O                       bh=06h
  3533.         bit 1: SFT3 change                   bh=05h
  3534.         bit 0: Packet Burst Support               bh=04h
  3535.  04h    WORD    reference count                       bh=09h
  3536.  06h    WORD    soft resource count                   bh=15h
  3537.  08h    BYTE    NCP Order Number                   bh=0Eh
  3538.  09h    BYTE    Server security options                   bh=14h
  3539.         bit 0: CRC enabled
  3540.         bit 1: packet signing required
  3541.         bit 5: packet signing enabled
  3542.  0Ah    BYTE    OS Major Version                   bh=08h
  3543.  0Bh    BYTE    OS Minor Version                   bh=08h
  3544.  0Ch    WORD    Hops to Server                       bh=0Ah
  3545.  0Eh    WORD    Maximum Packet Size for this connection           bh=0Bh
  3546.  10h    WORD    LIP Parameters                       bh=13h
  3547.  12h    WORD    NCP Request Type                   bh=10h
  3548.  14h    BYTE    NCP Sequence                       bh=0Ch
  3549.  15h    WORD    Connection Number                   bh=0Dh
  3550.  17h    BYTE    ???                           none
  3551.  18h    WORD    Transport VLMid 21(IPXNCP) 22(TCPNCP)           bh=0Fh      
  3552.  1Ah    BYTE    Node Address[4]                       bh=11h
  3553.  1Eh    BYTE    Network[6]                       bh=11h
  3554.  24h    BYTE    Socket[2]                       bh=11h  
  3555.  26h    BYTE    Local Target[6]                       bh=11h
  3556.  2Ch    WORD    Round Trip Time                       bh=11h
  3557.  2Eh    WORD    ???                           none
  3558. SeeAlso: #1576
  3559.  
  3560. (Table 1577)
  3561. Values for NetWare Connection Manager CEI (Connection Entry Information):
  3562.  number    flags    description
  3563.  00h    FR    error
  3564.  01h    WL    VLM id of transport protocol (NDS/BIND/PNW)
  3565.         00h = wildcard
  3566.  02h    FR    permanent flag (01h if connection is permanent)
  3567.  03h    F    authenticated flag (01h if connection is authenticated)
  3568.  04h    F    packet burst supported
  3569.  05h    FR    SFT3 change status
  3570.  06h    FR    connection needs maximum I/O transmission
  3571.  07h    FR    packet burst reset needed
  3572.  08h    W    server version
  3573.  09h    W    reference count (tasks using connection, 00h = dynamic)
  3574.  0Ah    W    distance to server associated with connection
  3575.  0Bh    W    maximum packet size supported by transport protocol
  3576.  0Ch    B    NCP sequence number
  3577.  0Dh    W    connection number
  3578.  0Eh    B    NCP order number
  3579.  0Fh    WL    VLM id for transport protocol
  3580.         00h = wildcard, 21h = IPX, 22h = TCP
  3581.  10h    W    NCP request type
  3582.  11h    A    transport specific buffer
  3583.         12 byte server address
  3584.         6 byte    router address
  3585.         2 byte round trip time
  3586.  12h    FR    broadcast message waiting
  3587.  13h    W    large internet packets supported
  3588.  14h    B    security options
  3589.         bit 0: CRC enabled
  3590.         bit 1: packet signing enabled
  3591.         bit 5: packet signing active
  3592.  15h    W    soft resource count
  3593.  16h    FR    connection locked
  3594. Note:    flag meanings
  3595.         F=flag value
  3596.         B=byte value
  3597.         W=word value
  3598.         A=array
  3599.         R=resettable
  3600.         L=settable only before authentication
  3601.         others=read only
  3602. SeeAlso: #1576
  3603.  
  3604. (Table 1578)
  3605. Call TRAN.VLM (VLM ID 0020h) with:
  3606. Func    Description/Registers
  3607.  01h    TRAN Get Version
  3608.  03h    TRAN Statistics
  3609.  06h    TRAN Request Reply (see INT 21/AH=F2h)
  3610.     AL = request code (see #1266 at INT 21/AH=F2h)
  3611.     BH = error handler flag
  3612.         00h default error handler
  3613.         01h return network errors to caller
  3614.         02h handle network errors in requester
  3615.     BL = request list length (max 5 fragments) (see #1579)
  3616.     CX = connection handle
  3617.     DH = 00h (reserved)
  3618.     DL = reply list length (max 5 fragments) (see #1579)
  3619.     DS:SI -> address list (each element is DWORD address + WORD length)
  3620.     ES:DI -> address list
  3621.     Return: AX = error code, 0000h if successful
  3622.         BX,DX destroyed
  3623.         reply buffer updated if successful
  3624.  08h    TRAN Schedule/Cancel Event
  3625.  09h    TRAN Get Max Phys Size
  3626.     ??? = subfunction
  3627.         00h get maximum node size
  3628.         01h get maximum route size to specified server
  3629.  0Ah    TRAN Broadcast Mux
  3630.  
  3631. Format of TRAN.VLM request/reply fragment descriptor (array):
  3632. Offset    Size    Description    (Table 1579)
  3633.  00h    DWORD    address of buffer
  3634.  04h    WORD    length of buffer
  3635.  
  3636. (Table 1580)
  3637. Call IPXNCP.VLM (VLM ID 0021h) with:
  3638. Func    Description/Registers
  3639.  01h    IPX Get Version
  3640.  03h    IPX Statistics
  3641.  06h    IPXNCP Request Reply???
  3642.     functionally equivalent to Tran Request Reply???
  3643.  
  3644. (Table 1581)
  3645. Call NWP.VLM (VLM ID 0030h) with:
  3646. Func    Description/Registers
  3647.  01h    NWP Get Version
  3648.  03h    NWP Statistics
  3649.  04h    NWP Connect
  3650.  05h    NWP Disconnect
  3651.  06h    NWP Attach
  3652.  08h    NWP Login
  3653.  09h    NWP Logout
  3654.  0Ah    NWP Get Bindery Object/Get Message Handler
  3655.     BX = subfunction
  3656.         0002h set workstation's broadcast message mode
  3657.         0003h get object ID for object name
  3658.         0004h get object name for object ID
  3659.         0005h retrieve broadcast message
  3660.  0Ch    NWP context (passed through to NDS.VLM's function 0Ch) (see #1582)
  3661.  0Eh    NWP Ordered Send To All
  3662.  0Fh    NWP Preferred Handler
  3663.     BX = subfunction
  3664.         0000h get preferred connection name
  3665.         DX = VLM ID (NDS/BIND/PNW)
  3666.         ES:DI -> 49-byte buffer for connection name
  3667.         Return: ES:DI buffer filled
  3668.         0001h set preferred connection name
  3669.         DX = VLM ID (NDS/BIND/PNW)
  3670.         CX = length of connection name (may be 0000h, max 48)
  3671.         DS:SI -> name of preferred connection
  3672.         0002h get preferred connection ID
  3673.         DX = VLM ID (NDS/BIND/PNW)
  3674.         Return: AX = status
  3675.             CX = connection handle if successful
  3676.         0003h get server address
  3677.         CX = connection handle or 0000h
  3678.         DS:SI -> name to be resolved
  3679.         ES:DI -> 12-byte buffer for server address
  3680.  10h    NWP ???
  3681.     BX = subfunction
  3682.         0001h get security flags (see also INT 21/AX=B301h)
  3683.         Return: BX:CX indicates signature level
  3684.                 = 0100h:0000h if signature level=0
  3685.                 = 0300h:0000h if signature level=1
  3686.                 = 0302h:0000h if signature level=2
  3687.                 = 0302h:0202h if signature level=3
  3688.         0002h create session keys (see also INT 21/AX=B302h)
  3689.         CX = server connection handle
  3690.         DS:SI -> 24-byte input buffer
  3691.         0004h set security flags (see also INT 21/AX=B304h)
  3692.         BL:CL = new flags
  3693.         0006h renegotiate security level (see also INT 21/AX=B306h)
  3694.         CX = server connection number (01h-08h)
  3695.  
  3696. (Table 1582)
  3697. Call NDS.VLM (VLM ID 0032h) with:
  3698. Func    Description/Registers
  3699.  01h    NDS Get Version
  3700.  03h    NDS Statistics
  3701.  06h    NDS Attach
  3702.     CX = allocated connection handle
  3703.     DS:SI -> server address
  3704.  08h    NDS Fragment Requst
  3705.     Return: AX = 8836h (invalid parameter)
  3706.     Note:    this function was documented but does not work
  3707.  0Ch    NDS context
  3708.     BX = subfunction
  3709.         0000h get default name context
  3710.         CX = length of buffer for default context
  3711.         ES:DI -> buffer to receive name
  3712.         Return: ES:DI buffer filled
  3713.         0001h set default context
  3714.         CX = length of new default context name
  3715.         DS:SI -> context name
  3716.         0002h read from TDS
  3717.         CX = reply buffer length
  3718.         DX = 0110h ???
  3719.         SI = offset in TDS
  3720.         ES:DI -> reply buffer
  3721.         0003h write to TDS
  3722.         0005h "NWDSChangeResourceConnection/Lock Connection"
  3723.         CX = connection handle
  3724.         DL = subfunction (00h-09h)
  3725.             04h = NWDSChangeResourceOnConnection
  3726.             07h = NWDSChangeResourceOnConnection
  3727.             08h = NWDSLockConnection
  3728.         0006h NDS change connection state (internal) (!!!see sc4x01.zip)
  3729.         CX = connection handle
  3730.         AL = 00h or 01h
  3731.         0007h "NWDSSetMonitoredConnection"
  3732.         AX = subfunction
  3733.             0001h get monitored connection
  3734.             Return: CX = connection handle???
  3735.             0002h set monitored connection
  3736.             CX = connection handle???
  3737.         0008h send NDS request
  3738.         AX = NDS function
  3739.         CX = connection handle
  3740.         DS:SI -> request buffer descriptor (see #2726)
  3741.         ES:DI -> reply buffer descriptor (see #2726)
  3742.         000Ah set NDS CEI Info
  3743.         DL = buffer length
  3744.         DS:SI -> input buffer
  3745.  
  3746. Format of NetWare NDS request/reply buffer descriptor:
  3747. Offset    Size    Description    (Table 2726)
  3748.  00h    DWORD    -> buffer
  3749.  04h    WORD    length of buffer in bytes
  3750. SeeAlso: #1582
  3751.  
  3752. (Table 1583)
  3753. Call REDIR.VLM (VLM ID 0040h) with:
  3754. Func    Description/Registers
  3755.  01h    Redir Get Version
  3756.  03h    Redir Statistics
  3757.  04h    Redir Build SFT (see INT 21/AH=B4h"NetWare")
  3758.     CX = connection handle
  3759.     ES:DI -> SFT build request (see #1584)
  3760.     Return: AX = 0000h if successful
  3761.             BX = DOS file handle
  3762.  05h    Redir DOS To NW Handle
  3763.  08h    Redir Specific
  3764.     BX = 0000h get item
  3765.         DS:SI -> ASCIZ string "LPTx" (x='1'-'9') or drive spec ("d:")
  3766.         ES:DI -> 512-byte reply buffer for
  3767.               "\\server\resource",00h,"path",00h
  3768.  
  3769. Format of NetWare SFT build request:
  3770. Offset    Size    Description    (Table 1584)
  3771.  00h  6 BYTEs    NetWare handle
  3772.  06h    WORD    reserved for internal use
  3773.  08h 14 BYTEs    ASCIZ filename
  3774.  16h    BYTE    DOS file attributes
  3775.         bit 7: file is shareable
  3776.  17h    BYTE    reserved
  3777.  18h    LONG    file size
  3778.  1Ch    WORD    creation date
  3779.  1Eh    WORD    last access date
  3780.  20h    WORD    last update date
  3781.  22h    WORD    last update time
  3782.  
  3783. (Table 1585)
  3784. Call File I/O FIO.VLM (VLM ID 0041h) with:
  3785. Func    Description/Registers
  3786.  01h    FIO Get Version
  3787.  03h    FIO Statistics
  3788.  04h    FIO Remote Copy
  3789.  
  3790. (Table 1586)
  3791. Call PRINT.VLM (VLM ID 0042h) with:
  3792. Func    Description/Registers
  3793.  01h    Print Get Version
  3794.  03h    Print Statistics
  3795.  04h    Print Get/Set Data
  3796.     BX??? = subfunction
  3797.         00h set printer control flags
  3798.         01h get printer control flags
  3799.         02h set extended printer control flags
  3800.         03h get extended printer control flags
  3801.  05h    Print Open Capture File
  3802.  07h    Print Get Num Of Printers
  3803.  08h    Print Redirection
  3804.     BX = subfunction
  3805.         0000h redirect device to queue
  3806.         AX = length of queue name, 0000h to use queue ID
  3807.         DS:SI -> uppercased ASCIZ queue name
  3808.         ES:DI -> queue ID, 0000h:0000h to use queue name
  3809.         0001h test whether device is redirected
  3810.         0002h cancel redirection
  3811.         0003h redirect device to file
  3812.         AX = 0000h or 4E57h ('NW')
  3813.         ES:DI -> ASCIZ path of file
  3814.         0004h get extended redirection information
  3815.     CX = connection handle
  3816.     DX = printer (0=LPT1)
  3817.     Return: AX = 0000h if successful
  3818.  09h    Print Flush And Close Job
  3819.  0Ch    Print Get/Set Banner Name
  3820.  
  3821. Format of PRINT.VLM standard print control information:
  3822. Offset    Size    Description    (Table 2653)
  3823.  00h    BYTE    PFStatus (reserved, 00h)
  3824.  01h    BYTE    print flags (default 80h)
  3825.         bit 2: release job for printing if capture interrupted
  3826.         bit 3: suppress form feed
  3827.         bit 4: notify
  3828.         bit 6: text file
  3829.         bit 7: print banner
  3830.  02h    BYTE    tab size (01h-12h, default 08h)
  3831.  03h    BYTE    number of copies (default 01h)
  3832.  04h    BYTE    ???
  3833.  05h    BYTE    form type to be mounted in printer (default 00h)
  3834.  06h    BYTE    reserved (00h)
  3835.  07h 14 BYTEs    banner
  3836.  15h    BYTE    capture printer (LPT) number
  3837.  16h    WORD    capture timeout in seconds
  3838.  18h    BYTE    job concatenation flag (00h or 01h, default 00h)
  3839.  19h    BYTE    maximum lines per page (default 66)
  3840.  1Ah    BYTE    ???
  3841.  1Bh    BYTE    maximum characters per line (default 132)
  3842.  1Ch    BYTE    ???
  3843.  1Dh 13 BYTEs    name of form to be mounted in printer
  3844.  2Ah    BYTE    flag: capture active (00h or FFh, default 00h)
  3845.  2Bh    BYTE    flag: capturing to file (00h or 01h, default 00h)
  3846.  2Ch    BYTE    flag: timeout field is being decremented (default 00h)
  3847.  2Dh    DWORD    -> printer setup string
  3848.  31h    DWORD    -> printer reset string
  3849.  35h    BYTE    reserved (01h)
  3850.  36h    BYTE    flag: job has started printing (00h or FFh, default 00h)
  3851.  37h    BYTE    flag: job placed in queue (00h or FFh, default 00h)
  3852.  38h    BYTE    flag: PJobValid (00h or FFh, default 00h)
  3853.  39h    DWORD    print-queue ID
  3854.  3Dh    BYTE    low byte of print-job number (default 00h)
  3855.  3Eh    BYTE    ???
  3856.  3Fh    BYTE    number of chars in INT 17h print cache buffer (default 00h)
  3857.  40h    BYTE    ???
  3858.  41h    BYTE    high byte of print-job number (default 00h)
  3859. SeeAlso: #1586
  3860.  
  3861. (Table 1587)
  3862. Call GENERAL.VLM (VLM ID 0043h) with:
  3863. Func    Description/Registers
  3864.  01h    Gen Get Version
  3865.  03h    Gen Statistics
  3866.  04h    Gen Get/Set Primary
  3867.     BX = subfunction
  3868.         0001h get primary connection
  3869.         CX = primary connection handle to be retrieved
  3870.         Return: AX = status (see #1572)
  3871.             CX = primary connection handle
  3872.         0002h set primary connection
  3873.         CX = primary connection handle to be stored
  3874.         Return: AX = status (see #1572)
  3875.  06h    Gen Specific
  3876.     BX = subfunction
  3877.         0000h get command processor and master environment addresses
  3878.         0001h get default or primary connection
  3879.         0002h last queue information
  3880.         AL = operation
  3881.             00h zap
  3882.             01h set
  3883.             02h get
  3884.         DI:DX = queue file handle
  3885.         CX = connection handle
  3886.         0003h get/set machine name(s)
  3887.         AX = name type
  3888.             00h get short machine name
  3889.             02h get long machine name
  3890.             04h set short machine name
  3891.             06h set long machine name
  3892.             08h get DOS name
  3893.             0Ah set DOS name
  3894.         ES:SI -> ASCIZ name if setting
  3895.         0004h set search mode
  3896.  09h    Gen Return Drive Info
  3897.     BX = subfunction
  3898.         0000h get first available drive
  3899.         Return: AX = status (see #1572)
  3900.             BX = drive letter of first drive
  3901.         0001h get Lastdrive
  3902.         Return: AX = status (see #1572)
  3903.             CH = number lastdrive 1=A: - 1Ah=Z:
  3904.  
  3905. (Table 1588)
  3906. Call NETX.VLM (VLM ID 0050h) with:
  3907. Func    Description/Registers
  3908.  01h    NetX Get Version
  3909.  03h    NetX Statistics
  3910.  
  3911. (Table 1589)
  3912. Call SECURITY.VLM (VLM ID 0061h) with:
  3913. Func    Description/Registers
  3914.  01h    Security Get Version
  3915.  03h    Security Statistics
  3916.  04h    ???
  3917.     AL = subfunction
  3918.         01h compute session key
  3919.         DS:SI -> 24-byte input buffer
  3920.         ES:DI -> 8-byte output buffer
  3921. --------N-2F7A20BX0001-----------------------
  3922. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM CallA ADDRESS
  3923.     AX = 7A20h
  3924.     BX = 0001h
  3925. Return: AX = 0000h if request was handled
  3926.         ES:BX -> CallA entry point (see #1590)
  3927.  
  3928. (Table 1590)
  3929. Call VLM CallA entry point with:
  3930.     AX = function
  3931.         0000h submit
  3932.         0001h cancel (not implemented)
  3933.     ES:DI -> Overlay Asynchronous Control Block structure (see #1591)
  3934.  
  3935. Format of Overlay Asynchronous Control Block (OACB):
  3936. Offset    Size    Description    (Table 1591)
  3937.  00h    DWORD    link to next OACB, 0000h:0000h if last
  3938.  04h    DWORD    callback address or 0000h:0000h
  3939.  08h    BYTE    InUse flag (00h if complete)
  3940.  09h    BYTE    flag, reserved for VLM use
  3941.  0Ah    WORD    destination VLM
  3942.  0Ch    WORD    destination function
  3943.  0Eh    WORD    temporary storage for VLM.EXE
  3944.  10h  6 BYTEs    reserved
  3945.  16h  6 DWORDs    EAX,EBX,ECX,EDX,ESI,EDI
  3946.  2Eh  4 WORDs    DS,ES,FS,GS (FS and GS not used)
  3947. --------N-2F7A20BX0002-----------------------
  3948. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTIPLEX ADDRESS
  3949.     AX = 7A20h
  3950.     BX = 0002h
  3951. Return: AX = 0000h
  3952.     ES:BX -> VLM multiplex entry point (see #1592)
  3953. Note:    for v1.10, this function is only available while VLM.EXE is loading
  3954.       the .VLM modules, because ES is destroyed on return
  3955.  
  3956. (Table 1592)
  3957. Call DOS Requester entry point with:
  3958.     BX = function???
  3959.         0000h
  3960.         DX = ???
  3961.         DI = ???
  3962.         BP = ???
  3963.         0002h
  3964.         CX = ???
  3965.         0003h
  3966.         DX = ???
  3967.         BP = ???
  3968.         0006h
  3969.         AH = subfunction???
  3970.         AL = ???
  3971.         STACK: variable (0, 4, 10, 14 bytes seen)
  3972. --------N-2F7A20BX0003-----------------------
  3973. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM PARSE API ADDRESS
  3974.     AX = 7A20h
  3975.     BX = 0003h
  3976. Return: AX = 0000h if request was handled
  3977.         ES:BX -> VLM parse API entry point
  3978. --------N-2F7A20BX0004-----------------------
  3979. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTICAST CALLOUT
  3980.     AX = 7A20h
  3981.     BX = 0004h
  3982. Return: AX = 0000h if request was handled
  3983.         ES:BX -> VLM multicast data (see #1593)
  3984.  
  3985. Format of DOS Requester data:
  3986. Offset    Size    Description    (Table 1593)
  3987.  00h    DWORD    pointer to ??? (code)
  3988.  04h  4 BYTEs    ???
  3989.  08h    DWORD    pointer to ??? (code) (see #1594)
  3990.     ???
  3991.  
  3992. (Table 1594)
  3993. Call offset 08h function with:
  3994.     AL = function (00h-07h)
  3995.     ???
  3996. Return: ???
  3997. --------N-2F7A20BX0005-----------------------
  3998. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM INT 24 ADDRESS
  3999.     AX = 7A20h
  4000.     BX = 0005h
  4001. Return: AX = 0000h if request was handled
  4002.         ES:BX -> VLM INT 24 handler
  4003. --------N-2F7A20BX0006-----------------------
  4004. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4005.     AX = 7A20h
  4006.     BX = 0006h
  4007. Return: AX = 0000h if request was handled
  4008.         ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4009. --------N-2F7A20BX0007-----------------------
  4010. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4011.     AX = 7A20h
  4012.     BX = 0007h
  4013. Return: AX = 0000h
  4014.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4015. --------N-2F7A20BX0008-----------------------
  4016. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4017.     AX = 7A20h
  4018.     BX = 0008h
  4019. Return: AX = 0000h
  4020.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4021. --------N-2F7A20BX0080-----------------------
  4022. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4023.     AX = 7A20h
  4024.     BX = 0080h
  4025. Return: AX = 0000h
  4026.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4027. Note:    this function is identical to AX=7A20h/BX=0006h in v1.03 and v1.10
  4028. --------N-2F7A20BX0081-----------------------
  4029. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4030.     AX = 7A20h
  4031.     BX = 0081h
  4032. Return: AX = 0000h
  4033.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4034. Note:    this function is identical to AX=7A20h/BX=0007h in v1.03 and v1.10
  4035. --------N-2F7A20BX0082-----------------------
  4036. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  4037.     AX = 7A20h
  4038.     BX = 0082h
  4039. Return: AX = 0000h
  4040.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  4041. Note:    this function is identical to AX=7A20h/BX=0008h in v1.03 and v1.10
  4042. --------N-2F7A21-----------------------------
  4043. INT 2F C - Novell NetWare - DOS Requester - BROADCAST CALLBACK
  4044.     AX = 7A21h
  4045.     CX = server connection (FFFFh if message from Personal NetWare user)
  4046. Return: CX = 0000h if broadcast handled
  4047. SeeAlso: AX=7A22h,AX=7A85h
  4048. --------N-2F7A22-----------------------------
  4049. INT 2F C - Novell NetWare - DOS Requester - BROADCAST/SFT3 INFORM
  4050.     AX = 7A22h
  4051.     DL = function
  4052.         21h ('!') broadcast waiting for workstation
  4053.         40h ('@') SFT3 change inform
  4054. Return: AX = 0000h if event handled
  4055. Note:    this callback is made from within a hardware interrupt handler; a
  4056.       separate call to AX=7A21h is made once the system is in a safe
  4057.       state for receiving the message
  4058. SeeAlso: AX=7A21h
  4059. --------N-2F7A2F-----------------------------
  4060. INT 2F U - Novell NetWare - IPXODI v2.12 - GET ???
  4061.     AX = 7A2Fh
  4062. Return: AX = 0000h if supported and active
  4063.         BX = version??? (0001h)
  4064.         ES:DI -> entry point (see #1595)
  4065. Note:    IPXODI v2.12 is distributed as part of the Personal NetWare system
  4066.       bundled with Novell DOS 7
  4067. SeeAlso: INT 7A/BX=001Fh
  4068.  
  4069. (Table 1595)
  4070. Call IPXODI entry point with:
  4071.     BX = function
  4072.         0000h ???
  4073.         ES:SI -> ??? data
  4074.         0001h ???
  4075.         AX = ???
  4076.         Return: ES:SI -> ??? data
  4077.         0002h get ??? address
  4078.         Return: ES:SI -> ??? buffer
  4079.         0003h send SPX packet???
  4080.         AL = ???
  4081.         CX = ???
  4082.         DX = ???
  4083.         SI = ???
  4084.         Return: ??? (registers from a call to INT 7A/BX=0016h)
  4085. Return: BX corrupted
  4086. --------N-2F7A2FBX0EDC-----------------------
  4087. INT 2F U - Personal NetWare - HRMIB - UNINSTALL
  4088.     AX = 7A2Fh
  4089.     BX = 0EDCh ('EDC' = Novell European Development Center)
  4090. Return: ???
  4091. SeeAlso: AX=7AA0h
  4092. --------N-2F7A40-----------------------------
  4093. INT 2F U - Novell NetWare - TCP/IP Protocol Stack - INSTALLATION CHECK
  4094.     AX = 7A40h
  4095. Return: AX = 7AFFh if installed
  4096.         BX = ??? bit flags (see #1596)
  4097.         CX = version (CH=major, CL=minor)
  4098.         DX = 0000h
  4099.         ES:DI -> entry point for TCP/IP stack (see #1597)
  4100. Notes:    Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
  4101.     this function is also supported by the Beame&Whiteside BWLWP40 shim,
  4102.       but it only returns AL and ES:DI, and does not support AX=7A41h
  4103. SeeAlso: AX=7A41h,INT 15/AX=DE2Eh,INT 60"Excelan"
  4104.  
  4105. Bitfields for returned BX:
  4106. Bit(s)    Description    (Table 1596)
  4107.  0    ???
  4108.  1    ???
  4109.  15-2    reserved???
  4110.  
  4111. (Table 1597)
  4112. Call NetWare TCP/IP entry point with:
  4113.     ES:SI -> parameter block (see #1598)
  4114. Return: ES:SI parameter block updated
  4115.  
  4116. Format of NetWare TCP/IP parameter block:
  4117. Offset    Size    Description    (Table 1598)
  4118.  00h  4 BYTEs    ???
  4119.  04h    WORD    (ret) ???
  4120.  06h    WORD    (ret) ???
  4121.  08h    DWORD    -> FAR routine called if bit 7 of function code set
  4122.  0Ch    BYTE    flags???
  4123.  0Dh  7 BYTEs    ???
  4124.  14h    BYTE    (ret) ???
  4125.  15h    BYTE    (call) function code (bit 7 set if ???) (see #1599)
  4126.  16h    BYTE    socket number
  4127.  17h    BYTE    (ret) result or error code
  4128.  18h  4 WORDs    parameter words 0 to 3 (see #1599 for usage)
  4129.  20h    WORD    length of packet sent/received
  4130.  22h    WORD    number of pointer/length pairs following
  4131.  24h 6N BYTEs    buffer descriptors, each
  4132.         Offset    Size    Description
  4133.          00h    DWORD    pointer to buffer
  4134.          04h    WORD    length of buffer
  4135.  
  4136. (Table 1599)
  4137. Values for NetWare TCP/IP function code:
  4138.  01h    "accept"
  4139.  02h    "bind"
  4140.  03h    close socket
  4141.     Call:    socket number field set
  4142.  04h    "connect"
  4143.  05h    get IP address
  4144.     Call:    socket number field set to 0000h
  4145.     Return:    parameter words 1 and 2 contain caller's IP address
  4146.  06h    get hardware address
  4147.  07h    "getpeername"
  4148.  08h    get socket name
  4149.  0Ah    get netmask
  4150.  0Bh    "ioctl"
  4151.  0Ch    "listen"
  4152.  0Dh    "select"
  4153.  10h    "shutdown"
  4154.  11h    open socket
  4155.     Call:    socket number field set to 0000h
  4156.         parameter word 0 = desired protocol (6 = TCP, 17 = UDP)
  4157.     Return: socket number set
  4158.  12h    "read"
  4159.  13h    "recvfrom"
  4160.     Call:    socket number set
  4161.         packet length and buffer descriptors set
  4162.     Return:    packet length and receive buffers updated
  4163.         parameter word 1 = source port number
  4164.         parameter words 2 and 3 = source IP address
  4165.  14h    "write"
  4166.  15h    "sendto"
  4167.     Call:    socket number set
  4168.         flags field = ???
  4169.         parameter word 0 = 0000h
  4170.         parameter word 1 = destination port number
  4171.         parameter words 2 and 3 = destination IP address
  4172.         packet length and buffer descriptors set
  4173.  16h    get BOOTP data
  4174. Note:    these functions are based on the Unix socket interface
  4175. --------N-2F7A41-----------------------------
  4176. INT 2F - Novell NetWare - TCP/IP Protocol Stack - WINDOWS SUPPORT???
  4177.     AX = 7A41h
  4178.     ES:DI -> FAR entry point for ??? (will be called with BX=1,2,3,4)
  4179. Return: AX = 7AFFh if supported
  4180.         BX = ??? (see #1596)
  4181.         CX = version (CH=major, CL=minor)
  4182.         DX = 0000h
  4183.         ES:SI -> DWORD containing passed value of ES:DI
  4184.         ES:DI -> entry point for TCP/IP stack
  4185. Notes:    Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
  4186.     the pointer which is set to ES:DI is cleared to 0000h:0000h when
  4187.       a Windows exit broadcast is received
  4188. SeeAlso: AX=7A40h
  4189. --------N-2F7A42-----------------------------
  4190. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ??? ENTRY POINT
  4191.     AX = 7A42h
  4192. Return: AX = 7AFFh if supported
  4193.         ES:DI -> ??? entry point (see #1600)
  4194.  
  4195. (Table 1600)
  4196. Call NetWare TCPIP.EXE entry point with:
  4197.     DX = ???
  4198.     ES:DI -> ??? (see #1601)
  4199. Return: AX = 0000h
  4200.     other registers destroyed
  4201.  
  4202. Format of data buffer:
  4203. Offset    Size    Description    (Table 1601)
  4204.  00h    WORD    offset of WORD ??? or 0000h
  4205.  02h    WORD    offset of DWORD ??? or 0000h
  4206.  04h    WORD    offset of DWORD ??? or 0000h
  4207. --------N-2F7A43-----------------------------
  4208. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ???
  4209.     AX = 7A43h
  4210. Return: AX = 7AFFh if supported
  4211.         DX = offset of ???
  4212. SeeAlso: AX=7A44h
  4213. --------N-2F7A44-----------------------------
  4214. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - SET ???
  4215.     AX = 7A44h
  4216.     DX = offset of ??? (see AX=7A43h)
  4217. Return: AX = 7AFFh if supported
  4218. SeeAlso: AX=7A43h
  4219. --------N-2F7A4C-----------------------------
  4220. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ???
  4221.     AX = 7A4Ch
  4222. Return: AX = 7AFFh if supported
  4223.         BX = ??? (0037h)
  4224.         CX = ??? (001Ch)
  4225. --------N-2F7A4DBX0001-----------------------
  4226. INT 2F - Novell NetWare - ???
  4227.     AX = 7A4Dh
  4228.     BX = 0001h
  4229.     ES:DI -> ???
  4230. Return: AL = FFh if ???
  4231.         ES:DI -> ???
  4232. Note:    called by NETBIOS.EXE v3.01
  4233. --------N-2F7A4E-----------------------------
  4234. INT 2F - Novell LAN Workplace for DOS - RARPD.EXE - INSTALLATION CHECK
  4235.     AX = 7A4Eh
  4236. Return: AX = 7AFFh if installed
  4237. SeeAlso: AX=7A4Fh"RARPD"
  4238. --------N-2F7A4F-----------------------------
  4239. INT 2F - Novell LAN Workplace for DOS - RARPD.EXE - UNINSTALL
  4240.     AX = 7A4Fh
  4241. Return: AX = 7AFFh if installed
  4242.     DX,ES destroyed
  4243. Note:    this call conflicts with SNMP.EXE (both RARPD and SNMP are supplied
  4244.       with LAN Workplace for DOS!), such that running SNMP will uninstall
  4245.       RARPD as SNMP checks whether it is already installed!
  4246. SeeAlso: AX=7A4Eh"RARPD",AX=7A4Fh/BX=0001h
  4247. --------N-2F7A4FBX0001-----------------------
  4248. INT 2F - Novell NetWare - SNMP.EXE - INSTALLATION CHECK
  4249.     AX = 7A4Fh
  4250.     BX = 0001h
  4251. Return: AX = 7AFFh if installed
  4252. Note:    this call conflicts with RARPD.EXE (both SNMP and RARPD are supplied
  4253.       with LAN Workplace for DOS!), such that running SNMP will uninstall
  4254.       RARPD as SNMP checks whether it is already installed!
  4255. SeeAlso: AX=7A4Fh"RARPD",AX=7A4Fh/BX=0002h
  4256. --------N-2F7A4FBX0002-----------------------
  4257. INT 2F - Novell NetWare - SNMP.EXE - ???
  4258.     AX = 7A4Fh
  4259.     BX = 0002h
  4260. Return: AL = status
  4261.         4Fh if failed
  4262.         FFh if successful
  4263. SeeAlso: AX=7A4Fh/BX=0001h
  4264. --------N-2F7A80-----------------------------
  4265. INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - ABNORMAL EXIT
  4266.     AX = 7A80h
  4267. Return: nothing
  4268. Notes:    called on abnormal exit of the NetWare shell to notify other Novell
  4269.       TSRs that it is unsafe to call the shell in the future.
  4270.     must be passed through so that all interested programs see the exit
  4271.     on receiving this call, IPXODI clears an internal pointer to a
  4272.       default value; Novell's NETBIOS.EXE clears its INT 21h pointer to
  4273.       0000h:0000h and stops calling it
  4274. SeeAlso: AX=7A81h
  4275. --------N-2F7A81-----------------------------
  4276. INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - SET SHELL INT 21 HANDLER
  4277.     AX = 7A81h
  4278.     CX:DX -> shell's INT 21h entry point
  4279. Return: nothing
  4280. Notes:    the shell calls this function as it loads to allow interested TSRs
  4281.       and drivers to make a local copy of the shell's entry point
  4282.     must be passed through so that all interested programs see it
  4283. --------N-2F7A85-----------------------------
  4284. INT 2F C - Novell NetWare - shell 3.01 - BROADCAST INFORM
  4285.     AX = 7A85h
  4286.     CX = broadcast server number
  4287. Return: CX = 0000h if broadcast message handled by another program
  4288.     CX unchanged if broadcast not handled
  4289. SeeAlso: AX=7A21h
  4290. --------N-2F7A90-----------------------------
  4291. INT 2F U - Novell NetWare - NETBIOS.EXE 3+ - INSTALLATION CHECK
  4292.     AX = 7A90h
  4293. Return: AL = 00h if present
  4294.         BX = ???
  4295.         CX = PSP segment of NETBIOS resident code
  4296. SeeAlso: AX=7AFEh
  4297. --------N-2F7AA0-----------------------------
  4298. INT 2F U - Personal NetWare - HRMIB - ???
  4299.     AX = 7AA0h
  4300.     BX = function
  4301.         0000h ???
  4302.         0001h ???
  4303. Return: ???
  4304. SeeAlso: AX=7A2Fh/BX=0EDCh
  4305. --------N-2F7AC1-----------------------------
  4306. INT 2F - LAN HiJack - LHR - DISABLE???
  4307.     AX = 7AC1h
  4308. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  4309.       to take over control of a workstation remotely; LHR is the program
  4310.       run on the slave workstation
  4311. SeeAlso: AX=7AC8h,AX=7AC9h,AX=7ACFh
  4312. --------N-2F7AC2-----------------------------
  4313. INT 2F - LAN HiJack - LHR - SYNCHRONIZE SHIFT STATES???
  4314.     AX = 7AC2h
  4315. Note:    sets BIOS keyboard status byte to an internal variable
  4316. SeeAlso: AX=7AC3h,AX=7ACFh
  4317. --------N-2F7AC3-----------------------------
  4318. INT 2F - LAN HiJack - LHR - CLEAR ??? FLAG
  4319.     AX = 7AC3h
  4320. SeeAlso: AX=7AC2h,AX=7ACFh
  4321. --------N-2F7AC8-----------------------------
  4322. INT 2F - LAN HiJack - LHR - ENABLE FUNCTIONS
  4323.     AX = 7AC8h
  4324.     BL = function(s) to enable (see #1602)
  4325. SeeAlso: AX=7AC1h,AX=7AC9h,AX=7ACFh
  4326.  
  4327. Bitfields for LAN HiJack function(s) to enable/disable:
  4328. Bit(s)    Description    (Table 1602)
  4329.  0    ???
  4330.  1    remote keyboard enabled
  4331.  2    support remote's mouse
  4332.  3-7    unused
  4333. --------N-2F7AC9-----------------------------
  4334. INT 2F - LAN HiJack - LHR - DISABLE FUNCTIONS
  4335.     AX = 7AC9h
  4336.     BL = function(s) to disable (see #1602)
  4337. SeeAlso: AX=7AC1h,AX=7AC8h
  4338. --------N-2F7ACA-----------------------------
  4339. INT 2F - LAN HiJack - LHJ - ???
  4340.     AX = 7ACAh
  4341.     BL = ???
  4342. Return: ???
  4343. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  4344.       to take over control of a workstation remotely; LHJ is the program
  4345.       run on the controlling workstation
  4346. --------N-2F7ACB-----------------------------
  4347. INT 2F - LAN HiJack - LHJ - ???
  4348.     AX = 7ACBh
  4349.     BX = ???
  4350. Return: ???
  4351. Note:    this function appears to be related to the keyboard
  4352. SeeAlso: AX=7ACCh
  4353. --------N-2F7ACC-----------------------------
  4354. INT 2F - LAN HiJack - LHJ - ???
  4355.     AX = 7ACCh
  4356.     BX = ???
  4357. Return: ???
  4358. Note:    this function appears to be related to the mouse
  4359. SeeAlso: AX=7ACBh
  4360. --------N-2F7ACFBX0000-----------------------
  4361. INT 2F - LAN HiJack - LHR - INSTALLATION CHECK
  4362.     AX = 7ACFh
  4363.     BX = 0000h
  4364. Return: BX = segment of resident code if installed
  4365. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  4366.       to take over control of a workstation remotely; LHR is the program
  4367.       run on the slave workstation
  4368. --------N-2F7AF0-----------------------------
  4369. INT 2F - Novell NetWare - DOSNP.EXE v1.30G - INSTALLATION CHECK
  4370.     AX = 7AF0h
  4371. Return: AL = FFh if present
  4372.         ES = 7AF0h
  4373.         CX = PSP segment of resident code
  4374. --------N-2F7AF1-----------------------------
  4375. INT 2F - Novell NetWare - Access Server Driver - INSTALLATION CHECK
  4376.     AX = 7AF1h
  4377.     BL = sequence number (01h first driver, 02h second, 00h no driver)
  4378. Return: AX <> 7AF1h if present
  4379.         BH = total number of drivers
  4380.         ---if BL nonzero on entry---
  4381.         AL = number of ports provided by specified driver
  4382.         ES:DI -> driver entry point
  4383.               (see #1603,#1604,#1605,#1606,#1607,#1608,#1609,#1610)
  4384.         ES:DX -> ID string
  4385. SeeAlso: INT 7A/BX=001Ch
  4386.  
  4387. (Table 1603)
  4388. Call Access Server driver "initialize port" function with:
  4389.     AH = 01h
  4390.     AL = port number (00h-0Fh)
  4391.     ES:BX -> configuration parameter block (see #1616)
  4392.     interrupts disabled
  4393. Return: CF clear if successful
  4394.     CF set on error
  4395. SeeAlso: #1604
  4396.  
  4397. (Table 1604)
  4398. Call Access Server driver "get port status" function with:
  4399.     AH = 02h
  4400.     AL = port number (00h-0Fh)
  4401.     interrupts disabled
  4402. Return: CF clear if successful
  4403.         BL = transmitter status (see #1613)
  4404.         BH = receiver status (see #1614)
  4405.         DL = external status signals (see #1615)
  4406.     CF set on error
  4407.     interrupts disabled
  4408. SeeAlso: #1603,#1605,#1608
  4409.  
  4410. (Table 1605)
  4411. Call Access Server driver "get input from port" function with:
  4412.     AH = 03h
  4413.     AL = port number (00h-0Fh)
  4414.     CX = size of data buffer
  4415.     ES:BX -> buffer for data
  4416.     interrupts disabled
  4417. Return: CF clear if successful
  4418.     CF set on error
  4419.     interrupts disabled
  4420.     CX = number of bytes read
  4421. Note:    the driver will add a NUL to the buffer when a break signal is detected
  4422. SeeAlso: #1605,#1606
  4423.  
  4424. (Table 1606)
  4425. Call driver "send output data to port" function with:
  4426.     AH = 04h
  4427.     AL = port number (00h-0Fh)
  4428.     CX = number of bytes to send
  4429.     ES:BX -> buffer containing data
  4430.     interrupts disabled
  4431. Return: CF clear if successful
  4432.     CF set on error
  4433.     interrupts disabled
  4434.     CX = number of bytes actually written
  4435. SeeAlso: #1605,#1607
  4436.  
  4437. (Table 1607)
  4438. Call driver "get I/O character counts" function with:
  4439.     AH = 05h
  4440.     AL = port number (00h-0Fh)
  4441.     interrupts disabled
  4442. Return: CF clear if successful
  4443.         BX = number of bytes pending transmission
  4444.         CX = number of bytes available for reading
  4445.     CF set on error
  4446.     interrupts disabled
  4447. SeeAlso: #1605,#1606
  4448.  
  4449. (Table 1608)
  4450. Call driver "control XON/XOFF" function with:
  4451.     AH = 06h
  4452.     AL = port number (00h-0Fh)
  4453.     DL = new state
  4454.         (00h software flow control disabled, else enabled)
  4455.     interrupts disabled
  4456. Return: CF clear if successful
  4457.     CF set on error
  4458.     interrupts disabled
  4459. SeeAlso: #1609
  4460.  
  4461. (Table 1609)
  4462. Call driver "get error counts and statistics" function with:
  4463.     AH = 07h
  4464.     AL = port number (00h-0Fh)
  4465.     ES:BX -> buffer for statistics (see #1617)
  4466.     interrupts disabled
  4467. Return: CF clear if successful
  4468.         ES:BX buffer filled
  4469.     CF set on error
  4470.     interrupts disabled
  4471. SeeAlso: #1610,#1611,#1612
  4472.  
  4473. (Table 1610)
  4474. Call driver "general request" function with:
  4475.     AH = 08h
  4476.     AL = port number (00h-0Fh)
  4477.     DX = requested operations
  4478.         bit 0: flush transmit buffers
  4479.         bit 1: flush receive buffers
  4480.         bit 4: define XON/XOFF characters
  4481.     ES:BX -> XON/XOFF characters (see #1618) if DX bit 4 set
  4482.     interrupts disabled
  4483. Return: CF clear if successful
  4484.     CF set on error
  4485.     interrupts disabled
  4486.  
  4487. (Table 1611)
  4488. Call driver "deadman timer management" function with:
  4489.     AH = 09h
  4490.     AL = port number (00h-0Fh)
  4491.     BX = next time interval in seconds (0000h to disable timer)
  4492.     interrupts disabled
  4493. Return: CF clear
  4494.     interrupts disabled
  4495. SeeAlso: #1612
  4496.  
  4497. (Table 1612)
  4498. Call driver "get buffer sizes" function with:
  4499.     AH = 0Ah
  4500.     AL = port number (00h-0Fh)
  4501.     interrupts disabled
  4502. Return: CF clear if successful
  4503.        BX = size of transmit buffer
  4504.        CX = size of receive buffer
  4505.     CF set on error
  4506.     interrupts disabled
  4507. SeeAlso: #1611
  4508.  
  4509. (Table 1613)
  4510. Values for Access Server transmitter status:
  4511.  00h    uninitialized
  4512.  01h    ready, not transmitting
  4513.  02h    transmitting
  4514.  03h    XOFF received
  4515.  04h    transmitting, buffer full
  4516.  05h    XOFF received and buffer full
  4517.  
  4518. (Table 1614)
  4519. Values for Access Server receiver status:
  4520.  00h    uninitialized
  4521.  01h    ready
  4522.  02h    receive buffer full, data may have been lost
  4523.  
  4524. Bitfields for external status signals:
  4525. Bit(s)    Description    (Table 1615)
  4526.  7,6    undefined
  4527.  5    CTS active
  4528.  4    DSR active
  4529.  3    DCD active
  4530.  2,1    undefined
  4531.  0    ring indicator
  4532.  
  4533. Format of Access Server configuration parameter block:
  4534. Offset    Size    Description    (Table 1616)
  4535.  00h    BYTE    receive baud rate index
  4536.         00h 50 bps, 01h 75 bps, 02h 110 bps, 03h 134.5 bps,
  4537.         04h 150 bps, 05h 300 bps, 06h 600 bps, 07h 1200 bps,
  4538.         08h 1800 bps, 09h 2000 bps, 0Ah 2400 bps, 0Bh 3600 bps,
  4539.         0Ch 4800 bps, 0Dh 7200 bps, 0Eh 9600 bps, 0Fh 19200 bps,
  4540.         10h 38400 bps, 11h 57600 bps, 12h 115200 bps
  4541.  01h    BYTE    receive bits per character (0=5 bits..3=8 bits)
  4542.  02h    BYTE    receive stop bits
  4543.  03h    BYTE    receive parity
  4544.         00h none, 01h odd, 02h even, 03h mark, 04h space
  4545.  04h    BYTE    transmit baud rate index (same as receive baud rate)
  4546.  05h    BYTE    transmit bits per character (0=5 bits..3=8 bits)
  4547.  06h    BYTE    transmit stop bits
  4548.  07h    BYTE    transmit parity (same as receive parity)
  4549.  08h    BYTE    DTR state (00h off, 01h on)
  4550.  09h    BYTE    RTS state (00h off, 01h on)
  4551.  0Ah    BYTE    flow control (00h none, 01h XON/XOFF, 02h RTS/CTS, 03h both)
  4552.  0Bh    BYTE    break control (00h off, 01h on)
  4553.  
  4554. Format of Access Server statistics:
  4555. Offset    Size    Description    (Table 1617)
  4556.  00h    BYTE    port number
  4557.  01h    BYTE    external status signals (see #1615)
  4558.  02h    BYTE    transmitter status (see #1613)
  4559.  03h    BYTE    receiver status (see #1614)
  4560.  04h    DWORD    number of characters received
  4561.  08h    DWORD    number of characters transmitted
  4562.  0Ch    WORD    input parity errors
  4563.  0Eh    WORD    input framing errors
  4564.  10h    WORD    lost characters due to hardware overrun
  4565.  12h    WORD    lost characters due to data buffer overrun
  4566. Note:    the counts are not allowed to wrap around; once a count reaches FFFFh
  4567.       or FFFFFFFFh, it is no longer incremented
  4568.  
  4569. Format of Access Server XON/XOFF characters:
  4570. Offset    Size    Description    (Table 1618)
  4571.  00h    BYTE    04h (number of bytes following)
  4572.  01h    BYTE    transmit XON character
  4573.  02h    BYTE    transmit XOFF character
  4574.  03h    BYTE    receive XON character
  4575.  04h    BYTE    receive XOFF character
  4576. --------N-2F7AFE-----------------------------
  4577. INT 2F - Novell NetWare - DOSNP.EXE - INSTALLATION CHECK
  4578.     AX = 7AFEh
  4579. Return: AL = FFh if present
  4580.         ES = (data???) segment of DOSNP
  4581. Program: DOSNP.EXE provides "named pipes" support for DOS workstations running
  4582.        NetWare
  4583. Note:    the NetWare shell calls this function and refuses to load if DOSNP is
  4584.       present
  4585. SeeAlso: AX=7A90h
  4586. --------N-2F7AFFBX0000-----------------------
  4587. INT 2F - Novell NetWare - TBMI v1.1+ - INSTALLATION CHECK / Windows SUPPORT
  4588.     AX = 7AFFh
  4589.     BX = 0000h
  4590.     CX = 4E65h ("Ne")
  4591.     DX = 7457h ("tW")
  4592.     ES:DI -> Windows support procedure (see #1619)
  4593. Return: AL = FFh if installed
  4594.         CX = configured sockets (14h)
  4595.         DS:SI -> data table ???
  4596.         ES:DI -> IPX far call handler
  4597. Notes:    for IPX/SPX this call reportedly returns DS:SI pointing to the table
  4598.       of pointers to service events queue head and tail
  4599.     this function is also supported by IPXODI; v2.12 does not change DS,
  4600.       but does set SI to an internal address
  4601. SeeAlso: AX=7AFFh/BX=0001h
  4602.  
  4603. (Table 1619)
  4604. Values Windows support procedure called with:
  4605.     BP = function
  4606.         0001h Get ECB
  4607.         BX = socket number
  4608.         Return: ES:SI -> ECB or 0000h:0000h if none available
  4609.         0002h Count Listen ECBs
  4610.         AX = BX = socket
  4611.         Return: CX = number of listen ECBs for socket
  4612.                 (must be >= 2 for SPX to work)
  4613.         0003h ???
  4614.         0004h Inform task switcher of ECB locations
  4615.         Note:    registers other than those listed above are equal
  4616.               to the values when IPX was called
  4617. Note:    the support function will not be called if IPX is called with BX
  4618.       bit 15 set
  4619. --------N-2F7AFFBX0001-----------------------
  4620. INT 2F - Novell NetWare - TBMI v1.1+, shell v3.01d - INSTALLATION CHECK???
  4621.     AX = 7AFFh
  4622.     BX = 0001h
  4623.     CX = 4E65h ("Ne")
  4624.     DX = 7457h ("tW")
  4625. Return: AL = FFh if installed
  4626.         CX = ???  (8000h)
  4627.         SI = ??? (or -> ???) (0002h and 0007h seen)
  4628.         ES:DI -> IPX far call handler
  4629.         ES:DX -> 6-byte data area ???
  4630. Note:    this function is also supported by IPXODI, but IPXODI v2.12 does not
  4631.       return ES:DX
  4632. SeeAlso: AX=7AFFh/BX=0000h
  4633. --------d-2F7F00-----------------------------
  4634. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - INSTALLATION CHECK
  4635.     AX = 7F00h
  4636. Return: AL = FFh if installed
  4637. SeeAlso: AX=7F01h,AX=7F02h,AX=7F03h
  4638. --------d-2F7F01-----------------------------
  4639. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO COMMAND
  4640.     AX = 7F01h
  4641.     DS:DX -> command record (see #1620)
  4642. Return: AL = status
  4643.         00h successful
  4644.         else error code
  4645. SeeAlso: AX=7F00h,AX=7F02h,INT 11/AH=FFh"SDLP",INT 21/AX=4402h"ASPI"
  4646. SeeAlso: INT 4F/AX=8100h
  4647.  
  4648. Format of CD-ROM redirector command record:
  4649. Offset    Size    Description    (Table 1620)
  4650.  00h    BYTE    ID
  4651.  01h 10 BYTEs    CDB (Command Descriptor Block) for operation
  4652.  0Bh    WORD    segment of buffer
  4653.  0Dh    WORD    offset of buffer
  4654.  0Fh    BYTE    status
  4655.  10h    BYTE    sense
  4656.  12h    WORD    count
  4657. --------d-2F7F02-----------------------------
  4658. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO RESET
  4659.     AX = 7F02h
  4660. SeeAlso: AX=7F00h,AX=7F01h
  4661. --------d-2F7F03-----------------------------
  4662. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - UNINSTALL
  4663.     AX = 7F03h
  4664. Return: AL = status
  4665.         00h successful
  4666.         01h unable to uninstall
  4667. SeeAlso: AX=7F00h
  4668. ----------2F7F24-----------------------------
  4669. INT 2F - Multiplex - ???
  4670.     AX = 7F24h
  4671.     ???
  4672. Return: ???
  4673. Note:    called by PC/370, an IBM 370 emulator by Donald S. Higgins
  4674. ----------2F7F26-----------------------------
  4675. INT 2F - Multiplex - ???
  4676.     AX = 7F26h
  4677.     ???
  4678. Return: ???
  4679. Note:    called by PC/370, an IBM 370 emulator by Donald S. Higgins
  4680. --------N-2F8000-----------------------------
  4681. INT 2F - EASY-NET - INSTALLATION CHECK
  4682.     AX = 8000h
  4683. Return: AL = 00h not installed
  4684.          FFh installed
  4685. Program: EASY-NET is a shareware two-machine serial-port network
  4686. --------N-2F8000-----------------------------
  4687. INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
  4688.     AX = 8000h
  4689. Return: AL = FFh if installed
  4690.         BX = CS of resident code
  4691.         CX = ??? (03FCh)
  4692. Program: TurboNET is a NetBIOS-based file redirector and server; a
  4693.       demonstration version may be downloaded from Nanosoft's BBS
  4694. SeeAlso: AX=8100h
  4695. --------t-2F8000-----------------------------
  4696. INT 2F - CS_TSR specification - TSR INSTALLATION CHECK
  4697.     AX = 8000h
  4698.     DS:SI -> 4-byte CS_TSR signature (11h 43h 53h 10h)
  4699. Return: AL = status
  4700.         00h no CS_TSR-compliant TSRs installed
  4701.         01h installed, but signature did not match
  4702.         FFh installed, signature matches
  4703.         ES:DI -> resident process block (see #1621) of last installed
  4704.               TSR (if DS:SI pointed at signature on entry)
  4705. Program: the CS_TSR specification is a standardized TSR interface by Compact
  4706.       Soft group in Kiev, Ukraine
  4707. Desc:    determine whether any CS_TSR-compliant TSRs are installed on the
  4708.       selected multiplex number
  4709. Range:    AH=80h to AH=FFh
  4710. SeeAlso: AX=8001h"CS_TSR",AX=8002h"CS_TSR",AX=8003h"CS_TSR"
  4711.  
  4712. Format of CS_TSR process block:
  4713. Offset    Size    Description    (Table 1621)
  4714.  00h  4 BYTEs    CS_TSR signature 11h 43h 53h 10h
  4715.  04h    BYTE    INT 2F multiplex number
  4716.  05h    WORD    virtual process handle (unique among loaded TSRs)
  4717.  07h  2 BYTEs    version (binary minor version, then major version)
  4718.  09h    WORD    PSP segment of TSR
  4719.  0Bh    DWORD    pointer to ASCIZ program name
  4720.  0Fh  3 BYTEs    program creation date (day, month, year)
  4721.  12h  3 BYTEs    process start time (seconds, minutes, hours)
  4722.  15h  3 BYTEs    process start date (day, month, year)
  4723. --------F-2F8000DX0000-----------------------
  4724. INT 2F - FaxBIOS interface - INSTALLATION CHECK
  4725.     AX = 8000h
  4726.     DX = 0000h
  4727.     DI = 0000h
  4728. Return: AL = FFh if installed
  4729.     DX:DI -> signature "FaxBiosjpc"
  4730. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  4731. SeeAlso: AH=2Ah,AX=80FBh
  4732. --------N-2F8001-----------------------------
  4733. INT 2F - Nanosoft, Inc. TurboNET server - ???
  4734.     AX = 8001h
  4735.     DS:SI -> 16-byte buffer for ???
  4736. Return: AH = status
  4737.         00h successful
  4738.         01h error (TurboNET busy)
  4739. Note:    makes NetBIOS calls
  4740. --------t-2F8001-----------------------------
  4741. INT 2F - CS_TSR specification - GET HANDLE (TSR-SPECIFIC INSTALLATION CHECK)
  4742.     AX = 8001h
  4743.     DS:SI -> ASCIZ signature string for desired TSR (see #1622)
  4744. Return: BX = process handle or 0000h if specified TSR not installed
  4745.     ES:DI -> process block for TSR (see #1621) if BX<>0000h
  4746. Note:    A widely-available copy of ASCII billing itself as "ASCII 2.OO by
  4747.       Nick Zaikin Jr." is in fact a hacked copy of the Compact Soft
  4748.       ASCII v4.23 which is identical except for the changed attribution
  4749.       and version (in fact, some instances of "4.23" were missed); the
  4750.       hacked copy requires the signature string
  4751.       "ASCII 2.OO by Nick Zaikin Jr." instead of the unhacked version's
  4752.       simple signature "ASCII"
  4753. SeeAlso: AX=8000h"CS_TSR",AX=8002h"CS_TSR"
  4754.  
  4755. (Table 1622)
  4756. Values for CS_TSR signature strings:
  4757.  "ASCII"    ASCII, a popup ASCII table with character input
  4758.  "Halculator"    HALC, a 32-bit RPN WYSIWIH calculator with undo and ptr support
  4759.  "AntiTurbo"    AT!, an intelligent system slow-down utility
  4760. --------t-2F8002-----------------------------
  4761. INT 2F - CS_TSR specification - GET PROCESS BLOCK BY PROCESS HANDLE
  4762.     AX = 8002h
  4763.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  4764. Return: ES:DI -> process block for specified TSR (see #1621)
  4765.         unchanged if no match for process handle
  4766. Note:    This function is used to allocate a process handle when the TSR
  4767.       installs itself, by setting ES:DI to point at something other than
  4768.       a CS_TSR process block's signature string and iterating through the
  4769.       possible process handles (0001h to FFFFh) until ES:DI is returned
  4770.       unchanged
  4771. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8003h"CS_TSR"
  4772. --------t-2F8003-----------------------------
  4773. INT 2F - CS_TSR specification - CUSTOM SUBFUNCTION
  4774.     AX = 8003h
  4775.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  4776.     other registers vary by TSR
  4777. Return: vary by TSR, unchanged if not supported
  4778. Program: the CS_TSR specification is a standardized TSR interface by Compact
  4779.       Soft group in Kiev, Ukraine
  4780. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8002h"CS_TSR"
  4781. --------F-2F80FB-----------------------------
  4782. INT 2F - FaxBIOS interface - COMMAND SUBMISSION
  4783.     AX = 80FBh
  4784.     BX = function number (see #1623)
  4785.     DX:DI -> command buffer
  4786.           (see #1625,#1628,#1629,#1630,#1631,#1632,#1637,#1643,#1650)
  4787. Return: AL = FFh if submitted OK
  4788.     CX = result code (see #1624)
  4789. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  4790. SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
  4791.  
  4792. (Table 1623)
  4793. Values for FaxBIOS function number:
  4794.  0001h    SYS_LOGIN
  4795.  0002h    SYS_LOGOUT
  4796.  0003h    SYS_GET_FAXAPP_INFO
  4797.  0004h    STAT_IO_GET
  4798.  0005h    STAT_FAXBIOS_GET
  4799.  0006h    PDIR_OPEN
  4800.  0007h    PDIR_CLOSE (see #1633)
  4801.  0008h    PDIR_READ_PERSON (see #1634)
  4802.  0009h    PDIR_PARTIAL_READ
  4803.  000Ah    PDIR_READ_GROUP
  4804.  000Bh    PDIR_READ_MEMBER_LIST
  4805.  000Ch    PDIR_WRITE_PERSON
  4806.  000Dh    PDIR_WRITE_GROUP
  4807.  000Eh    PDIR_DELETE_PERSON
  4808.  000Fh    PDIR_DELETE_GROUP
  4809.  0010h    PDIR_READ_GROUP_LIST
  4810.  0011h    PDIR_IN_GROUP
  4811.  0012h    PDIR_OUT_GROUP
  4812.  0013h    SCHED_OPEN (see #1635)
  4813.  0014h    SCHED_ADD_DEST (see #1636)
  4814.  0015h    SCHED_ADD_FILE (see #1637)
  4815.  0016h    SCHED_SET_PARAMS (see #1638)
  4816.  0017h    SCHED_CANCEL (see #1635)
  4817.  0018h    SCHED_CLOSE (see #1639)
  4818.  0019h    SLOG_OPEN (see #1640)
  4819.  001Ah    SLOG_CLOSE (see #1640)
  4820.  001Bh    SLOG_SHORT_ENV_STAT
  4821.  001Ch    SLOG_LONG_ENV_STAT
  4822.  001Dh    SLOG_DEST_STAT
  4823.  001Eh    SLOG_FILE_STAT
  4824.  001Fh    SLOG_CANCEL_ENV
  4825.  0020h    RLOG_OPEN (see #1640)
  4826.  0021h    RLOG_CLOSE (see #1640)
  4827.  0022h    RLOG_READ
  4828.  0023h    GRAPH_GET_FILE_TYPE (see #1641)
  4829.  0024h    GRAPH_EXPORT_FILE
  4830.  0025h    GRAPH_GET_LAYOUT_INFO
  4831.  0026h    GRAPH_CREATE_FILE (see #1642)
  4832.  0027h    GRAPH_CLOSE_FILE (see #1643)
  4833.  0028h    GRAPH_CREATE_PAGE (see #1644)
  4834.  0029h    GRAPH_WRITE (see #1645)
  4835.  002Ah    GRAPH_END_PAGE
  4836.  002Bh    GRAPH_OPEN_FILE (see #1646)
  4837.  002Ch    GRAPH_GOTO_PAGE (see #1647)
  4838.  002Dh    GRAPH_READ (see #1648)
  4839.  002Eh    IOCTL_GET
  4840.  002Fh    IOCTL_SET
  4841.  0030h    IOCTL_ANSWER_FAX (see #1649)
  4842.  0031h    IOCTL_DIAL (see #1650)
  4843.  
  4844. (Table 1624)
  4845. Values for FaxBIOS result code:
  4846.  0000h    successful
  4847.  0001h    not prepared or servicing another client (busy)
  4848.  0002h    call failed due to sharing (LOCKED)
  4849.  0003h    logged-in client limit reached (FULL)
  4850.  0004h    transport denied (TRANSPORT_DENIED)
  4851.  0005h    not implemented (NOT_IMPLEMENTED)
  4852.  0006h    aborted while in progress (ABORTED)
  4853.  0007h    permissions denied (PERMISSION_DENIED)
  4854.  0008h    requested data is no longer valid (NO_LONGER_VALID)
  4855.  0080h    unspecified system error occurred
  4856.  0081h    an internal file was not found
  4857.  0082h    an internal file could not be created
  4858.  0083h    an internal file could not be opened
  4859.  0084h    an internal file could not be closed
  4860.  0085h    error occurred writing to an internal file
  4861.  0086h    error occurred reading from an internal file
  4862.  0087h    bad or corrupted file encountered
  4863.  0088h    an access violation occurred
  4864.  0089h    an internal file is empty
  4865.  008Ah    insufficient memory to process request
  4866.  008Bh    FaxBIOS was unable to issue a handle
  4867.  008Ch    an error internal to FaxBIOS occurred
  4868.  008Dh    no room on disk
  4869.  0100h    unspecified error accessing client file
  4870.  0101h    file not found
  4871.  0102h    creation fault
  4872.  0103h    open fault
  4873.  0104h    close fault
  4874.  0105h    write fault
  4875.  0106h    read fault
  4876.  0107h    file corrupted
  4877.  0108h    access violation
  4878.  0109h    empty file
  4879.  0200h    unspecified argument error
  4880.  0201h    bad function
  4881.  0202h    bad option
  4882.  0203h    bad structure size
  4883.  0204h    bad buffer size
  4884.  0205h    bad client ID
  4885.  0300h    unspecified error with token
  4886.  0301h    cover sheet token was invalid
  4887.  0302h    logo token was invalid
  4888.  0303h    signature token was invalid
  4889.  0304h    font token was invalid
  4890.  0305h    phone directory token was invalid
  4891.  0306h    outbound route token was invalid
  4892.  0307h    priority token was invalid
  4893.  0308h    sort token was invalid
  4894.  0309h    billing token was invalid
  4895.  0400h    unspecified handle error
  4896.  0401h    bad Phone Directory handle
  4897.  0402h    bad scheduling handle
  4898.  0403h    bad read send log handle
  4899.  0404h    bad read receive log handle
  4900.  0405h    bad graphics handle
  4901.  0500h    data passed in structure was invalid
  4902.  0501h    name field given is invalid
  4903.  0502h    phone number given is invalid
  4904.  0503h    poll code submitted is invalid
  4905.  0504h    file type constant was invalid
  4906.  0505h    BFT constant not defined or supported
  4907.  0506h    resolution not defined or supported
  4908.  0507h    page length not defined or supported
  4909.  0508h    page width not defined or supported
  4910.  0509h    date & time requested are ridiculous
  4911.  050Ah    Subject text was not an ASCIZ string
  4912.  050Bh    From text was not an ASCIZ string
  4913.  050Ch    requested envelope ID was not found
  4914.  050Dh    requested envelope ID is not valid
  4915.  050Eh    envelope requested was not found
  4916.  050Fh    destination index is out of range
  4917.  0510h    file index is out of range
  4918.  0511h    index into receive log is out of range
  4919.  0512h    file name specified was incomplete or invalid
  4920.  0513h    page selected was out of range
  4921.  0514h    bit width more than byte width
  4922.  0515h    mode for open is not defined
  4923.  0516h    person index is out of range
  4924.  0517h    person ID is out of range
  4925.  0518h    group index out of range or invalid
  4926.  0519h    group ID out of range or invalid
  4927.  051Ah    range of indices to read is invalid
  4928.  051Bh    group name given is invalid
  4929.  051Ch    field_to_use is badly specified
  4930.  051Dh    predicate invalid for field specified
  4931.  0600h    unspecified client procedure error
  4932.  0601h    device of interest is not present
  4933.  0602h    device of interest has been removed
  4934.  0603h    device of interest is not responding
  4935.  0604h    device of interest is disabled
  4936.  0605h    could not dial because device was in use
  4937.  0606h    maximum destination limit exceeded
  4938.  0607h    maximum file limit exceeded
  4939.  0608h    scheduling closed with no destination
  4940.  0609h    scheduling closed with no files or poll
  4941.  060Ah    scheduling closed with no parameters specified
  4942.  060Bh    file type specified does not match file
  4943.  060Ch    file type specified is not supported
  4944.  060Dh    file submitted is not exportable
  4945.  060Eh    file type specified is not imageable
  4946.  060Fh    error converting file
  4947.  0610h    envelope could not be cancelled
  4948.  0611h    Phone Directory is full
  4949.  0612h    record is already in the Phone Directory
  4950.  0613h    selected group in Phone Directory is full
  4951.  0614h    person is already in the group
  4952.  0615h    person is not in the group & cannot be removed
  4953.  0616h    a graphics file to be created already exists
  4954.  0617h    a graphics file to be read is empty
  4955.  0618h    GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
  4956.  0619h    graph read or write attempted without goto or create
  4957.  061Ah    graph page contains no data
  4958.  061Bh    Phone Directory is already open for this client
  4959.  061Ch    schedule log is already open for this client
  4960.  061Dh    receive log is aready open for this client
  4961.  061Eh    Phone Directory function requires write mode
  4962.  0800h    denied exclusive use of the API
  4963.  
  4964. Format of FaxBIOS SYS_LOGIN command buffer:
  4965. Offset    Size    Description    (Table 1625)
  4966.  00h    WORD    structure size
  4967.  02h    WORD    function number
  4968.  04h    WORD    return code
  4969.  06h    WORD    client ID
  4970.  08h    WORD    API Major Version
  4971.  0Ah    WORD    API Minor Version
  4972.  0Ch    DWORD    reserved for manufacturer's use
  4973.  10h 22 BYTEs    manufacturer's ID
  4974.  26h    WORD    highest possible device number
  4975.  28h    WORD    maximum destinations per envelope
  4976.  2Ah    WORD    maximum files per envelope
  4977.  2Ch    WORD    FaxBIOS capabilities (see #1626)
  4978.  2Eh    DWORD    T.30 capabilities (see #1627)
  4979.  32h    WORD    IPC handle
  4980.  34h    DWORD    amount of memory needed to load
  4981.  38h    WORD    scope (00h for public, nonzero for private)
  4982.  3Ah  6 BYTEs    future expansion
  4983.  40h    WORD    structure size
  4984.  
  4985. Bitfields for FaxBIOS capabilities:
  4986. Bit(s)    Description    (Table 1626)
  4987.  0    transmit supported
  4988.  1    receive supported
  4989.  2    IOCTL supported
  4990.  3    IOCTL_DIAL supported
  4991.  4    IOCTL_ANSWER_FAX supported
  4992.  5    manual transmit supported
  4993.  6    optional phone services supported
  4994.  7    canonical phone objects
  4995.  8    seam with next supported
  4996.  
  4997. Bitfields for T.30 capabilities:
  4998. Bit(s)    Description    (Table 1627)
  4999.  0    low vertical resolution (minimum)
  5000.  1    high vertical resolution
  5001.  2    page width 107mm (4.21 in)
  5002.  3    page width 151mm (5.91 in)
  5003.  4    page width 215mm (8.46 in) (minimum)
  5004.  5    page width 255mm (10.04 in)
  5005.  6    page width 303mm (11.93 in)
  5006.  7    unused
  5007.  8    page length 297mm (11.69 in) (minimum)
  5008.  9    page length 364mm (14.33 in)
  5009.  10    page length 279mm (11 in)
  5010.  11    page length unlimited
  5011.  12    Group 4 resolution 300x300
  5012.  13    Group 4 resolution 400x400
  5013.  14    able to respond to poll from remote
  5014.  15    able to poll remote
  5015.  16    binary file transfer supported
  5016.  
  5017. Format of FaxBIOS SYS_LOGOUT command buffer:
  5018. Offset    Size    Description    (Table 1628)
  5019.  00h    WORD    structure size
  5020.  02h    WORD    function number
  5021.  04h    WORD    return code
  5022.  06h    WORD    client ID
  5023.  08h    DWORD    client tag (for client's internal use)
  5024.  0Ch  6 BYTEs    future expansion
  5025.  12h    WORD    structure size
  5026.  
  5027. Format of FaxBIOS SYS_GET_FAXAPP_INFO command buffer:
  5028. Offset    Size    Description    (Table 1629)
  5029.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5030.  0Ch 80 BYTEs    FaxBIOS data
  5031.  5Ch 80 BYTEs    default cover
  5032.  ACh 80 BYTEs    default logo
  5033.  FCh 80 BYTEs    default signature
  5034. 14Ch 80 BYTEs    default font 10
  5035. 19Ch 80 BYTEs    default font 165
  5036. 1ECh 80 BYTEs    default user font
  5037. 23Ch 80 BYTEs    default Pdir
  5038. 28Ch 80 BYTEs    default sort
  5039. 2DCh 10 BYTEs    default bill
  5040. 2E6h 10 BYTEs    default route
  5041. 2F0h 40 BYTEs    default cover sheet form
  5042. 318h 34 BYTEs    valid dial characters
  5043. 33Ah  6 BYTEs    local country code
  5044. 340h  6 BYTEs    local city or area code
  5045. 346h  6 BYTEs    future expansion
  5046. 34Ch    WORD    structure size
  5047.  
  5048. Format of FaxBIOS STAT_IO_GET command buffer:
  5049. Offset    Size    Description    (Table 1630)
  5050.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5051.  0Ch    WORD    device number
  5052.  0Eh    WORD    current activity
  5053.  10h    WORD    number of rings (if ringing)
  5054.  12h    WORD    number of fascimiles transmitted
  5055.  14h    WORD    number of fascimiles received
  5056.  16h    WORD    status of last transmission
  5057.  18h    WORD    envelope number of last transmission
  5058.  1Ah    WORD    index of last destination in envelope
  5059.  1Ch    WORD    status of last reception
  5060.  1Eh    WORD    current page (if session in progress)
  5061.  20h 80 BYTEs    current file
  5062.  70h 104 BYTEs    remote number
  5063.  D8h 20 BYTEs    last name
  5064.  ECh 20 BYTEs    first name
  5065. 100h 32 BYTEs    company name
  5066. 120h 32 BYTEs    notes
  5067. 140h    WORD    current envelope ID (if sending)
  5068. 142h    WORD    total pages in transmission (if sending)
  5069. 144h  6 BYTEs    future expansion
  5070. 14h    WORD    structure size
  5071.  
  5072. Format of FaxBIOS STAT_FAXBIOS_GET command buffer:
  5073. Offset    Size    Description    (Table 1631)
  5074.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5075.  0Ch    WORD    status ID
  5076.  0Eh    WORD    currenty FaxBIOS function number
  5077.  10h    WORD    current Client ID being serviced
  5078.  12h    WORD    number of things to do
  5079.  14h    WORD    number of them done
  5080.  16h    WORD    number of pages to do (if any)
  5081.  18h    WORD    number of them done
  5082.  1Ah    WORD    number of files to do
  5083.  1Ch    WORD    number of them done
  5084.  1Eh 80 BYTEs    current File
  5085.  6Eh    WORD    0 if all devices are idle
  5086.  70h    WORD    number of fascimiles transmitted
  5087.  72h    WORD    number of fascimiles received
  5088.  74h    WORD    status of last transmission in system
  5089.  76h    WORD    envelope ID of last transmission
  5090.  78h    WORD    index of last destination in envelope
  5091.  7Ah    WORD    status of last reception in system
  5092.  7Ch    DWORD    time of next transmission
  5093.  80h  6 BYTEs    future expansion
  5094.  86h    WORD    structure size
  5095.  
  5096. Format of FaxBIOS PDIR_OPEN command buffer:
  5097. Offset    Size    Description    (Table 1632)
  5098.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5099.  0Ch 80 BYTEs    Phone Directory token
  5100.  5Ch 80 BYTEs    sort order token
  5101.  ACh    WORD    open Mode (0 = read, 1 = write)
  5102.  AEh    WORD    Phone Directory handle
  5103.  B0h    WORD    number of people
  5104.  B2h    WORD    number of groups
  5105.  B4h    WORD    bitmap of fields supported by partial read
  5106.  B6h  6 BYTEs    future expansion
  5107.  BCh    WORD    structure size
  5108.  
  5109. Format of FaxBIOS PDIR_CLOSE command buffer:
  5110. Offset    Size    Description    (Table 1633)
  5111.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5112.  0Ch    WORD    Phone Directory handle
  5113.  0Eh  6 BYTEs    future expansion
  5114.  14h    WORD    structure size
  5115.  
  5116. Format of FaxBIOS PDIR_READ_PERSON command buffer:
  5117. Offset    Size    Description    (Table 1634)
  5118.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5119.  0Ch    WORD    Phone Directory handle
  5120.  0Eh    WORD    retrieve by index
  5121.  10h    WORD    person ID or index
  5122.  12h    WORD    how many groups person is in
  5123.  14h    WORD    person ID
  5124.  16h 20 BYTEs    last name
  5125.  2Ah 20 BYTEs    first name
  5126.  3Eh 32 BYTEs    company
  5127.  5Eh 32 BYTEs    notes
  5128.  7Eh  6 BYTEs    FAX country code
  5129.  84h  6 BYTEs    FAX city/area code
  5130.  8Ah 14 BYTEs    FAX local number
  5131.  98h 14 BYTEs    FAX extension
  5132.  A6h 24 BYTEs    reserved
  5133.  BEh  6 BYTEs    voice country code
  5134.  C4h  6 BYTEs    voice city/area code
  5135.  CAh 14 BYTEs    voice local number
  5136.  D8h 14 BYTEs    voice extension
  5137.  E6h 24 BYTEs    reserved
  5138.  FEh 10 BYTEs    outbound routing information
  5139. 108h 10 BYTEs    billing information, credit card etc
  5140. 112h    DWORD    remote FAX capabilities
  5141. 116h 21 BYTEs    T.30 poll code of FAX number
  5142. 12Bh 15 BYTEs    reserved
  5143. 13Ah  6 BYTEs    future expansion
  5144. 140h    WORD    structure size
  5145.  
  5146. Format of FaxBIOS SCHED_OPEN, SCHED_CANCEL command buffer:
  5147. Offset    Size    Description    (Table 1635)
  5148.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5149.  0Ch    WORD    scheduler handle
  5150.  0Eh  6 BYTEs    future expansion
  5151.  14h    WORD    structure size
  5152.  
  5153. Format of FaxBIOS SCHED_ADD_DEST command buffer:
  5154. Offset    Size    Description    (Table 1636)
  5155.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5156.  0Ch    WORD    schedule handle
  5157.  0Eh    WORD    device number if manual send wanted
  5158.  10h    WORD    non-zero if poll desired
  5159.  12h    WORD    person ID
  5160.  14h 20 BYTEs    last name
  5161.  28h 20 BYTEs    first name
  5162.  3Ch 32 BYTEs    company
  5163.  5Ch 32 BYTEs    notes
  5164.  7Ch  6 BYTEs    FAX country code
  5165.  82h  6 BYTEs    FAX city/area code
  5166.  88h 14 BYTEs    FAX local number
  5167.  96h 14 BYTEs    FAX extension
  5168.  A4h 24 BYTEs    reserved
  5169.  BCh  6 BYTEs    voice country code
  5170.  C2h  6 BYTEs    voice city/area code
  5171.  C8h 14 BYTEs    voice local number
  5172.  D6h 14 BYTEs    voice extension
  5173.  E4h 24 BYTEs    reserved
  5174.  FCh 10 BYTEs    outbound routing information
  5175. 106h 10 BYTEs    billing information, credit card etc
  5176. 110h    DWORD    remote FAX capabilities
  5177. 114h 21 BYTEs    T.30 poll code of FAX number
  5178. 129h 15 BYTEs    reserved
  5179. 138h  6 BYTEs    future expansion
  5180. 13Eh    WORD    structure size
  5181. SeeAlso: #1637
  5182.  
  5183. Format of FaxBIOS SCHED_ADD_FILE command buffer:
  5184. Offset    Size    Description    (Table 1637)
  5185.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5186.  0Ch    WORD    schedule handle
  5187.  0Eh    WORD    file type
  5188.         0000h unidentified
  5189.         0001h native file format
  5190.         0002h ASCII
  5191.         0003h FaxBIOS Tiff Class F
  5192.  10h 80 BYTEs    file name
  5193.  60h 80 BYTEs    font token
  5194.  B0h    WORD    conversion options bitmap
  5195.  B2h    WORD    resolution
  5196.         0000h standard 98 lines per inch, 204 dpi
  5197.         0001h fine 196 lines per inch, 204 dpi
  5198.         0002h Group4 300 dpi
  5199.         0003h Group4 400 dpi
  5200.  B4h    WORD    page length
  5201.         0000h 279 mm (11 in)
  5202.         0001h 297 mm (11.69 in)
  5203.         0002h 364 mm (14.33 in)
  5204.         0003h unlimited
  5205.  B6h    WORD    page width
  5206.         0000h 215 mm (8.46 in)
  5207.         0001h 255 mm (10.04 in)
  5208.         0002h 303 mm (11.93 in)
  5209.         0003h 151 mm (5.91 in)
  5210.         0004h 107 mm (4.21 in)
  5211.  B8h    WORD    binary file transfer specification
  5212.         0000h only as FAX
  5213.         0001h only as file (for non-faxable files)
  5214.         0002h as file when possible else FAX
  5215.  BAh    WORD    seam flag (nonzero for seam with next)
  5216.  BCh    WORD    delete flag (nonzero to delete when done)
  5217.  BEh  6 BYTEs    future expansion
  5218.  C4h    WORD    structure size
  5219. SeeAlso: #1636,#1638
  5220.  
  5221. Format of FaxBIOS SCHED_SET_PARAMS command buffer:
  5222. Offset    Size    Description    (Table 1638)
  5223.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5224.  0Ch    WORD    scheduler handle
  5225.  0Eh    DWORD    time to send
  5226.  10h 10 BYTEs    priority token
  5227.  1Ch 80 BYTEs    logo file token
  5228.  6Ch 80 BYTEs    signature file token
  5229.  BCh 80 BYTEs    cover page token
  5230. 10Ch 40 BYTEs    Subject text
  5231. 134h 40 BYTEs    From text
  5232. 15Ch    WORD    user ID
  5233. 15Eh  6 BYTEs    future expansion
  5234. 164h    WORD    structure size
  5235. SeeAlso: #1636,#1637,#1639
  5236.  
  5237. Format of FaxBIOS SCHED_CLOSE command buffer:
  5238. Offset    Size    Description    (Table 1639)
  5239.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5240.  0Ch    WORD    scheduler handle
  5241.  0Eh    WORD    envelope ID generated
  5242.  10h  6 BYTEs    future expansion
  5243.  16h    WORD    structure size
  5244. SeeAlso: #1638
  5245.  
  5246. Format of FaxBIOS SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
  5247. Offset    Size    Description    (Table 1640)
  5248.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5249.  0Ch    WORD    log handle
  5250.  0Eh    WORD    number of entries
  5251.  10h  6 BYTEs    future expansion
  5252.  16h    WORD    structure size
  5253.  
  5254. Format of FaxBIOS GRAPH_GET_FILE_TYPE command buffer:
  5255. Offset    Size    Description    (Table 1641)
  5256.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5257.  0Ch 80 BYTEs    filename
  5258.  5Ch    WORD    file type
  5259.         0000h unidentified
  5260.         0001h native file format
  5261.         0002h ASCII
  5262.         0003h FaxBIOS Tiff Class F
  5263.  5Eh    WORD    bitmap of supported capabilities
  5264.  60h  6 BYTEs    future expansion
  5265.  66h    WORD    structure size
  5266. SeeAlso: #1642,#1643
  5267.  
  5268. Format of FaxBIOS GRAPH_CREATE_FILE command buffer:
  5269. Offset    Size    Description    (Table 1642)
  5270.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5271.  0Ch 80 BYTEs    filename
  5272.  5Ch    WORD    graph handle
  5273.  5Eh  6 BYTEs    future expansion
  5274.  64h    WORD    structure size
  5275. SeeAlso: #1641,#1643,#1644
  5276.  
  5277. Format of FaxBIOS GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
  5278. Offset    Size    Description    (Table 1643)
  5279.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5280.  0Ch    WORD    graph handle
  5281.  0Eh  6 BYTEs    future expansion
  5282.  14h    WORD    structure size
  5283. SeeAlso: #1642,#1644
  5284.  
  5285. Format of FaxBIOS GRAPH_CREATE_PAGE command buffer:
  5286. Offset    Size    Description    (Table 1644)
  5287.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5288.  0Ch    WORD    graph handle
  5289.  0Eh    WORD    resolution
  5290.  10h    WORD    page width
  5291.  12h  6 BYTEs    future expansion
  5292.  18h    WORD    structure size
  5293. SeeAlso: #1642,#1643,#1645
  5294.  
  5295. Format of FaxBIOS GRAPH_WRITE_PAGE command buffer:
  5296. Offset    Size    Description    (Table 1645)
  5297.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5298.  0Ch    WORD    graph handle
  5299.  0Eh    DWORD    pointer to storage for image
  5300.  12h    WORD    band height in lines
  5301.  14h    WORD    width of page image in bytes
  5302.  16h    WORD    facsimile page width constant
  5303.  18h    WORD    width of page image in bits
  5304.  1Ah    WORD    number of bytes actually processed
  5305.  1Ch  6 BYTEs    future expansion
  5306.  22h    WORD    structure size
  5307. SeeAlso: #1644,#1646
  5308.  
  5309. Format of FaxBIOS GRAPH_OPEN_FILE command buffer:
  5310. Offset    Size    Description    (Table 1646)
  5311.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5312.  0Ch 80 BYTEs    filename
  5313.  5Ch    WORD    file type
  5314.  5Eh    WORD    graph handle
  5315.  60h    WORD    number of pages
  5316.  62h  6 BYTEs    future expansion
  5317.  68h    WORD    structure size
  5318. SeeAlso: #1645,#1647
  5319.  
  5320. Format of FaxBIOS GRAPH_GOTO_PAGE command buffer:
  5321. Offset    Size    Description    (Table 1647)
  5322.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5323.  0Ch    WORD    graph handle
  5324.  0Eh    WORD    page number
  5325.  10h    WORD    vertical resolution
  5326.  12h    WORD    page width
  5327.  14h    DWORD    page length
  5328.  18h  6 BYTEs    future expansion
  5329.  1Eh    WORD    structure size
  5330. SeeAlso: #1645,#1646,#1648
  5331.  
  5332. Format of FaxBIOS GRAPH_READ_PAGE command buffer:
  5333. Offset    Size    Description    (Table 1648)
  5334.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5335.  0Ch    WORD    graph handle
  5336.  0Eh    DWORD    pointer to storage for image
  5337.  12h    WORD    band height in lines
  5338.  14h    WORD    width of page image in bytes
  5339.  16h    WORD    facsimile page width constant
  5340.  18h    WORD    width of page image in bits
  5341.  1Ah    WORD    number of bytes actually processed
  5342.  1Ch  6 BYTEs    future expansion
  5343.  22h    WORD    structure size
  5344.  
  5345. Format of FaxBIOS IOCTL_ANSWER_FAX command buffer:
  5346. Offset    Size    Description    (Table 1649)
  5347.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5348.  0Ch    WORD    device number
  5349.  0Eh  6 BYTEs    future expansion
  5350.  14h    WORD    structure size
  5351. SeeAlso: #1650
  5352.  
  5353. Format of FaxBIOS IOCTL_DIAL command buffer:
  5354. Offset    Size    Description    (Table 1650)
  5355.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  5356.  0Ch    WORD    device number
  5357.  0Eh  6 BYTEs    country code
  5358.  14h  6 BYTEs    city or area code
  5359.  1Ah 14 BYTEs    local number
  5360.  28h 14 BYTEs    extension
  5361.  36h 14 BYTEs    reserved
  5362.  4Eh  6 BYTEs    future expansion
  5363.  54h    WORD    structure size
  5364. SeeAlso: #1649
  5365. --------N-2F8100-----------------------------
  5366. INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
  5367.     AX = 8100h
  5368. Return: AL = FFh if installed
  5369. Program: TurboNET is a NetBIOS-based file redirector and server; a
  5370.       demonstration version may be downloaded from Nanosoft's BBS
  5371. SeeAlso: AX=8000h"TurboNET"
  5372. --------N-2F8101-----------------------------
  5373. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  5374.     AX = 8101h
  5375. Return: AL = ???
  5376.     DL = ???
  5377. --------N-2F8102-----------------------------
  5378. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  5379.     AX = 8102h
  5380. Return: AL = ???
  5381.     DL = ???
  5382. --------N-2F8103-----------------------------
  5383. INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
  5384.     AX = 8103h
  5385.     ES:DI -> 17-byte buffer
  5386. Return: buffer filled
  5387. --------N-2F8104-----------------------------
  5388. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  5389.     AX = 8104h
  5390.     BL = ???
  5391.     BH = ???
  5392.     CX = ???
  5393.     DX = ???
  5394.     DS:SI -> 16-byte buffer containing ???
  5395. Return: AL = 00h ???
  5396. --------N-2F8105-----------------------------
  5397. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  5398.     AX = 8105h
  5399.     CX = ??? (don't change current value if 0000h)
  5400.     DX = ??? (don't change current value if 0000h)
  5401. Return: AL = 00h successful
  5402. --------s-2F8200-----------------------------
  5403. INT 2F - RESPLAY - SAMPLE/PLAYBACK
  5404.     AX = 8200h
  5405.     DX:DI -> start of sample space
  5406.     CX:BX = length in bytes
  5407. Return: AX = status (see #1651)
  5408. Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  5409. SeeAlso: AX=8201h"RESPLAY",AX=8210h
  5410.  
  5411. (Table 1651)
  5412. Values for RESPLAY status:
  5413.  1000h    successful
  5414.  2000h    not initialized (see AX=8210h)
  5415.  other    RESPLAY not installed
  5416. --------G-2F8200-----------------------------
  5417. INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
  5418.     AX = 8200h
  5419. Return: AL = FFh if installed
  5420. Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
  5421.       captured and recorded for later analysis
  5422. SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
  5423. SeeAlso: AX=8204h"CAPDOS"
  5424. --------s-2F8201-----------------------------
  5425. INT 2F - RESPLAY - INSTALLATION CHECK
  5426.     AX = 8201h
  5427. Return: AX = 7746h if installed
  5428. SeeAlso: AX=8202h"RESPLAY",AX=8210h
  5429. --------G-2F8201-----------------------------
  5430. INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
  5431.     AX = 8201h
  5432. Note:    resets queue of captured INT 21 calls
  5433. SeeAlso: AX=8200h"CAPDOS"
  5434. --------s-2F8202-----------------------------
  5435. INT 2F - RESPLAY - UNINSTALL
  5436.     AX = 8202h
  5437. Return: AX = status
  5438.         1000h successful
  5439. SeeAlso: AX=8201h"RESPLAY",AX=8210h"RESPLAY"
  5440. --------G-2F8202-----------------------------
  5441. INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
  5442.     AX = 8202h
  5443. SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
  5444. --------G-2F8203-----------------------------
  5445. INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
  5446.     AX = 8203h
  5447. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
  5448. --------G-2F8204-----------------------------
  5449. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
  5450.     AX = 8204h
  5451. Return: AH = flag: queue wrapped if nonzero
  5452.     BX = index of current start of queue
  5453.     CX = size of queue in entries
  5454. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
  5455. --------G-2F8205-----------------------------
  5456. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
  5457.     AX = 8205h
  5458.     BX = queue item number
  5459. Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
  5460. SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
  5461. --------s-2F8210-----------------------------
  5462. INT 2F - RESPLAY - INITIALIZE
  5463.     AX = 8210h
  5464.     BL = sound device number (see #1652)
  5465.     BH = sample rate in multiples of 250 Hz (14h to A0h)
  5466.     CL = direction
  5467.         00h playback
  5468.         01h sample
  5469. Return: AX = status (see #1651)
  5470. SeeAlso: AX=8200h"RESPLAY"
  5471.  
  5472. (Table 1652)
  5473. Values for RESPLAY sound device:
  5474.  00h    printer port LPT1
  5475.  01h    printer port LPT2
  5476.  02h    prototype board at I/O address 0300h
  5477.  03h    printer port (alternative LPT1)
  5478.  04h    internal speaker
  5479. ----------2F86-------------------------------
  5480. INT 2F U - ???
  5481.     AH = 86h
  5482.     AL = function (at least 06h and 07h)
  5483.     ???
  5484. Return: ???
  5485. Note:    called by Codeview for Windows
  5486. SeeAlso: AH=44h
  5487. --------U-2F8900-----------------------------
  5488. INT 2F - WHOA!.COM - INSTALLATION CHECK
  5489.     AX = 8900h
  5490. Return: AL = state
  5491.         00h not installed
  5492.         FFh installed
  5493. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  5494. SeeAlso: AX=8901h,AX=8902h
  5495. --------U-2F8901-----------------------------
  5496. INT 2F - WHOA!.COM - UNINSTALL
  5497.     AX = 8901h
  5498. Return: AL = status
  5499.         FDh successful
  5500.         FEh error
  5501. SeeAlso: AX=8900h
  5502. --------U-2F8902-----------------------------
  5503. INT 2F - WHOA!.COM - SET DELAY COUNT
  5504.     AX = 8902h
  5505.     BX = delay count (larger values slow system down more)
  5506. Return: AL = status
  5507.         FDh successful
  5508.         FEh error
  5509. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  5510. SeeAlso: AX=8900h
  5511. --------U-2F9000-----------------------------
  5512. INT 2F U - RAID - INSTALLATION CHECK
  5513.     AX = 9000h
  5514. Return: AL = FFh if installed
  5515. Program: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
  5516.       that resides mostly in EMS
  5517. --------U-2F9001-----------------------------
  5518. INT 2F U - RAID - GET ???
  5519.     AX = 9001h
  5520. Return: DX:AX -> ???
  5521. SeeAlso: AX=9000h
  5522. --------U-2F9002-----------------------------
  5523. INT 2F U - RAID - GET RESIDENT SEGMENT
  5524.     AX = 9002h
  5525. Return: AX = segment of resident (conventional memory) portion
  5526. SeeAlso: AX=9000h
  5527. --------U-2F9003-----------------------------
  5528. INT 2F U - RAID - UNINSTALL
  5529.     AX = 9003h
  5530. Return: ???
  5531. SeeAlso: AX=9000h
  5532. --------U-2F9004-----------------------------
  5533. INT 2F U - RAID - GET ???
  5534.     AX = 9004h
  5535. Return: AX = first available paragraph past end of resident portion???
  5536.     CX destroyed
  5537. SeeAlso: AX=9000h
  5538. --------e-2F92-------------------------------
  5539. INT 2F - Network Courier E-Mail - API
  5540.     AH = 92h
  5541.     AL = function
  5542.         00h installation check
  5543.         01h uninstall
  5544.         02h pop down MICRO.EXE notification window
  5545.         03h ???
  5546.         04h ???
  5547.         05h ???
  5548. Return: ???
  5549. Program: The Network Courier is an electronic mail package by Consumers
  5550.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  5551.       renamed Microsoft Mail v3.0.
  5552. SeeAlso: AX=9400h,AX=9401h,AX=9402h,AH=9Ch
  5553. Index:    installation check;Network Courier E-Mail
  5554. Index:    uninstall;Network Courier E-Mail
  5555. --------R-2F9200-----------------------------
  5556. INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
  5557.     AX = 9200h
  5558. Program: DRIVEMAP is a redirector which allows drives on computers connected
  5559.       over the parallel or serial ports to appear as local drives
  5560. BUG:    jumps to data because jump table entry is 0000h
  5561. Note:    DRIVEMAP returns AX=FFFFh if not a valid function number in AL
  5562. --------R-2F9201-----------------------------
  5563. INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
  5564.     AX = 9201h
  5565.     DL = drive number (01h = A:, etc.)
  5566. Return: AL = 92h if mapped drive
  5567.     AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
  5568. SeeAlso: AX=9204h,AX=920Bh
  5569. --------R-2F9202-----------------------------
  5570. INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
  5571.     AX = 9202h
  5572.     BX = caller's CS
  5573. Return: AX = status
  5574.         0000h failed
  5575.         nonzero successful
  5576. SeeAlso: AX=9204h
  5577. --------R-2F9203-----------------------------
  5578. INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
  5579.     AX = 9203h
  5580. Return: AH = major version
  5581.     AL = minor version
  5582.     CX = segment of resident code
  5583. Note:    the DRIVEMAP included with PC Tools v8.0 is version 1.00
  5584. SeeAlso: AX=9204h,INT 16/AX=FF70h
  5585. --------R-2F9204-----------------------------
  5586. INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
  5587.     AX = 9204h
  5588. Return: AX = 9200h if installed
  5589.        BL = ???
  5590.        CX = segment of resident code
  5591. Program: DRIVEMAP is a redirector which allows drives on computers connected
  5592.       over the parallel or serial ports to appear as local drives
  5593. SeeAlso: AX=9201h,AX=9202h,AX=9203h
  5594. --------R-2F9205-----------------------------
  5595. INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
  5596.     AX = 9205h
  5597.     BX = ??? to set
  5598. Return: CX = new value of ???
  5599. --------R-2F9206-----------------------------
  5600. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5601.     AX = 9206h
  5602.     ???
  5603. Return: ???
  5604. --------R-2F9207-----------------------------
  5605. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  5606.     AX = 9207h
  5607.     ???
  5608. Return: AX = ???
  5609. --------R-2F9208-----------------------------
  5610. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5611.     AX = 9208h
  5612.     ???
  5613. Return: ???
  5614. --------R-2F9209-----------------------------
  5615. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5616.     AX = 9209h
  5617.     ???
  5618. Return: AX = ???
  5619.     BX = ???
  5620.     CX = ???
  5621.     DX = ???
  5622. --------R-2F920A-----------------------------
  5623. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5624.     AX = 920Ah
  5625.     BX = ???
  5626. Return: AX = ??? or FFFBh on error
  5627. --------R-2F920B-----------------------------
  5628. INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
  5629.     AX = 920Bh
  5630.     BL = drive letter (41h ['A'] = A:, etc)
  5631.     CX = ??? (0000h removes mapping)
  5632. Return: AX = ??? or FFF8h on error
  5633. SeeAlso: AX=9201h,AX=920Dh
  5634. --------R-2F920C-----------------------------
  5635. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5636.     AX = 920Ch
  5637.     ???
  5638. Return: AX = ??? (0002h)
  5639.     CX = ??? (0000h)
  5640. --------R-2F920D-----------------------------
  5641. INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
  5642.     AX = 920Dh
  5643.     BL = drive letter (41h ['A'] = A:, etc)
  5644. Return: AX = type flags
  5645.         bit 0: ???
  5646.         bit 1: available
  5647.         bit 5: local
  5648.     BX = ???
  5649.     CX = segment of resident code (apparently an unintended side effect)
  5650. Program: DRIVEMAP is a redirector which allows drives on computers connected
  5651.       over the parallel or serial ports to appear as local drives
  5652. SeeAlso: AX=9218h,INT 16/AX=FF70h
  5653. --------R-2F920E-----------------------------
  5654. INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
  5655.     AX = 920Eh
  5656.     BX = port number (0-2)
  5657.     CX = ??? (0000h to unmap)
  5658. Return: ???
  5659. --------R-2F920F-----------------------------
  5660. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  5661.     AX = 920Fh
  5662.     ES:DI -> 3-byte buffer for ???
  5663. Return: CX = 0000h
  5664.     ES:DI buffer filled
  5665. --------R-2F9210-----------------------------
  5666. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5667.     AX = 9210h
  5668.     ???
  5669. Return: ???
  5670. --------R-2F9211-----------------------------
  5671. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  5672.     AX = 9211h
  5673.     ES:DI -> 8-word buffer for ???
  5674. Return: CX = 0000h
  5675.     ES:DI buffer filled
  5676. --------R-2F9212-----------------------------
  5677. INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
  5678.     AX = 9212h
  5679.     BX = phase
  5680.         0000h leave critical section???
  5681.         nonzero enter critical section???
  5682. --------R-2F9213-----------------------------
  5683. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5684.     AX = 9213h
  5685.     BX = function number (0000h-000Bh)
  5686.     ???
  5687. Return: ???
  5688. --------R-2F9214-----------------------------
  5689. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  5690.     AX = 9214h
  5691.     ES:DI -> 6-word buffer for ???
  5692. Return: CX = 0000h
  5693.     AX = ???
  5694.     ES:DI buffer filled
  5695. --------R-2F9215-----------------------------
  5696. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  5697.     AX = 9215h
  5698.     ES:DI -> 100-word buffer for ???
  5699. Return: CX = 0000h
  5700.     ES:DI buffer filled
  5701. --------R-2F9216-----------------------------
  5702. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5703.     AX = 9216h
  5704.     ES:DI -> ???
  5705. Return: ???
  5706. --------R-2F9217-----------------------------
  5707. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5708.     AX = 9217h
  5709.     DS:SI -> 25-word buffer containing ???
  5710. Return: ???
  5711. --------R-2F9218-----------------------------
  5712. INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
  5713.     AX = 9218h
  5714.     BX = port number???
  5715. Return: AX = ???
  5716.     BX = ??? (0000h)
  5717.     CX = ??? (0000h)
  5718. Program: DRIVEMAP is a redirector which allows drives on computers connected
  5719.       over the parallel or serial ports to appear as local drives
  5720. --------R-2F9219-----------------------------
  5721. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5722.     AX = 9219h
  5723.     ???
  5724. Return: ???
  5725. --------R-2F921A-----------------------------
  5726. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5727.     AX = 921Ah
  5728.     ???
  5729. Return: AH = ???
  5730.     AL = ???
  5731.     BX = ???
  5732. --------R-2F921B-----------------------------
  5733. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5734.     AX = 921Bh
  5735.     ???
  5736. Return: AX = ???
  5737.     CX = segment of resident code (apparently an unintended side effect)
  5738. --------R-2F921C-----------------------------
  5739. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5740.     AX = 921Ch
  5741.     ???
  5742. Return: ???
  5743. --------R-2F921D-----------------------------
  5744. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  5745.     AX = 921Dh
  5746. Return: AX = ???
  5747. --------R-2F921E-----------------------------
  5748. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  5749.     AX = 921Eh
  5750.     ???
  5751. Return: ???
  5752. Program: DRIVEMAP is a redirector which allows drives on computers connected
  5753.       over the parallel or serial ports to appear as local drives
  5754. Note:    this function sets two variables to 24h each
  5755. SeeAlso: INT 16/AX=FF70h
  5756. --------V-2F93-------------------------------
  5757. INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
  5758.     AH = 93h
  5759.     BX = CX = AX
  5760. Return: AL = state
  5761.         FFh if installed and BX=CX=AX on entry
  5762.         BX = segment of resident code
  5763.         01h if installed but BX or CX differ from AX (multiplex number not
  5764.           available)
  5765. Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
  5766. SeeAlso: INT 14/AX=AA01h,INT 2F/AX=6400h
  5767. Index:    screen saver;InnerMission
  5768. --------e-2F9400-----------------------------
  5769. INT 2F - MICRO.EXE - INSTALLATION CHECK
  5770.     AX = 9400h
  5771. Return: AL = 07h or 08h if installed
  5772. Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection
  5773. SeeAlso: AH=92h"Network Courier",AX=9401h,AX=9402h,AX=9403h,AX=9404h
  5774. SeeAlso: INT 21/AH=3Fh"WORKGRP.SYS"
  5775. --------e-2F9401-----------------------------
  5776. INT 2F - MICRO.EXE - SET ??? FLAG
  5777.     AX = 9401h
  5778. SeeAlso: AX=9400h,AX=9403h
  5779. --------e-2F9402-----------------------------
  5780. INT 2F - MICRO.EXE - ???
  5781.     AX = 9402h
  5782.     ???
  5783. Return: ???
  5784. SeeAlso: AX=9400h
  5785. --------e-2F9403-----------------------------
  5786. INT 2F - MICRO.EXE - SET ??? FLAG
  5787.     AX = 9403h
  5788. SeeAlso: AX=9400h,AX=9404h
  5789. --------e-2F9404-----------------------------
  5790. INT 2F - MICRO.EXE - CLEAR ??? FLAG
  5791.     AX = 9404h
  5792.     ES:DI -> name of executable from which MICRO.EXE was started
  5793. Note:    if the specified name is identical to the name of the program file
  5794.       from which MICRO was started, the ??? flag is cleared; otherwise,
  5795.       it is left unchanged
  5796. SeeAlso: AX=9400h,AX=9403h
  5797. --------V-2F96C7-----------------------------
  5798. INT 2F U - STRETCH - INSTALLATION CHECK
  5799.     AX = 96C7h
  5800. Return: AX = AAAAh if installed
  5801. Program: stretch.exe is a TSR for Toshiba Laptops to avoid blank screen areas
  5802.       in VGA text modes by increasing inter-line spacing
  5803. --------e-2F9C-------------------------------
  5804. INT 2F - Network Courier E-Mail OPERATOR.EXE - API
  5805.     AH = 9Ch
  5806.     AL = subfunction
  5807.         01h uninstall
  5808. Return: ???
  5809. Program: The Network Courier is an electronic mail package by Consumers
  5810.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  5811.       renamed Microsoft Mail v3.0.
  5812. SeeAlso: AH=92h
  5813. Index:    uninstall;Network Courier E-Mail OPERATOR.EXE
  5814. --------G-2F9E00-----------------------------
  5815. INT 2F U - INTMON v2.1 - INSTALLATION CHECK
  5816.     AX = 9E00h
  5817. Return: AX = FFFFh if installed
  5818.         BX = segment of resident code
  5819. Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
  5820.       and higher machines by Celso Minnitti, Jr.
  5821. SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
  5822. --------G-2F9E01-----------------------------
  5823. INT 2F U - INTMON v2.1 - RESET
  5824.     AX = 9E01h
  5825. Return: ???
  5826. Desc:    this function specifies that INTMON should assume that any interrupts
  5827.       on which it is currently awaiting a return have completed (i.e.
  5828.       interrupts which never return such as INT 20 and INT 27)
  5829. SeeAlso: AX=9E00h,AX=9E03h
  5830. --------G-2F9E02-----------------------------
  5831. INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
  5832.     AX = 9E02h
  5833. Return: ???
  5834. SeeAlso: AX=9E00h
  5835. --------G-2F9E03-----------------------------
  5836. INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
  5837.     AX = 9E03h
  5838.     BH = interrupt number???
  5839. Return: ???
  5840. Note:    if AL > 03h on entry, INTMON 2.1 returns immediately
  5841. SeeAlso: AX=9E00h,AX=9E01h
  5842. --------G-2F9F00-----------------------------
  5843. INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
  5844.     AX = 9F00h
  5845. Return: AX = FFFFh if installed
  5846. Program: INTCFG is an optionally-resident control program for INTMON by Celso
  5847.       Minnitti, Jr.
  5848. SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
  5849. --------G-2F9F01-----------------------------
  5850. INT 2F U - INTCFG v2.1 - ???
  5851.     AX = 9F01h
  5852.     ???
  5853. Return: ???
  5854. SeeAlso: AX=9F00h
  5855. --------G-2F9F30-----------------------------
  5856. INT 2F U - INTCFG v2.1 - GET ???
  5857.     AX = 9F30h
  5858. Return: AX = ??? (0002h)
  5859. SeeAlso: AX=9F00h
  5860. --------G-2F9F49-----------------------------
  5861. INT 2F U - INTCFG v2.1 - UNINSTALL
  5862.     AX = 9F49h
  5863. Return: AX,DX,DS,ES destroyed
  5864. SeeAlso: AX=9F00h
  5865. --------E-2FA1--BX0081-----------------------
  5866. INT 2F - Ergo DOS extenders - INSTALLATION CHECK
  5867.     AH = A1h
  5868.     BX = 0081h
  5869.     AL = which
  5870.         FEh OS/286,OS/386
  5871.         FFh HummingBoard DOS extender
  5872.     ES:DI -> 16-byte buffer
  5873. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  5874. Note:    since TKERNEL is a licensed version, it is likely that subfunctions
  5875.       BX=0082h and BX=0084h are present and function identically to the
  5876.       AX=FBA1h/BX=008xh calls
  5877. SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  5878. --------m-2FA189-----------------------------
  5879. INT 2F U - Biologic HRAMDEV.SYS - API
  5880.     AX = A189h
  5881.     BX = subfunction
  5882.         0000h set ???
  5883.         0001h remove ???
  5884.         0002h get status ???
  5885.         0003h enable ???
  5886.         0004h disable ???
  5887.         0005h set ??? flag
  5888.         0006h clear ??? flag
  5889.         0007h set ??? flag
  5890.         0008h clear ??? flag
  5891.         0009h set ???
  5892.     ES:DI -> function-specific arguments
  5893.         if func 0000h: 20-byte buffer containing ???
  5894.         if func 0001h: 20-byte buffer for returned ???
  5895.         if func 0002h: 16-byte buffer for returned ???
  5896.         if func 0009h: WORD containing ???
  5897. Return: BX = A189h if installed
  5898.     AH = status
  5899.         00h successful
  5900.         FFh failed or invalid function number
  5901. Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
  5902.       provides improved high memory access under MS-DOS 5.0
  5903. Note:    functions 00h and 01h use a stack of four entries; function 01h always
  5904.       removes the values stored with the most recent function 00h call
  5905.       which has not yet been matched with a function 01h call.
  5906. --------U-2FA4E0-----------------------------
  5907. INT 2F - Futurus Team - INSTALLATION CHECK
  5908.     AX = A4E0h
  5909. Return: AL = 52h ("R") if installed
  5910.         AH = major version plus 30h ("0")
  5911.         ES:BX -> ??? (INT A4 handler???)
  5912. Note:    older versions of Right Hand Man (from which Team evolved) store the
  5913.       signature "RH" at offset 103h in the INT 2F handler's segment
  5914. SeeAlso: INT A4"Right Hand Man"
  5915. --------U-2FA900-----------------------------
  5916. INT 2F - METZTSR.COM - INSTALLATION CHECK
  5917.     AX = A900h
  5918.     CF set
  5919. Return: CF clear if resident
  5920.         AX = 97FFh
  5921.     CF set if not present
  5922. Notes:    METZTSR.COM prevents METZ applications (such as the MAGIC screen
  5923.       saver) inactivity timeout while running a DOSapp under MS Windows.
  5924.     the default multiplex number is A9h, but may be set to any value from
  5925.       80h to FFh with a commandline switch
  5926. SeeAlso: AX=A901h,AX=A902h
  5927. --------U-2FA901-----------------------------
  5928. INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
  5929.     AX = A901h
  5930.     CF set
  5931. Return: CF clear if successful
  5932.         AX:DX = BIOS time at which INT 09 was last invoked
  5933.     CF set if not present
  5934. SeeAlso: INT 09,INT 1A/AH=00h
  5935. --------U-2FA902-----------------------------
  5936. INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
  5937.     AX = A902h
  5938.     BL = new value
  5939.         00h Ctrl-Alt-Del not allowed
  5940.         else Ctrl-Alt-Del allowed (startup default is 01h)
  5941.     CF set
  5942. Return: CF clear if successful
  5943.         AX = 97FFh
  5944.     CF set if not resident
  5945. SeeAlso: AX=A903h
  5946. --------U-2FA903-----------------------------
  5947. INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
  5948.     AX = A903h
  5949.     CF set
  5950. Return: CF clear if successful
  5951.         AX = 97FFh if Ctrl-Alt-Del allowed
  5952.         AX = 0000h if Ctrl-Alt-Del not allowed
  5953.     CF set if not resident
  5954. SeeAlso: AX=A902h
  5955. --------U-2FAA00-----------------------------
  5956. INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
  5957.     AX = AA00h
  5958. Return: AL = 00h not installed
  5959.          FFh installed
  5960. Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
  5961. --------f-2FAB00-----------------------------
  5962. INT 2F - Btrieve Multi-User - INSTALLATION CHECK
  5963.     AX = AB00h
  5964. Return: AL = 4Dh if installed
  5965. SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
  5966. --------f-2FAB01-----------------------------
  5967. INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
  5968.     AX = AB01h
  5969.     BX = process ID
  5970.     DS:DX -> 38-byte parameter record (see #2425 at INT 7B"Btrieve")
  5971. Return: AL = status
  5972.         00h OK
  5973.         other retry after calling INT 7F/AX=0200h
  5974. SeeAlso: AX=AB00h,AX=AB02h,INT 7B"Btrieve",INT 7F/AX=0200h
  5975. --------f-2FAB02-----------------------------
  5976. INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
  5977.     AX = AB02h
  5978. Return: AL = 00h successful
  5979.         BX = process ID
  5980.     AL > 00h failed, retry after calling INT 7F/AX=0200h
  5981. SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
  5982. --------V-2FAC00-----------------------------
  5983. INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
  5984.     AX = AC00h
  5985. Return: AX = FFFFh
  5986.     ES:DI -> ??? (graphics data?) (not documented)
  5987. Note:    this installation check was moved here to avoid the conflict with the
  5988.       CD-ROM extensions that occurred in DOS 4.00
  5989. SeeAlso: AX=1500h"GRAPHICS"
  5990. --------V-2FAC00DI1092-----------------------
  5991. INT 2F - QRIP/TSR - GIVE CPU TO QRIP
  5992.     AX = AC00h
  5993.     DI = 1092h
  5994. Return: nothing
  5995. Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
  5996.       Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
  5997.       provide a graphical user interface
  5998. Desc:    give QRIP some CPU time to update music and flashing timers
  5999. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6000.     this function should be called regularly whenever the terminal program
  6001.       is otherwise idle; the updates are automatically performed on any
  6002.       other QRIP call
  6003. SeeAlso: AX=AC01h,AX=ACF0h
  6004. --------V-2FAC01DI1092-----------------------
  6005. INT 2F - QRIP/TSR - CHANGE INTERNAL FLAGS
  6006.     AX = AC01h
  6007.     DI = 1092h
  6008.     BX = flags to be turned on (see #1653)
  6009.     CX = flags to be turned off (see #1653)
  6010. Return: AX = 9142h if installed
  6011.         DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
  6012.         ---if DX nonzero---
  6013.         BX = QRIP version number in hex (BH = major, BL = minor)
  6014.         CX = new flags (see #1653)
  6015. Note:    if DI <> 1092h on entry, QRIP chains the call
  6016. SeeAlso: AX=AC00h/DI=1092h,AX=ACF0h
  6017.  
  6018. Bitfields for QRIP internal flags:
  6019. Bit(s)    Description    (Table 1653)
  6020.  0    ANSI emulation enabled (default on)
  6021.  1    RIP emulation enabled (default on)
  6022.  2    graphical commands allowed (default on)
  6023.  3    TTY text allowed (default on)
  6024.  4    disable @ variables (default off in TSR mode)
  6025.  5    wait for key on RIP "end scene" command (default off)
  6026.  6    anti-stripping (default off in TSR mode)
  6027.  7    sound enabled (default on)
  6028.  8    automatic message filter (default off in TSR mode)
  6029.  9    display-only mode (no user prompts)
  6030.  10    TTY text suppression (default off in TSR mode)
  6031.  11-15    reserved
  6032. --------V-2FAC02DI1092-----------------------
  6033. INT 2F - QRIP/TSR - TURN OFF GRAPHICS SCREEN
  6034.     AX = AC02h
  6035.     DI = 1092h
  6036. Return: nothing
  6037. Note:    if DI <> 1092h on entry, QRIP chains the call
  6038. SeeAlso: AX=AC03h,AX=ACF0h
  6039. --------V-2FAC03DI1092-----------------------
  6040. INT 2F - QRIP/TSR - TURN ON GRAPHICS SCREEN
  6041.     AX = AC03h
  6042.     DI = 1092h
  6043. Return: nothing
  6044. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6045.     this function does not restore the contents of the screen (see AX=AC15h)
  6046. SeeAlso: AX=AC02h,AX=AC14h,AX=AC15h
  6047. --------V-2FAC04DI1092-----------------------
  6048. INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
  6049.     AX = AC04h
  6050.     DI = 1092h
  6051.     DX:BX -> string
  6052.     CX = length of string
  6053. Return: nothing
  6054. Note:    if DI <> 1092h on entry, QRIP chains the call
  6055. SeeAlso: AX=AC05h,AX=AC09h,AX=AC0Ah,AX=ACF0h
  6056. --------V-2FAC05DI1092-----------------------
  6057. INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
  6058.     AX = AC05h
  6059.     DI = 1092h
  6060.     DX:BX -> ASCIZ string
  6061. Return: nothing
  6062. Note:    if DI <> 1092h on entry, QRIP chains the call
  6063. SeeAlso: AX=AC04h,AX=AC06h,AX=AC09h,AX=AC0Ah,AX=ACF0h
  6064. --------V-2FAC06DI1092-----------------------
  6065. INT 2F - QRIP/TSR - RECEIVE CHARACTERS FROM QRIP
  6066.     AX = AC06h
  6067.     DI = 1092h
  6068. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #1654)
  6069.     BX = string-waiting flag
  6070.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  6071.     CX = DX = AX
  6072. Note:    if DI <> 1092h on entry, QRIP chains the call
  6073. SeeAlso: AX=AC04h,AX=AC05h,AX=AC0Ch,AX=AC16h,AX=AC18h,AX=AC1Ah
  6074.  
  6075. (Table 1654)
  6076. Values for QRIP special codes:
  6077.  0000h    if none
  6078.  0100h    wait for user keypress (must call AX=AC16h/BL=00h or AX=AC18h)
  6079.  0101h    both/middle mouse button pressed
  6080.  0102h    entering block mode (up/download) (call AX=AC1Ah)
  6081.  0103h    right mouse button pressed
  6082.  0104h    BBS requested status bar on
  6083.  0105h    BBS requested status bar off
  6084.  0106h    BBS requested VT-102 terminal emulation
  6085.     (keypad keys should send VT-102 escape codes)
  6086.  0107h    BBS requested VT-102 mode off
  6087.  0108h    BBS requested doorway mode (raw IBM keyboard ASCII/scan code pairs)
  6088.  0109h    BBS requested doorway mode off
  6089.  010Ah    hotkey mode on
  6090.  010Bh    hotkey mode off
  6091.  010Ch    BBS requested Tab-key button changing on
  6092.  010Dh    BBS requested Tab-key mode off
  6093.  010Eh    XOFF (use flow control to stop incoming characters)
  6094.  010Fh    XON (use flow control to resume incoming characters)
  6095.  0110h-0119h BBS requested application (0-9) be run
  6096.     application 0 should be a standard text editor
  6097.  01FFh    send ASCII 00h to BBS
  6098. Note:    for special codes 0104h to 010Dh, the terminal program should report
  6099.       any mode changes it make in response by calling AX=AC16h
  6100. --------V-2FAC07DI1092-----------------------
  6101. INT 2F - QRIP/TSR - GET FONT DIRECTORY
  6102.     AX = AC07h
  6103.     DI = 1092h
  6104. Return: DX:BX -> 80-byte internal buffer containing ASCIZ font directory name
  6105. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6106.     the application may change the font directory by overwriting the
  6107.       returned buffer, ensuring that it does not exceed 80 bytes incl. NUL
  6108.     if changed, the new path will not become effective until the graphics
  6109.       screen is reinitialized
  6110. SeeAlso: AX=AC08h,AX=ACF0h
  6111. --------V-2FAC08DI1092-----------------------
  6112. INT 2F - QRIP/TSR - GET ICON DIRECTORY
  6113.     AX = AC08h
  6114.     DI = 1092h
  6115. Return: DX:BX -> 80-byte internal buffer containing ASCIZ icon directory name
  6116. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6117.     the application may change the icon directory by overwriting the
  6118.       returned buffer, ensuring that it does not exceed 80 bytes incl. NUL,
  6119.       and includes a trailing backslash
  6120.     if changed, the new path becomes effective immediately
  6121. SeeAlso: AX=AC07h,AX=ACF0h
  6122. --------V-2FAC09DI1092-----------------------
  6123. INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
  6124.     AX = AC09h
  6125.     DI = 1092h
  6126.     DX:BX -> string
  6127.     CX = length of string
  6128. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #1654)
  6129.     BX = string-waiting flag
  6130.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  6131.     CX = DX = AX
  6132. Note:    if DI <> 1092h on entry, QRIP chains the call
  6133. SeeAlso: AX=AC04h,AX=AC06h,AX=AC0Ah,AX=ACF0h
  6134. --------V-2FAC0ADI1092-----------------------
  6135. INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
  6136.     AX = AC0Ah
  6137.     DI = 1092h
  6138.     DX:BX -> ASCIZ string
  6139. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #1654)
  6140.     BX = string-waiting flag
  6141.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  6142.     CX = DX = AX
  6143. Note:    if DI <> 1092h on entry, QRIP chains the call
  6144. SeeAlso: AX=AC05h,AX=AC06h,AX=AC09h,AX=ACF0h
  6145. --------V-2FAC0BDI1092-----------------------
  6146. INT 2F - QRIP/TSR - EXECUTE RIP "END SCENE" COMMAND
  6147.     AX = AC0Bh
  6148.     DI = 1092h
  6149. Return: nothing
  6150. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6151.     enables all mouse buttons and cancels the RIP timeout
  6152. SeeAlso: AX=AC01h,AX=AC04h,AX=ACF0h
  6153. --------V-2FAC0CDI1092-----------------------
  6154. INT 2F - QRIP/TSR - GET STRING TO BE SENT TO BBS
  6155.     AX = AC0Ch
  6156.     DI = 1092h
  6157. Return: AX = status
  6158.         0000h nothing to be sent
  6159.         0001h a string is waiting to be sent
  6160.         DX:BX -> string to be sent (may contain NULs)
  6161.         CX = length of string
  6162.         0002h special code waiting (call AX=AC06h)
  6163. Note:    if DI <> 1092h on entry, QRIP chains the call
  6164. SeeAlso: AX=AC06h,AX=ACF0h
  6165. --------V-2FAC0DDI1092-----------------------
  6166. INT 2F - QRIP/TSR - SET PROTECTED SCREEN AREA
  6167.     AX = AC0Dh
  6168.     DI = 1092h
  6169.     CL = number of text lines at bottom of screen to protect (00h = off)
  6170.     BL = attribute with which to fill area (bit 7 = high-int. background)
  6171. Return: nothing
  6172. Note:    if DI <> 1092h on entry, QRIP chains the call
  6173. SeeAlso: AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=ACF0h
  6174. --------V-2FAC0EDI1092-----------------------
  6175. INT 2F - QRIP/TSR - WRITE ASCIZ STRING IN PROTECTED AREA
  6176.     AX = AC0Eh
  6177.     DI = 1092h
  6178.     DX:BX -> ASCIZ string to be written
  6179.     CL = column at which to begin writing
  6180.     CH = row number within protected area (00h = first line)
  6181. Return: nothing
  6182. Note:    if DI <> 1092h on entry, QRIP chains the call
  6183. SeeAlso: AX=AC0Dh,AX=AC0Fh,AX=AC10h,AX=ACF0h
  6184. --------V-2FAC0FDI1092-----------------------
  6185. INT 2F - QRIP/TSR - SCROLL PROTECTED AREA
  6186.     AX = AC0Fh
  6187.     DI = 1092h
  6188.     BH,BL = row,column of upper-left corner in protected area
  6189.     DH,DL = row,column of lower-right corner
  6190.     CL = number of lines to scroll up
  6191. Return: nothing
  6192. Note:    if DI <> 1092h on entry, QRIP chains the call
  6193. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC10h,AX=ACF0h
  6194. --------V-2FAC10DI1092-----------------------
  6195. INT 2F - QRIP/TSR - SET OUTPUT COLOR FOR PROTECTED AREA
  6196.     AX = AC10h
  6197.     DI = 1092h
  6198.     BL = new attribute (bit 7 set for high-intensity background)
  6199. Return: nothing
  6200. Note:    if DI <> 1092h on entry, QRIP chains the call
  6201. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC11h,AX=ACF0h
  6202. --------V-2FAC11DI1092-----------------------
  6203. INT 2F - QRIP/TSR - CONVERT PROTECTED AREA TO ENTIRE SCREEN
  6204.     AX = AC11h
  6205.     DI = 1092h
  6206.     BX = mode (0000h = normal protect, 0001h = allow full-screen access)
  6207. Note:    if DI <> 1092h on entry, QRIP chains the call
  6208. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=AC12h,AX=ACF0h
  6209. --------V-2FAC12DI1092-----------------------
  6210. INT 2F - QRIP/TSR - BEGIN POPUP-WINDOW MODE
  6211.     AX = AC12h
  6212.     DI = 1092h
  6213. Return: nothing
  6214. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6215.     while popup-mode is in effect, the terminal program can write to the
  6216.       screen (and easily restore it) by outputting a RIP file with AX=AC04h
  6217.       or AX=AC05h
  6218.     QRIP will automatically drop out of popup-window mode if the terminal
  6219.       program invokes RIP pick-lists
  6220.     any changes to the protected area will be restored when popup-window
  6221.       mode is cancelled
  6222. SeeAlso: AX=AC04h,AX=AC11h,AX=AC13h,AX=ACF0h
  6223. --------V-2FAC13DI1092-----------------------
  6224. INT 2F - QRIP/TSR - END POPUP-WINDOW MODE
  6225.     AX = AC13h
  6226.     DI = 1092h
  6227. Return: nothing
  6228. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6229.     restores screen
  6230. SeeAlso: AX=AC12h,AX=ACF0h
  6231. --------V-2FAC14DI1092-----------------------
  6232. INT 2F - QRIP/TSR - SAVE GRAPHICS SCREEN AND SWITCH TO TEXT MODE
  6233.     AX = AC14h
  6234.     DI = 1092h
  6235. Return: nothing
  6236. Note:    if DI <> 1092h on entry, QRIP chains the call
  6237. SeeAlso: AX=AC03h,AX=AC15h
  6238. --------V-2FAC15DI1092-----------------------
  6239. INT 2F - QRIP/TSR - RESTORE GRAPHICS SCREEN
  6240.     AX = AC15h
  6241.     DI = 1092h
  6242. Return: nothing
  6243. Desc:    restores the graphics screen saved by the last call to AX=AC14h
  6244. Note:    if DI <> 1092h on entry, QRIP chains the call
  6245. SeeAlso: AX=AC03h,AX=AC14h
  6246. --------V-2FAC16DI1092-----------------------
  6247. INT 2F - QRIP/TSR - REPORT MODE CHANGE TO QRIP
  6248.     AX = AC16h
  6249.     DI = 1092h
  6250.     BL = new mode
  6251.         00h terminate key wait
  6252.         01h status bar on
  6253.         02h status bar off
  6254.         03h VT-102 mode on
  6255.         04h VT-102 mode off
  6256.         05h doorway mode on
  6257.         06h doorway mode off
  6258.         07h hotkeys mode on
  6259.         08h hotkeys mode off
  6260.         09h tabkey mode on
  6261.         0Ah tabkey mode off
  6262. Return: nothing
  6263. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6264.     all modes default to OFF when QRIP is first installed
  6265. --------V-2FAC17DI1092-----------------------
  6266. INT 2F - QRIP/TSR - CALL (EXECUTE) A RIP FILE
  6267.     AX = AC17h
  6268.     DI = 1092h
  6269.     DX:BX -> ASCIZ filename for RIP file to be executed
  6270. Return: nothing
  6271. Notes:    if DI <> 1092h on entry, QRIP chains the call
  6272.     the specified file may be in the current icon directory, the QRIP
  6273.       startup directory, or the current directory; any pathnames specified
  6274.       with the filename are ignored
  6275. --------V-2FAC18DI1092-----------------------
  6276. INT 2F - QRIP/TSR - SEND USER KEY TO QRIP
  6277.     AX = AC18h
  6278.     DI = 1092h
  6279.     BX = key (00xxh is normal ASCII, xx00h is an extended key)
  6280. Return: nothing
  6281. Note:    if DI <> 1092h on entry, QRIP chains the call
  6282. SeeAlso: AX=AC06h,AX=ACF0h
  6283. --------V-2FAC19DI1092-----------------------
  6284. INT 2F - QRIP/TSR - HANGUP
  6285.     AX = AC19h
  6286.     DI = 1092h
  6287. Return: nothing
  6288. Desc:    inform QRIP that carrier has been lost
  6289. Note:    if DI <> 1092h on entry, QRIP chains the call
  6290. SeeAlso: AX=ACF0h
  6291. --------V-2FAC1ADI1092-----------------------
  6292. INT 2F - QRIP/TSR - GET RIP_ENTER_BLOCK_MODE INFORMATION
  6293.     AX = AC1Ah
  6294.     DI = 1092h
  6295. Return: AH = requested protocol (see #1655)
  6296.     AL = file type (see #1656)
  6297.     DX:BX -> ASCIZ filename or 0000h:0000h
  6298.     CX = length of filename
  6299. Note:    if DI <> 1092h on entry, QRIP chains the call
  6300. SeeAlso: AX=ACF0h
  6301.  
  6302. (Table 1655)
  6303. Values for QRIP protocol identifier:
  6304.  00h    Xmodem (checksum)
  6305.  01h    Xmodem-CRC
  6306.  02h    Xmodem-1K
  6307.  03h    Xmodem-1K-G
  6308.  04h    Kermit
  6309.  05h    Ymodem
  6310.  06h    Ymodem-G
  6311.  07h    Zmodem with crash recovery
  6312.  08h-0Fh same as 00h-07h, but for uploading instead of downloading
  6313. SeeAlso: #1656
  6314.  
  6315. (Table 1656)
  6316. Values for QRIP file type:
  6317.  00h    RIP file sequence to be displayed
  6318.  01h    RIP file sequence to be stored in icon directory
  6319.  02h    ICN file sequence to be stored in icon directory
  6320.  03h    HLP file sequence to be stored, then auto-loaded if needed
  6321.  04h    COMPOSITE DYNAMIC file sequence (batch protocols only)
  6322.  05h    ACTIVE DYNAMIC file sequence (batch protocols only)
  6323. Note:    for file types 04h and 05h, any .RIP or .ICN files are stored in
  6324.       the icon directory; in mode 05h, any .RIP files are also played
  6325.       back as they are received
  6326. SeeAlso: #1655
  6327. --------V-2FAC1BDI1092-----------------------
  6328. INT 2F - QRIP/TSR - SET SYSTEM FONT SIZE
  6329.     AX = AC1Bh
  6330.     DI = 1092h
  6331.     BX = font size (see #1657)
  6332. Return: nothing
  6333. Note:    if DI <> 1092h on entry, QRIP chains the call
  6334. SeeAlso: AX=AC04h,AX=ACF0h
  6335.  
  6336. (Table 1657)
  6337. Values for QRIP font size specifier:
  6338.  00h    8x8 font, 80x43 screen
  6339.  01h    7x8 font, 90x43 screen
  6340.  02h    8x14 font, 80x25 screen
  6341.  03h    7x14 font, 90x25 screen
  6342.  04h    16x14 font, 40x25 screen
  6343. --------V-2FACF0DI1092-----------------------
  6344. INT 2F - QRIP/TSR - INSTALLATION CHECK
  6345.     AX = ACF0h
  6346.     DI = 1092h
  6347. Return: AX = 9142h if installed
  6348.         DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
  6349.         ---if DX nonzero---
  6350.         BX = QRIP version number in hex (BH = major, BL = minor)
  6351.         CX = current flags (see AX=AC01h)
  6352. Note:    if DI <> 1092h on entry, QRIP chains the call
  6353. SeeAlso: AX=AC00h/DI=1092h,AX=AC01h,AX=AC04h,AX=AC06h,AX=AC1Ah,AX=ACFFh
  6354. --------V-2FACFFDI1092-----------------------
  6355. INT 2F - QRIP/TSR - UNINSTALL
  6356.     AX = ACFFh
  6357.     DI = 1092h
  6358. Return: AX = status
  6359.         0000h unable to remove (interrupt vector hooked by another prog)
  6360.         0001h successful
  6361.         0002h unable to take over DOS at this time (retry uninstall)
  6362. Note:    if DI <> 1092h on entry, QRIP chains the call
  6363. SeeAlso: AX=ACF0h
  6364. --------V-2FAD00-----------------------------
  6365. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  6366.     AX = AD00h
  6367. Return: AL = FFh if installed
  6368.         BX = ??? (0100h for MS-DOS 3.3+)
  6369. Note:    DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
  6370.       subfunctions listed here
  6371. --------O-2FAD00-----------------------------
  6372. INT 2F U - DR-DOS 3.41,5.0 KEYB - INSTALLATION CHECK
  6373.     AX = AD00h
  6374. Return: AX = FFFFh if installed
  6375. SeeAlso: AX=AD80h
  6376. --------V-2FAD01-----------------------------
  6377. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
  6378.     AX = AD01h
  6379.     BX = new code page
  6380. Return: CF clear if successful
  6381.         AX = 0001h
  6382.     CF set on error (unsupported code page)
  6383.         AX = 0000h
  6384. SeeAlso: AX=AD02h
  6385. --------O-2FAD01-----------------------------
  6386. INT 2F U - DR-DOS 3.41,5.0 KEYB - GET CONFIGURATION
  6387.     AX = AD01h
  6388. Return: BX = current code page
  6389.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  6390.     ES = resident code segment
  6391. SeeAlso: AX=AD83h
  6392. --------V-2FAD02-----------------------------
  6393. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
  6394.     AX = AD02h
  6395. Return: CF set if code page never set
  6396.         AX = 0001h
  6397.         BX = FFFFh (assume first hardware code page)
  6398.     CF clear if successful
  6399.         BX = current code page
  6400. SeeAlso: AX=AD01h,AX=AD03h
  6401. --------V-2FAD03-----------------------------
  6402. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
  6403.     AX = AD03h
  6404.     ES:DI -> buffer for code page information (see #1658)
  6405.     CX = size of buffer in bytes
  6406. Return: CF set if buffer too small
  6407.     CF clear if successful
  6408.         ES:DI buffer filled
  6409. SeeAlso: AX=AD01h,AX=AD02h
  6410.  
  6411. Format of DOS 5.0-6.0 DISPLAY.SYS code page information:
  6412. Offset    Size    Description    (Table 1658)
  6413.  00h    WORD    number of software code pages
  6414.  02h    WORD    ??? (0003h)
  6415.  04h    WORD    number of hardware code pages
  6416.  06h  N WORDs    hardware code page numbers
  6417.       N WORDs    software (prepared) code pages (FFFFh if not yet prepared)
  6418. --------V-2FAD04-----------------------------
  6419. INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
  6420.     AX = AD04h
  6421.     ???
  6422. Return: ???
  6423. --------V-2FAD10-----------------------------
  6424. INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
  6425.     AX = AD10h
  6426.     ???
  6427. Return: AX = FFFFh
  6428.     BX = ??? (0100h in PC-DOS 4.01)
  6429. --------V-2FAD10-----------------------------
  6430. INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
  6431.     AX = AD10h
  6432.     ???
  6433. Return: CF clear if successful
  6434.     CF set on error
  6435. Note:    this function is a NOP if the active code page has never been set
  6436.       (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
  6437. --------V-2FAD40-----------------------------
  6438. INT 2F - DOS 4.0+ - ???
  6439.     AX = AD40h
  6440.     DX = ???
  6441.     ???
  6442. Return: ???
  6443. Note:    called by PC-DOS 4.01 PRINT.COM
  6444. --------K-2FAD80-----------------------------
  6445. INT 2F u - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  6446.     AX = AD80h
  6447. Return: AL = FFh if installed
  6448.         BX = version number (BH = major, BL = minor)
  6449.         ES:DI -> internal data (see #1659)
  6450. Notes:    MS-DOS 3.30, PC-DOS 4.01, and MS-DOS 5.00 all report version 1.00.
  6451.     this function was undocumented prior to the release of DOS 5.0
  6452.  
  6453. Format of KEYB internal data:
  6454. Offset    Size    Description    (Table 1659)
  6455.  00h    DWORD    original INT 09
  6456.  04h    DWORD    original INT 2F
  6457.  08h  6 BYTEs    ???
  6458.  0Eh    WORD    flags (see #2718)
  6459.  10h    BYTE    ???
  6460.  11h    BYTE    ???
  6461.  12h  4 BYTEs    ???
  6462.  16h  2 BYTEs    country ID letters
  6463.  18h    WORD    current code page
  6464. ---DOS 3.3---
  6465.  1Ah    WORD    pointer to first item in list of code page tables???
  6466.  1Ch    WORD    pointer to ??? item in list of code page tables
  6467.  1Eh  2 BYTEs    ???
  6468.  20h    WORD    pointer to key translation data (see #1661)
  6469.  22h    WORD    pointer to last item in code page table list (see #1660)
  6470.  24h  9 BYTEs    ???
  6471. ---DOS 4.01---
  6472.  1Ah  2 BYTEs    ???
  6473.  1Ch    WORD    pointer to first item in list of code page tables???
  6474.  1Eh    WORD    pointer to ??? item in list of code page tables
  6475.  20h  2 BYTEs    ???
  6476.  22h    WORD    pointer to key translation data (see #1661)
  6477.  24h    WORD    pointer to last item in code page table list (see #1660)
  6478.  26h  9 BYTEs    ???
  6479. Note:    at least in MS-DOS v6.22, the signature "SHARED DATA" immediately
  6480.       precedes this structure
  6481.  
  6482. Bitfields for MS-DOS v6.22 KEYB flags:
  6483. Bit(s)    Description    (Table 2718)
  6484.  15    INT 16/AH=92h returned OK result (AH <= 80h)
  6485.  14    INT 16/AH=A2h returned OK result (AH <= 80h)
  6486.  13    unused (0)
  6487.  12    network installed (INT 2F/AX=B800h)
  6488.  11    original IBM PC (BIOS date 1981)
  6489.  10    PC or PC/XT (BIOS machine type byte of FBh or FEh)
  6490.  9    PC Convertible (BIOS machine type byte of F9h); use INT 15/AX=4104h
  6491.  8    unused (0)
  6492.  7    IBM PS/2 model 30 (BIOS machine type byte of FAh)
  6493.  6    IBM AT (BIOS machine type FCh)
  6494.  5    IBM PS/2 (BIOS machine type F8h)
  6495.  4    PS/2 and unknown only:
  6496.     non-standard 8042 or no AT->PC scancode translation???
  6497.  3    temporary flag???
  6498.  2-0    ???
  6499. SeeAlso: #1659
  6500.  
  6501. Format of code page table list entries:
  6502. Offset    Size    Description    (Table 1660)
  6503.  00h    WORD    pointer to next item, FFFFh = last
  6504.  02h    WORD    code page
  6505.  04h  2 BYTEs    ???
  6506.  
  6507. Format of KEYB translation data:
  6508. Offset    Size    Description    (Table 1661)
  6509.  00h    WORD    size of data in bytes, including this word
  6510.  02h N-2 BYTEs    ???
  6511. --------K-2FAD81-----------------------------
  6512. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  6513.     AX = AD81h
  6514.     BX = code page (see #0962 at INT 21/AX=6601h)
  6515. Return: CF set on error
  6516.         AX = 0001h (code page not available)
  6517.     CF clear if successful
  6518. Notes:    called by DISPLAY.SYS
  6519.     this function was undocumented prior to the release of DOS 5.0
  6520. SeeAlso: AX=AD82h
  6521. --------K-2FAD82-----------------------------
  6522. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  6523.     AX = AD82h
  6524.     BL = new state
  6525.         00h US keyboard (Control-Alt-F1)
  6526.         FFh foreign keyboard (Control-Alt-F2)
  6527. Return: CF set on error (BL not 00h or FFh)
  6528.     CF clear if successful
  6529. Note:    this function was undocumented prior to the release of DOS 5.0
  6530. SeeAlso: AX=AD81h,AX=AD83h
  6531. --------K-2FAD83-----------------------------
  6532. INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
  6533.     AX = AD83h
  6534. Return: BL = current state
  6535.         00h US keyboard
  6536.         FFh foreign keyboard
  6537. SeeAlso: AX=AD82h
  6538. --------l-2FAE00-----------------------------
  6539. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  6540.     AX = AE00h
  6541.     DX = magic value FFFFh
  6542.     CH = FFh
  6543.     CL = length of command line tail (4DOS v4.0)
  6544.     DS:BX -> command line buffer (see #1662)
  6545.     DS:SI -> command name buffer (see #1663)
  6546.     DI = 0000h (4DOS v4.0)
  6547. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  6548.     AL = 00h if the command should be executed as usual
  6549. Notes:    This call provides a mechanism for TSRs to install permanent
  6550.       extensions to the command repertoire of COMMAND.COM.    It appears
  6551.       that COMMAND.COM makes this call before executing the current
  6552.       command line, and does not execute it itself if the return is FFh.
  6553.     APPEND hooks this call, to allow subsequent APPEND commands to
  6554.       execute without re-running APPEND
  6555. SeeAlso: AX=AE01h
  6556.  
  6557. Format of COMMAND.COM command line buffer:
  6558. Offset    Size    Description    (Table 1662)
  6559.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  6560.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  6561.       N BYTEs    command line text, terminated by 0Dh
  6562.  
  6563. Format of command name buffer:
  6564. Offset    Size    Description    (Table 1663)
  6565.  00h    BYTE    length of command name
  6566.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  6567. --------l-2FAE01-----------------------------
  6568. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  6569.     AX = AE01h
  6570.     DX = magic value FFFFh
  6571.     CH = 00h
  6572.     CL = length of command name (4DOS v4.0)
  6573.     DS:BX -> command line buffer (see #1662)
  6574.     DS:SI -> command name buffer (see #1663)
  6575. Return: DS:SI buffer updated
  6576.       if length byte is nonzero, the following bytes contain the uppercase
  6577.       internal command to execute and the command line buffer contains the
  6578.       command's parameters (the first DS:[SI] bytes are ignored)
  6579. Notes:    this call requests execution of the command which a previous call to
  6580.       AX=AE00h indicated was resident
  6581.     APPEND hooks this call
  6582. BUG:    Novell DOS 7.0's COMMAND.COM will attempt to run a disk program with
  6583.       the indicated name even if the returned length byte is zero, because
  6584.       the register used to flag this case is clobbered without first
  6585.       checking it.    The workaround is to set the command name buffer to
  6586.       "REM" followed by enough blanks to pad out the original command's
  6587.       length, which will also work with MS-DOS 6.
  6588.       (from padgett@tccslr.dnet.mmc.com)
  6589. SeeAlso: AX=AE00h
  6590. ----------2FAF00-----------------------------
  6591. INT 2F U - ???
  6592.     AX = AF00h
  6593.     ???
  6594. Return: AX = 0000h if interface supported
  6595. SeeAlso: AX=AF02h,AX=AF03h,AX=AF04h,AX=AF13h,AX=AF30h
  6596. ----------2FAF02-----------------------------
  6597. INT 2F U - ???
  6598.     AX = AF02h
  6599.     ???
  6600. Return: ES = ???
  6601. SeeAlso: AX=AF00h
  6602. ----------2FAF03-----------------------------
  6603. INT 2F U - ???
  6604.     AX = AF03h
  6605.     ???
  6606. Return: DX = ???
  6607. SeeAlso: AX=AF00h
  6608. ----------2FAF04-----------------------------
  6609. INT 2F U - ???
  6610.     AX = AF04h
  6611.     ???
  6612. Return: ???
  6613. SeeAlso: AX=AF00h
  6614. ----------2FAF05-----------------------------
  6615. INT 2F U - ???
  6616.     AX = AF05h
  6617.     ???
  6618. Return: ???
  6619. SeeAlso: AX=AF00h
  6620. ----------2FAF12-----------------------------
  6621. INT 2F U - ???
  6622.     AX = AF12h
  6623.     ???
  6624. Return: ES = ???
  6625. SeeAlso: AX=AF00h
  6626. ----------2FAF13-----------------------------
  6627. INT 2F U - ???
  6628.     AX = AF13h
  6629.     ???
  6630. Return: ???
  6631. SeeAlso: AX=AF00h
  6632. ----------2FAF30-----------------------------
  6633. INT 2F U - ???
  6634.     AX = AF30h
  6635.     ???
  6636. Return: ???
  6637. SeeAlso: AX=AF00h
  6638. --------d-2FAFDE-----------------------------
  6639. INT 2F - Disk-Emu - INSTALLATION CHECK / VERSION CHECK
  6640.     AX = AFDEh
  6641.     ES:DI -> 14-byte buffer for data (see #1664)
  6642. Return: AX = CFDEh (Carlos Fernandez Disk-Emu) if installed
  6643.         BX = version (BH = major, BL = minor)
  6644.  
  6645. Format of Disk-Emu information data:
  6646. Offset    Size    Description    (Table 1664)
  6647.  00h    BYTE    number of tracks
  6648.  01h    BYTE    sectors per track
  6649.  02h    WORD    bytes per sector
  6650.  04h    BYTE    number of heads
  6651.  05h    BYTE    flag: 00h inactive, 01h active
  6652.  06h    BYTE    write protection (00h none, 01h full, 02h pseudo)
  6653.  07h    BYTE    saved (00h some unsaved data, 01h all data saved)
  6654.  08h    BYTE    disk in memory (00h no, 01h yes)
  6655.  09h    WORD    EMS handle
  6656.  0Bh    WORD    XMS handle
  6657.  0Dh    BYTE    memory type used for disk (00h XMS, 01h EMS)
  6658. --------V-2FB000-----------------------------
  6659. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  6660.     AX = B000h
  6661. Return: AL = status
  6662.         00h not installed, OK to install
  6663.         01h not installed, not OK to install
  6664.         FFh installed
  6665. Notes:    called by DISPLAY.SYS
  6666.     documented for DOS 5.0, but undocumented in prior versions
  6667. SeeAlso: AX=2300h,AX=2E00h,AX=B001h
  6668. --------V-2FB001-----------------------------
  6669. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  6670.     AX = B001h
  6671.     DS:BX -> DWORD buffer for address of 8x8 font table
  6672. Return: buffer filled
  6673.     AL = FFh
  6674. Note:    PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
  6675.       MS-DOS 3.30 sets it to 0030h
  6676. SeeAlso: AH=2Eh"GRAFTABL",AX=B000h
  6677. --------I-2FB400-----------------------------
  6678. INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
  6679.     AX = B400h
  6680. Return: AL = FFh if installed
  6681. --------I-2FB401-----------------------------
  6682. INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
  6683.     AX = B401h
  6684. Return: ES -> host screen buffer (PC ASCII format)
  6685.     ES unchanged if communications not started
  6686. --------I-2FB402-----------------------------
  6687. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  6688.     AX = B402h
  6689.     BX = ???
  6690. Return: ???
  6691. --------I-2FB403-----------------------------
  6692. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  6693.     AX = B403h
  6694.     ???
  6695. Return: ???
  6696. --------I-2FB404-----------------------------
  6697. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  6698.     AX = B404h
  6699.     ???
  6700. Return: ???
  6701. --------I-2FB405-----------------------------
  6702. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  6703.     AX = B405h
  6704.     ???
  6705. Return: ???
  6706. --------f-2FB700-----------------------------
  6707. INT 2F - APPEND - INSTALLATION CHECK
  6708.     AX = B700h
  6709. Return: AL = status
  6710.         00h not installed
  6711.         FFh installed
  6712. Note:    MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
  6713.       a TopView-compatible environment
  6714. SeeAlso: AX=B702h
  6715. --------f-2FB701-----------------------------
  6716. INT 2F U - APPEND v3.21 only - GET APPEND PATH
  6717.     AX = B701h
  6718. Return: ES:DI -> active APPEND path
  6719. Notes:    the only version of APPEND known to support this call is the APPEND
  6720.       shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
  6721.       "Incorrect APPEND Version" and aborts the caller
  6722.     use AX=B704h first, and only call this function if that one is not
  6723.       supported
  6724. SeeAlso: AX=B700h,AX=B704h
  6725. --------f-2FB702-----------------------------
  6726. INT 2F - APPEND - VERSION CHECK
  6727.     AX = B702h
  6728. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  6729.     AL = major version number
  6730.     AH = minor version number, otherwise
  6731. SeeAlso: AX=B700h,AX=B710h
  6732. --------f-2FB703-----------------------------
  6733. INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  6734.     AX = B703h
  6735.     ES:DI -> INT 21 handler APPEND should chain to
  6736. Return: ES:DI -> APPEND's INT 21 handler
  6737. Note:    each invocation of this function toggles a flag which APPEND uses to
  6738.       determine whether to chain to the user handler or the original
  6739.       INT 21
  6740. SeeAlso: AX=B700h,AX=B706h
  6741. --------f-2FB704-----------------------------
  6742. INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
  6743.     AX = B704h
  6744. Return: ES:DI -> active APPEND path (128 bytes max)
  6745. Note:    some versions of append do not support this call, and return ES
  6746.       unchanged; in this case, you should call AX=B701h to get the APPEND
  6747.       path
  6748. SeeAlso: AX=B701h
  6749. --------f-2FB706-----------------------------
  6750. INT 2F - DOS 4.0+ APPEND - GET APPEND FUNCTION STATE
  6751.     AX = B706h
  6752. Return: BX = APPEND state (see #1665)
  6753. SeeAlso: AX=B700h,AX=B707h
  6754.  
  6755. Bitfields for APPEND state:
  6756. Bit(s)    Description    (Table 1665)
  6757.  0    set if APPEND enabled
  6758.  1-11    reserved
  6759.  12    (DOS 5.0) set if APPEND applies directory search even if a drive has
  6760.       been specified
  6761.  13    set if /PATH flag active
  6762.  14    set if /E flag active (environment var APPEND exists)
  6763.  15    set if /X flag active
  6764. --------f-2FB707-----------------------------
  6765. INT 2F - DOS 4.0+ APPEND - SET APPEND FUNCTION STATE
  6766.     AX = B707h
  6767.     BX = APPEND state bits (see #1665)
  6768. SeeAlso: AX=B700h,AX=B706h
  6769. --------f-2FB710-----------------------------
  6770. INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
  6771.     AX = B710h
  6772. Return: AX = current APPEND state (see #1665)
  6773.     BX = ??? (0000h in MS-DOS 3.30 and 5.00)
  6774.     CX = ??? (0000h in MS-DOS 3.30 and 5.00)
  6775.     DL = major version
  6776.     DH = minor version
  6777. SeeAlso: AX=B700h,AX=B702h
  6778. --------f-2FB711-----------------------------
  6779. INT 2F - DOS 4.0+ APPEND - SET RETURN FOUND NAME STATE
  6780.     AX = B711h
  6781. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  6782.       6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename
  6783.       is written over top of the filename passed to the INT 21h call.  The
  6784.       application must provide a sufficiently large buffer.     This state is
  6785.       reset after the next INT 21h call processed by APPEND.
  6786.     APPEND uses the byte at offset 3Dh in the PSP
  6787.       (see #0603 at INT 21/AH=26h) to store the flag telling it to
  6788.       overwrite the filename
  6789. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  6790.       INT 21/AH=6Ch
  6791. SeeAlso: INT 21/AH=26h,INT 21/AH=4Eh
  6792. --------N-2FB800-----------------------------
  6793. INT 2F - NETWORK - INSTALLATION CHECK
  6794.     AX = B800h
  6795. Return: AL = status
  6796.         00h        not installed
  6797.         nonzero installed
  6798.           BX = installed component flags (test in this order!)
  6799.            bit 6   server
  6800.            bit 2   messenger
  6801.            bit 7   receiver
  6802.            bit 3   redirector
  6803.            bit 1   LANPUP (LANtastic 4.0)
  6804. Notes:    this function is supported by PC LAN Program, LAN Manager, LANtastic,
  6805.       NetWare Lite, SilverNET, 10NET, etc.
  6806.     LANtastic and NetWare Lite use only BL for the return value, preserving
  6807.       BH; LAN Manager and DOS LAN Requester return BH=00h.    This permits
  6808.       differentiation between those two groups by setting BH to a nonzero
  6809.       value before the call and checking its value on return.
  6810. SeeAlso: AX=4E53h,AX=B809h
  6811. --------N-2FB800CXF041-----------------------
  6812. INT 2F - 10NET - INSTALLATION CHECK
  6813.     AX = B800h
  6814.     CX = F041h
  6815. Return: AL = status
  6816.         00h        not installed
  6817.         nonzero installed
  6818.         BX = installed component flags (test in this order!)
  6819.            bit 6   server
  6820.            bit 2   messenger
  6821.            bit 7   receiver
  6822.            bit 3   redirector
  6823.            bit 1   LANPUP (LANtastic 4.0)
  6824.         CX = 10Net data segment
  6825.         CX:DX -> 10Net Configuration Table
  6826.               (see #0896 at INT 21/AX=5E01h"10NET")
  6827. Note:    if CX <> F041h on entry, neither CX nor DX will be changed, and this
  6828.       call becomes identical to the standard installation check above
  6829. SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
  6830. --------N-2FB803-----------------------------
  6831. INT 2F - NETWORK - GET NETWORK EVENT POST HANDLER
  6832.     AX = B803h
  6833. Return: ES:BX -> current event post handler (see AX=B804h)
  6834. Note:    this function is supported by PC LAN Program, 10NET v5.0
  6835. SeeAlso: AC=B800h,AX=B804h,AX=B903h
  6836. --------N-2FB804-----------------------------
  6837. INT 2F - NETWORK - SET NETWORK EVENT POST HANDLER
  6838.     AX = B804h
  6839.     CX = (10NET) 0370h if 10Windows is hooking post handler
  6840.     ES:BX -> new event post handler (see #1666)
  6841. Notes:    used in conjunction with AX=B803h to hook into the network event post
  6842.       routine
  6843.     this function is supported by PC LAN Program, 10NET v5.0
  6844.     The specified handler is called on any network event.  Two events are
  6845.       defined: message received and critical network error.
  6846. SeeAlso: AX=B800h,AX=B803h,AX=B904h
  6847.  
  6848. (Table 1666)
  6849. Values network post routine is called with:
  6850.     AX = 0000h single block message
  6851.         DS:SI -> ASCIZ originator name
  6852.         DS:DI -> ASCIZ destination name
  6853.         ES:BX -> text header (see #1667)
  6854.     AX = 0001h start multiple message block
  6855.         CX = block group ID
  6856.         DS:SI -> ASCIZ originator name
  6857.         DS:DI -> ASCIZ destination name
  6858.     AX = 0002h multiple block text
  6859.         CX = block group ID
  6860.         ES:BX -> text header (see #1667)
  6861.     AX = 0003h end multiple block message
  6862.         CX = block group ID
  6863.     AX = 0004h message aborted due to error
  6864.         CX = block group ID
  6865.     AX = 0101h server received badly formatted network request
  6866.         Return: AX = FFFFh (PC LAN will process error)
  6867.     AX = 0102h unexpected network error
  6868.         ES:BX -> NCB (see #1894 at INT 5C)
  6869.     AX = 0103h server received INT 24 error
  6870.         other registers as for INT 24, except AH is in BH
  6871.         Return: as below, but only 0000h and FFFFh allowed
  6872. Return: AX = response code
  6873.         0000h user post routine processed message
  6874.         0001h PC LAN will process message, but message window not displayed
  6875.         FFFFh PC LAN will process message
  6876.  
  6877. Format of text header:
  6878. Offset    Size    Description    (Table 1667)
  6879.  00h    WORD    length of text (maximum 512 bytes)
  6880.  02h  N BYTEs    text of message
  6881. Note:    all CRLF sequences in message text are replaced by 14h; all other
  6882.       values below 20h (space) are reserved
  6883. --------N-2FB807-----------------------------
  6884. INT 2F - NETWORK - GET NetBIOS NAME NUMBER OF MACHINE NAME
  6885.     AX = B807h
  6886. Return: CH = NetBIOS name number of the machine name
  6887. SeeAlso: INT 21/AX=5E00h
  6888. --------N-2FB808-----------------------------
  6889. INT 2F U - NETWORK - RELINK KEYBOARD HANDLER
  6890.     AX = B808h
  6891.     ES:BX -> INT 09 handler network should call after it finishes INT 09
  6892. Notes:    this call replaces the address to which the network software chains on
  6893.       an INT 09 without preserving the original value.  This allows a prior
  6894.       handler to unlink, but does not allow a new handler to be added
  6895.       such that the network gets the INT 09 first unless the new handler
  6896.       completely takes over INT 09 and never chains.
  6897.     this function is called by the DOS 3.2 KEYBxx.COM
  6898. SeeAlso: AX=B908h
  6899. --------N-2FB809-----------------------------
  6900. INT 2F - NETWORK - LANtastic, NetWare Lite - VERSION CHECK
  6901.     AX = B809h
  6902. Return: AH = major version
  6903.     AL = minor version (decimal)
  6904. Notes:    this function is supported in this form by LANtastic, NetWare Lite,
  6905.       SilverNET, ...
  6906.     NetWare Lite returns its own version number rather than a PC LAN
  6907.       compatibility version
  6908. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"PC LAN Program"
  6909. --------N-2FB809-----------------------------
  6910. INT 2F - NETWORK - PC LAN Program - VERSION CHECK
  6911.     AX = B809h
  6912. Return: AH = minor version (decimal)
  6913.     AL = major version
  6914. Notes:    this function is supported in this form by PC LAN Program, LAN Manager,
  6915.       the DOS LAN Requester, and 10NET v5.0
  6916.     10NET returns version 1.10 (AX=0A01h) for compatibility
  6917. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
  6918. --------N-2FB80A-----------------------------
  6919. INT 2F u - PC Network 1.00 - ???
  6920.     AX = B80Ah
  6921.     ???
  6922. Return: ???
  6923. Program: PC Network is an early networking package which was renamed the
  6924.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  6925. Note:    called by RECEIVER (equivalent to NetWare Lite SERVER)
  6926. --------N-2FB80F-----------------------------
  6927. INT 2F - DOS LAN Requester - GET START PARAMETERS
  6928.     AX = B80Fh
  6929.     CX = size of return data buffer
  6930.     ES:DI -> return data buffer (see #1668)
  6931. Return: AX = status
  6932.          00h     network started
  6933.          nonzero network not started
  6934.     CX = number of bytes returned in buffer
  6935.     ES:DI buffer filled
  6936. SeeAlso: AX=B809h"PC LAN Program"
  6937.  
  6938. Format of DOS LAN Requester return data buffer:
  6939. Offset    Size    Description    (Table 1668)
  6940.  00h    BYTE    major version
  6941.  01h    BYTE    minor version
  6942.  02h    WORD    configuration flags given when network was started (see #1669)
  6943.  04h 15 BYTEs    NET START machine name (space padded)
  6944.  13h    BYTE    00h
  6945.  14h 9    BYTEs    NET START domain name (NULL padded)
  6946.  1Dh    BYTE    00h
  6947.  1Eh 32 BYTEs    /WRK heuristics string (space padded, not terminated)
  6948.  3Eh    WORD    /SRV value
  6949.  40h    WORD    /ASG value
  6950.  42h    WORD    /NBC value
  6951.  44h    WORD    /NBS value
  6952.  46h    WORD    /BBC value
  6953.  48h    WORD    /BBS value
  6954.  4Ah    WORD    /PBC value
  6955.  4Ch    WORD    /PBS value
  6956.  4Eh    WORD    /PFS value
  6957.  50h    WORD    /PFT value
  6958.  52h    WORD    /PWT value
  6959.  54h    WORD    /KUC value
  6960.  56h    WORD    /KST value
  6961.  58h    WORD    /NVS value
  6962.  5Ah    WORD    /NMS value
  6963.  5Ch    WORD    /NDB value
  6964.  5Eh    WORD    /MBI value
  6965.  60h    BYTE    NetBIOS name number for machine name
  6966.  61h    BYTE    NetBIOS name number for domain name
  6967.  62h    WORD    NetBIOS sessions required for configuration
  6968.  64h    WORD    NetBIOS commands required for configuration
  6969.  66h    WORD    NetBIOS names required for configuration
  6970.  68h 128 BYTEs    NET START path (LANROOT)
  6971.  E8h    BYTE    00h
  6972.  
  6973. Bitfields for configuration flags:
  6974. Bit(s)    Description    (Table 1669)
  6975.  0    /NVS nonzero
  6976.  1    /NMS nonzero
  6977.  2    /API
  6978.  3    /HIM
  6979.  4    /LIM
  6980.  5    /ENC
  6981.  6    /POP
  6982.  7    /EMS
  6983.  8    /RPL
  6984.  9-12    reserved
  6985.  13    RDR started
  6986.  14    RCV started
  6987.  15    User is currently logged on
  6988. --------N-2FB900-----------------------------
  6989. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  6990.     AX = B900h
  6991. Return: AL = state
  6992.         00h if not installed
  6993.         FFh if installed
  6994. --------N-2FB901-----------------------------
  6995. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  6996.     AX = B901h
  6997. Return: AL = ???
  6998.     ES:BX -> RECEIVER.COM INT 2F handler
  6999. Desc:    allows more efficient execution by letting the caller bypass any other
  7000.       INT 2F handlers which have been added since RECEIVER.COM was
  7001.       installed
  7002. --------N-2FB903-----------------------------
  7003. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  7004.     AX = B903h
  7005. Return: ES:BX -> POST handler
  7006. SeeAlso: AX=B803h,AX=B904h
  7007. --------N-2FB904-----------------------------
  7008. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  7009.     AX = B904h
  7010.     ES:BX -> new POST handler
  7011. SeeAlso: AX=B804h,AX=B903h
  7012. --------N-2FB905-----------------------------
  7013. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  7014.     AX = B905h
  7015.     DS:BX -> 128-byte buffer for filename 1
  7016.     DS:DX -> 128-byte buffer for filename 2
  7017. Return: buffers filled from RECEIVER.COM internal buffers
  7018. Note:    use of filenames is unknown, but one appears to be for storing messages
  7019. SeeAlso: AX=B906h
  7020. --------N-2FB906-----------------------------
  7021. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  7022.     AX = B906h
  7023.     DS:BX -> 128-byte buffer for filename 1
  7024.     DS:DX -> 128-byte buffer for filename 2
  7025. Return: RECEIVER.COM internal buffers filled from user buffers
  7026. Note:    use of filenames is unknown, but one appears to be for storing messages
  7027. SeeAlso: AX=B905h
  7028. --------N-2FB908-----------------------------
  7029. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  7030.     AX = B908h
  7031.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  7032. Note:    this call replaces the address to which RECEIVER.COM chains on an
  7033.       INT 09 without preserving the original value.     This allows a prior
  7034.       handler to unlink, but does not allow a new handler to be added
  7035.       such that RECEIVER gets the INT 09 first.
  7036. SeeAlso: AX=B808h
  7037. --------V-2FBC00-----------------------------
  7038. INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
  7039.     AX = BC00h
  7040. Return: AL = state
  7041.         00h not installed, OK to install
  7042.         01h not installed, not OK to install
  7043.         FFh installed
  7044.         BX = 5456h ("TV")
  7045. Range:    AH=80h to AH=FFh, selected by commandline switch
  7046. SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
  7047. --------s-2FBC00BX3F3F-----------------------
  7048. INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
  7049.     AX = BC00h
  7050.     BX = 3F3Fh ('??')
  7051.     CX = 0000h
  7052.     DX = 0000h
  7053. Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
  7054. Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
  7055.       of sound boards; its primary programmer was Bryan Crane
  7056. SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
  7057. --------s-2FBC01-----------------------------
  7058. INT 2F - MediaVision MVSOUND.SYS - GET VERSION
  7059.     AX = BC01h
  7060.     BX = magic value 6D20h ('m ')
  7061.     CX = magic value 2076h (' v')
  7062.     DX = magic value 2020h ('  ')
  7063. Return: BX = ASCII major version (leading zeros significant)
  7064.     CX = ASCII minor version (leading zeros significant)
  7065. SeeAlso: AX=BC00h/BX=3F3Fh
  7066. --------s-2FBC02-----------------------------
  7067. INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
  7068.     AX = BC02h
  7069. Return: BX:DX -> state table
  7070. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC03h
  7071. --------s-2FBC03-----------------------------
  7072. INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
  7073.     AX = BC03h
  7074. Return: BX:DX -> function table
  7075. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC02h
  7076. --------s-2FBC04-----------------------------
  7077. INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
  7078.     AX = BC04h
  7079. Return: AX = 4D56h ('MV')
  7080.     BL = DMA channel
  7081.     CL = IRQ number
  7082. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND"
  7083. --------V-2FBC06-----------------------------
  7084. INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
  7085.     AX = BC06h
  7086. Return: BX = 5456h ("TV")
  7087.     CH = major version
  7088.     CL = minor version
  7089.     DL = revision
  7090. SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
  7091. --------s-2FBC06-----------------------------
  7092. INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
  7093.     AX = BC06h
  7094. Return: AX = 4D56h ('MV')
  7095.     DX:BX -> status string (first byte 0Ch if no status message to display)
  7096. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
  7097. --------s-2FBC0B-----------------------------
  7098. INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
  7099.     AX = BC0Bh
  7100. Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
  7101. SeeAlso: AX=BC00h/BX=3F3Fh
  7102. --------U-2FBE00-----------------------------
  7103. INT 2F - REDVIEW - INSTALLATION CHECK
  7104.     AX = BE00h
  7105. Return: AL = FFh if installed
  7106. Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
  7107.       copies data sent to standard output to standard error when the
  7108.       former has been redirected to a file, thus allowing the data to
  7109.       be seen on the screen at the same time it is captured in a file
  7110. --------N-2FBF00-----------------------------
  7111. INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  7112.     AX = BF00h
  7113. Return: AL = FFh if installed
  7114. --------N-2FBF01-----------------------------
  7115. INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  7116.     AX = BF01h
  7117.     ???
  7118. Return: ???
  7119. --------N-2FBF80-----------------------------
  7120. INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  7121.     AX = BF80h
  7122.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  7123. Return: AL = FFh if installed
  7124.         ES:DI -> internal workspace
  7125. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  7126. --------F-2FC0-------------------------------
  7127. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
  7128.     AH = C0h
  7129.     AL = function code (01h to 15h)
  7130. Return: ???
  7131. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h/BX=4D53h
  7132. --------N-2FC000-----------------------------
  7133. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  7134.     AX = C000h
  7135. Return: AL = FFh if installed
  7136.         DX:BX -> FAR entry point (see #1670,#1671,#1672)
  7137.         ES:SI -> signature string "LINKSUP$"
  7138. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  7139. Note:    on return, ES = DX for LSL v1.10 and v2.05; LSL makes use of this in
  7140.       its search for a previous installation
  7141. SeeAlso: AX=5100h,AX=C000h"NESL"
  7142.  
  7143. (Table 1670)
  7144. Call LSL function "Request MLID Registration" with:
  7145.     BX = 0001h
  7146.     ES:SI -> registration??? record (see #1674)
  7147.     DS:DI -> buffer for LSL information block (see #1675)
  7148. Return: AX = completion code (0000h,8001h) (see #1673)
  7149.     DS:DI buffer filled if successful
  7150.     BX,CX corrupted
  7151. Note:    see "Novell LAN Driver Developer's Guide, Volume III" for more details
  7152.  
  7153. (Table 1671)
  7154. Call LSL function "get support entry points" with:
  7155.     BX = 0002h
  7156.     ES:SI -> buffer for entry point record (see #1676)
  7157. Return: ES:SI buffer filled
  7158.  
  7159. (Table 1672)
  7160. Call LSL function "Request MLID API entry point" with:
  7161.     BX = 0003h
  7162. Return: ES:SI -> MLID (Multiple Link Interface Driver) API entry point
  7163.         (call with BX=function 00h-10h, not range-checked)
  7164. Note:    LSL v1.10 and v2.05 execute BX=0003h for BX=0000h and any BX >= 0003h
  7165.  
  7166. (Table 1673)
  7167. Values for LSL completion code:
  7168.  0000h    successful
  7169.  8001h    out of resources
  7170.  8002h    bad parameter
  7171.  8003h    no more items
  7172.  8004h    item not present
  7173.  8005h    failed
  7174.  8006h    receive overflow
  7175.  8007h    canceled
  7176.  8008h    bad command
  7177.  8009h    duplicate entry
  7178.  800Ah    no such handler
  7179.  800Bh    no such driver
  7180.  
  7181. Format of LSL registration record:
  7182. Offset    Size    Description    (Table 1674)
  7183.  00h    DWORD    -> ??? FAR function (to be called with ES:SI -> ??? and
  7184.           returning AX = completion code)
  7185.  04h    DWORD    -> ???
  7186.  08h    DWORD    -> ??? data (at least 3Eh bytes)
  7187.  
  7188. Format of LSL information block:
  7189. Offset    Size    Description    (Table 1675)
  7190.  00h    DWORD    -> ??? entry point (called with BX=function 00h-11h)
  7191.  04h    WORD    ???
  7192.  06h    WORD    ???
  7193. Note:    due to a fencepost error, LSL v2.05 (distributed with Novell DOS 7)
  7194.       will crash if the above entry point is called with BX=0012h
  7195.  
  7196. Format of entry point record:
  7197. Offset    Size    Description    (Table 1676)
  7198.  00h    DWORD    pointer to protocol support entry point in LSL (see #1677)
  7199.  04h    DWORD    pointer to general support entry point in LSL (see #1678)
  7200.  
  7201. (Table 1677)
  7202. Call protocol support entry point with:
  7203.     BX = function number
  7204.         0000h ???
  7205.         0001h ???
  7206.         0002h ???
  7207.         0003h "ScheduleAESEvent"
  7208.         ES:SI -> AES ECB to be scheduled (see #1681)
  7209.         Return: ES,SI preserved
  7210.         0004h "CancelAESEvent"
  7211.         ES:SI -> ECB to be cancelled (see #1681)
  7212.         Return: ES,SI preserved
  7213.         0005h "GetIntervalMarker"
  7214.         Return: DX:AX = current interval marker in milliseconds
  7215.             all other registers preserved
  7216.         0006h "RegisterStack"
  7217.         AX = logical board number
  7218.         ES:SI -> bound stack info structure (see #1691)
  7219.         Return: BX = assigned Stack ID if AX=0000h
  7220.         0007h "DeRegisterStack"
  7221.         AX = protocol stack's assigned Stack ID
  7222.         0008h "RegisterDefaultStack"
  7223.         AX = logical board number
  7224.         ES:SI -> stack info structure (see #1692)
  7225.         0009h "DeRegisterDefaultStack"
  7226.         AX = logical board number
  7227.         000Ah "RegisterPrescanStack"
  7228.         AX = logical board number
  7229.         ES:SI -> stack info structure (see #1692)
  7230.         000Bh "DeRegisterPrescanStack"
  7231.         AX = logical board number
  7232.         000Ch "SendPacket"
  7233.         ES:SI -> send ECB
  7234.         Return: interrupts disabled
  7235.         000Dh ???
  7236.         000Eh ???
  7237.         000Fh ???
  7238.         0010h "GetStackIDFromName"
  7239.         ES:SI -> counted NUL-terminated protocol name (max 15 chars)
  7240.         Return: BX = Stack ID if AX=0000h
  7241.         0011h "GetPIDFromStackIDBoard"
  7242.         AX = Stack ID for protocol
  7243.         CX = logical board number
  7244.         ES:SI -> 6-byte buffer for protocol ID
  7245.         0012h "GetMLIDControlEntry"
  7246.         AX = logical board number
  7247.         Return: ES:SI -> MLID control handler (see #1679) if AX=0000h
  7248.         0013h "GetProtocolControlEntry"
  7249.         AX = Stack ID or
  7250.             FFFEh Prescan stack
  7251.                 CX = logical board number
  7252.             FFFFh default protocol
  7253.                 CX = logical board number
  7254.         Return: ES:SI -> protocol stack control entry point if AX=0000h
  7255.                   (see #1680)
  7256.         0014h "GetLSLStatistics"
  7257.         Return: AX = 0000h (successful)
  7258.             ZF set
  7259.             ES:SI -> LSL statistics table (see #1683)
  7260.         0015h "BindStack"
  7261.         AX = protocol stack's assigned Stack ID
  7262.         CX = logical board number
  7263.         0016h "UnbindStack"
  7264.         AX = protocol stack's assigned Stack ID
  7265.         CX = logical board number
  7266.         0017h "AddProtocolID"
  7267.         AX = frame type ID code
  7268.         ES:SI -> 6-byte protocol ID
  7269.         CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
  7270.         0018h "RelinquishControl"
  7271.         Return: after LSL performs any necessary background processing
  7272.         0019h "GetLSLConfiguration"
  7273.         Return: AX = 0000h (successful)
  7274.             ZF set
  7275.             ES:SI -> LSL configuration table (see #1682)
  7276.         001Ah "GetTickMarker"
  7277.         Return: AX = number of 55ms ticks since LSL loaded
  7278.             BX destroyed
  7279. Return: AX = completion code (see #1673)
  7280.     ZF set if successful
  7281.     SS:SP, DS, BP preserved; most other registers may be destroyed
  7282.  
  7283. (Table 1678)
  7284. Call general support entry point with:
  7285.     BX = function number
  7286.         0000h "Allocate Memory" (obsolete)
  7287.          always returns AX=8008h (BAD_COMMAND)
  7288.         0001h "Free Memory" (obsolete)
  7289.          always returns AX=8008h (BAD_COMMAND)
  7290.         0002h "Realloc Memory" (obsolete)
  7291.          always returns AX=8008h (BAD_COMMAND)
  7292.         0003h "Memory Statistics" (obsolete)
  7293.          always returns AX=8008h (BAD_COMMAND)
  7294.         0004h "Add Memory To Pool" (obsolete)
  7295.          always returns AX=8008h (BAD_COMMAND)
  7296.         0005h "AddGeneralService"
  7297.         ES:SI -> General Service Control Block (see #1693)
  7298.         0006h "RemoveGeneralService"
  7299.         ES:SI -> General Service Control Block (see #1693)
  7300.         0007h "GetNETcfgPath"
  7301.         Return: AX = 0000h (successful)
  7302.             DS:DX -> ASCIZ pathname for NET.CFG
  7303.         0008h U ???     (in LSL 1.10)
  7304.         Return: AX = 0000h
  7305.             ES:SI -> ??? (a 22-byte data area)
  7306.         000Ah "GetCriticalSectionStatus"
  7307.         Return: BX = total outstanding calls to "StartCriticalSection"
  7308.         000Bh "ServiceEvents"
  7309.         interrupts disabled
  7310.         Return: interrupts disabled
  7311.         0010h "GetStackECB"
  7312.         DS:DI -> Lookahead structure (see #1694)
  7313.         interrupts disabled
  7314.         Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
  7315.             interrupts disabled
  7316.         8000h-FFFFh reserved for user general service providers
  7317. Return: AX = completion code (see #1673)
  7318.     ZF set if successful
  7319.     SS:SP, DS, BP preserved
  7320.  
  7321. (Table 1679)
  7322. Call MLID control handler with:
  7323.     AX = logical board number
  7324.     BX = function number
  7325.         0000h "GetMLIDConfiguration"
  7326.         Return: ES:SI -> MLID's configuration table if successful
  7327.                   (see #1686 for format)
  7328.         0001h "GetMLIDStatistics"
  7329.         Return: ES:SI -> MLID's statistics table if successful
  7330.                   (see #1686 for format)
  7331.         0002h "AddMulticastAddress"
  7332.         ES:SI -> 6-byte multicast address to add
  7333.         0003h "DeleteMulticastAddress"
  7334.         ES:SI -> 6-byte multicast address to delete
  7335.         0005h "MLIDShutdown"
  7336.         CX = type
  7337.             0000h permanent (also deregisters from LSL)
  7338.             other temporary (shutdown hardware only)
  7339.         0006h "MLIDReset" reinitialize board / restart from temp shutdown
  7340.         0007h "Create Connection" (obsolete?)
  7341.         ???
  7342.         0008h "Delete Connection" (obsolete?)
  7343.         ???
  7344.         0009h "SetLookAheadSize"
  7345.         CX = requested lookahead size (00h-80h)
  7346.         000Ah "PromiscuousChange"
  7347.         CX = what to receive promiscuously
  7348.             bit 0: MAC frames
  7349.             bit 1: non-MAC frames
  7350.         000Bh "RegisterReceiveMonitor"
  7351.         CX = subfunction
  7352.             0000h disable receive monitoring
  7353.             else  enable receive monitoring
  7354.         ES:SI -> monitor receive routine
  7355.         ES:DI -> monitor transmit routine
  7356.         000Ch "Driver Poll" (obsolete?)
  7357.         ???
  7358. Return: AX = completion code (see #1673)
  7359.     ZF set if successful
  7360. Note:    not all boards/MLIDs support function 0010h; see bit 13 in the MLID
  7361.       mode flags field of the MLID's configuration table
  7362.  
  7363. (Table 1680)
  7364. Call protocol stack control entry point with:
  7365.     BX = function number
  7366.         0000h "GetProtocolStackConfiguration"
  7367.         Return: ES:SI -> protocol stack's configuration table
  7368.                    (see #1685)
  7369.         0001h "GetProtocolStackStatistics"
  7370.         Return: ES:SI -> protocol stack's statistics table (see #1684)
  7371.         0002h "BindToMLID"
  7372.         CX = board number to bind to
  7373.         ES:SI -> implementation-dependant parameter string
  7374.         0003h "UnBindFromMLID"
  7375.         CX = board number from which protocol should unbind
  7376.         ES:SI -> optional implementation-dependant parameter string
  7377.         0004h "MLIDDeRegistered"
  7378.         CX = board number that has de-registered from LSL
  7379. Return: AX = status
  7380.         0000h successful
  7381.         else implementation-dependant error codes
  7382.     ZF set if successful
  7383.     SS:SP, DS, BP preserved
  7384.  
  7385. Format of AES ECB:
  7386. Offset    Size    Description    (Table 1681)
  7387.  00h    DWORD    "AESLink" pointer used by LSL for list management
  7388.  04h    DWORD    number of milliseconds to wait
  7389.  08h    DWORD    "AESStatus" (is set to 00000000h when AES ESR is invoked)
  7390.  0Ch    DWORD    -> function to be invoked when time expires
  7391.         ES:SI will point to this structure on entry,
  7392.         DS, BP, and SS:SP must be preserved.
  7393. SeeAlso: #1695
  7394.  
  7395. Format of LSL Configuration Table:
  7396. Offset    Size    Description    (Table 1682)
  7397.  00h    BYTE    major version of configuration table
  7398.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  7399.  02h  8 BYTEs    reserved
  7400.  0Ah    BYTE    LSL major version (decimal)
  7401.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  7402. ---LSL 1.0x ---
  7403.  0Ch 14 BYTEs    reserved
  7404. ---LSL 1.10+ ---
  7405.  0Ch    WORD    maximum number of boards which LSL can handle
  7406.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  7407.  10h 12 BYTEs    reserved
  7408.  
  7409. Format of LSL Statistics Table:
  7410. Offset    Size    Description    (Table 1683)
  7411.  00h    BYTE    major version of statistics table format
  7412.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  7413.  02h    WORD    "GenericCounters" number of counters in static portion of
  7414.           table
  7415.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  7416.           counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  7417.           is the next field, etc.
  7418.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  7419.  0Ch    DWORD    reserved
  7420.  10h    DWORD    reserved
  7421.  14h    DWORD    "AESEventsCount" number of completed AES events
  7422.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  7423.           sections inside the MLIDs
  7424.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  7425.  20h    DWORD    reserved
  7426.  24h    DWORD    reserved
  7427.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  7428.  2Ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  7429.           protocol stack
  7430.  30h    WORD    "NumberCustom" number of custom variables that follow
  7431.  32h  N DWORDs    custom counters
  7432.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  7433.     var    length-prepended and NULL terminated string for Counter 0
  7434.     ...
  7435.     var    length-prepended and NULL terminated string for Counter N-1
  7436. SeeAlso: #1684,#1690
  7437.  
  7438. Format of Protocol Stack Statistics Table:
  7439. Offset    Size    Description    (Table 1684)
  7440.  00h    BYTE    statistics table major version
  7441.  01h    BYTE    statistics table minor version (decimal, 0-99)
  7442.  02h    WORD    number of generic counters following
  7443.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  7444.  08h    DWORD    TotalTxPackets
  7445.  0Ch    DWORD    TotalRxPackets
  7446.  10h    DWORD    IgnoredRxPackets
  7447.  14h    WORD    number of custom counters
  7448.  16h  N DWORDs    custom counters
  7449.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  7450.     var    length-prepended and NULL terminated string for Counter 0
  7451.     ...
  7452.     var    length-prepended and NULL terminated string for Counter N-1
  7453. SeeAlso: #1683,#1690
  7454.  
  7455. Format of Protocol Stack Configuration Table:
  7456. Offset    Size    Description    (Table 1685)
  7457.  00h    BYTE    configuration table major version
  7458.  01h    BYTE    configuration table minor version (decimal, 0-99)
  7459.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  7460.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  7461.  0Ah    BYTE    protocol stack major version
  7462.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  7463.  0Ch 16 BYTEs    reserved for future use
  7464.  
  7465. Format of MLID Configuration Table:
  7466. Offset    Size    Description    (Table 1686)
  7467.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  7468.  1Ah    BYTE    configuration table major version
  7469.  1Bh    BYTE    configuration table minor version (decimal, 0-99)
  7470.  1Ch  6 BYTEs    node address
  7471.  22h    WORD    MLID mode flags (see #1687)
  7472.  24h    WORD    board number
  7473.  26h    WORD    board instance (if more than one of same board installed)
  7474.  28h    WORD    maximum packet size
  7475.  2Ah    WORD    BestDataSize
  7476.  2Ch    WORD    WorstDataSize
  7477.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  7478.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  7479.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  7480.  3Ah    WORD    reserved (0000h)
  7481.  3Ch    WORD    frame type ID
  7482.  3Eh    WORD    TransportTime (milliseconds)
  7483.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  7484.  44h    WORD    lookahead size
  7485.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  7486.  48h    WORD    QueueDepth
  7487.  4Ah  6 BYTEs    reserved (0)
  7488.  50h    BYTE    driver major version
  7489.  51h    BYTE    driver minor version (decimal, 0-99)
  7490.  52h    WORD    bus/multicast flags (see #1688)
  7491.  54h    WORD    send retries
  7492.  56h    DWORD    ConfigTableLink
  7493.  5Ah    WORD    MLID sharing flags (see #1689)
  7494.  5Ch    WORD    slot number
  7495.  5Eh    WORD    I/O address 1
  7496.  60h    WORD    I/O range 1
  7497.  62h    WORD    I/O address 2
  7498.  64h    WORD    I/O range 2
  7499.  66h    DWORD    memory address 1
  7500.  6Ah    WORD    memory size 1
  7501.  6Ch    DWORD    memory address 2
  7502.  70h    WORD    memory size 2
  7503.  72h    BYTE    interrupt line 1
  7504.  73h    BYTE    interrupt line 2
  7505.  74h    BYTE    DMA line 1
  7506.  75h    BYTE    DMA line 2
  7507.  
  7508. Bitfields for MLID mode flags:
  7509. Bit(s)    Description    (Table 1687)
  7510.  15    MLID supports Octet Reversal
  7511.  14    node address is non-canonical
  7512.  13    promiscuous mode is supported
  7513.  12-8    reserved
  7514.  7    LDataSize field in LookAhead structure supported
  7515.  6    raw send supported
  7516.  5    MLID needs to be polled by LSL
  7517.  4    reserved (0)
  7518.  3    multicasting is supported
  7519.  2    not currently used by DOS ODI, set to 0.
  7520.  1    network card uses DMA.
  7521.  0    RealDriverBit, always set to 1.
  7522.  
  7523. Bitfields for bus/multicast flags:
  7524. Bit(s)    Description    (Table 1688)
  7525.  10-9    specialized multicast support
  7526.     00 = Group addressing is default for medium
  7527.     01 = Invalid
  7528.     10 = Filter group address in MLID.
  7529.     11 = Adapter filters group address.
  7530.  2    supports Micro Channel cards
  7531.  1    supports ISA cards
  7532.  0    supports EISA cards
  7533.  
  7534. Bitfields for MLID sharing flags:
  7535. Bit(s)    Description    (Table 1689)
  7536.  8    NIC can share DMA2
  7537.  7    NIC can share DMA1
  7538.  6    NIC can share IRQ2
  7539.  5    NIC can share IRQ1
  7540.  4    NIC can share Memory2
  7541.  3    NIC can share Memory1
  7542.  2    NIC can share IO2
  7543.  1    NIC can share IO1
  7544.  0    MLID is currently shut down
  7545.  
  7546. Format of MLID Statistics Table:
  7547. Offset    Size    Description    (Table 1690)
  7548.  00h    BYTE    driver statistics table major version
  7549.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  7550.  02h    WORD    number of generic counters (typically 13)
  7551.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  7552.  08h    DWORD    TotalTxCount
  7553.  0Ch    DWORD    TotalRxCount
  7554.  10h    DWORD    NoECBAvailableCount
  7555.  14h    DWORD    TxTooBigCount
  7556.  18h    DWORD    TxTooSmallCount
  7557.  1Ch    DWORD    RxOverflowCount
  7558.  20h    DWORD    RxTooBigCount
  7559.  24h    DWORD    RxTooSmallCount
  7560.  28h    DWORD    TxMiscCount
  7561.  2Ch    DWORD    RxMiscCount
  7562.  30h    DWORD    TxRetryCount
  7563.  34h    DWORD    RxChecksumErrorCount
  7564.  38h    DWORD    RxMismatchCount
  7565.  3Ch    WORD    number of custom counters
  7566.  3Eh  N DWORDs    custom counters
  7567.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  7568.     var    length-prepended and NULL terminated string for Counter 0
  7569.     ...
  7570.     var    length-prepended and NULL terminated string for Counter N-1
  7571. SeeAlso: #1683,#1684
  7572.  
  7573. Format of bound stack info structure:
  7574. Offset    Size    Description    (Table 1691)
  7575.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  7576.  04h    DWORD    -> receive handler
  7577.  08h    DWORD    -> control handler
  7578.  
  7579. Format of stack info structure:
  7580. Offset    Size    Description    (Table 1692)
  7581.  00h    DWORD    -> receive handler
  7582.  04h    DWORD    -> control handler
  7583.  
  7584. Format of General Service Control Block:
  7585. Offset    Size    Description    (Table 1693)
  7586.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  7587.  04h    DWORD    -> entry point for general service handler
  7588.  08h    WORD    command code for this general service (8000h-FFFFh)
  7589. Note:    the control block must not be altered or deallocated until the general
  7590.       service is removed
  7591.  
  7592. Format of Lookahead structure:
  7593. Offset    Size    Description    (Table 1694)
  7594.  00h    DWORD    -> Media header
  7595.  04h    DWORD    -> lookahead buffer
  7596.  08h    WORD    length of lookahead buffer
  7597.  0Ah  6 BYTEs    protocol ID
  7598.  10h    WORD    logical board number
  7599.  12h    WORD    lookahead size
  7600.  
  7601. Format of ODI ECB:
  7602. Offset    Size    Description    (Table 1695)
  7603.  00h    DWORD    link to next ECB
  7604.  04h    DWORD    link to previous ECB
  7605.  08h    WORD    general status
  7606.         0000h received successfully
  7607.         8006h packet overflow
  7608.         8007h reception aborted (data not valid)
  7609.  0Ah    DWORD    -> event service routine or RETF (never 0000h:0000h)(see #1696)
  7610.  0Eh    WORD    protocol stack identifier
  7611.  10h  6 BYTEs    protocol ID (sending only)
  7612.  16h    WORD    MLID board number (sending only)
  7613.  18h  6 BYTEs    MAC destination address
  7614.  1Eh  4 BYTEs    driver workspace
  7615.  22h  4 BYTEs    protocol workspace
  7616.  26h    WORD    total length of sent buffer
  7617.  28h    WORD    fragment count
  7618.  2Ah  2 WORDs    segment,offset of first fragment buffer
  7619.  2Eh    WORD    length of first fragment buffer
  7620.     ...
  7621. SeeAlso: #1681
  7622.  
  7623. (Table 1696)
  7624. Values event service routine is called with:
  7625.     ES:SI -> associated ODI ECB (see #1695)
  7626.     interrupts disabled
  7627. Return: DS,BP,SS,SP preserved
  7628.     interrupt disabled
  7629. Notes:    the service routine may invoke any IPX/ODI function except CloseSocket
  7630.     it is safe to send a packet and wait for completion if enough stack
  7631.       space is available
  7632. --------N-2FC000-----------------------------
  7633. INT 2F - Novell NetWare Event Service Layer (NESL) 1.0 - INSTALLATION CHECK
  7634.     AX = C000h
  7635. Return: AL = FFh if installed
  7636.         DX:BX -> FAR entry point (see #1697,#1698,#1699,#1700,#1701,#1702)
  7637.         ES:SI -> signature string "NESL_EVENTS"
  7638. Program: NESL is a generic interface for event handling in ODI drivers and
  7639.       other NetWare-oriented modules.  Primarily intended to support
  7640.       power management and "hot swapping" of PCMCIA cards, but it is not
  7641.       limited to this.
  7642. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  7643. SeeAlso: AX=C000h"Link Support Layer",AX=C000h"NETWARN"
  7644.  
  7645. (Table 1697)
  7646. Call NESL function GetNESLConfigPointer with:
  7647.     BX = 0000h
  7648. Return: AX = completion code (0000h,8008h) (see #1703)
  7649.     ES:SI -> NESL configuration table if successful (see #1704)
  7650.     BP,DS,STACK preserved
  7651. Desc:    Obtain a pointer to the NESL Configuration Table
  7652. SeeAlso: #1698,#1701
  7653.  
  7654. (Table 1698)
  7655. Call NESL function RegisterEventProducer with:
  7656.     BX = 0001h
  7657.     ES:SI -> Producer Event Control Block (PECB) (see #1705)
  7658. Return: AX = completion code (0000h, 8005h, 8008h) (see #1703)
  7659.     ES:SI -> still points to PECB
  7660.     BP,DS,STACK preserved
  7661. Desc:    Allows a module to register as a producer of a given event class
  7662. Note:    PECB_ClassName and PECB_Flags must be filled in on entry
  7663. SeeAlso: #1577,#1699,#1700,#1701
  7664.  
  7665. (Table 1699)
  7666. Call NESL function DeRegisterEventProducer with:
  7667.     BX = 0002h
  7668.     ES:SI -> PECB previously passed to RegisterEventProducer (see #1705)
  7669. Return: AX = completion code (0000h, 8002h, 8008h) (see #1703)
  7670.     ES:SI -> still points to PECB
  7671.     BP,DS,STACK preserved
  7672. Desc:    Allows a module to de-register as a producer of a given event class
  7673. SeeAlso: #1698,#1702
  7674.  
  7675. (Table 1700)
  7676. Call NESL function EventNotification with:
  7677.     BX = 0003h
  7678.     ES:SI -> PECB previously registered (see #1705)
  7679. Return: AX = completion code (0h, 8005h, 8008h) (see #1703)
  7680.     ES:SI -> still points to PECB
  7681.     BP,DS,STACK preserved
  7682. Desc:    Allows a module to signal that an event has just occurred in a given
  7683.       event class.
  7684. Notes:    Once called, NESL will generate corresponding callouts for this
  7685.       event, as described in Table #1707.
  7686.     on entry, the PECB_DataPtr must point at an Event Parameter Block (EPB)
  7687.       (see #1708) filled in to match the desired event
  7688. SeeAlso: #1698
  7689.  
  7690. (Table 1701)
  7691. Call NESL function RegisterEventConsumer with:
  7692.     BX = 0004h
  7693.     ES:SI -> Consumer Event Control Block (CECB) (see #1706)
  7694. Return: AX = completion code (0h, 8005h, 8008h) (see #1703)
  7695.     ES:SI -> still points to CECB
  7696.     BP,DS,STACK preserved
  7697. Desc:    Allows a module to register as a consumer of a given event class
  7698. Note:    on entry, the CECB_ClassName, CECB_NotifProc and CECB_OSILevel must be
  7699.       filled in.
  7700. SeeAlso: #1698,#1702
  7701.  
  7702. (Table 1702)
  7703. Call NESL function DeRegisterEventConsumer with:
  7704.     BX = 0005h
  7705.     ES:SI -> CECB previously passed to RegisterEventConsumer (see #1706)
  7706. Return: AX = completion code (0h, 8002h, 8008h) (see #1703)
  7707.     ES:SI -> still points to CECB
  7708.     BP,DS,STACK preserved
  7709. Desc:    Allows a module to de-register as a consumer of a given event class
  7710. SeeAlso: #1699,#1701
  7711.  
  7712. (Table 1703)
  7713. Values for NESL Error code:
  7714.  0000h    Successful
  7715.  8002h    Bad Parameter
  7716.  8005h    Fail
  7717.  8008h    Bad Command
  7718.  
  7719. Format of NESL Configuration Table:
  7720. Offset    Size    Description    (Table 1704)
  7721.  00h    WORD    NESL_Cfg_MajVer     Major Version of this table (=1)
  7722.  02h    WORD    NESL_Cfg_MinVer     Minor Version of this table (=0)
  7723.  04h    DWORD    NESL_Cfg_ModLName   -> ASCIZ long name of NESL module
  7724.         (typically -> "NetWare Event Service Layer for 16-Bit DOS")
  7725.  08h    DWORD    NESL_Cfg_ModSName   -> ASCIZ short name of NESL module
  7726.         (typically -> "NESL")
  7727.  0Ch    WORD    NESL_Cfg_ModMajVer  Major Version of NESL itself (=1)
  7728.  0Eh    WORD    NESL_Cfg_ModMinVer  Minor Version of NESL itself (=0)
  7729.  
  7730. Format of NESL Producer Event Control Block (PECB):
  7731. Offset    Size    Description    (Table 1705)
  7732.  00h    WORD    PECB_MajVer  Major Version of this structure (=1)
  7733.  02h    WORD    PECB_MinVer  Minor Version of this structure (=0)
  7734.  04h    DWORD    PECB_NextProducer   -> next PECB.  NULL if last.
  7735.  08h    DWORD    PECB_ClassName        -> ASCIZ string identifying event
  7736.                       class (see #1709)
  7737.  0Ch    DWORD    PECB_ConsumerList   -> list of consumers for this event class
  7738.  10h    DWORD    PECB_DataPtr        -> points to additional data during events
  7739.  14h    DWORD    PECB_Flags
  7740.         Bit 0    =0  consumers should be called "top down" for this
  7741.                 event class.  (OSI level 7 down to OSI level 1)
  7742.             =1  consumers should be called "bottom up"
  7743.         Bits 1-31   Reserved =0
  7744.  18h  8 BYTEs    PECB_Reserved (all zeros)
  7745. Note:    Although the event producer provides the memory for the PECB, the
  7746.       NESL module controls this memory until the event class is
  7747.       de-registered.
  7748.     While owned by NESL, this structure should be treated as read-only,
  7749.       except for the PECB_DataPtr field.
  7750.  
  7751. Format of NESL Consumer Event Control Block (CECB):
  7752. Offset    Size    Description    (Table 1706)
  7753.  00h    WORD    CECB_MajVer  Major Version of this structure (=1)
  7754.  02h    WORD    CECB_MinVer  Minor Version of this structure (=0)
  7755.  04h    DWORD    CECB_NextConsumer   -> next CECB.  NULL if last.
  7756.  08h    DWORD    CECB_ClassName        -> ASCIZ string identifying event
  7757.                       class (see #1709)
  7758.  0Ch    DWORD    CECB_NotifProc        -> FAR CALL event handler (see #1707)
  7759.  10h    WORD    CECB_OSILevel
  7760.         Bits 4-7 = OSI Layer of this module (1 through 7)
  7761.         Bits 0-3 = relative ordering with other modules on same layer
  7762.  13h 14 BYTEs    CECB_Reserved (all zeros)
  7763. Note:    Although the event consumer provides the memory for the CECB, the
  7764.       NESL module controls this memory until the consumer is de-registered.
  7765.     While owned by NESL, this structure should be treated as read-only,
  7766.  
  7767. (Table 1707)
  7768. Values NESL Consumer Notification Procedure is called with:
  7769.     ES:SI -> Event Parameter Block (EPB) (see #1708)
  7770. Return: AX = completion code (0000h, 8005h) (see #1703)
  7771.     ES:SI -> still points to EPB
  7772. Desc:    Called by NESL to notify the consumer when an event has occurred in
  7773.       an event class for which it has registered.
  7774. SeeAlso: #1706
  7775.  
  7776. Format of NESL Event Parameter Block (EPB):
  7777. Offset    Size    Description    (Table 1708)
  7778.  00h    WORD    EPB_MajVer  Major Version of this structure (=1)
  7779.  02h    WORD    EPB_MinVer  Minor Version of this structure (=0)
  7780.  04h    DWORD    EPB_ClassName  -> ASCIZ string identifying event class
  7781.                   (see #1709)
  7782.  08h    DWORD    EPB_EventName  -> ASCIZ string identifying event within
  7783.                   class (see #1710)
  7784.  0Ch    DWORD    EPB_ModuleName -> ASCIZ string identifying module
  7785.                   producing event
  7786.  10h    DWORD    EPB_DataPtr0   -> event-defined data or NULL if not used
  7787.  14h    DWORD    EPB_DataPtr1   -> event-defined data or NULL if not used
  7788.  18h  8 BYTEs    EPB_Reserved (all zeros)
  7789.  
  7790. (Table 1709)
  7791. Values for NESL Event Class Names:
  7792.  Event Class        Description
  7793.  -------------------    -----------------------------------------
  7794.  Service Suspend    Suspension of a service.  Called top-down.
  7795.  Service Resume        Resumption/availability of a service. Called bottom-up.
  7796.  Service/Status Change    Change in status or level of service.  Called top-down.
  7797.  Suspend Request    Request to suspend a service.  Called bottom-up.
  7798. Note:    Contact Novell Labs to register new event classes.
  7799.  
  7800. (Table 1710)
  7801. Values for NESL Event Names:
  7802.  Event Name            Class            Description
  7803.  --------------------------    -------------        ---------------------------
  7804.  MLID Cable Disconnect        Service Suspend        Cable disconnected from NIC
  7805.  MLID Card Removal        Service Suspend        PCMCIA card removed
  7806.  MLID Hardware Failure        Service Suspend        Serious hardware
  7807.                               failure in NIC
  7808.  MLID Not In Range        Service Suspend        Wireless access point
  7809.                               is out of range
  7810.  MLID Shutdown            Service Suspend        MLID was shut down
  7811.  MLID Media Access Denied    Service Suspend        Access to physical
  7812.                               medium unsuccessful
  7813.  MLID Cable Reconnect        Service Resume        Cable re-connected to NIC
  7814.  MLID Card Insertion Complete    Service Resume        PCMCIA card inserted
  7815.  MLID In Range            Service Resume        Wireless access point
  7816.                               in range
  7817.  MLID Reset            Service Resume        MLID was just reset
  7818.  MLID Access Point Change    Serv/Status Change  Station has moved to
  7819.                               new access point
  7820.  MLID Speed Change        Serv/Status Change  Change in communic. speed
  7821. Note:    Contact Novell Labs to register new event names.
  7822.     For all predefined events above, EPB_DataPtr0 (see #1708) points
  7823.       to the MLID Configuration table (see AX=C000h"ODI") for the
  7824.       affected MLID.
  7825. --------N-2FC000-----------------------------
  7826. INT 2F - Novell NetWare Connect NETWARN - INSTALLATION CHECK
  7827.     AX = C000h
  7828. Return: AL = FFh if installed
  7829.         SI = segment of resident portion
  7830. Program: NETWARN is a utility supplied with NetWare Connect to warn a
  7831.       remote dialup user when programs are about to be loaded slowly over
  7832.       the modem link.
  7833. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  7834. Note:    on return, verify that it is NETWARN responding by examining signature
  7835.       at in NETWARN's data table in the resident segment (see #1711)
  7836. SeeAlso: AX=C000h"ODI",AX=C000h"NESL"
  7837.  
  7838. Format of NETWARN Configuration structure:
  7839. Offset    Size    Description    (Table 1711)
  7840.  103h 7 BYTEs    signature string "NETWARN"
  7841.  10Ah    BYTE    major version in ASCII (="1")
  7842.  10Bh    BYTE    minor version in ASCII (="0")
  7843.  10Ch    DWORD    minimum size of EXE cared about in bytes (/S=xxxx)
  7844.  110h    WORD    same value in kilobytes (see 0113h, bit 4 below)
  7845.  112h    BYTE    multiplex code (AH value) actually being used
  7846.  113h    WORD    options (see #1712)
  7847.  115h    DWORD    INT 21h vector before NETWARN loaded
  7848.  119h    DWORD    INT 2Fh vector before NETWARN loaded
  7849.  11Dh 16 BYTEs    ASCIIZ local name of last device which was checked
  7850.  12Dh 128 BYTEs ASCIIZ remote name of last device which was checked
  7851. Note:    the specified offsets are from the start of the resident segment
  7852.  
  7853. Bitfields for NETWARN options:
  7854. Bit(s)    Description    (Table 1712)
  7855.  0    ??? (=0)
  7856.  1    /U (Unload) selected (never in resident)
  7857.  2    /E (Enabled) Will trap & check EXEC's
  7858.  3    /D (Disabled) No EXEC checking done
  7859.  4    /S (Size) was set (see 010Ch, 0110h above)
  7860.  5    /P (Path shown)
  7861.  6    /H or /? (Help) (never in resident)
  7862. SeeAlso: #1711
  7863. --------f-2FC000-----------------------------
  7864. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  7865.     AX = C000h
  7866. Return: AL = FFh if installed
  7867.        ES:DI -> signature string "FN32 32CHAR TSR"
  7868. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  7869. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  7870.       managing dictionary files in each directory which contains long
  7871.       filenames
  7872. --------M-2FC000-----------------------------
  7873. INT 2F - QMR - INSTALLATION CHECK
  7874.     AX = C000h
  7875. Return: AL = FFh if installed
  7876.         ES:DI -> signature string "QMR1!"
  7877. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  7878.       service interrupt (int 33h) and substitutes a fast software
  7879.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  7880. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  7881. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  7882. --------V-2FC000-----------------------------
  7883. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  7884.     AX = C000h
  7885. Return: AL = FFh if installed
  7886.         BX = segment of resident code
  7887. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  7888.       Javurek
  7889. Range:    AH=C0h to AH=FFh, selected by scanning for a free multiplex number
  7890. Note:    the transient portion of VGAsave compares the first 38 bytes of the
  7891.       resident code (addressed through BX) against its own copy of the
  7892.       resident code to complete the installation check
  7893. SeeAlso: INT 14/AX=AA01h,INT 2F/AH=93h
  7894. Index:    screen saver;VGAsave
  7895. --------V-2FC000-----------------------------
  7896. INT 2F - AD-DOS - INSTALLATION CHECK
  7897.     AX = C000h
  7898. Return: AL = FFh if installed
  7899.         BX = 4144h ('AD')
  7900.         CX = 2D44h ('-D')
  7901.         DX = 4F53h ('OS')
  7902. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  7903.       MS Windows
  7904. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  7905. SeeAlso: AX=C001h,AX=C003h,AX=C005h,AX=C007h,AX=C009h,AX=C020h,INT 14/AX=AA01h
  7906. Index:    screen saver;AD-DOS
  7907. --------U-2FC000-----------------------------
  7908. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  7909.     AX = C000h
  7910. Return: AL = FFh if installed
  7911.         ES = segment of resident code
  7912. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  7913.       with 3-mode floppy drives to read Wang document diskettes
  7914. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  7915. Note:    The installation check is completed by comparing the resident code
  7916.       with the copy in the transient program
  7917. --------i-2FC000-----------------------------
  7918. INT 2F O - ASPIHOOK.SYS - INSTALLATION CHECK
  7919.     AX = C000h
  7920. Return: AL = FFh if multiplex number in use
  7921.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  7922. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  7923.       ASPI host manager; it is part of the Personal Measure system
  7924.       activity monitor from Spirit of Performance, Inc.
  7925. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  7926. SeeAlso: AX=C000h"PMEASURE"
  7927. --------i-2FC000-----------------------------
  7928. INT 2F - PMEASURE.EXE - INSTALLATION CHECK
  7929.     AX = C000h
  7930. Return: AL = FFh if multiplex number in use
  7931.         ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
  7932. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  7933.       is part of the Personal Measure system activity monitor from Spirit
  7934.       of Performance, Inc.
  7935. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  7936. Note:    If a Personal Measure Hook Module, such as ASPIHOOK.SYS, is already
  7937.       installed, PMEASURE.EXE uses the next highest free multiplex number.
  7938. SeeAlso: AX=C000h"ASPIHOOK",AX=C000h"PERSONAL MEASURE"
  7939. --------i-2FC000-----------------------------
  7940. INT 2F - PERSONAL MEASURE - HOOK MODULE INSTALLATION CHECK
  7941.     AX = C000h
  7942. Return: AL = FFh if installed
  7943.     ES:DI -> signature string "PMEASUREHOOK"
  7944.     AX = C000 if not installed, per mux id conventions
  7945.     DH = major release number (binary)
  7946.     DL = minor release number (binary)
  7947. Program: The Personal Measure system activity monitor from Spirit of
  7948.       Performance, Inc. uses an extensible series of modules to hook
  7949.       into various operating system interfaces and monitor system calls.
  7950.       Current hook modules are ASPIHOOK.SYS for ASPI device activity
  7951.       and CDRHOOK.SYS for non-ASPI CD-ROM activity.     All hook modules
  7952.       share the same mux id.
  7953. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  7954. SeeAlso: AX=C000h"PMEASURE.EXE",AX=C001h"PERSONAL MEASURE"
  7955. --------c-2FC000-----------------------------
  7956. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
  7957.     AX = C000h
  7958. Return: AL = FFh if installed
  7959.         SI = signature value 20D6h
  7960.         DI = signature value 8761h
  7961.         ES:BX -> configuration table (see #1713)
  7962.         CX = ??? (0300h)
  7963.         DX = ??? (0020h)
  7964. Program: PCACHE is the resident print spooler portion of PrintCache by
  7965.       LaserTools; it may use either memory or disk space to spool output
  7966. Range:    AH=C0h to AH=FFh, selected by commandline switch
  7967. SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
  7968.  
  7969. Format of PrintCache configuration table:
  7970. Offset    Size    Description    (Table 1713)
  7971.  00h 26 BYTEs    ASCIZ signature string "TORQ Configuration Table: "
  7972.  1Ah  2 BYTEs    ???
  7973.  1Ch    DWORD    -> data table (see #1714)
  7974.  20h  4 BYTEs    ASCIZ version string ("3.1" for v3.1)
  7975.  24h  5 BYTEs    ???
  7976.  29h 12 BYTEs    ASCIZ version date string ("Aug 31 1993" for v3.1)
  7977.  35h    WORD    buffered port type (01h = LPT, 02h = COM)
  7978.  37h    WORD    buffered port BIOS port number
  7979.  39h  5 BYTEs    ASCIZ buffered port name ("LPTn" or "COMn")
  7980.  3Eh    WORD    physical port type (01h = LPT, 02h = COM)
  7981.  40h    WORD    physical port BIOS port number
  7982.  42h  5 BYTEs    ASCIZ physical port name ("LPTn" or "COMn")
  7983.  47h    BYTE    port driver IRQ
  7984.  48h 21 BYTEs    ???
  7985.  5Dh    WORD    buffer size in K
  7986.  5Fh 27 BYTEs    ???
  7987.  7Ah    BYTE    popup hotkey shift states (see #0442 at INT 16/AH=02h)
  7988.  7Bh    BYTE    popup hotkey scan code (see #0005 at INT 09h"IRQ1")
  7989.  7Ch  4 BYTEs    ???
  7990.  80h 20 BYTEs    ASCIZ printer type name
  7991.     ???
  7992.  
  7993. Format of PrintCache data table:
  7994. Offset    Size    Description    (Table 1714)
  7995.  00h  2 BYTEs    ???
  7996.  02h    DWORD    -> ??? entry point
  7997.     ???
  7998. --------U-2FC000-----------------------------
  7999. INT 2F - Frank Kintrup TSR Utilities - INSTALLATION CHECK
  8000.     AX = C000h
  8001. Return: AL = FFh if installed
  8002.         BX = program ID (see #1715)
  8003.         CX = 464Bh (signature "FK")
  8004.         DX = revision number (DH = major, DL = minor)
  8005.         ES = resident segment of TSR
  8006. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  8007. SeeAlso: AX=C001h"Kintrup",AX=C002h"Kintrup"
  8008.  
  8009. (Table 1715)
  8010. Values for Frank Kintrup TSR program ID:
  8011.  4153h    "AS"    ASCII.COM    ASCII table with paste function
  8012.  434Ch    "CL"    CLOCK.COM    clock with date/time display and alarm
  8013.  5043h    "PC"    PCALC.COM    programmer's calculator with paste function
  8014.  5343h    "SC"    SCRSAVE.COM    screen saver with mouse support and hotkey
  8015.  5544h    "UD"    UNDEL.COM    undelete program like SMARTCAN or DPROTECT
  8016. --------K-2FC000-----------------------------
  8017. INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
  8018.     AX = C000h
  8019. Return: AL = FFh if possibly installed
  8020. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  8021. SeeAlso: AX=C001h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
  8022. --------V-2FC000-----------------------------
  8023. INT 2F - DIMWIT - INSTALLATION CHECK
  8024.     AX = C000h
  8025. Return: AL = FFh if installed
  8026.         ES:DI -> signature string "DIMDOS" or "DIMWIN"
  8027. Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
  8028. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8029. SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
  8030. Index:    screen saver;DIMWIT
  8031. --------F-2FC000BX444B-----------------------
  8032. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  8033.     AX = C000h
  8034.     BX = 444Bh ('DK')
  8035.     CX = 4A4Eh ('AN')
  8036. Return: AL = status
  8037.         00h not installed, OK to install
  8038.         FFh installed
  8039.         BX = 646Bh ('dk')
  8040.         CX = 6A6Eh ('an')
  8041. Range:    AH=C0h to AH=FFh, selected automatically
  8042. SeeAlso: AH=C0h"MTEZ"
  8043. --------V-2FC000-----------------------------
  8044. INT 2F U - TSENGP.COM - INSTALLATION CHECK
  8045.     AX = C000h
  8046. Return: AL = status
  8047.         00h not installed, OK to install
  8048.         FFh installed
  8049.         DS = segment of resident code
  8050. Program: TSENGP.COM is a TSR supplied by Compaq to fix an incompatibility
  8051.       between some applications and Tseng ET4000-based video adapters
  8052. Range:    AH=C0h to AH=FFh, selected automatically
  8053. Note:    the installation check is completed by comparing the first eleven
  8054.       bytes at DS:005Fh against the TSR's code (80h FCh 06h 74h 0Ah
  8055.       80h FCh 07h 74h 05h EAh)
  8056. --------N-2FC000-----------------------------
  8057. INT 2F U - LapLink RemoteAccess (LLRA) - INSTALLATION CHECK
  8058.     AX = C000h
  8059. Return: AL = FFh if one of the components is installed
  8060.     CX:BX -> signature within LLRA component:
  8061.         "TSI_LapLinkCore" for LLRA1.EXE
  8062.         "TSI_Blackbird"   for LLRA2.EXE
  8063.         "TSI_Redirector"  for LLRA3.EXE
  8064.         "TSI_Compression" for LLRA4.EXE
  8065.     DL = major version number
  8066.     DH = minor version number
  8067. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8068. Note:    LapLink components are installed in the order listed above, but not
  8069.       necessarily all four; each gets its own multiplex number (default
  8070.       C0h-C3h)
  8071. SeeAlso: AX=C002h"LapLink",AX=C205h"LapLink",AX=C2F0h"LapLink"
  8072. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
  8073. SeeAlso: AX=C3F1h"LapLink"
  8074. --------M-2FC001-----------------------------
  8075. INT 2F - QMR - REQUEST HARDWARE RESET
  8076.     AX = C001h
  8077. Return: ES = QMR code segment
  8078.     AL destroyed
  8079. Desc:    this function is used to force a full mouse reset when QMR is installed
  8080. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  8081. --------V-2FC001-----------------------------
  8082. INT 2F - DIMWIT - GET CONFIGURATION DATA
  8083.     AX = C001h
  8084. Return: ES:DI -> TSR configuration data (see #1716)
  8085. Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
  8086. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8087. SeeAlso: AX=C000h"DIMWIT",AX=C001h"AD-DOS"
  8088. Index:    screen saver;DIMWIT
  8089.  
  8090. Format of DIMWIT TSR configuration data:
  8091. Offset    Size    Description    (Table 1716)
  8092.  00h    WORD    blanking delay in clock ticks
  8093.  02h    BYTE    instant-blanking hotkey scan code
  8094.         Ctrl and Alt must also be pressed
  8095. --------V-2FC001ES0000-----------------------
  8096. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  8097.     AX = C001h
  8098.     ES = 0000h
  8099. Return: AL = 00h if successful
  8100.         ES = AD-DOS TSR Code Segment
  8101. SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
  8102. Index:    screen saver;AD-DOS
  8103. --------c-2FC001-----------------------------
  8104. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
  8105.     AX = C001h
  8106. Return: AL = FFh if installed
  8107.         ES:BX -> ???
  8108.         ES:DX -> ???
  8109.         ES:SI -> ???
  8110.         ES:DI -> ??? (equivalent to AX=C002h)
  8111. SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
  8112. --------U-2FC001-----------------------------
  8113. INT 2F - Frank Kintrup TSR Utilities - CLOCK - DISABLE DISPLAY UPDATE
  8114.     AX = C001h
  8115. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  8116. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  8117. --------K-2FC001CX03FB-----------------------
  8118. INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - UNINSTALL
  8119.     AX = C001h
  8120.     CX = 03FBh return address to continue uninstall if possible
  8121. Return: program uninstalled
  8122. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  8123. SeeAlso: AX=C000h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
  8124. --------i-2FC001-----------------------------
  8125. INT 2F - PERSONAL MEASURE - PASS PARAMETERS TO HOOK MODULE(S)
  8126.     AX = C001h
  8127.     DX = segment of PMEASURE.EXE or 0000h
  8128.     BX = offset in PMEASURE.EXE or 0000h
  8129.     CX = offset in PMEASURE.EXE or 0000h
  8130. Return: None
  8131. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  8132.       is part of the Personal Measure system activity monitor from Spirit
  8133.       of Performance, Inc.    PMEASURE uses this call to inform its hook
  8134.       modules whether or not it is running and to pass information about
  8135.       shared data and procedures.
  8136. Warning: This information documents a function that is private to Personal
  8137.       Measure and is provided as information only.    It should NOT be called
  8138.       by any software other than Personal Measure.
  8139. SeeAlso: AX=C000h"PERSONAL MEASURE HOOK MODULE"
  8140. --------V-2FC002-----------------------------
  8141. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  8142.     AX = C002h
  8143. Return: AL = 00h if successful
  8144.         BX = status
  8145.         0000h no input since last check
  8146.         0001h new input available
  8147. Note:    this call also resets the new-input flag
  8148. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  8149. Index:    screen saver;AD-DOS
  8150. --------M-2FC002-----------------------------
  8151. INT 2F - QMR - DISABLE QMR
  8152.     AX = C002h
  8153. Return: ES = QMR code segment
  8154.     AL destroyed
  8155. Desc:    this call temporarily disables QMR
  8156. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  8157. --------c-2FC002-----------------------------
  8158. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
  8159.     AX = C002h
  8160. Return: AX = ??? in K
  8161.     BX = size of print buffer in K
  8162. Program: PCACHE is the resident print spooler portion of PrintCache by
  8163.       LaserTools; it may use either memory or disk space to spool output
  8164. SeeAlso: AX=C000h"PCACHE"
  8165. --------U-2FC002-----------------------------
  8166. INT 2F - Frank Kintrup TSR Utilities - CLOCK - ENABLE DISPLAY UPDATE
  8167.     AX = C002h
  8168. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  8169. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  8170. --------N-2FC002-----------------------------
  8171. INT 2F U - LapLink RemoteAccess (LLRA) - Core - ???
  8172.     AX = C002h
  8173.     details not yet available
  8174. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8175. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
  8176. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  8177. --------V-2FC003-----------------------------
  8178. INT 2F - AD-DOS - SET MINUTES TO WAIT
  8179.     AX = C003h
  8180.     BX = minutes to wait before blanking screen
  8181. Return: AL = 00h if successful
  8182. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  8183.       MS Windows
  8184. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8185. Note:    this call also resets the delay timer
  8186. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  8187. Index:    screen saver;AD-DOS
  8188. --------M-2FC003-----------------------------
  8189. INT 2F - QMR - ENABLE QMR
  8190.     AX = C003h
  8191. Return: ES = QMR code segment
  8192.     AL destroyed
  8193. Desc:    this call enables QMR after it has been disabled
  8194. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  8195. --------c-2FC003-----------------------------
  8196. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  8197.     AX = C003h
  8198. Return: BX destroyed
  8199. SeeAlso: AX=C004h"PCACHE"
  8200. --------V-2FC004-----------------------------
  8201. INT 2F - AD-DOS - GET MINUTES TO WAIT
  8202.     AX = C004h
  8203. Return: AL = 00h if successful
  8204.         BX = minutes to wait before blanking screen
  8205. SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
  8206. Index:    screen saver;AD-DOS
  8207. --------c-2FC004-----------------------------
  8208. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  8209.     AX = C004h
  8210. Return: BX destroyed
  8211. SeeAlso: AX=C003h"PCACHE"
  8212. --------V-2FC005-----------------------------
  8213. INT 2F - AD-DOS - SET BLANKER STATUS
  8214.     AX = C005h
  8215.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  8216. Return: AL = 00h if successful
  8217. SeeAlso: AX=C006h"AD-DOS"
  8218. Index:    screen saver;AD-DOS
  8219. --------c-2FC005-----------------------------
  8220. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8221.     AX = C005h
  8222.     ???
  8223. Return: BX destroyed
  8224.     ???
  8225. Program: PCACHE is the resident print spooler portion of PrintCache by
  8226.       LaserTools; it may use either memory or disk space to spool output
  8227. Range:    AH=C0h to AH=FFh, selected by commandline switch
  8228. SeeAlso: AX=C000h"PCACHE"
  8229. --------V-2FC006-----------------------------
  8230. INT 2F - AD-DOS - GET BLANKER STATUS
  8231.     AX = C006h
  8232. Return: AL = 00h if successful
  8233.         BX = current state of screen blanker (0000h inactive, 0001h active)
  8234. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  8235.       MS Windows
  8236. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8237. SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
  8238. Index:    screen saver;AD-DOS
  8239. --------c-2FC006-----------------------------
  8240. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8241.     AX = C006h
  8242.     ???
  8243. Return: BX destroyed
  8244.     ???
  8245. Note:    this function appears to be identical to AX=C007h
  8246. SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
  8247. --------V-2FC007-----------------------------
  8248. INT 2F - AD-DOS - SET HOT KEY
  8249.     AX = C007h
  8250.     BX = hot key
  8251.     CL = hot key shift status
  8252. Return: AL = 00h if successful
  8253. SeeAlso: AX=C008h"AD-DOS"
  8254. Index:    screen saver;AD-DOS
  8255. --------c-2FC007-----------------------------
  8256. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8257.     AX = C007h
  8258.     ???
  8259. Return: BX destroyed
  8260.     ???
  8261. Note:    this function appears to be identical to AX=C006h
  8262. SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
  8263. --------V-2FC008-----------------------------
  8264. INT 2F - AD-DOS - GET CURRENT HOT KEY
  8265.     AX = C008h
  8266. Return: AX = status
  8267.         0000h successful
  8268.         BX = Hot Key
  8269.         CL = Hot Key Shift Status
  8270.         0008h otherwise
  8271. SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
  8272. Index:    screen saver;AD-DOS
  8273. --------c-2FC008-----------------------------
  8274. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  8275.     AX = C008h
  8276. Return: BX destroyed
  8277. SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
  8278. --------V-2FC009-----------------------------
  8279. INT 2F - AD-DOS - UNBLANK MONITOR
  8280.     AX = C009h
  8281. Return: AL = 00h if successful
  8282. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  8283.       MS Windows
  8284. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8285. Note:    this function works by simulating keyboard activity
  8286. Index:    screen saver;AD-DOS
  8287. --------c-2FC009-----------------------------
  8288. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  8289.     AX = C009h
  8290. Return: BX destroyed
  8291. Program: PCACHE is the resident print spooler portion of PrintCache by
  8292.       LaserTools; it may use either memory or disk space to spool output
  8293. Range:    AH=C0h to AH=FFh, selected by commandline switch
  8294. SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
  8295. --------V-2FC00A-----------------------------
  8296. INT 2F - AD-DOS - ???
  8297.     AX = C00Ah
  8298. Return: AX = status
  8299.         0000h successful
  8300.         BH = ??
  8301.         BL = ??
  8302.         000Ah failed
  8303. Index:    screen saver;AD-DOS
  8304. --------c-2FC00A-----------------------------
  8305. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8306.     AX = C00Ah
  8307.     ???
  8308. Return: AH = bit flags
  8309.         bit 5: ???
  8310.     AL = bit flags
  8311.         bit 4: ???
  8312.         bit 3: ???
  8313.     BX destroyed
  8314.     ???
  8315. SeeAlso: AX=C000h"PCACHE"
  8316. --------V-2FC00B-----------------------------
  8317. INT 2F - AD-DOS - ???
  8318.     AX = C00Bh
  8319. Return: AX = status
  8320.         0000h successful
  8321.         000Bh failed
  8322. Index:    screen saver;AD-DOS
  8323. --------c-2FC00B-----------------------------
  8324. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  8325.     AX = C00Bh
  8326. Return: BX destroyed
  8327. SeeAlso: AX=C000h"PCACHE"
  8328. --------V-2FC00C-----------------------------
  8329. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  8330.     AX = C00Ch
  8331. Return: AX = status
  8332.         0000h successful
  8333.         000Ch failed
  8334. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  8335.       MS Windows
  8336. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8337. Index:    screen saver;AD-DOS
  8338. --------c-2FC00C-----------------------------
  8339. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  8340.     AX = C00Ch
  8341. Return: AX = ??? (0000h)
  8342.     BX = ??? (0000h)
  8343.     CX = ??? (0100h)
  8344.     DL = ???
  8345.     DH = ???
  8346. SeeAlso: AX=C000h"PCACHE"
  8347. --------c-2FC00D-----------------------------
  8348. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
  8349.     AX = C00Dh
  8350.     DL = ???
  8351. Return: BX destroyed
  8352. Program: PCACHE is the resident print spooler portion of PrintCache by
  8353.       LaserTools; it may use either memory or disk space to spool output
  8354. Range:    AH=C0h to AH=FFh, selected by commandline switch
  8355. SeeAlso: AX=C000h"PCACHE"
  8356. --------V-2FC00E-----------------------------
  8357. INT 2F - AD-DOS - SET PASSWORD STATUS
  8358.     AX = C00Eh
  8359.     BX = new state (0000h disabled, 0001h enabled)
  8360. Return: ???
  8361. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
  8362. Index:    screen saver;AD-DOS
  8363. --------c-2FC00E-----------------------------
  8364. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
  8365.     AX = C00Eh
  8366.     ES:DX -> ???
  8367. Return: BX destroyed
  8368. Note:    ES:DX is stored internally if the variable is currently 0000h:0000h,
  8369.       but ignored if already set; a counter is incremented
  8370. SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
  8371. --------V-2FC00F-----------------------------
  8372. INT 2F - AD-DOS - GET PASSWORD STATUS
  8373.     AX = C00Fh
  8374. Return: BX = current state (0000h disabled, 0001h enabled)
  8375. SeeAlso: AX=C00Eh"AD-DOS"
  8376. Index:    screen saver;AD-DOS
  8377. --------c-2FC00F-----------------------------
  8378. INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
  8379.     AX = C00Fh
  8380. Return: BX destroyed
  8381. Note:    this function decrements the counter used by AX=C00Eh, and clears the
  8382.       internal pointer variable to 0000h:0000h when it reaches zero
  8383. SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
  8384. --------c-2FC010-----------------------------
  8385. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  8386.     AX = C010h
  8387.     CX = index of ??? table (00h-02h, others treated as 00h)
  8388.     SI = offset into data table
  8389. Return:    AL = byte at specified offset into table
  8390.     BX destroyed
  8391. SeeAlso: AX=C000h"PCACHE"
  8392. --------c-2FC011-----------------------------
  8393. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  8394.     AX = C011h
  8395. Return: AX = ??? (0007h)
  8396.     BX = ??? (0001h)
  8397.     CH = ???
  8398.     CL = ???
  8399. SeeAlso: AX=C000h"PCACHE"
  8400. --------c-2FC012-----------------------------
  8401. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  8402.     AX = C012h
  8403. Return: AX = ???
  8404.     BX = ???
  8405.     CX = ???
  8406.     DX = ???
  8407. SeeAlso: AX=C000h"PCACHE"
  8408. --------c-2FC013-----------------------------
  8409. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8410.     AX = C013h
  8411.     ???
  8412. Return: BX destroyed
  8413.     ???
  8414. Program: PCACHE is the resident print spooler portion of PrintCache by
  8415.       LaserTools; it may use either memory or disk space to spool output
  8416. Range:    AH=C0h to AH=FFh, selected by commandline switch
  8417. SeeAlso: AX=C000h"PCACHE"
  8418. --------c-2FC014-----------------------------
  8419. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8420.     AX = C014h
  8421.     ???
  8422. Return: BX destroyed
  8423.     ???
  8424. SeeAlso: AX=C000h"PCACHE"
  8425. --------c-2FC015-----------------------------
  8426. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8427.     AX = C015h
  8428.     ???
  8429. Return: BX destroyed
  8430.     ???
  8431. SeeAlso: AX=C000h"PCACHE"
  8432. --------c-2FC016-----------------------------
  8433. INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
  8434.     AX = C016h
  8435. Return: BX destroyed
  8436. SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
  8437. --------c-2FC017-----------------------------
  8438. INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
  8439.     AX = C017h
  8440. Return: BX destroyed
  8441. SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
  8442. --------c-2FC018-----------------------------
  8443. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8444.     AX = C018h
  8445.     ???
  8446. Return: BX destroyed
  8447.     ???
  8448. Note:    the first instruction of this function is an indirect jump which points
  8449.       at a RET by default
  8450. SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
  8451. --------c-2FC019-----------------------------
  8452. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8453.     AX = C019h
  8454.     ???
  8455. Return: BX destroyed
  8456.     ???
  8457. Note:    the first instruction of this function is an indirect jump which points
  8458.       at a RET by default
  8459. SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
  8460. --------c-2FC01A-----------------------------
  8461. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  8462.     AX = C01Ah
  8463. Return: BX destroyed
  8464. SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
  8465. --------c-2FC01B-----------------------------
  8466. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  8467.     AX = C01Bh
  8468. Return: BX destroyed
  8469. SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
  8470. --------c-2FC01C-----------------------------
  8471. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  8472.     AX = C01Ch
  8473.     ???
  8474. Return: AX = ???
  8475.     BX destroyed
  8476. SeeAlso: AX=C000h"PCACHE"
  8477. --------c-2FC01D-----------------------------
  8478. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  8479.     AX = C01Dh to C01Fh
  8480. Return: BX destroyed
  8481. Program: PCACHE is the resident print spooler portion of PrintCache by
  8482.       LaserTools; it may use either memory or disk space to spool output
  8483. Range:    AH=C0h to AH=FFh, selected by commandline switch
  8484. SeeAlso: AX=C000h"PCACHE"
  8485. --------V-2FC020-----------------------------
  8486. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  8487.     AX = C020h
  8488. Return: AL = 00h if successful
  8489.         BX = VxD API Status
  8490.         0000h no error
  8491.         0001h error
  8492.         0100h neither Windows 3.X enhanced mode nor Windows/386 2.x
  8493.               is running
  8494.         0200h VM API entry point not found (VxD not installed)
  8495. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8496. Note:    this call resets the VxD API Status to zero
  8497. SeeAlso: AX=1602h,AX=1607h
  8498. Index:    screen saver;AD-DOS
  8499. --------V-2FC04E-----------------------------
  8500. INT 2F - Explosiv v2.00+ - NON-TSR EXECUTING CHECK
  8501.     AX = C04Eh
  8502. Return: AL = 4Fh if Explosiv is running but not memory-resident
  8503. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  8504.       by H&G Software (Reidar Gresseth and Chris Hook)
  8505. Range:    AH=C0h to AH=C9h, selected by configuration
  8506. SeeAlso: AX=C050h
  8507. Index:    screen saver;Explosiv
  8508. --------V-2FC050-----------------------------
  8509. INT 2F - Explosiv v2.00+ - INSTALLATION CHECK
  8510.     AX = C050h
  8511. Return: AL = 51h if installed
  8512.     ---v3.0+ ---
  8513.         BX = interval in clock ticks
  8514.         CH = animation display color (00h mono, 01h tinge, 02h color)
  8515.         CL = animation delay factor
  8516.         DH = animation parameters
  8517.         DL = INT 10 checking (00h on, 01h off)
  8518.         SI = number of bytes available for animation code
  8519.         DI = display type (00h VGA, 01h EGA, 02h CGA, 03h HGC, 04h MDA)
  8520. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  8521.       by H&G Software (Reidar Gresseth and Chris Hook)
  8522. Range:    AH=C0h to AH=C9h, selected by configuration
  8523. SeeAlso: AH=93h,AX=C000h"AD-DOS",AX=C04Eh,AX=C052h,AX=C054h"v3"
  8524. SeeAlso: INT 14/AX=AA01h
  8525. Index:    screen saver;Explosiv
  8526. --------V-2FC052-----------------------------
  8527. INT 2F - Explosiv v2.00+ - UNINSTALL
  8528.     AX = C052h
  8529.     DX:BX = address to return to on successful uninstall
  8530. Return: at specified address if successful
  8531.     AL = 53h on error
  8532. Note:    specified return address must have the segment of the caller's PSP
  8533. SeeAlso: AX=C050h
  8534. Index:    screen saver;Explosiv
  8535. --------V-2FC054-----------------------------
  8536. INT 2F - Explosiv v2.x - GET ANIMATION DELAY FACTOR
  8537.     AX = C054h
  8538. Return: AL = delay factor
  8539. SeeAlso: AX=C057h
  8540. Index:    screen saver;Explosiv
  8541. --------V-2FC054-----------------------------
  8542. INT 2F - Explosiv v3.0+ - UPDATE PARAMETERS
  8543.     AX = C054h
  8544.     BX = new interval in clock ticks
  8545.     CH = animation display color (00h mono, 01h tinge, 02h color)
  8546.     CL = animation delay factor
  8547.     DH = animation parameters
  8548.     DL = INT 10 checking (00h on, 01h off)
  8549. SeeAlso: AX=C050h
  8550. Index:    screen saver;Explosiv
  8551. --------V-2FC055-----------------------------
  8552. INT 2F - Explosiv v2.x - SET BLANKING INTERVAL
  8553.     AX = C055h
  8554.     BX = new interval in clock ticks
  8555. Index:    screen saver;Explosiv
  8556. --------V-2FC056-----------------------------
  8557. INT 2F - Explosiv v2.x - SET ANIMATION DISPLAY TYPE
  8558.     AX = C056h
  8559.     BL = animated display type (00h mono, 01h color)
  8560. SeeAlso: AX=C058h"v2.x"
  8561. Index:    screen saver;Explosiv
  8562. --------V-2FC056-----------------------------
  8563. INT 2F - Explosiv v3.0+ - ENABLE/DISABLE EXPLOSIV
  8564.     AX = C056h
  8565.     BX = new state
  8566.         0000h disabled
  8567.         0100h enabled
  8568.         0101h enabled, but never blank
  8569.         0102h enabled, always blank
  8570. --------V-2FC057-----------------------------
  8571. INT 2F - Explosiv v2.x - SET ANIMATION DELAY FACTOR
  8572.     AX = C057h
  8573.     BL = delay factor
  8574. SeeAlso: AX=C054h"v2.x"
  8575. Index:    screen saver;Explosiv
  8576. --------V-2FC058-----------------------------
  8577. INT 2F - Explosiv v2.x - SET ANIMATION PARAMETER
  8578.     AX = C058h
  8579.     BL = animation parameter
  8580. Note:    the animation parameter has different interpretations for each display
  8581. SeeAlso: AX=C056h"v2.x"
  8582. Index:    screen saver;Explosiv
  8583. --------V-2FC058-----------------------------
  8584. INT 2F - Explosiv v3.0+ - LOAD NEW ANIMATION DISPLAY CODE
  8585.     AX = C058h
  8586.     BX = file handle for file containing display code
  8587.     CX = number of bytes to load
  8588.     DX = offset at which animation code should be loaded
  8589. Return: AL = status (see #1717)
  8590. Note:    if AL=00h-03h on return, the file will be closed
  8591. Index:    screen saver;Explosiv
  8592.  
  8593. (Table 1717)
  8594. Values for Explosiv function status:
  8595.  00h    successful
  8596.  01h    code too large to available space
  8597.  02h    no data read, load aborted
  8598.  03h    incomplete load, default blanking display loaded instead
  8599.  58h    unexpected offset in DX
  8600. --------V-2FC059-----------------------------
  8601. INT 2F - Explosiv v2.x - DISABLE EXPLOSIV
  8602.     AX = C059h
  8603. Note:    clears flag set by AX=C05Ah
  8604. SeeAlso: AX=C05Ah
  8605. Index:    screen saver;Explosiv
  8606. --------V-2FC05A-----------------------------
  8607. INT 2F u - Explosiv v2.x - ENABLE EXPLOSIV
  8608.     AX = C05Ah
  8609.     BL = ???
  8610. Note:    sets flag cleared by AX=C059h then stores BL
  8611. SeeAlso: AX=C059h,AX=C05Bh
  8612. Index:    screen saver;Explosiv
  8613. --------V-2FC05B-----------------------------
  8614. INT 2F - Explosiv v2.x - CHANGE ANIMATION DISPLAY
  8615.     AX = C05Bh
  8616.     BL = animation display
  8617. Note:    this function fails silently if the requested display is not in memory
  8618. SeeAlso: AX=C05Ah,AX=C05Ch
  8619. Index:    screen saver;Explosiv
  8620. --------V-2FC05C-----------------------------
  8621. INT 2F - Explosiv v2.x - SET INT 10 CHECKING
  8622.     AX = C05Ch
  8623.     BL = new state of INT 10 checking (00h enabled, 01h disabled)
  8624. SeeAlso: AX=C05Bh
  8625. Index:    screen saver;Explosiv
  8626. --------K-2FC0AE-----------------------------
  8627. INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
  8628.     AX = C0AEh
  8629. Return: AX = 4453h if installed
  8630.     CX = 5259h if installed
  8631. Range:    AH=C0h to AH=FFh, selected by scanning for signature
  8632. SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AFh"HP 100LX"
  8633. --------K-2FC0AF-----------------------------
  8634. INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - GET BUFFER ADDRESS
  8635.     AX = C0AFh
  8636. Return: ES:DI -> buffer (behind code)
  8637. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  8638. SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AEh"HP 100LX"
  8639. --------N-2FC100-----------------------------
  8640. INT 2F U - Personal NetWare - STPIPX v1.00 - INSTALLATION CHECK
  8641.     AX = C100h
  8642. Return: AL = FFh if installed
  8643.         ES:SI -> signature string "STP-IPX$"
  8644.         BX = version??? (0001h for v1.00)
  8645.         DI corrupted
  8646. Note:    AH=C1h is the default value; STPIPX probably scans a range of
  8647.       multiplex numbers to find a free one, as LSL does
  8648. SeeAlso: AX=C000h"LSL",AX=C101h
  8649. --------N-2FC101-----------------------------
  8650. INT 2F U - Personal NetWare - STPIPX v1.00 - UNINSTALL
  8651.     AX = C101h
  8652. Return: AL = status???
  8653.     BX corrupted
  8654. SeeAlso: AX=C101h
  8655. --------N-2FC205-----------------------------
  8656. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  8657.     AX = C205h
  8658.     details not yet available
  8659. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8660. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
  8661. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  8662. --------N-2FC2F0-----------------------------
  8663. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  8664.     AX = C2F0h
  8665.     details not yet available
  8666. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8667. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  8668. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  8669. --------N-2FC2F1-----------------------------
  8670. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  8671.     AX = C2F1h
  8672.     details not yet available
  8673. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8674. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  8675. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink"
  8676. --------d-2FC300-----------------------------
  8677. INT 2F - SETWPR.COM - INSTALLATION CHECK
  8678.     AX = C300h
  8679. Return: AL = FFh if installed
  8680. Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
  8681. SeeAlso: AX=C302h"SETWPR"
  8682. --------k-2FC300DX0000-----------------------
  8683. INT 2F U - SpaceManager - INSTALLATION CHECK
  8684.     AX = C300h
  8685.     DX = 0000h
  8686. Return: AL = FFh if any SpaceManager programs installed
  8687.         BX = 6F73h
  8688.         CX = 6F68h
  8689. Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
  8690.       Systems, Inc.
  8691. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  8692. SeeAlso: AX=C300h/DX=0666h
  8693. --------k-2FC300-----------------------------
  8694. INT 2F U - SpaceManager - INSTALLATION VERIFICATION
  8695.     AX = C300h
  8696.     DX = program identifier (see #1718) or 0666h for any SpaceManager prog
  8697.     BX = 4F53h ('OS')
  8698.     CX = 4F48h ('OH')
  8699. Return: AL = FFh if BX/CX as specified and specified program installed
  8700.         BX = 6F73h ('os')
  8701.         CX = 6F68h ('oh')
  8702. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  8703. Note:    this call is chained if BX,CX, or DX are not as specified above
  8704. SeeAlso: AX=C300h/DX=0000h
  8705.  
  8706. (Table 1718)
  8707. Values for SpaceManager program identifier:
  8708.  9000h    SMOUNT (SuperMount)
  8709.  9001h    SELECTC (SelectCompress)
  8710.  9002h    SUPERX (SuperExchange)
  8711.  9003h    FORTUNE (FortuneTeller)
  8712. --------k-2FC301-----------------------------
  8713. INT 2F U - SpaceManager - ???
  8714.     AX = C301h
  8715.     DX = program identifier (9000h,9001h,9003h) (see #1718)
  8716.     ???
  8717. Return: ???
  8718. --------N-2FC301-----------------------------
  8719. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  8720.     AX = C301h
  8721.     details not yet available
  8722. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8723. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  8724. SeeAlso: AX=C2F0h"LapLink",AX=C3F0h"LapLink",AX=C3F1h"LapLink"
  8725. --------k-2FC302-----------------------------
  8726. INT 2F U - SpaceManager - ENABLE PROGRAM
  8727.     AX = C302h
  8728.     DX = program identifier (9000h,9001h,9003h) (see #1718)
  8729. Return: AX destroyed
  8730. SeeAlso: AX=C303h,AX=C306h
  8731. --------d-2FC302-----------------------------
  8732. INT 2F - SETWPR.COM - SET WRITE-PROTECTION STATE
  8733.     AX = C302h
  8734.     BL = new state
  8735.         00h disk may be written
  8736.         01h disk write-protected
  8737. Return: AL = FFh if installed
  8738. Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
  8739. SeeAlso: AX=C300h"SETWPR"
  8740. --------k-2FC303-----------------------------
  8741. INT 2F U - SpaceManager - DISABLE PROGRAM
  8742.     AX = C303h
  8743.     DX = program identifier (9000h,9001h,9003h) (see #1718)
  8744. Return: AX destroyed
  8745. SeeAlso: AX=C302h,AX=C306h
  8746. --------k-2FC304-----------------------------
  8747. INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
  8748.     AX = C304h
  8749.     DX = program identifier (9000h,9001h,9003h) (see #1718)
  8750. Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
  8751.     AX destroyed
  8752. --------k-2FC305DX9003-----------------------
  8753. INT 2F U - SpaceManager - FORTUNE.EXE - NOP
  8754.     AX = C305h
  8755.     DX = 9003h
  8756. Return: AX destroyed
  8757. --------k-2FC305-----------------------------
  8758. INT 2F U - SpaceManager - ???
  8759.     AX = C305h
  8760.     DX = program identifier (9000h,9001h) (see #1718)
  8761.     ???
  8762. Return: ???
  8763. --------k-2FC306-----------------------------
  8764. INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
  8765.     AX = C306h
  8766.     DX = program identifier (9000h,9001h,9003h) (see #1718)
  8767. Return: AL = current state (00h disabled, FAh enabled)
  8768.     AH destroyed
  8769. SeeAlso: AX=C302h,AX=C303h
  8770. --------k-2FC307DX9001-----------------------
  8771. INT 2F U - SpaceManager - SELECTC - ???
  8772.     AX = C307h
  8773.     DX = 9001h
  8774.     BX = ???
  8775.     CX = ???
  8776.     ???
  8777. Return: ???
  8778. --------k-2FC308DX9001-----------------------
  8779. INT 2F U - SpaceManager - SELECTC - ???
  8780.     AX = C308h
  8781.     DX = 9001h
  8782.     ???
  8783. Return: ???
  8784. --------N-2FC3F0-----------------------------
  8785. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  8786.     AX = C3F0h
  8787.     details not yet available
  8788. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8789. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  8790. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F1h"LapLink"
  8791. --------N-2FC3F1-----------------------------
  8792. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  8793.     AX = C3F1h
  8794.     details not yet available
  8795. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  8796. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  8797. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
  8798. --------d-2FC64CBX5553-----------------------
  8799. INT 2F U - Smart Prompt - INSTALLATION CHECK
  8800.     AX = C64Ch
  8801.     BX = 5553h
  8802. Return: AX = 4CC6h if installed
  8803.     BX = 5355h if installed
  8804. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which forces
  8805.       an immediate flush of SmartDrive's (and compatible caches') buffers
  8806.       on returning to the DOS prompt
  8807. --------V-2FC700CX434C-----------------------
  8808. INT 2F u - COLAP - INSTALLATION CHECK
  8809.     AX = C700h
  8810.     CX = 434Ch  "CL"
  8811. Return: AL = FFh if installed
  8812. Program: colap.com is a freeware TSR by Eric Meyer which controls contrast
  8813.       and brightness of color laptops by changing the VGA palette colors;
  8814.       for Toshiba laptops there are more hotkeys for shutting off display
  8815.       and harddisk.
  8816. --------v-2FC900BP0000-----------------------
  8817. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  8818.     AX = C900h
  8819.     BP = 0000h
  8820. Return: AL = FFh if installed
  8821.         BP >= 0014h
  8822. Note:    called by TBSCANX
  8823. SeeAlso: AX=C987h,AX=CA00h
  8824. --------v-2FC987-----------------------------
  8825. INT 2F U - ThunderByte??? - DISINFECT FILE???
  8826.     AX = C987h
  8827.     BX:DX -> filename
  8828.     BX:CX -> virus name
  8829. Return: AX = status
  8830.         0000h successful???
  8831. Note:    called by TBSCANX
  8832. SeeAlso: AX=CA00h
  8833. --------r-2FC9FF-----------------------------
  8834. INT 2F C - StackMan - INSTALLATION BROADCAST
  8835.     AX = C9FFh
  8836.     BL = BCD version number
  8837.     CX = number of stacks
  8838.     DX = stack size in bytes
  8839. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  8840.       which functions as a replacement for the DOS STACK= command as well
  8841.       as permitting multiple TSRs to share a pool of stack space
  8842. Notes:    called by StackMan when it goes resident to inform interested TSRs that
  8843.       its API is available
  8844.     the installation check consists of testing for the string "STACKXXX" at
  8845.       offset 0Ah from the INT B4 handler
  8846. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  8847. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  8848. --------F-2FCA-------------------------------
  8849. INT 2F - FAXPLUS - FAX TSR
  8850.     AH = CAh
  8851.     ???
  8852. Return: ???
  8853. Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
  8854.       Veldman
  8855. SeeAlso: AH=2Ah"Gammafax"
  8856. --------v-2FCA00BX5442-----------------------
  8857. INT 2F - TBSCANX - INSTALLATION CHECK
  8858.     AX = CA00h
  8859.     BX = 5442h ('TB')
  8860. Return: AL = state
  8861.         00h not installed
  8862.         FFh installed
  8863.         BX = 7462h ('tb') if BX was 5442h on entry
  8864. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  8865. Note:    programs may perform virus checks on themselves, other program files,
  8866.       or their data files by invoking the TBSCANX API.
  8867. SeeAlso: AX=4653h,AX=C900h
  8868. --------v-2FCA01-----------------------------
  8869. INT 2F - TBSCANX - GET STATUS
  8870.     AX = CA01h
  8871. Return: AH = BCD version number (v2.2+)
  8872.         CAh for versions before 2.2
  8873.     AL = state (00h = disabled, 01h = enabled)
  8874.     CX = number of signatures which will be searched
  8875. ---v2.0---
  8876.     BX = EMS handle, 0000h if not using EMS
  8877. ---v2.3+---
  8878.     BX = segment of swap area, 0000h if not swapped
  8879.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  8880. SeeAlso: AX=CA02h
  8881. --------v-2FCA02-----------------------------
  8882. INT 2F - TBSCANX - SET STATE
  8883.     AX = CA02h
  8884.     BL = new state (00h = disabled, 01h = enabled)
  8885. SeeAlso: AX=CA01h
  8886. --------v-2FCA03-----------------------------
  8887. INT 2F - TBSCANX - SCAN BUFFER
  8888.     AX = CA03h
  8889.     CX = size of buffer
  8890.     DS:DX -> buffer containing data to scan
  8891. Return: CF clear if no virus signatures found
  8892.         BX,ES destroyed
  8893.     CF set if signature found
  8894.         ES:BX -> ASCIZ virus name (v2.3+)
  8895.         DS:DX -> ASCIZ virus name (v2.0)
  8896.     AX,CX,DX destroyed (v2.3+)
  8897.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  8898. SeeAlso: AX=CA04h
  8899. --------v-2FCA04-----------------------------
  8900. INT 2F - TBSCANX - SCAN FILE
  8901.     AX = CA04h
  8902.     DS:DX -> filename
  8903. Return: CF clear if no virus signatures found
  8904.         BX,ES destroyed
  8905.     CF set if signature found
  8906.         ES:BX -> ASCIZ virus name
  8907.     AX,CX,DX destroyed
  8908. Note:    this function requires at least 4K free memory
  8909. SeeAlso: AX=CA03h
  8910. --------U-2FCAFEBX0000-----------------------
  8911. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  8912.     AX = CAFEh
  8913.     BX = 0000h
  8914. Return: BX = segment of resident code if installed
  8915.         0000h if not installed
  8916. SeeAlso: AX=5453h,INT 2D"AMIS"
  8917. --------F-2FCB00-----------------------------
  8918. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  8919.     AX = CB00h
  8920. Return: AL = status
  8921.         00h not installed, OK to install
  8922.         01h not installed, not OK to install
  8923.         FFh installed
  8924. Note:    AH = CBh is the default identifier, but may be reconfigured
  8925. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
  8926. --------F-2FCB00BX4D53-----------------------
  8927. INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
  8928.     AX = CB00h
  8929.     BX = 4D53h ('MS')
  8930.     CX = 4949h ('II')
  8931. Return: AL = status
  8932.         00h not installed, OK to install
  8933.         01h not installed, not OK to install
  8934.         FFh installed
  8935.         BX = 6D73h ('ms')
  8936.         CX = 6969h ('ii')
  8937. Note:    this function is equivalent to the standard CASMGR installation check,
  8938.       but uses the additional magic values to identify which CAS is
  8939.       installed
  8940. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB0Eh,AX=CB16h
  8941. --------F-2FCB01-----------------------------
  8942. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  8943.     AX = CB01h
  8944.     DS:DX -> ASCIZ name of task control file
  8945. Return: AX >= 0: event handle
  8946.     AX < 0: two's complement of error code (see #1719)
  8947. Note:    files needed for an event must be kept until task is complete or error
  8948. SeeAlso: AX=CB0Bh,AX=CB15h
  8949.  
  8950. (Table 1719)
  8951. Values for CAS error code:
  8952.   (AH = class, AL = subcode, value passed back is 2's complement)
  8953.   Class 00h    --- FAX warnings
  8954.     Subcode 00h    no error
  8955.         02h    bad scanline count
  8956.         03h    page sent with errors, could not retransmit
  8957.         04h    received data lost
  8958.         05h    invalid or missing logo file
  8959.         06h    filename does not match nonstandard format (NSF) header
  8960.         07h    file size does not match NSF header
  8961.   Class 01h    --- DOS warnings (data was sent)
  8962.     Subcode 01h    invalid function
  8963.         05h    access denied
  8964.         06h    invalid handle
  8965.         others    see INT 21/AH=59h
  8966.   Class 02h    --- fatal errors (data not sent)
  8967.     Subcode 00h    multiplex handler failed
  8968.         01h    unknown command
  8969.         02h    bad event handle
  8970.         03h    FIND NEXT attempted before FIND FIRST
  8971.         04h    no more events
  8972.         07h    invalid queue type
  8973.         08h    bad control file
  8974.         09h    communication board busy
  8975.         0Ah    invalid command parameter
  8976.         0Bh    can't uninstall resident code
  8977.         0Ch    file exists
  8978.         80h    unknown task type
  8979.         81h    bad phone number
  8980.         82h    bad .PCX file header
  8981.         83h    unexpected EOF
  8982.         84h    unexpected disconnect
  8983.         85h    too many dialing retries
  8984.         86h    no file specified for send
  8985.         87h    communication board timeout
  8986.         88h    received too many pages (>1023) of data
  8987.         89h    manual connect initiated too long ago
  8988.         8Ah    hardware command set error
  8989.         8Bh    bad NonStandard Format (NSF) header file
  8990.   Class 03h    --- fatal DOS errors
  8991.     Subcode 02h    file not found
  8992.         03h    path not found
  8993.         others    see INT 21/AH=59h
  8994.   Class 04h    --- FAX errors
  8995.     Subcode 01h    remote unit not Group 3 compatible
  8996.         02h    remote unit did not send capabilities
  8997.         03h    other FAX machine incompatible
  8998.         04h    other FAX incapable of file transfers
  8999.         05h    exceeded retrain or FAX resend limit
  9000.         06h    line noise or failure to agree on bit rate
  9001.         07h    remote disconnected after receiving data
  9002.         08h    no response from remote after sending data
  9003.         09h    remote's capabilities incompatible
  9004.         0Ah    no dial tone (v1.2+)
  9005.         0Bh    invalid response from remote unit after sending data
  9006.         0Dh    phone line dead or remote unit disconnected
  9007.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  9008.         11h    invalid command from remote after receiving data
  9009.         15h    tried to receive from incompatible hardware
  9010.         5Ch    received data overflowed input buffer
  9011.         5Dh    remote unexpectedly stopped sending data
  9012.         5Eh    other FAX machine jammed (no data sent)
  9013.         5Fh    remote took too long to send fax scan line
  9014.         63h    can't get through to remote unit
  9015.         64h    user canceled event
  9016.   Class 05h    --- application-specific (v1.2+)
  9017.   ---Intel FAXPOP.EXE
  9018.     Subcode 00h    tried to send while in graphics mode
  9019.         01h    insufficient disk space
  9020.         02h    internal buffer overflow
  9021.   Class 06h    --- CAS implementation-specific (v1.2+)
  9022. --------F-2FCB02-----------------------------
  9023. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  9024.     AX = CB02h
  9025. Return: AX >= 0: event handle of aborted event
  9026.     AX < 0: error code (see #1719)
  9027. Note:    termination could take up to 30 seconds
  9028. SeeAlso: AX=CB08h,AX=CB10h
  9029. --------F-2FCB05-----------------------------
  9030. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  9031.     AX = CB05h
  9032.     CX = status of events to find
  9033.         0000h successful completion
  9034.         0001h waiting to be processed
  9035.         0002h number has been dialed
  9036.         0003h connection established, sending
  9037.         0004h connection established, receiving
  9038.         0005h event aborted
  9039.         FFFFh find any event, regardless of status
  9040.         other negative values, match error code
  9041.     DH = direction
  9042.         00h chronological order, earliest to latest
  9043.         01h reverse chronological order, latest to earliest
  9044.     DL = queue to search
  9045.         00h task queue
  9046.         01h receive queue
  9047.         02h log queue
  9048. Return: AX = 0000h successful
  9049.         BX = event handle for found event
  9050.     AX < 0       error code (see #1719)
  9051. SeeAlso: AX=CB06h,AX=CB07h
  9052. --------F-2FCB06-----------------------------
  9053. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  9054.     AX = CB06h
  9055.     DL = queue to search
  9056.         00h task queue
  9057.         01h receive queue
  9058.         02h log queue
  9059. Return: AX = 0000h successful
  9060.         BX = event handle for found event
  9061.     AX < 0       error code (see #1719)
  9062. Note:    direction of search is same as preceding FIND FIRST call
  9063. SeeAlso: AX=CB05h
  9064. --------F-2FCB07-----------------------------
  9065. INT 2F - Communicating Applications Specification - OPEN FILE
  9066.     AX = CB07h
  9067.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  9068.     CX = receive file number (ignored for task queue and log queue)
  9069.         0000h  open receive control file
  9070.         N       open Nth received data file
  9071.     DL = queue
  9072.         00h task queue
  9073.         01h receive queue control file or received file, as given by CX
  9074.         02h log queue
  9075.         03h group file in task queue (v1.2+)
  9076.         04h group file in log queue (v1.2+)
  9077. Return: AX = 0000h successful
  9078.         BX = DOS file handle for requested file
  9079.     AX < 0       error code (see #1719)
  9080. Note:    the returned file handle has been opened in read-only mode and should
  9081.       be closed with INT 21/AH=3Eh after use
  9082. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  9083. --------F-2FCB08-----------------------------
  9084. INT 2F - Communicating Applications Specification - DELETE FILE
  9085.     AX = CB08h
  9086.     BX = event handle
  9087.     CX = receive file number
  9088.         0000h delete ALL received files and receive control file
  9089.         N      delete Nth received file
  9090.     DL = queue
  9091.         00h delete control file in task queue and corresponding group file
  9092.           if it exists
  9093.         01h delete file in receive queue, as given by CX
  9094.         02h delete control file in log queue (individual deletions not
  9095.           recommended, to maintain integrity of log) and corresponding
  9096.           group file if it exists
  9097. Return: AX = 0000h successful
  9098.     AX < 0       error code (see #1719)
  9099. SeeAlso: AX=CB02h,AX=CB09h
  9100. --------F-2FCB09-----------------------------
  9101. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  9102.     AX = CB09h
  9103.     DL = queue
  9104.         00h delete all control files in task queue, including all group
  9105.           files
  9106.         01h delete all files in receive queue
  9107.         02h delete all control files in log queue, including all group
  9108.           files
  9109. Return: AX = 0000h successful
  9110.     AX < 0       error code (see #1719)
  9111. SeeAlso: AX=CB08h
  9112. --------F-2FCB0A-----------------------------
  9113. INT 2F - Communicating Applications Specification - GET EVENT DATE
  9114.     AX = CB0Ah
  9115.     BX = event handle
  9116.     DL = queue
  9117.         00h task queue
  9118.         01h receive queue
  9119.         02h log queue
  9120. Return: AX = 0000h successful
  9121.         CX = year
  9122.         DH = month
  9123.         DL = day
  9124.     AX < 0       error code (see #1719)
  9125. SeeAlso: AX=CB0Bh,AX=CB0Ch
  9126. --------F-2FCB0B-----------------------------
  9127. INT 2F - Communicating Applications Specification - SET TASK DATE
  9128.     AX = CB0Bh
  9129.     BX = event handle (task event only)
  9130.     CX = year
  9131.     DH = month
  9132.     DL = day
  9133. Return: AX = 0000h successful
  9134.     AX < 0       error code (see #1719)
  9135. Note:    setting a task's date and time to before the current date and time
  9136.       causes it to execute immediately
  9137. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  9138. --------F-2FCB0C-----------------------------
  9139. INT 2F - Communicating Applications Specification - GET EVENT TIME
  9140.     AX = CB0Ch
  9141.     BX = event handle
  9142.     DL = queue
  9143.         00h task queue
  9144.         01h receive queue
  9145.         02h log queue
  9146. Return: AX = 0000h successful
  9147.         CH = hour
  9148.         CL = minute
  9149.         DH = second
  9150.         DL = 00h
  9151.     AX < 0       error code (see #1719)
  9152. SeeAlso: AX=CB0Ah,AX=CB0Dh
  9153. --------F-2FCB0D-----------------------------
  9154. INT 2F - Communicating Applications Specification - SET TASK TIME
  9155.     AX = CB0Dh
  9156.     BX = event handle (task events only)
  9157.     CH = hour
  9158.     CL = minute
  9159.     DH = second
  9160.     DL unused
  9161. Return: AX = 0000h successful
  9162.     AX < 0       error code (see #1719)
  9163. Note:    setting a task's date and time to before the current date and time
  9164.       causes it to execute immediately
  9165. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  9166. --------F-2FCB0E-----------------------------
  9167. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  9168.     AX = CB0Eh
  9169.     DS:DX -> 256-byte buffer for external data block (see #1720)
  9170. Return: AX = 0000h successful
  9171.         DS:DX buffer filled
  9172.     AX < 0       error code (see #1719)
  9173.  
  9174. Format of CAS external data block:
  9175. Offset    Size    Description    (Table 1720)
  9176.  00h    BYTE    CAS major version
  9177.  01h    BYTE    CAS minor version
  9178.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  9179.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  9180.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  9181.  60h 32 BYTEs    ASCIZ default sender name
  9182.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  9183.  95h 107 BYTEs    reserved
  9184. --------F-2FCB0F-----------------------------
  9185. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  9186.     AX = CB0Fh
  9187.     DL = subfunction
  9188.         00h get current autoreceive state
  9189.         01h set autoreceive state
  9190.         DH = number of rings before answer, 00h = never
  9191. Return: AX = 0000h autoreceive disabled
  9192.     AX = N       number of rings before answer
  9193.     AX < 0       error code (see #1719)
  9194. --------F-2FCB10-----------------------------
  9195. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  9196.     AX = CB10h
  9197.     DS:DX -> 512-byte buffer for status area (see #1722)
  9198. Return: AX = 0000h successful
  9199.         BX = event handle of current event or negative error code if
  9200.               no current event
  9201.         buffer filled
  9202.     AX < 0       error code (see #1719)
  9203. SeeAlso: AX=CB02h,AX=CB0Dh
  9204.  
  9205. (Table 1721)
  9206. Values for CAS event type:
  9207.  00h    send
  9208.  01h    receive
  9209.  02h    polled send
  9210.  03h    polled receive
  9211.  04h to 7Fh reserved
  9212.  FFh    serious hardware error
  9213.  
  9214. Format of CAS status area:
  9215. Offset    Size    Description    (Table 1722)
  9216.  00h    BYTE    event type (see #1721)
  9217.  01h    BYTE    transfer type
  9218.         00h 200x200 dpi, FAX mode
  9219.         01h 100x200 dpi, FAX mode
  9220.         02h file transfer mode
  9221.         03h to 7Fh reserved
  9222.  02h    WORD    event status (see #1723)
  9223.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  9224.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  9225.  08h    WORD    number of files to transfer, max 7FFFh
  9226.  0Ah    WORD    offset of file transfer record
  9227.  0Ch 47 BYTEs    ASCIZ phone number to call
  9228.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  9229.  7Bh    BYTE    reserved (00h)
  9230.  7Ch    BYTE    connect time, seconds
  9231.  7Dh    BYTE    connect time, minutes
  9232.  7Eh    BYTE    connect time, hours
  9233.  7Fh    DWORD    total number of pages in all files
  9234.  83h    DWORD    pages already transmitted
  9235.  87h    WORD    number of files already transmitted
  9236.  89h    BYTE    cover page flag
  9237.         00h don't transmit cover page
  9238.         01h transmit cover page
  9239.         02h to 7Fh reserved
  9240.  8Ah    WORD    total number of transmission errors
  9241.  8Ch 78 BYTEs    reserved (zeros)
  9242.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  9243.  EFH 32 BYTEs    ASCIZ destination name
  9244. 10Fh 32 BYTEs    ASCIZ sender name
  9245. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  9246. 17Fh 128 BYTEs    file transfer record for current event (see #1724)
  9247.  
  9248. (Table 1723)
  9249. Values for CAS event status:
  9250.  0000h    completed successfully
  9251.  0001h    waiting
  9252.  0002h    number dialed
  9253.  0003h    connected, sending
  9254.  0004h    connected, receiving
  9255.  0005h    aborted
  9256.  0006h to 007Fh reserved
  9257.  0080h to 7FFFh application-specific events
  9258.  8000h to FFFFh error codes
  9259.  
  9260. Format of CAS file transfer record:
  9261. Offset    Size    Description    (Table 1724)
  9262.  00h    BYTE    file type (ignored unless FAX)
  9263.         00h ASCII
  9264.         01h PCX
  9265.         02h DCX
  9266.         03h to 7Fh reserved
  9267.  01h    BYTE    text size for ASCII FAX file
  9268.         00h = 80 columns by 66 lines (11 inches)
  9269.         01h = 132 columns by 88 lines (11 inches)
  9270.         02h to 7Fh reserved
  9271.  02h    BYTE    status of file
  9272.         00h untouched
  9273.         01h opened
  9274.         02h moved
  9275.         03h deleted
  9276.         04h not yet received
  9277.         05h to 7Fh reserved
  9278.  03h    DWORD    bytes already transmitted
  9279.  07h    DWORD    file size in bytes
  9280.  0Bh    WORD    pages alread transmitted
  9281.  0Dh    WORD    number of pages in file
  9282.  0Fh 80 BYTEs    ASCIZ filename
  9283.  5Fh    BYTE    1/8 inch page length
  9284.         if page length below set to 01h through 7Fh, this value
  9285.           specifies additional 1/8 inch increments to page length
  9286.  60h    BYTE    page length
  9287.         00h = 11 inches
  9288.         01h to 7Fh = page length is this number of inches plus value of
  9289.               1/8 inch field above
  9290.         80h to FEh reserved
  9291.         FFh = ASCII pages ending with formfeed
  9292.  61h 31 BYTEs    reserved (zeros)
  9293. --------F-2FCB11-----------------------------
  9294. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  9295.     AX = CB11h
  9296.     DL = queue to get status of
  9297.         00h task queue
  9298.         01h receive queue
  9299.         02h log queue
  9300.         03h send events (v1.2+)
  9301.         04h receive events (v1.2+)
  9302. Return: AX >= 0     total number of changes made to queue, modulo 32768
  9303.         BX = number of control files currently in queue
  9304.         CX = number of received files (zero for task and log queues)
  9305.     AX < 0    error code (see #1719)
  9306. SeeAlso: AX=CB12h
  9307. --------F-2FCB11DL03-------------------------
  9308. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  9309.     AX = CB11h
  9310.     DL = 03h
  9311. Return: AX = number of successful sends since resident manager started
  9312.     BX = number of unsuccessful sends, including warnings
  9313. SeeAlso: AX=CB11h/DL=04h
  9314. --------F-2FCB11DL04-------------------------
  9315. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  9316.     AX = CB11h
  9317.     DL = 04h
  9318. Return: AX = number of received file events since resident manager started
  9319.     BX = number of received FAX events
  9320. SeeAlso: AX=CB11h/DL=03h
  9321. --------F-2FCB12-----------------------------
  9322. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  9323.     AX = CB12h
  9324.     DS:DX -> 128-byte status buffer (see #1725,#1727)
  9325. Return: AX = 0000h successful
  9326.         DS:DX buffer filled with hardware-dependent status information
  9327.        < 0       error code (see #1719)
  9328. SeeAlso: AX=CB10h,AX=CB11h
  9329.  
  9330. Format of status buffer for Intel Connection CoProcessor:
  9331. Offset    Size    Description    (Table 1725)
  9332.  00h    BYTE    Connection CoProcessor connection status flags (see #1728)
  9333.  01h    BYTE    number of kilobytes of free buffer space
  9334.  02h    BYTE    page buffer status
  9335.         bit 7: Connection CoProcessor has documents to send
  9336.         bits 6-0: number of pages in buffer
  9337.  03h    BYTE    number of retries left for dialing number
  9338.  04h    BYTE    page number to retransmit
  9339.  05h    BYTE    communications status (see #1729)
  9340.  06h    BYTE    baud rate (see #1726)
  9341.  07h  3 BYTEs    reserved
  9342.  0Ah    BYTE    Connection CoProcessor hardware status (see #1730)
  9343.  0Bh    BYTE    Connection CoProcessor switch states (see #1731)
  9344.  0Ch    BYTE    communications flags (see #1732)
  9345.  0Dh    BYTE    reserved
  9346.  0Eh    WORD    error count (only valid while busy, reset when idle)
  9347.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  9348.  14h    BYTE    'A' if Connection CoProcessor board present
  9349.  15h  9 BYTEs    reserved
  9350.  1Eh 21 BYTEs    ASCIZ CCITT identification
  9351.  33h 77 BYTEs    reserved
  9352. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  9353.       by examining the byte at offset 14h
  9354.  
  9355. Bitfields for Connection CoProcessor baud rate:
  9356. Bit(s)    Description    (Table 1726)
  9357.  7    reserved
  9358.  6-4    baud rate
  9359.     000 = 300 baud    (V.21 SDLC or HDLC mode)
  9360.     100 = 2400 baud (V.27 ter)
  9361.     101 = 4800 baud (V.27 ter)
  9362.     110 = 7200 baud (V.29)
  9363.     111 = 9600 baud (V.29)
  9364.  3-0    reserved, should be 0110
  9365.  
  9366. Format of status buffer for Intel SatisFAXtion board:
  9367. Offset    Size    Description    (Table 1727)
  9368.  00h    BYTE    SatisFAXtion connection status flags (see #1733)
  9369.  01h    BYTE    SatisFAXtion board state (see #1734)
  9370.  02h    BYTE    number of KB free in buffer
  9371.  03h    BYTE    number of pages or files in buffer
  9372.  04h    BYTE    number of redials remaining on current number
  9373.  05h    BYTE    FAX page number to retransmit
  9374.  06h    BYTE    current page/file in block transfer
  9375.  07h    BYTE    number of rings received (only if auto-answer enabled)
  9376.  08h    WORD    error count
  9377.  0Ah    DWORD    length of file being transferred
  9378.  0Eh  6 BYTEs    reserved
  9379.  14h    BYTE    'B' if SatisFAXtion board present
  9380.  15h 13 BYTEs    ASCIZ transfer agent name
  9381.  22h  5 BYTEs    ASCIZ transfer agent version number
  9382.  27h 13 BYTEs    ASCIZ resident loader name
  9383.  34h  5 BYTEs    ASCIZ resident loader version number
  9384.  39h 21 BYTEs    ASCIZ remote CSID
  9385.  4Eh 13 BYTEs    ASCIZ resident manager name
  9386.  5Bh  5 BYTEs    ASCIZ resident manager version number
  9387.  60h 32 BYTEs    reserved
  9388. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  9389.       by examining the byte at offset 14h
  9390.  
  9391. Bitfields for Connection CoProcessor connection status flags:
  9392. Bit(s)    Description    (Table 1728)
  9393.  7    hardware busy sending or receiving
  9394.  6    last page of data
  9395.  5    no data on current page
  9396.  4    retransmit request for current page being transmitted
  9397.  3    NSF (nonstandard file) mode active
  9398.  2-0    reserved
  9399.  
  9400. Bitfields for communications status:
  9401. Bit(s)    Description    (Table 1729)
  9402.  7    originating call
  9403.  6    FAX message to be sent
  9404.  5    on line
  9405.  4    ring detected and receive enabled
  9406.  3    buffer dumped on receive
  9407.  2-0    hardware sequence state
  9408.     000 idle
  9409.     001 dial
  9410.     010 answer
  9411.     011 transmit
  9412.     100 receive
  9413.     101 pre-message
  9414.     110 post-message
  9415.     111 disconnect
  9416.  
  9417. Bitfields for Connection CoProcessor hardware status:
  9418. Bit(s)    Description    (Table 1730)
  9419.  7    modem option installed
  9420.  6    Connection CoProcessor has control of DAA (not latched)
  9421.  5    on line (not latched)
  9422.  4    ring detected (not latched)
  9423.  3    data in command buffer (not latched)
  9424.  2    set if using DMA channel 1, clear if using DMA channel 3
  9425.  1    line length compensation 1 set (not latched)
  9426.  0    line length compensation 0 set (not latched)
  9427.  
  9428. Bitfields for Connection CoProcessor switch states:
  9429. Bit(s)    Description    (Table 1731)
  9430.  7    reserved
  9431.  6    unused
  9432.  5    spare switch open
  9433.  4    FAX ADR1 switch open
  9434.  3    FAX ADR0 switch open
  9435.  2    alternate interrupt switch open
  9436.  1    COM SEL 1 switch open
  9437.  0    COM SEL 0 switch open
  9438. Note:    valid combinations of 0-2 are
  9439.     000  COM2 IRQ3 IObase 2F8h
  9440.     001  COM1 IRQ4 IObase 3F8h
  9441.     010  COM4 IRQ3 IObase 2E8h
  9442.     011  COM3 IRQ4 IObase 3E8h
  9443.     110  COM4 IRQ2 IObase 2E8h
  9444.     111  COM3 IRQ5 IObase 3E8h
  9445.  
  9446. Bitfields for communications flags:
  9447. Bit(s)    Description    (Table 1732)
  9448.  7    reserved
  9449.  6    auxiliary relay forced ON
  9450.  5    modem select relay forced ON
  9451.  4    offhook relay forced ON
  9452.  3    9600 bps enabled
  9453.  2    7200 bps enabled
  9454.  1    4800 bps enabled
  9455.  0    2400 bps enabled
  9456.  
  9457. Bitfields for SatisFAXtion connection status flags:
  9458. Bit(s)    Description    (Table 1733)
  9459.  7    busy in T.30 CCITT fax protocol
  9460.  6    data on current page/file (only used for block xfers)
  9461.  5    retransmission of last page requested
  9462.  4    in file transfer mode
  9463.  3    data in buffer
  9464.  2    data buffer dumped on receive
  9465.  1    200x100 dpi resolution instead of 200x200 dpi
  9466.  0    data modem in use, FAX image modem not available
  9467.  
  9468. Bitfields for SatisFAXtion board state:
  9469. Bit(s)    Description    (Table 1734)
  9470.  7    reserved
  9471.  6    handset jack active, data and FAX modems not available
  9472.  5-3    current rate
  9473.     000  300 bps (V.21 HDLC)
  9474.     100 2400 bps (V.27 ter)
  9475.     101 4800 bps (V.27 ter)
  9476.     110 7200 bps (V.29)
  9477.     111 9600 bps (V.29)
  9478.  2-0    T.30 CCITT protocol state
  9479.     000 idle
  9480.     001 dialing
  9481.     010 answering
  9482.     011 transmitting
  9483.     100 receiving
  9484.     101 pre-message
  9485.     110 post-message
  9486.     111 disconnect
  9487. --------F-2FCB13DL00-------------------------
  9488. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  9489.     AX = CB13h
  9490.     DL = 00h
  9491. Return: AX = 0040h in progress
  9492.        >= 0       passed
  9493.        < 0       hardware-dependent failure code (see #1735,#1736)
  9494. SeeAlso: AX=CB13h/DL=01h
  9495.  
  9496. Bitfields for Intel Connection CoProcessor failure codes:
  9497. Bit(s)    Description    (Table 1735)
  9498.  3    9600 bps FAX modem module failed
  9499.  2    SDLC chip failed
  9500.  1    RAM failed
  9501.  0    ROM checksum failed
  9502.  
  9503. Bitfields for Intel SatisFAXtion failure codes:
  9504. Bit(s)    Description    (Table 1736)
  9505.  1    2400 bps data modem failed
  9506.  0    9600 bps FAX modem failed
  9507. --------F-2FCB13DL01-------------------------
  9508. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  9509.     AX = CB13h
  9510.     DL = 01h
  9511. Return: AX = 0000h successfully started
  9512.     AX < 0       error code (see #1719)
  9513. SeeAlso: AX=CB13h/DL=00h
  9514. --------F-2FCB14-----------------------------
  9515. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  9516.     AX = CB14h
  9517.     BX = event handle
  9518.     CX = receive file number
  9519.         0001h first received file
  9520.         N      Nth received file
  9521.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  9522. Return: AX = 0000h successful
  9523.     AX < 0       error code (see #1719)
  9524. --------F-2FCB15-----------------------------
  9525. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  9526.     AX = CB15h
  9527.     DS:DX -> variable-length data area (see #1737)
  9528. Return: AX >= 0 event handle
  9529.     AX < 0    error code (see #1719)
  9530. SeeAlso: AX=CB01h
  9531.  
  9532. Format of CAS file submission data area:
  9533. Offset    Size    Description    (Table 1737)
  9534.  00h    BYTE    transfer type
  9535.         00h = 200x200 dpi, fax mode
  9536.         01h = 100x200 dpi, fax mode
  9537.         02h = file transfer mode
  9538.         03h to 7Fh reserved
  9539.  01h    BYTE    text size
  9540.         00h = 80 columns
  9541.         01h = 132 columns
  9542.         02h to 7Fh reserved
  9543.  02h    WORD    time to send (DOS packed time, see #0876 at INT 21/AX=5700h)
  9544.  04h    WORD    date to send (DOS packed date, see #0877 at INT 21/AX=5700h)
  9545.  06h 32 BYTEs    ASCIZ destination name
  9546.  26h 80 BYTEs    ASCIZ name of file to send
  9547.  76h 47 BYTEs    ASCIZ phone number to dial
  9548.  A5h 64 BYTEs    ASCIZ application-specific tag string
  9549.  E5h    BYTE    reserved (00h)
  9550.  E6h    BYTE    cover page
  9551.         00h don't send cover page
  9552.         01h send cover page
  9553.         02h to 7Fh reserved
  9554.  E7h 23 BYTEs    reserved (zeros)
  9555.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  9556.         set to 01h)
  9557. --------F-2FCB16BX1234-----------------------
  9558. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  9559.     AX = CB16h
  9560.     BX = 1234h
  9561.     CX = 5678h
  9562.     DX = 9ABCh
  9563. Return: AX = 0000h successful
  9564.     AX < 0       error code
  9565. Note:    the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
  9566. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h
  9567. Index:    uninstall;CAS Manager
  9568. --------F-2FCB17-----------------------------
  9569. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  9570.     AX = CB17h
  9571.     BX = event handle
  9572.     CL = cover page status
  9573.         00h not read
  9574.         01h read by user
  9575. Return: AX = 0000h successful
  9576.     AX < 0       error code
  9577. --------F-2FCB80-----------------------------
  9578. INT 2F - Intel SatisFAXtion CASMGR - ???
  9579.     AX = CB80h
  9580.     ???
  9581. Return: ???
  9582. --------F-2FCB81-----------------------------
  9583. INT 2F - Intel SatisFAXtion CASMGR - ???
  9584.     AX = CB81h
  9585.     ???
  9586. Return: ???
  9587. --------F-2FCB82-----------------------------
  9588. INT 2F - Intel SatisFAXtion CASMGR - ???
  9589.     AX = CB82h
  9590.     ???
  9591. Return: ???
  9592. --------F-2FCBDCBL56-------------------------
  9593. INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
  9594.     AX = CBDCh
  9595.     BL = 56h
  9596.     BH = line number (starts with 1)
  9597.     CX:DX -> 32-byte status buffer or 80 character string
  9598. Return: AX = number of cards installed, or FFFFh on error
  9599. Program: Comwave manufacturers the Microfax line of fax cards which are a high-
  9600.       performance multi-card FAX solution for OEMs.
  9601. Note:    defaults to AH=CBh but can be changed
  9602. SeeAlso: AX=CBDDh,AX=DA00h
  9603. --------F-2FCBDDBL56-------------------------
  9604. INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
  9605.     AX = CBDDh
  9606.     BL = 56h
  9607.     BH = ?
  9608.     CX:DX -> command to execute
  9609. Return: AX = status
  9610.         0000h success
  9611.         FFFFh on error
  9612. SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
  9613. --------c-2FCC--SI5453-----------------------
  9614. INT 2F U - PC-Kwik Programs - API
  9615.     AH = CCh
  9616.     SI = 5453h or 7473h
  9617.     AL = function number (at least 00h,01h,04h,05h,07h,80h)
  9618.     DL = program identifier (see #1738)
  9619. Return: SI = 7473h
  9620.     other registers vary by function
  9621. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  9622.       thus supports this call
  9623. SeeAlso: INT 21/AH=2Bh/CX=4358h
  9624.  
  9625. (Table 1738)
  9626. Values for PC-Kwik program identifier:
  9627.  00h    all installed PowerPak programs
  9628.  01h    SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
  9629.  02h    PCKSPL (print spooler)
  9630.  04h    PCKSCRN (screen accelerator)
  9631.  05h    PCKKEY (keyboard enhancer)
  9632.  06h    PCKRAMD (RAM disk)
  9633.  08h    PCKWIK.SYS
  9634.  10h    PCKCDROM (CD-ROM support for SUPERPCK)
  9635. --------N-2FCC00-----------------------------
  9636. INT 2F - Tsoft NFSDRVR - INSTALLATION CHECK
  9637.     AX = CC00h
  9638. Return: AX = 7777h
  9639.     BX = ???
  9640.     CX = ???
  9641.     DX = ???
  9642.     ES = data segment of resident portion
  9643. SeeAlso: AX=CC01h,AX=CC06h
  9644. --------N-2FCC01-----------------------------
  9645. INT 2F - Tsoft NFSDRVR - ???
  9646.     AX = CC01h
  9647.     ???
  9648. Return: ???
  9649. SeeAlso: AX=CC00h
  9650. --------N-2FCC02-----------------------------
  9651. INT 2F - Tsoft NFSDRVR - ???
  9652.     AX = CC02h
  9653.     ???
  9654. Return: ???
  9655. SeeAlso: AX=CC00h
  9656. --------N-2FCC03-----------------------------
  9657. INT 2F - Tsoft NFSDRVR - ???
  9658.     AX = CC03h
  9659.     ???
  9660. Return: ???
  9661. SeeAlso: AX=CC00h
  9662. --------N-2FCC04-----------------------------
  9663. INT 2F - Tsoft NFSDRVR - ???
  9664.     AX = CC04h
  9665.     ???
  9666. Return: ???
  9667. SeeAlso: AX=CC00h
  9668. --------N-2FCC05-----------------------------
  9669. INT 2F - Tsoft NFSDRVR - ???
  9670.     AX = CC05h
  9671.     ???
  9672. Return: ???
  9673. SeeAlso: AX=CC00h
  9674. --------N-2FCC06-----------------------------
  9675. INT 2F - Tsoft NFSDRVR - ???
  9676.     AX = CC06h
  9677.     ???
  9678. Return: ???
  9679. SeeAlso: AX=CC00h
  9680. ----------2FCD00-----------------------------
  9681. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  9682.     AX = CD00h
  9683. Return: AL = state
  9684.         00h not installed, OK to install
  9685.         01h not installed, not OK to install
  9686.         FFh installed
  9687. SeeAlso: AX=CD02h"Image"
  9688. --------P-2FCD00-----------------------------
  9689. INT 2F - LaserPort Interface - INSTALLATION CHECK
  9690.     AX = CD00h
  9691. Return: AL = status
  9692.         FFh installed
  9693. SeeAlso: AX=CD0Fh"LaserPort"
  9694. --------U-2FCD00-----------------------------
  9695. INT 2F - SWELL.EXE - INSTALLATION CHECK
  9696.     AX = CD00h
  9697. Return: AX = 00FFh installed
  9698.         BH = major version
  9699.         BL = minor version
  9700. Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
  9701.       process with INT 21/AH=4Bh
  9702. --------s-2FCD00BX464F-----------------------
  9703. INT 2F - Forte/Gravis ULTRAMID - INSTALLATION CHECK
  9704.     AX = CD00h
  9705.     BX = 464Fh ('FO')
  9706.     CX = 5254h ('RT')
  9707.     DX = 4520h ('E ')
  9708. Return: AL = FFh if installed
  9709.         BX = 4155h ('AU')
  9710.         CX = 4449h ('DI')
  9711.         DX = 4F20h ('O ')
  9712.         ES:SI -> program ID string
  9713. Program: ULTRAMID is a MIDI driver for the Gravis UltraSound which allows use
  9714.       of AIL drivers with other software
  9715. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  9716. SeeAlso: INT 21/AX=FD12h
  9717. ----------2FCD01-----------------------------
  9718. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  9719.     AX = CD01h
  9720.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  9721. Return: AL = status
  9722.         00h successful
  9723.         CX:BX -> internal character device name
  9724.         80h error
  9725. --------U-2FCD01-----------------------------
  9726. INT 2F - SWELL.EXE - SUSPEND ONCE
  9727.     AX = CD01h
  9728. Return: AX = 0000h
  9729. SeeAlso: AX=CD02h"SWELL"
  9730. ----------2FCD02-----------------------------
  9731. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  9732.     AX = CD02h
  9733. Return: AL = status
  9734.         00h/01h successful
  9735.         BH = major version number (BCD)
  9736.         BL = minor version number (BCD)
  9737.         80h error
  9738. Note:    if return AL = 01h, the IPI supports network redirection
  9739. SeeAlso: AX=CD00h"Image"
  9740. --------U-2FCD02-----------------------------
  9741. INT 2F - SWELL.EXE - SUSPEND
  9742.     AX = CD02h
  9743. Return: AX = 0000h
  9744. SeeAlso: AX=CD03h"SWELL"
  9745. ----------2FCD03-----------------------------
  9746. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  9747.     AX = CD03h
  9748.     BX = scan line
  9749.     CX = requested density in dots per inch (300, 600, or 1200)
  9750. Return: AL = status (see also AX=CD04h"Image")
  9751.         00h successful
  9752.         CX = density at which scan line was mapped
  9753.         ES:DI -> start of scan line
  9754.         80h unsuccessful
  9755.         81h scan line out of range
  9756.         82h unsupported scan line density
  9757.         83h out of memory
  9758. SeeAlso: AX=CD04h"Image"
  9759. --------U-2FCD03-----------------------------
  9760. INT 2F - SWELL.EXE - ACTIVATE
  9761.     AX = CD03h
  9762. Return: AX = 0000h
  9763. SeeAlso: AX=CD02h"SWELL"
  9764. ----------2FCD04-----------------------------
  9765. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  9766.     AX = CD04h
  9767.     CX:BX -> structure (see #1740)
  9768. Return: AL = status (see #1739)
  9769. SeeAlso: AX=CD03h"Image"
  9770.  
  9771. (Table 1739)
  9772. Values for IPI function status:
  9773.  00h    successful
  9774.  80h    unsuccessful
  9775.  81h    scan line out of range
  9776.  82h    unsupported scan line density
  9777.  83h    out of memory
  9778.  84h    unrecognized source
  9779.  85h    initialization error
  9780.  
  9781. Format of structure:
  9782. Offset    Size    Description    (Table 1740)
  9783.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  9784.  02h    DWORD    pointer to image data
  9785.  06h    WORD    scan line on which to place
  9786.  08h    WORD    bit offset from start of scan line at which to place
  9787.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  9788.  0Ch    WORD    width in bits of data
  9789.  0Eh    WORD    source logical page number
  9790.  10h    WORD    source handle (only if source in expanded memory)
  9791.  12h    WORD    source offset (only if source in expanded memory)
  9792. --------U-2FCD04-----------------------------
  9793. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  9794.     AX = CD04h
  9795. Return: AX = 0000h
  9796. SeeAlso: AX=CD05h"SWELL"
  9797. ----------2FCD05-----------------------------
  9798. INT 2F - Intel Image Processing Interface - PRINT PAGE
  9799.     AX = CD05h
  9800. Return: AL = status (00h,80h) (see #1739)
  9801. Note:    page image is retained, so multiple calls will print multiple copies of
  9802.       the page
  9803. SeeAlso: AX=CD06h"Image"
  9804. --------U-2FCD05-----------------------------
  9805. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  9806.     AX = CD05h
  9807. Return: AX = 0000h
  9808. SeeAlso: AX=CD04h"SWELL"
  9809. ----------2FCD06-----------------------------
  9810. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  9811.     AX = CD06h
  9812. Return: AL = status (00h,80h) (see #1739)
  9813. Note:    palette is reset to default
  9814. SeeAlso: AX=CD09h"Image"
  9815. --------U-2FCD06-----------------------------
  9816. INT 2F - SWELL.EXE - UNINSTALL
  9817.     AX = CD06h
  9818. Return: AX = status
  9819.         0000h uninstalled
  9820.         8002h programs still swapped, not uninstalled
  9821. ----------2FCD07-----------------------------
  9822. INT 2F - Intel Image Processing Interface - reserved
  9823.     AX = CD07h
  9824. SeeAlso: AX=CD00h"Image"
  9825. --------U-2FCD07-----------------------------
  9826. INT 2F - SWELL.EXE - GET INFO
  9827.     AX = CD07h
  9828.     ES:BX -> 32-byte buffer for info (see #1741)
  9829. Return: AX = status
  9830.         0000h successful
  9831.         ES:BX buffer filled
  9832.         8001h buffer wrong size
  9833.  
  9834. Format of SWELL.EXE info buffer:
  9835. Offset    Size    Description    (Table 1741)
  9836.  00h    WORD    20h  (total size of buffer)
  9837.  02h    BYTE    suspend-once mode active if nonzero
  9838.  03h    BYTE    00h active, 01h suspended
  9839.  04h    BYTE    00h quiet, 01h verbose
  9840.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  9841.  06h 26 BYTEs    unused???
  9842. ----------2FCD08-----------------------------
  9843. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  9844.     AX = CD08h
  9845.     CX:BX -> structure (see #1742)
  9846. Return: AL = status (00h,80h-85h) (see #1739)
  9847. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  9848.  
  9849. Format of IPI screen image structure:
  9850. Offset    Size    Description    (Table 1742)
  9851.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  9852.  02h    DWORD    pointer to image data
  9853.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  9854.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  9855.  0Ah    WORD    left cropping (currently must be zero)
  9856.  0Ch    WORD    top cropping (currently must be zero)
  9857.  0Eh    WORD    width (currently must be 8000h)
  9858.  10h    WORD    height (currently must be 8000h)
  9859.  12h    WORD    horizontal size of image in 1200 dpi units
  9860.  14h    WORD    vertical size of image in 1200 dpi units
  9861.  16h    WORD    aspect ratio (currently reserved)
  9862.  18h    WORD    initialization flag (if 01h, initialization is performed)
  9863.  1Ah    WORD    pixels per line of source data
  9864.  1Ch    WORD    number of scan lines in source data
  9865.  1Eh    WORD    number of scan lines in packet
  9866.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  9867.  22h    WORD    pixels per byte (1,2,4, or 8)
  9868.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  9869.  26h    WORD    source page number (if in expanded memory)
  9870.  28h    WORD    source handle (if in expanded memory)
  9871.  2Ah    WORD    source offset (if in expanded memory)
  9872. --------U-2FCD08-----------------------------
  9873. INT 2F - SWELL.EXE - UNUSED
  9874.     AX = CD08h
  9875. Return: AX = FFFFh (error)
  9876. ----------2FCD09-----------------------------
  9877. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  9878.     AX = CD09h
  9879.     CX:BX -> structure (see #1743)
  9880. Return: AL = status (00h,80h) (see #1739)
  9881. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  9882.  
  9883. Format of IPI load screen structure:
  9884. Offset    Size    Description    (Table 1743)
  9885.  00h    BYTE    style
  9886.         44h ('D') diamond style
  9887.         4Ch ('L') line style
  9888.  01h    BYTE    reserved (00h)
  9889.  02h    WORD    frequency in lines per inch [sic]
  9890.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  9891.  04h    WORD    screen angle in degrees (-360 to 360)
  9892.         currently coerced to nearest of -45, 0, 45, or 90
  9893. --------U-2FCD09-----------------------------
  9894. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  9895.     AX = CD09h
  9896. Return: AX = 0000h
  9897. SeeAlso: AX=CD0Ah"SWELL"
  9898. ----------2FCD0A-----------------------------
  9899. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  9900.     AX = CD0Ah
  9901.     CX:BX -> palette structure (see #1744)
  9902. Return: AL = status (00h,80h) (see #1739)
  9903. SeeAlso: AX=CD09h"Image Processing"
  9904.  
  9905. Format of IPI palette structure:
  9906. Offset    Size    Description    (Table 1744)
  9907.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  9908.  01h    2**N    palette translation values, one per possible pixel value
  9909. --------U-2FCD0A-----------------------------
  9910. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  9911.     AX = CD0Ah
  9912. Return: AX = 0000h
  9913. SeeAlso: AX=CD09h"SWELL"
  9914. --------P-2FCD0F-----------------------------
  9915. INT 2F - LaserPort Interface - EXECUTE FUNCTION
  9916.     AX = CD0Fh
  9917.     BL = function
  9918.         01h enable
  9919.         02h disable
  9920.         03h ???
  9921. Return: AL = status
  9922.         00h success
  9923. SeeAlso: AX=CD00h"LaserPort"
  9924. --------K-2FCF00-----------------------------
  9925. INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
  9926.     AX = CF00h
  9927. Return: AL = FFh if installed
  9928. Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
  9929. Note:    values in AL other than 00h cause an immediate return without modifying
  9930.       any registers
  9931. --------!---Section--------------------------
  9932.