home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / INTER53C.ZIP / INTERRUP.J < prev    next >
Text File  |  1997-01-12  |  362KB  |  10,035 lines

  1. Interrupt List, part 10 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  3. --------W-2F1700-----------------------------
  4. INT 2F - MS Windows "WINOLDAP" - IDENTIFY WinOldAp VERSION
  5.     AX = 1700h
  6. Return: AX = 1700h if this version of WINOLDAP doesn't support clipboard
  7.     AX <> 1700h
  8.         AL = WINOLDAP major version
  9.         AH = WINOLDAP minor version
  10. Program: WinOldAp (WINOLDAP.MOD) is a Microsoft Windows extension supporting
  11.       "old" (character-mode) application access to Dynamic Data Exchange,
  12.       menus, and the Windows clipboard.
  13. Note:    this installation check DOES NOT follow the format used by other
  14.       software of returning AL=FFh
  15. SeeAlso: AX=1701h,AX=4601h
  16. Index:    installation check;WINOLDAP
  17. --------W-2F1701-----------------------------
  18. INT 2F - MS Windows "WINOLDAP" - OPEN CLIPBOARD
  19.     AX = 1701h
  20. Return: AX = status
  21.         nonzero success
  22.         0000h   clipboard is already open
  23. SeeAlso: AX=1700h,AX=1702h,AX=1703h,AX=1704h,INT 16/AX=CB00h
  24. --------W-2F1702-----------------------------
  25. INT 2F - MS Windows "WINOLDAP" - EMPTY CLIPBOARD
  26.     AX = 1702h
  27. Return: AX = status
  28.         nonzero clipboard has been emptied
  29.         0000h   failure
  30. SeeAlso: AX=1700h,AX=1701h,AX=1703h,AX=1704h,INT 16/AX=CB05h
  31. --------W-2F1703-----------------------------
  32. INT 2F - MS Windows "WINOLDAP" - SET CLIPBOARD DATA
  33.     AX = 1703h
  34.     DX = clipboard format supported by WinOldAp (see #2005)
  35.     ES:BX -> data (see #2006,#2007)
  36.     SI:CX = size of data
  37. Return: AX = status
  38.         nonzero data copied into the Clipboard
  39.         0000h   failure
  40. SeeAlso: AX=1701h,AX=1705h,INT 16/AX=CB04h
  41.  
  42. (Table 2005)
  43. Values for WinOldAp clipboard format:
  44.  01h    text
  45.  02h    bitmap
  46.  03h    metafile picture
  47.  04h    SYLK
  48.  05h    DIF
  49.  06h    TIFF
  50.  07h    OEM text
  51.  08h    DIB bitmap
  52.  80h    special format (used by Windows WRITE, maybe other Windows applets???)
  53.  81h    DSP text
  54.  82h    DSP bitmap
  55.  
  56. Format of Windows Clipboard bitmap:
  57. Offset    Size    Description    (Table 2006)
  58.  00h    WORD    type (0000h)
  59.  02h    WORD    width of bitmap in pixels
  60.  04h    WORD    height of bitmap in pixels
  61.  06h    WORD    bytes per line
  62.  08h    BYTE    number of color planes
  63.  09h    BYTE    number of adjacent color bits in pixel
  64.  0Ah    DWORD    pointer to start of data
  65.  0Eh    WORD    width in 0.1mm units
  66.  10h    WORD    height in 0.1mm units
  67.  12h  N BYTEs    bitmap data
  68.  
  69. Format of Windows metafile picture:
  70. Offset    Size    Description    (Table 2007)
  71.  00h    WORD    mapping mode
  72.  02h    WORD    X extent
  73.  04h    WORD    Y extent
  74.  06h    WORD    picture data
  75. --------W-2F1704-----------------------------
  76. INT 2F - MS Windows "WINOLDAP" - GET CLIPBOARD DATA SIZE
  77.     AX = 1704h
  78.     DX = clipboard format supported by WinOldAp (see #2005)
  79. Return: DX:AX = size of data in bytes, including any headers
  80.         0000h:0000h if no data in this format in the Clipboard
  81. Note:    Windows reportedly rounds up the size of the data to a multiple of 32
  82.       bytes
  83. SeeAlso: AX=1700h,AX=1703h,AX=1705h
  84. --------W-2F1705-----------------------------
  85. INT 2F - MS Windows "WINOLDAP" - GET CLIPBOARD DATA
  86.     AX = 1705h
  87.     DX = clipboard format supported by WinOldAp (see #2005)
  88.     ES:BX -> buffer
  89. Return: AX = status
  90.         nonzero success
  91.         0000h   error, or no data in this format in Clipboard
  92. SeeAlso: AX=1700h,AX=1704h,INT 16/AX=CB03h
  93. --------W-2F1708-----------------------------
  94. INT 2F - MS Windows "WINOLDAP" - CloseClipboard
  95.     AX = 1708h
  96. Return: AX = status
  97.         0000h failure
  98.         nonzero success
  99. --------W-2F1709-----------------------------
  100. INT 2F - MS Windows "WINOLDAP" - COMPACT CLIPBOARD
  101.     AX = 1709h
  102.     SI:CX = desired size in bytes
  103. Return: DX:AX = number of bytes in largest block of free memory
  104. Note:    WinOldAp is responsible for including the size of any headers
  105. --------W-2F170A-----------------------------
  106. INT 2F - MS Windows "WINOLDAP" - GET DEVICE CAPABILITIES
  107.     AX = 170Ah
  108.     DX = GDI information index (see #2008)
  109. Return: AX = integer value of the desired item
  110.           (see #2009,#2010,#2011,#2012,#2013,#2014,#2015)
  111. Note:    This function returns the device-capability bits for the given display
  112.  
  113. (Table 2008)
  114. Values for GDI information index:
  115.  00h    device driver version
  116.  02h    device classification
  117.  04h    width in mm
  118.  06h    height in mm
  119.  08h    width in pixels
  120.  0Ah    height in pixels
  121.  0Ch    bits per pixel
  122.  0Eh    number of bit planes
  123.  10h    number of brushes supported by device
  124.  12h    number of pens supported by device
  125.  14h    number of markers supported by device
  126.  16h    number of fonts supported by device
  127.  18h    number of colors
  128.  1Ah    size required for device descriptor
  129.  1Ch    curve capabilities
  130.  1Eh    line capabilities
  131.  20h    polygon capabilities
  132.  22h    text capabilities
  133.  24h    clipping capabilities
  134.  26h    bitblt capabilities
  135.  28h    X aspect
  136.  2Ah    Y aspect
  137.  2Ch    length of hypotenuse of aspect
  138.  58h    logical pixels per inch of width
  139.  5Ah    logical pixels per inch of height
  140. SeeAlso: #2009,#2010,#2011,#2012,#2013,#2014,#2015
  141.  
  142. (Table 2009)
  143. Values for device classification:
  144.  00h    vector plotter
  145.  01h    raster display
  146.  02h    raster printer
  147.  03h    raster camera
  148.  04h    character-stream, PLP
  149.  05h    Metafile, VDM
  150.  06h    display-file
  151. SeeAlso: #2008,#2010,#2011,#2012,#2013,#2014,#2015
  152.  
  153. Bitfields for curve capabilities:
  154. Bit(s)    Description    (Table 2010)
  155.  0    circles
  156.  1    pie wedges
  157.  2    chord arcs
  158.  3    ellipses
  159.  4    wide lines
  160.  5    styled lines
  161.  6    wide styled lines
  162.  7    interiors
  163. SeeAlso: #2008,#2009,#2011,#2012,#2013,#2014,#2015
  164.  
  165. Bitfields for line capabilities:
  166. Bit(s)    Description    (Table 2011)
  167.  1    polylines
  168.  2    markers
  169.  3    polymarkers
  170.  4    wide lines
  171.  5    styled lines
  172.  6    wide styled lines
  173.  7    interiors
  174. SeeAlso: #2008,#2009,#2010,#2012,#2013,#2014,#2015
  175.  
  176. Bitfields for polygon capabilities:
  177. Bit(s)    Description    (Table 2012)
  178.  0    polygons
  179.  1    rectangles
  180.  2    trapezoids
  181.  3    scanlines
  182.  4    wide borders
  183.  5    styled borders
  184.  6    wide styled borders
  185.  7    interiors
  186. SeeAlso: #2008,#2009,#2010,#2011,#2013,#2014,#2015
  187.  
  188. Bitfields for text capabilities:
  189. Bit(s)    Description    (Table 2013)
  190.  0    output precision character
  191.  1    output precision stroke
  192.  2    clippping precision stroke
  193.  3    90-degree character rotation
  194.  4    arbitrary character rotation
  195.  5    independent X and Y scaling
  196.  6    double-size
  197.  7    integer scaling
  198.  8    continuous scaling
  199.  9    bold
  200.  10    italic
  201.  11    underline
  202.  12    strikeout
  203.  13    raster fonts
  204.  14    vector fonts
  205.  15    reserved
  206. SeeAlso: #2008,#2009,#2010,#2011,#2012,#2014,#2015
  207.  
  208. (Table 2014)
  209. Values for clipping capabilities:
  210.  00h    none
  211.  01h    clipping to rectangles
  212. SeeAlso: #2008,#2009,#2010,#2011,#2012,#2013,#2015
  213.  
  214. Bitfields for raster capabilities:
  215. Bit(s)    Description    (Table 2015)
  216.  0    simple bitBLT
  217.  1    device requires banding support
  218.  2    device requires scaling support
  219.  3    supports >64K bitmap
  220. SeeAlso: #2008,#2009,#2010,#2011,#2012,#2013,#2014
  221. ----------2F18-------------------------------
  222. INT 2F U - MS-Manager
  223.     AH = 18h
  224.     ???
  225. Return: ???
  226. --------l-2F1900-----------------------------
  227. INT 2F U - DOS 4.x only SHELLB.COM - INSTALLATION CHECK
  228.     AX = 1900h
  229. Return: AL = status
  230.         00h not installed
  231.         FFh installed
  232. --------l-2F1901-----------------------------
  233. INT 2F U - DOS 4.x only SHELLB.COM - SHELLC.EXE INTERFACE
  234.     AX = 1901h
  235.     BL = SHELLC type
  236.         00h transient
  237.         01h resident
  238.     DS:DX -> far call entry point for resident SHELLC.EXE
  239. Return: ES:DI -> SHELLC.EXE workspace within SHELLB.COM
  240. Note:    SHELLB.COM and SHELLC.EXE are parts of the DOS 4.x shell
  241. --------l-2F1902-----------------------------
  242. INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM INTERFACE
  243.     AX = 1902h
  244.     ES:DI -> ASCIZ full filename of current batch file, with at least the
  245.           final filename element uppercased
  246.     DS:DX -> buffer for results
  247. Return: AL = 00h  failed, either
  248.         (a) final filename element quoted at ES:DI does not match
  249.               identity of shell batch file quoted as parameter of most
  250.               recent call of SHELLB command, or
  251.         (b) no more Program Start Commands available.
  252.     AL= FFh     success, then:
  253.         memory at DS:[DX+1] onwards filled as:
  254.         DX+1:    BYTE    count of bytes of PSC
  255.         DX+2: N BYTEs    Program Start Command text
  256.             BYTE    0Dh terminator
  257. Desc:    COMMAND.COM executes the result of this call in preference to
  258.       reading a command from a batch file.    Thus the batch file does not
  259.       advance in execution for so long as SHELLB provides PSCs from its
  260.       workspace.
  261. Note:    The PSCs are planted in SHELLB workspace by SHELLC, the user
  262.       menu interface.  The final PSC of a sequence is finished with a
  263.       GOTO COMMON, which causes a loop back in the batch file which called
  264.       SHELLC so as to execute SHELLC again.     The check on batch file name
  265.       permits PSCs to CALL nested batch files while PSCs are still stacked
  266.       up for subsequent execution.
  267. --------l-2F1903-----------------------------
  268. INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM interface
  269.     AX = 1903h
  270.     ES:DI -> ASCIZ batch file name as for AX=1902h
  271. Return: AL = status
  272.         FFh quoted batch file name matches last SHELLB parameter
  273.         00h it does not
  274. --------l-2F1904-----------------------------
  275. INT 2F U - DOS 4.x only SHELLB.COM - SHELLB transient to TSR intrface
  276.     AX = 1904h
  277. Return: ES:DI -> name of current shell batch file:
  278.         WORD    number of bytes of name following
  279.         BYTEs    (8 max) uppercase name of shell batch file
  280. ----------2F1980-----------------------------
  281. INT 2F U - IBM ROM-DOS v4.0 - INSTALLATION CHECK
  282.     AX = 1980h
  283. Return: AL = FFh if ??? installed/supported
  284. Note:    called at the very beginning of SHELLSTB.COM, which exits if AL is not
  285.       FFh on return
  286. SeeAlso: AX=1981h,AX=1982h
  287. ----------2F1981-----------------------------
  288. INT 2F U - IBM ROM-DOS v4.0 - GET ??? STRING
  289.     AX = 1981h
  290.     DS:DX -> buffer for ???
  291. Return: AL = status
  292.         FFh if successful
  293.         DS:DX buffer filled (refer to note below)
  294.         81h on error
  295. Note:    the first byte of the buffer is unchanged; depending on a byte in
  296.       IBMBIO.COM, the remainder of the buffer is filled with either
  297.       "C:\ROMSHELL.COM",0Dh or xxh,xxh,0Fh,"C:\ROMSHELL.COM",0Dh
  298. SeeAlso: AX=1980h,AX=1982h
  299. ----------2F1982-----------------------------
  300. INT 2F U - IBM ROM-DOS v4.0 - GET ??? TABLE
  301.     AX = 1982h
  302. Return: AL = FFh if supported
  303.         ES:DI -> ??? table (see #2016)
  304. Note:    called by ROMSHELL.COM
  305. SeeAlso: AX=1980h,AX=1981h
  306.  
  307. Format of ROM-DOS v4.0 ??? table:
  308. Offset    Size    Description    (Table 2016)
  309.  00h    BYTE    ??? (00h)
  310.  01h    BYTE    ??? (41h) (ROMSHELL.COM checks if =00h)
  311.  02h    BYTE    ??? (00h) (ROMSHELL.COM checks if =01h)
  312.  03h    WORD    ??? (0001h) (ROMSHELL.COM checks if =0001h)
  313.  05h    BYTE    ??? (00h)
  314.  06h    WORD    ??? (04D5h)
  315. --------V-2F1A00-----------------------------
  316. INT 2F - DOS 4.0+ ANSI.SYS - INSTALLATION CHECK
  317.     AX = 1A00h
  318. Return: AL = FFh if installed
  319. Notes:    AVATAR.SYS also responds to this call
  320.     documented for DOS 5+, but undocumented for DOS 4.x
  321. --------V-2F1A00BX414E-----------------------
  322. INT 2F - ANSIPLUS.SYS v2.00+ - INSTALLATION CHECK
  323.     AX = 1A00h
  324.     BX = 414Eh ('AN')
  325.     CX = 5349h ('SI')
  326.     DX = 2B2Bh ('++')
  327. Return: AL = FFh if installed
  328.         CF clear
  329.         ES:BX -> INT 29 entry point
  330.         CX = ANSIPLUS BCD version number (v3.10+, CH=major, CL=minor)
  331.         DL = capabilities (v4.00+)
  332.         00h full capability driver
  333.         01h reduced capability driver
  334.         2Bh full capability driver (before v4.00)
  335. Program: ANSIPLUS.SYS is a CON device driver by Kristofer Sweger which
  336.       replaces the normal ANSI.SYS with a more powerful version having
  337.       many additional features
  338. Notes:    ANSIPLUS also identifies itself as ANSI.SYS if BX,CX, or DX differ
  339.       from the magic values above
  340.     an additional installation check is to test for the signature
  341.       "ANSIPLUS" 12 bytes before the INT 29 entry point; the version
  342.       number is also available as a four-character ASCII string (e.g.
  343.       "4.00") four bytes before the entry point
  344. SeeAlso: AX=1AA5h,AX=1AA6h,AX=1AA7h,AX=1AA8h,AX=1AA9h,AX=1AAAh,AX=D44Fh
  345. --------V-2F1A00BX4156-----------------------
  346. INT 2F - AVATAR.SYS - INSTALLATION CHECK
  347.     AX = 1A00h
  348.     BX = 4156h ('AV')
  349.     CX = 4154h ('AT')
  350.     DX = 4152h ('AR')
  351. Return: AL = FFh if installed
  352.         CF clear
  353.         BX = AVATAR protocol level supported
  354.         CX = driver type
  355.         0000h AVATAR.SYS
  356.         4456h DVAVATAR.COM inside DESQview window
  357.         DX = 0016h
  358. Program: AVATAR.SYS is a CON replacement by George Adam Stanislav which
  359.       interprets AVATAR command codes in the same way that ANSI interprets
  360.       ANSI command codes
  361. Notes:    AVATAR also identifies itself as ANSI.SYS if BX, CX, or DX differ from
  362.       the magic values
  363. SeeAlso: AX=1A21h,AX=1A3Ch,AX=1A3Fh,AX=1A52h,AX=1A72h,AX=1A7Dh,AX=1AADh"AVATAR"
  364. --------V-2F1A01-----------------------------
  365. INT 2F U - DOS 4.0+ ANSI.SYS internal - GET/SET DISPLAY INFORMATION
  366.     AX = 1A01h
  367.     CL = function
  368.         7Fh for GET
  369.         5Fh for SET
  370.     DS:DX -> parm block as for INT 21,AX=440Ch,CX=037Fh/035Fh respectively
  371. Return: CF clear if successful
  372.         AX destroyed
  373.     CF set on error
  374.         AX = error code (many non-standard)
  375. Note:    presumably this is the DOS IOCTL interface to ANSI.SYS
  376. SeeAlso: AX=1A02h,INT 21/AX=440Ch
  377. --------V-2F1A02-----------------------------
  378. INT 2F U - DOS 4.0+ ANSI.SYS internal - MISCELLANEOUS REQUESTS
  379.     AX = 1A02h
  380.     DS:DX -> parameter block (see #2017)
  381. Return: CF clear if successful
  382.     CF set on error
  383.         AX = error code
  384. Note:    DOS 5+ chains to previous handler if AL > 02h on call
  385. SeeAlso: AX=1A01h
  386.  
  387. Format of ANSI.SYS parameter block:
  388. Offset    Size    Description    (Table 2017)
  389.  00h    BYTE    subfunction
  390.         00h set/reset interlock
  391.         01h get /L flag
  392.  01h    BYTE    interlock state
  393.         00h=reset, 01h=set
  394.           This interlock prevents some of the ANSI.SYS post-processing
  395.           in its hook onto INT 10, AH=00h mode set
  396.  02h    BYTE    (returned)
  397.         00h if /L not in effect
  398.         01h if /L in effect
  399. --------V-2F1A21-----------------------------
  400. INT 2F - AVATAR.SYS - SET DRIVER STATE
  401.     AX = 1A21h (AL='!')
  402.     DS:SI -> command string with one or more state characters (see #2018)
  403.     CX = length of command string
  404. Return: CF set on error (invalid subfunction)
  405.     CF clear if successful
  406. Note:    the characters in the state string are interpreted left to right, and
  407.       need not be in any particular order
  408. SeeAlso: AX=1A00h/BX=4156h,AX=1A3Fh
  409.  
  410. (Table 2018)
  411. Values for AVATAR.SYS state characters:
  412.  'a'    activate driver
  413.  'd'    disable driver
  414.  'f'    use fast screen output
  415.  'g'    always convert gray keys (+ and -) to function keys
  416.  'G'    never convert gray keys
  417.  'l'    convert gray keys only when ScrollLock active
  418.  's'    use slow screen output
  419.  't'    Tandy 1000 keyboard (not yet implemented)
  420. --------V-2F1A3C-----------------------------
  421. INT 2F U - AVATAR.SYS v0.11 - ???
  422.     AX = 1A3Ch
  423.     ???
  424. Return: CX = 0000h
  425. SeeAlso: AX=1A00h/BX=4156h,AX=1A21h,AX=1A3Eh
  426. --------V-2F1A3E-----------------------------
  427. INT 2F U - AVATAR.SYS v0.11 - ???
  428.     AX = 1A3Eh
  429.     CL = ???
  430.     CH = ???
  431.     DL = ???
  432.     DH = ???
  433. Return: CL = ???
  434.     CH = ???
  435.     DL = ???
  436.     DH = ???
  437. SeeAlso: AX=1A3Ch,AX=1A3Fh
  438. --------V-2F1A3F-----------------------------
  439. INT 2F - AVATAR.SYS - QUERY DRIVER STATE
  440.     AX = 1A3Fh (AL='?')
  441.     ES:DI -> buffer
  442.     CX = length of buffer in bytes
  443. Return: CF clear
  444.     CX = actual size of returned info
  445. Note:    the returned information consists of multiple letters whose meanings
  446.       are described under AX=1A21h
  447. SeeAlso: AX=1A00h/BX=4156h,AX=1A21h,AX=1A44h
  448. --------S-2F1A42BX4156-----------------------
  449. INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ3 HANDLER
  450.     AX = 1A42h
  451.     BX = 4156h ('AV')
  452.     ES:DI -> FAR handler for serial port using IRQ3
  453.     DS = data segment needed by handler
  454. Return: AX = status/return value
  455.         0000h if no more room
  456.         1A42h if ASD not installed
  457.         else handle to use when uninstalling
  458. Notes:    the handler need not save/restore registers or signal EOI to the
  459.       interrupt controller
  460.     the handler should return AX=0000h if the interrupt was meant for it,
  461.       and either leave AX unchanged or return a non-zero value otherwise
  462.     the most recently installed handler will be called first, continuing
  463.       to earlier handlers until one returns AX=0000h
  464. SeeAlso: AX=1A43h,AX=1A62h
  465. --------S-2F1A43BX4156-----------------------
  466. INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ4 HANDLER
  467.     AX = 1A43h
  468.     BX = 4156h ('AV')
  469.     ES:DI -> FAR handler for serial port using IRQ4
  470.     DS = data segment needed by handler
  471. Return: AX = status/return value
  472.         0000h if no more room
  473.         1A43h if ASD not installed
  474.         else handle to use when uninstalling
  475. Notes:    (see AX=1A42h)
  476. SeeAlso: AX=1A42h,AX=1A63h
  477. --------V-2F1A44BX4156-----------------------
  478. INT 2F - AVATAR.SYS v0.11+ - GET DATA SEGMENT
  479.     AX = 1A44h
  480.     BX = 4156h ('AV')
  481. Return: AX = 0000h
  482.     DS = data segment
  483.     CX = size of data segment
  484. Note:    AVATAR.SYS calls this function whenever it is invoked.    If each
  485.       process under a multitasker hooks this function and provides a
  486.       separate data segment, AVATAR.SYS becomes fully reentrant.
  487. SeeAlso: AX=1A21h,AX=1A3Fh,AX=1A52h
  488. --------V-2F1A52-----------------------------
  489. INT 2F U - AVATAR.SYS v0.11 - GET ???
  490.     AX = 1A52h
  491.     CX = size of buffer
  492.     ES:DI -> buffer
  493. Return: ??? copied into user buffer
  494. Note:    the maximum size of the data which may be copied is returned by
  495.       AX=1A72h
  496. SeeAlso: AX=1A53h,AX=1A72h
  497. --------V-2F1A53-----------------------------
  498. INT 2F U - AVATAR.SYS v0.11 - ???
  499.     AX = 1A53h
  500.     CL = ??? (00h-05h)
  501.     ???
  502. Return: ???
  503. SeeAlso: AX=1A00h/BX=4156h,AX=1A52h,AX=1A72h
  504. --------S-2F1A62BX4156-----------------------
  505. INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ3 HANDLER
  506.     AX = 1A62h
  507.     BX = 4156h ('AV')
  508.     CX = handle for IRQ routine returned by AX=1A42h
  509. SeeAlso: AX=1A42h,AX=1A63h
  510. --------S-2F1A63BX4156-----------------------
  511. INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ4 HANDLER
  512.     AX = 1A63h
  513.     BX = 4156h ('AV')
  514.     CX = handle for IRQ routine returned by AX=1A43h
  515. SeeAlso: AX=1A43h,AX=1A62h
  516. --------V-2F1A72-----------------------------
  517. INT 2F U - AVATAR.SYS v0.11 - GET ??? SIZE
  518.     AX = 1A72h
  519. Return: CX = maximum size of ???
  520. SeeAlso: AX=1A00h/BX=4156h,AX=1A52h,AX=1A7Bh,AX=1AADh"AVATAR"
  521. --------V-2F1A7B-----------------------------
  522. INT 2F U - AVATAR.SYS v0.11 - ???
  523.     AX = 1A7Bh
  524. Return: AX = 0000h
  525.     CX = 0000h
  526. SeeAlso: AX=1A00h/BX=4156h,AX=1A72h,AX=1A7Dh
  527. --------V-2F1A7D-----------------------------
  528. INT 2F U - AVATAR.SYS v0.11 - ???
  529.     AX = 1A7Dh
  530. Return: AX = ???
  531. SeeAlso: AX=1A00h/BX=4156h,AX=1A7Bh
  532. --------V-2F1AA3-----------------------------
  533. INT 2F - ANSIPLUS v4.03+ - GET/SET ANSIPLUS INTERNAL VARIABLES
  534.     AX = 1AA3h
  535.     BH = function
  536.         00h get current/default colors
  537.         Return: CH = default colors
  538.             CL = current colors
  539.         01h set current/default colors
  540.         CH = default colors (00h = leave unchanged)
  541.         CL = current colors
  542.         02h get current subscreen region
  543.         Return: BH,BL = true screen rows,columns
  544.             CH,CL = top left row,column of region
  545.             DH,DL = bottom right row,column of region
  546.         03h set subscreen region
  547.         CH,CL = top left row,column of region
  548.         DH,DL = bottom right row,column of region
  549.         04h get driver features (bits 0-31)
  550.         Return: DX:CX = current feature bits
  551.         05h set driver features (bits 0-31)
  552.         DX:CX = feature bits
  553.         06h get driver features (bits 32-63)
  554.         Return: DX:CX = current feature bits
  555.         07h set driver features (bits 32-63)
  556.         DX:CX = feature bits
  557.         other: reserved for future use
  558. SeeAlso: AX=1AA4h,AX=1AA5h
  559. --------V-2F1AA4-----------------------------
  560. INT 2F - ANSIPLUS v4.02+ - GET/SET ANSIPLUS SMOOTH SCROLLING RATE
  561.     AX = 1AA4h
  562.     BL = function
  563.         00h get scrolling rate
  564.         01h set scrolling rate
  565.         BH = new minimum scrolling rate in scan lines per retrace
  566. Return: BH = smooth scrolling rate
  567. SeeAlso: AX=1AA3h,AX=1AA5h
  568. --------V-2F1AA5-----------------------------
  569. INT 2F - ANSIPLUS v4.00+ - GET/SET ANSIPLUS CLIPBOARD
  570.     AX = 1AA5h
  571.     DH = subfunction
  572.         00h get clipboard information
  573.         01h get clipboard text
  574.         02h set clipboard text
  575.         03h append text to clipboard
  576.         04h clear clipboard
  577.         05h paste clipboard to keyboard
  578.     ES:BX -> data area for subfunctions 01h, 02h, and 03h
  579.     CX = size of data area (maximum size for subfunction 01h, actual size
  580.         to add to clipboard for subfunctions 02h and 03h)
  581. Return: AL = status
  582.         00h successful
  583.         01h unsupported subfunction (reduced capability driver)
  584.         02h insufficient space
  585.         A5h unsupported function (ANSIPLUS before v4.00)
  586.     ES:BX -> ANSIPLUS local clipboard data
  587.     CX = number of bytes currently in local clipboard
  588.     DX = maximum size of local clipboard
  589. SeeAlso: AX=1A00h/BX=414Eh,AX=1AA4h,AX=1AA6h
  590. --------V-2F1AA6-----------------------------
  591. INT 2F - ANSIPLUS v4.00+ - ENABLE/DISABLE ANSIPLUS DRIVER
  592.     AX = 1AA6h
  593.     BH = function
  594.         00h get hooked interrupts
  595.         01h set hooked interrupts mask
  596.         BL = new interrupts mask (see #2019)
  597. Return: BL = previous interrupts mask (see #2019)
  598. SeeAlso: AX=1A00h/BX=414Eh,AX=1AA7h
  599.  
  600. Desc:    used to temporarily disable any prior copies of ANSIPLUS when a new
  601.       copy is installed, such as in a multitasking system like DESQview
  602. Note:    only the most-recently loaded copy of ANSIPLUS on the current INT 2F
  603.       chain responds to this call
  604.  
  605. Bitfields for ANSIPLUS hooked interrupts mask:
  606. Bit(s)    Description    (Table 2019)
  607.  0    INT 09 hook disabled
  608.  1    INT 10 hook disabled
  609.  2    INT 15 hook disabled
  610.  3    INT 16 hook disabled
  611.  4    INT 1C hook disabled
  612.  5    reset all bits when INT 29 called
  613.  6    INT 29 hook disabled
  614.  7    INT 33, INT 74, or other mouse event hook disabled
  615. --------V-2F1AA7-----------------------------
  616. INT 2F - ANSIPLUS v4.00+ - ENABLE/DISABLE ANSIPLUS FEATURES
  617.     AX = 1AA7h
  618.     BL = function
  619.         00h prevent scroll-back saves
  620.         01h enable scroll-back saves
  621.         02h disable key reprogramming and lock changes by escape sequences
  622.         03h enable key reprogramming by escape sequences
  623.         04h    disable and lock key stacking changes by escape sequences
  624.         05h allow key stacking by escape sequences
  625. Return: nothing
  626. SeeAlso: AX=1AA6h
  627. --------V-2F1AA8-----------------------------
  628. INT 2F - ANSIPLUS v3.10+ - GET NEXT ANSIPLUS SCROLLBACK LINE
  629.     AX = 1AA8h
  630. Return: AL = status
  631.         00h successful
  632.         ES:BX -> screen line (character and attribute pairs)
  633.         CX = length of line in bytes, 0000h if no more lines or
  634.               unsupported video mode
  635.         01h unsupported video mode active
  636.         02h screen currently scrolled back
  637.         03h reduced capability driver
  638.         A8h unsupported function (driver before v3.10)
  639. SeeAlso: AX=1A00h/BX=414Eh,AX=1AA9h
  640. --------V-2F1AA9-----------------------------
  641. INT 2F - ANSIPLUS v3.10+ - GET ANSIPLUS SCROLLBACK INFORMATION
  642.     AX = 1AA9h
  643. Return: AL = status
  644.         00h successful
  645.         BX = current number of lines in scrollback buffer
  646.         CX = number of bytes in one line
  647.         01h unsupported video mode active
  648.         02h screen currently scrolled back
  649.         03h reduced capability driver
  650.         A9h unsupported function (driver before v3.10)
  651. Desc:    determine how much data is in the scrollback buffer and initialize
  652.       scrollback retrieval to return the first line on the next call to
  653.       AX=1AA8h
  654. SeeAlso: AX=1A00h/BX=414Eh,AX=1AA8h
  655. --------V-2F1AAA-----------------------------
  656. INT 2F - ANSIPLUS v3.01+ - GET/SET ANSIPLUS SCREEN SAVER BLANKING TIME
  657.     AX = 1AAAh
  658.     BX = function
  659.         FFFFh to get current blanking time
  660.         other to set time
  661.         CX = blanking time in clock ticks (0000h-7FFFh)
  662. Return: BX = current blanking time
  663.     CX = blanking time when last set
  664. SeeAlso: AX=1A00h/BX=414Eh,AX=1AABh
  665. --------V-2F1AAB-----------------------------
  666. INT 2F - ANSIPLUS v3.01+ - SET ANSIPLUS KEY REPEAT RATE
  667.     AX = 1AABh
  668.     BX = repeat rate in characters per second
  669.         0000h use BIOS repeat rate
  670. Return: nothing
  671. SeeAlso: AX=1A00h/BX=414Eh,AX=1AAAh,AX=1AACh
  672. --------V-2F1AAC-----------------------------
  673. INT 2F - ANSIPLUS v3.00+ - LOAD CHARACTER GENERATOR
  674.     AX = 1AACh
  675.     BH = number of bytes per character pattern
  676.     BL = VGA/EGA character table to be loaded
  677.     CX = number of characters to load
  678.     DX = starting character code (offset into Map2 block)
  679.     ES:BP -> user character table to be loaded
  680. Return: AX = 1100h
  681. Desc:    load the EGA/VGA character generator without the BIOS function's
  682.       side effects of resetting the video mode and color palette
  683. SeeAlso: AX=1A00h/BX=414Eh,AX=1AABh,AX=1AADh"ANSIPLUS",INT 10/AX=1100h
  684. --------V-2F1AAD-----------------------------
  685. INT 2F - ANSIPLUS v2.00+ - ANSIPLUS DEVICE STATUS REPORT
  686.     AX = 1AADh
  687.     BL = report request code (81h-96h for v4.00)
  688.     CX = color selector or key code, if required by request
  689. Return: AX = first reported result
  690.     BX = second result
  691.     CX = third result, if applicable (unchanged otherwise)
  692.     DX = fourth result, if applicable (unchanged otherwise)
  693. Desc:    get device status reports equivalent to those for Esc [#n sequences
  694.       while bypassing any device redirection and avoiding the need to
  695.       parse the returned result
  696. Note:    the report request code in BL is identical to the number in the
  697.       corresponding Esc [#n sequence
  698. SeeAlso: AX=1A00h/BX=414Eh,AX=1AACh
  699. --------V-2F1AADDX0000-----------------------
  700. INT 2F U - AVATAR.SYS v0.11 - ???
  701.     AX = 1AADh
  702.     DX = 0000h
  703.     CX = subfunction (00h-0Ch)
  704.     ???
  705. Return: AX = 0000h if DX was nonzero
  706.     ???
  707. SeeAlso: AX=1A00h/BX=4156h,AX=1A72h
  708. --------m-2F1B00-----------------------------
  709. INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - INSTALLATION CHECK
  710.     AX = 1B00h
  711. Return: AL = FFh if installed
  712. Note:    XMA2EMS.SYS extension is only installed if DOS has page frames to hide.
  713.     This extension hooks onto INT 67/AH=58h and returns from that call data
  714.       which excludes the physical pages being used by DOS.
  715. SeeAlso: AH=1Bh"FRAME INFO"
  716. --------m-2F1B-------------------------------
  717. INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - GET HIDDEN FRAME INFORMATION
  718.     AH = 1Bh
  719.     AL <> 00h
  720.     DI = hidden physical page number
  721. Return: AX = FFFFh if failed (no such hidden page)
  722.     AX = 0000h if OK, then
  723.         ES = segment of page frame
  724.         DI = physical page number
  725. Notes:    this corresponds to the data edited out of the INT 67/AH=58h call
  726.     FASTOPEN makes this call with AL = FFh
  727. SeeAlso: AX=1B00h
  728. --------V-2F2300-----------------------------
  729. INT 2F - DR DOS 5.0 GRAFTABL - INSTALLATION CHECK
  730.     AX = 2300h
  731. Return: AH = FFh
  732. Note:    this installation check does not follow the usual format
  733. SeeAlso: AH=23h,AX=2E00h
  734. --------V-2F23-------------------------------
  735. INT 2F - DR DOS 5.0 GRAFTABL - GET GRAPHICS DATA
  736.     AH = 23h
  737.     AL nonzero
  738. Return: AH = FFh
  739.     ES:BX -> graphics data (8 bytes for each character from 80h to FFh)
  740. SeeAlso: AX=2300h,AX=2E00h
  741. --------T-2F2700-----------------------------
  742. INT 2F - DR DOS 6.0 TaskMAX - INSTALLATION CHECK
  743.     AX = 2700h
  744. Return: AL = status
  745.         00h not installed
  746.         FFh installed
  747. Note:    the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
  748.       taskswitching and multitasking modes
  749. --------T-2F2701-----------------------------
  750. INT 2F - DR DOS 6.0 TaskMAX - GET STATUS
  751.     AX = 2701h
  752. Return: AX = maximum simultaneous tasks
  753.     BX = index into TASK_IDS of current foreground task
  754.     CX = currently-active tasks
  755.     DX = version number (DL = major, DH = minor)
  756.         (DR DOS 6.0 = 0001h, Novell DOS 7 = 0002h)
  757.     ES:SI -> TASK_IDS
  758.     ES:DI -> name table (array of 8-byte names, NUL-terminated if <8 chars)
  759. Notes:    do not attempt to create a new task if CX == AX
  760.     the task's index is its position on the task menu, while its ID is the
  761.       position within the internal task name table
  762. SeeAlso: AX=2714h,AX=2716h
  763. --------T-2F2702-----------------------------
  764. INT 2F - DR DOS 6.0 TaskMAX - GET PER-TASK EMS LIMIT
  765.     AX = 2702h
  766. Return: DX = maximum pages INT 67/AH=42h will report available
  767. Note:    TaskMAX does not limit EMS allocations other than by limiting the
  768.       amount which is reported as being available at a given time
  769. SeeAlso: AX=2703h,INT 67/AH=42h
  770. --------T-2F2703-----------------------------
  771. INT 2F - DR DOS 6.0 TaskMAX - SET PER-TASK EMS LIMIT
  772.     AX = 2703h
  773.     DX = maximum pages INT 67/AH=42h should report available
  774. Return: DX = new maximum for reporting
  775. Note:    the TaskMAX API is also supported by Novell DOS 7 TASKMGR in
  776.       both taskswitching and multitasking modes
  777. SeeAlso: AX=2702h,INT 67/AH=42h
  778. --------T-2F2704-----------------------------
  779. INT 2F - DR DOS 6.0 TaskMAX - REGISTER/UNREGISTER TASK MANAGER
  780.     AX = 2704h
  781.     DL = subfunction
  782.         00h unregister task manager
  783.         01h register task manager
  784. Return: DL = status
  785.         00h registered
  786.         01h unregistered
  787. Notes:    a task manager replaces TaskMAX's menu system with its own user
  788.       interface; while one is registered, the TaskMAX hotkeys and
  789.       Ctrl-Alt-Del invoke the manager rather than the built-in menu system
  790.     unregister the task manager before terminating it
  791. SeeAlso: AX=2705h
  792. Index:    hotkeys;TaskMAX
  793. --------T-2F2705-----------------------------
  794. INT 2F - DR DOS 6.0 TaskMAX - ENABLE/DISABLE DIRECT SWITCHING
  795.     AX = 2705h
  796.     DL = subfunction
  797.         00h disable keystrokes for switching to next/prev/specified task
  798.         01h enable
  799. Return: nothing
  800. Note:    should only be called by a registered task manager (see AX=2704h)
  801. SeeAlso: AX=2704h,AX=2706h
  802. --------T-2F2706-----------------------------
  803. INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO SPECIFIED TASK
  804.     AX = 2706h
  805.     DX = task index (see AX=2701h) of task to be activated
  806. Return: DX = task index of previously-active task
  807. Note:    the TaskMAX API is also supported by Novell DOS 7 TASKMGR in
  808.       both taskswitching and multitasking modes
  809. SeeAlso: AX=2705h,AX=2707h,AX=2715h
  810. --------T-2F2707-----------------------------
  811. INT 2F - DR DOS 6.0 TaskMAX - CREATE NEW TASK
  812.     AX = 2707h
  813.     DS:DX -> ASCIZ pathname of executable
  814.     ES:BX -> parameter block (see #2020)
  815.     CX = number of ticks before automatic return to task manager
  816.         (0000h = run until termination or explicitly switched)
  817. Return: DX = new task's task index (FFFFh if task terminated)
  818. SeeAlso: AX=2706h,AX=2708h
  819.  
  820. Format of TaskMAX parameter block:
  821. Offset    Size    Description    (Table 2020)
  822.  00h    WORD    reserved, should be 0000h
  823.  02h    DWORD    pointer to command tail to be copied into child's PSP
  824.  06h    DWORD    pointer to first FCB to be copied into child's PSP
  825.  0Ah    DWORD    pointer to second FCB to be copied into child's PSP
  826. --------T-2F2708-----------------------------
  827. INT 2F - DR DOS 6.0 TaskMAX - DELETE TASK
  828.     AX = 2708h
  829.     DX = task index
  830. Return: DX = FFFFh (task deleted)
  831. Notes:    this call should only be used for abnormal task termination, after
  832.       first checking for open files with AX=270Ch; should not be used
  833.       with programs that allocate EMS or XMS memory
  834.     switches to specified task first
  835. SeeAlso: AX=2707h
  836. --------T-2F2709-----------------------------
  837. INT 2F - DR DOS 6.0 TaskMAX - NAME TASK
  838.     AX = 2709h
  839.     DX = task index
  840.     DS:SI -> 8-byte name (8 NULs = remove name)
  841. Return: AL = task flags
  842.         00h ID unused or task terminated
  843.         01h ID in use, task name table entry valid
  844.         81h ID in use, task name fixed
  845.     BX = task ID
  846.     ES:DI -> name in task name table (see AX=2701h)
  847. Note:    the task retains the given name until it terminates or the name is
  848.       removed by specifying a name of 8 NULs.
  849. SeeAlso: AX=2701h,AX=2707h
  850. --------T-2F270A-----------------------------
  851. INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK INDEX TO TASK ID
  852.     AX = 270Ah
  853.     DX = task index
  854. Return: DX = task ID (FFFFh if index invalid)
  855. Note:    task IDs stay constant, while indexes can change when other tasks are
  856.       deleted
  857. SeeAlso: AX=2701h,AX=270Bh
  858. --------T-2F270B-----------------------------
  859. INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK ID TO TASK INDEX
  860.     AX = 270Bh
  861.     DX = task ID
  862. Return: DX = task index (FFFFh if task not active)
  863. Note:    the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
  864.       taskswitching and multitasking modes
  865. SeeAlso: AX=270Ah
  866. --------T-2F270C-----------------------------
  867. INT 2F - DR DOS 6.0 TaskMAX - CHECK OPEN FILES
  868.     AX = 270Ch
  869.     DX = task index
  870. Return: AX = number of files currently open for specified task
  871. SeeAlso: AX=2708h
  872. --------T-2F270D-----------------------------
  873. INT 2F - DR DOS 6.0 TaskMAX - CHECK IF TASK RUNNING PRIMARY COMMAND INTERPRETER
  874.     AX = 270Dh
  875.     DX = task index
  876. Return: DX = status
  877.         0000h if primary command interpreter (COMMAND.COM, etc.) running
  878.         0001h if not in root shell for task
  879. Note:    TaskMAX will return 0001h if the specified task has spawned another
  880.       command interpreter with AX=2707h
  881. SeeAlso: AX=2707h,AX=270Ch
  882. --------T-2F270E-----------------------------
  883. INT 2F - DR DOS 6.0 TaskMAX - GET/SET TEXT PASTE LEAD-IN
  884.     AX = 270Eh
  885.     CX = length of string (max 15 keystrokes, 0000h to get current string)
  886.     DS:SI -> pasting lead-in string (character/scan-code pairs)
  887. Return: ES:DI -> current lead-in string
  888. Note:    the specified sequence of keystrokes is sent to the application before
  889.       every line of a text-mode spreadsheet paste
  890. SeeAlso: AX=270Fh,AX=2710h,AX=2713h
  891. --------T-2F270F-----------------------------
  892. INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE LEAD-IN
  893.     AX = 270Fh
  894.     CX = length of string (max 15 keystrokes, 0000h to get current string)
  895.     DS:SI -> pasting lead-in string (character/scan-code pairs)
  896. Return: ES:DI -> current lead-in string
  897. Note:    the specified sequence of keystrokes is sent to the application before
  898.       every number in a numeric-mode spreadsheet paste
  899. SeeAlso: AX=270Eh,AX=2710h,AX=2711h,AX=2713h
  900. --------T-2F2710-----------------------------
  901. INT 2F - DR DOS 6.0 TaskMAX - GET/SET PASTE LINE TERMINATOR STRING
  902.     AX = 2710h
  903.     CX = length of string (max 15 keystrokes, 0000h to get current string)
  904.     DS:SI -> pasting terminator string (character/scan-code pairs)
  905. Return: ES:DI -> current terminator string
  906. Note:    the specified sequence of keystrokes is sent to the application after
  907.       every line of a spreadsheet paste operation
  908. SeeAlso: AX=270Eh,AX=270Fh,AX=2713h
  909. --------T-2F2711-----------------------------
  910. INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE DECIMAL POINT
  911.     AX = 2711h
  912.     DX = ASCII code for separator (FFFFh to get current)
  913. Return: DL = current separator character
  914. SeeAlso: AX=270Fh
  915. --------T-2F2712-----------------------------
  916. INT 2F - DR DOS 6.0 TaskMAX - INITIATE EXPORTING TASK DATA
  917.     AX = 2712h
  918.     DX = task index
  919. --------T-2F2713-----------------------------
  920. INT 2F - DR DOS 6.0 TaskMAX - INITIATE PASTE OPERATION
  921.     AX = 2713h
  922.     DX = task index
  923.     CX = paste mode
  924.         0000h alphanumeric
  925.         0001h numeric
  926.         0002h text
  927. SeeAlso: AX=270Eh,AX=270Fh,AX=2710h,AX=2711h
  928. --------T-2F2714-----------------------------
  929. INT 2F - DR DOS 6.0 TaskMAX - GET SWAP SPACE INFO
  930.     AX = 2714h
  931. Return: CX = total KB of swap space
  932.     DX = available KB of swap space
  933. Note:    the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
  934.       taskswitching and multitasking modes
  935. SeeAlso: AX=2701h
  936. --------T-2F2715-----------------------------
  937. INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO TASK MANAGER
  938.     AX = 2715h
  939. Return: only after calling task is again selected
  940. SeeAlso: AX=2706h
  941. --------T-2F2716-----------------------------
  942. INT 2F - DR DOS 6.0 TaskMAX - GET PASTE BUFFER STATUS
  943.     AX = 2716h
  944. Return: AX = 0000h if AX=2716h,AX=2717h,AX=2718h supported
  945.         CX = bytes in paste buffer
  946.         DX = current generation number (updated after every copy operation)
  947. BUG:    Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
  948.       this call (it does support the remainder of the TaskMAX API)
  949. SeeAlso: AX=2701h,AX=2713h,AX=2714h,AX=2717h,AX=2718h
  950. --------T-2F2717-----------------------------
  951. INT 2F - DR DOS 6.0 TaskMAX - PASTE DATA DIRECTLY TO APPLICATION BUFFER
  952.     AX = 2717h
  953.     CX = bytes in destination buffer
  954.     ES:DI -> destination buffer
  955. Return: AX = 0000h if function supported
  956.         CX = bytes actually copied (FFFFh if buffer too small)
  957.         DX = current generation number for paste buffer
  958. BUG:    Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
  959.       this call (it does support the remainder of the TaskMAX API)
  960. Note:    the destination buffer may be too small if another task adds more data
  961.       to the paste buffer after the AX=2716h call but before this call
  962. SeeAlso: AX=2713h,AX=2716h,AX=2718h
  963. --------T-2F2718-----------------------------
  964. INT 2F - DR DOS 6.0 TaskMAX - COPY DATA DIRECTLY INTO PASTE BUFFER
  965.     AX = 2718h
  966.     CX = bytes in source buffer
  967.     DS:SI -> source buffer (plain ASCII, lines terminated with CR LF)
  968. Return: AX = 0000h if function supported
  969.         CX = bytes actually copied
  970.         DX = current generation number for paste buffer
  971. BUG:    Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
  972.       this call (it does support the remainder of the TaskMAX API)
  973. SeeAlso: AX=2712h,AX=2716h,AX=2717h
  974. --------T-2F2719-----------------------------
  975. INT 2F - Novell DOS 7 TaskMGR - NOP
  976.     AX = 2719h to 271Bh
  977. --------T-2F271C-----------------------------
  978. INT 2F U - Novell DOS 7 TaskMGR - ???
  979.     AX = 271Ch
  980.     DX = ???
  981.         bit 0: ???
  982. Return: ???
  983.     ---if DX bit 0 set---
  984.     AX = 0031h
  985.     CX = 0000h
  986. BUG:    if the task switcher is running, and DX bit 0 is set on call, this
  987.       function will crash because its exit code attempts to pop several
  988.       registers which are not pushed when DX bit 0 is set
  989. --------m-2F2780CL01-------------------------
  990. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  991.     AX = 2780h
  992.     CL = 01h (function number)
  993.     CH = subfunction
  994.         00h unused
  995.         Return: CX = status (0002h) (see #2021)
  996.         01h unused
  997.         Return: CX = status (0002h) (see #2021)
  998.         02h ???
  999.         BX = ??? (0005h-000Fh)
  1000.         Return: CX = status (0000h,0030h) (see #2021)
  1001.         03h allocate ???
  1002.         DX = ???
  1003.         Return: CX = status (0000h,0003h) (see #2021)
  1004.         04h get ???
  1005.         Return: CX = 0000h (successful)
  1006.             BX = selector for EMM386 data segment
  1007.             EBX high word cleared
  1008.         05h ???
  1009.         EDX = ???
  1010.         Return: ???
  1011.         06h return to real mode via triple fault
  1012.         07h debugger break
  1013.         Note:    calls INT 03, then INT 21/AH=02h to output a question
  1014.               mark
  1015.         08h get ???
  1016.         Return: CX = 0000h (successful)
  1017.             EBX = ??? (0 or 2)
  1018.         09h ???
  1019.         0Ah ???
  1020.         0Bh unused
  1021.         Return: CX = status (0002h) (see #2021)
  1022.         0Ch ??? manipulates DOS memory chain
  1023.         0Dh ???
  1024.         EBX = ???
  1025.         EDX = ???
  1026.         Return: ???
  1027.         0Eh ???
  1028.         Return: CX = 0000h (successful)
  1029.             BL = ???     \ or BX = 0000h
  1030.             BH = ???     /
  1031.         0Fh get ???
  1032.         Return: CX = 0000h (successful)
  1033.             EBX = ???
  1034.         10h get and set ???
  1035.         EDX = ???
  1036.         Return: CX = 0000h (successful)
  1037.             EBX = old value of ???
  1038.         11h get ???
  1039.         Return: CX = 0000h (successful)
  1040.             EBX = ??? (0100h)
  1041.         12h get and set ???
  1042.         DX = ???
  1043.         Return: CX = 0000h (successful)
  1044.             AX = old value of ???
  1045.         13h ???
  1046.         Return: CX = status (0000h,003Fh) (see #2021)
  1047.             AX = ???
  1048.         14h ???
  1049.         EDX = ???
  1050.         Return: CX = status (0000h,003Fh) (see #2021)
  1051.         15h ???
  1052.         BX = segment of ???
  1053.         Return: CX = 0000h (successful)
  1054.             BX = segment of ???
  1055.         16h ???
  1056.         17h ???
  1057.         EBX = subfunction (0-2)
  1058.         Return: CX = status (0002h if EBX>2) (see #2021)
  1059.             ???
  1060.         18h unused
  1061.         Return: CX = status (0002h) (see #2021)
  1062. Return: CX = status (most subfunctions)
  1063.     (E)AX and/or (E)BX contain return values, depending on function
  1064. Notes:    called by DPMS.EXE and EMM386.EXE
  1065.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  1066.       because the request is handled on the initial trap to the memory
  1067.       manager caused by INT instructions, this API must be invoked with
  1068.       an actual INT 2F instruction instead of some simulation such as a
  1069.       far call to the address in the interrupt vector table
  1070. SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=02h,AX=2780h/CL=03h,AX=2780h/CL=04h
  1071.  
  1072. (Table 2021)
  1073. Values for Novell DOS 7 EMM386 function status:
  1074.  0000h    successful
  1075.  0001h    invalid function???
  1076.  0002h    invalid subfunction
  1077.  0003h    ???
  1078.  0004h    invalid ??? index
  1079.  0005h    ???
  1080.  0006h    ???
  1081.  0007h    ???
  1082.  0009h    ???
  1083.  000Ah    ???
  1084.  000Bh    invalid ??? handle
  1085.  000Ch    ???
  1086.  000Dh    ???
  1087.  000Eh    ???
  1088.  000Fh    ???
  1089.  0014h    ???
  1090.  0023h    ???
  1091.  0030h    ???
  1092.  003Fh    ???
  1093. --------m-2F2780CL02-------------------------
  1094. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  1095.     AX = 2780h
  1096.     CL = 02h (function number)
  1097.     CH = subfunction
  1098.         00h ???
  1099.         ???
  1100.         Return: CX = status (0000h,0023h, others???) (see #2021)
  1101.             BX = ??? (0000h if CX=0000h, FFFFh if CX=0023h)
  1102.         Note:    calls func 04h/sf 03h, func 04h/sf 1Eh,func 02h/sf 43h,
  1103.               func 02h/sf 0Bh, and func 04h/sf 01h
  1104.         01h get and clear ???
  1105.         DX = ??? handle or 0000h for default
  1106.         Return: CX = status (0000h,000Bh) (see #2021)
  1107.             EBX = old value of ??? if successful
  1108.             EDX destroyed
  1109.         02h ???
  1110.         DX = index of ???
  1111.         Return: CX = status (0000h,0004h,0005h) (see #2021)
  1112.             EBX = 0000FFFFh on error, 00000000h if successful
  1113.         03h ???
  1114.         DX = index of ???
  1115.         Return: CX = status (0000h,0004h,0006h) (see #2021)
  1116.             BX = FFFFh on error, 0000h if successful
  1117.         04h ???
  1118.         Return: CX = status (0000h,0007h,000Ah) (see #2021)
  1119.         05h ???
  1120.         EDX -> ??? data (first 8 bytes seem to be name)
  1121.         Return: CX = status (0000h,0009h,000Dh) (see #2021)
  1122.         06h ???
  1123.         Note:    calls fn 02h/subfn 05h, then fn 02h/subfn 40h
  1124.         07h ???
  1125.         EDX = ???
  1126.         Return: CX = status (0000h,0009h,000Eh) (see #2021)
  1127.         08h ???
  1128.         EDX = ???
  1129.         Return: CX = status (0000h,0009h,000Eh) (see #2021)
  1130.         09h ???
  1131.         EDX = ???
  1132.         Return: CX = status (0000h,0009h,000Fh) (see #2021)
  1133.         0Ah ???
  1134.         EDX = ???
  1135.         Return: CX = status (0000h,0009h,000Fh) (see #2021)
  1136.         0Bh ???
  1137.         DX = ???
  1138.         Return: CX = 0000h (successful)
  1139.         0Ch ???
  1140.         Return: CX = 0000h (successful)
  1141.         0Dh ???
  1142.         Return: CX = status (0000h,0023h) (see #2021)
  1143.             BX = FFFFh on error, 0000h if successful
  1144.         Note:    calls fn 04h/subfn 03h, fn 04h/subfn 1Eh,
  1145.               fn 02h/subfn 43h, fn 02h/subfn 0Bh, fn 04h/sub 01h
  1146.         0Eh ???
  1147.         ???
  1148.         Return: CX = status (0000h,000Ch) (see #2021)
  1149.             EBX = ??? if successful
  1150.         0Fh ???
  1151.         BX = ???
  1152.         DX = ??? handle or 0000h for default
  1153.         Return: CX = status (0000h,000Bh) (see #2021)
  1154.         10h get ??? handle
  1155.         Return: CX = 0000h (successful)
  1156.             BX = handle of default ???
  1157.             EBX high word cleared
  1158.         11h ???
  1159.         DX = ??? handle or 0000h for default
  1160.         BX = ??? (handle???)
  1161.         Return:    CX = status (0000h,000Bh,0014h) (see #2021)
  1162.         12h ???
  1163.         BX = ???
  1164.         DX = ???
  1165.         Return: CX = 0000h (successful)
  1166.         13h ???
  1167.         DX = ???
  1168.         Return: CX = status (see #2021)
  1169.         14h ???
  1170.         BX = ???
  1171.         DX = ???
  1172.         Return: CX = status (0000h,0014h) (see #2021)
  1173.             BX = FFFFh on error, ??? if successful
  1174.         15h set ??? flags
  1175.         BX = ??? (low two bits only)
  1176.         DX = ??? handle or 0000h for default
  1177.         Return: CX = status (0000h,000Bh) (see #2021)
  1178.             BX = new value of ??? flags (entire word)
  1179.             EBX high register cleared
  1180.         16h clear ??? flag for default ???
  1181.         Return: CX = 0000h (successful)
  1182.         17h ???
  1183.         18h ???
  1184.         19h ???
  1185.         1Ah ???
  1186.         1Bh ???
  1187.         1Ch ???
  1188.         1Dh ???
  1189.         1Eh ???
  1190.         1Fh ???
  1191.         20h ???
  1192.         21h ???
  1193.         22h ???
  1194.         23h ???
  1195.         24h ???
  1196.         25h ???
  1197.         26h ???
  1198.         27h ???
  1199.         28h ???
  1200.         29h ???
  1201.         2Ah ???
  1202.         2Bh ???
  1203.         2Ch ???
  1204.         2Dh ???
  1205.         2Eh ???
  1206.         2Fh ???
  1207.         30h ???
  1208.         31h ???
  1209.         32h ???
  1210.         33h ???
  1211.         34h ???
  1212.         35h ???
  1213.         36h ???
  1214.         37h ???
  1215.         38h ???
  1216.         39h ???
  1217.         3Ah ???
  1218.         3Bh ???
  1219.         3Ch ???
  1220.         3Eh ???
  1221.         3Fh ???
  1222.         40h ???
  1223.         41h ???
  1224.         42h ???
  1225.         43h ???
  1226.         44h ???
  1227.         45h ???
  1228.         46h ???
  1229.         47h ???
  1230. Return: CX = status (most subfunctions)
  1231.     (E)AX and/or (E)BX contain return values, depending on function
  1232. Notes:    called by DPMS.EXE and EMM386.EXE
  1233.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  1234.       because the request is handled on the initial trap to the memory
  1235.       manager caused by INT instructions, this API must be invoked with
  1236.       an actual INT 2F instruction instead of some simulation such as a
  1237.       far call to the address in the interrupt vector table
  1238. SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=03h,AX=2780h/CL=04h
  1239. --------m-2F2780CL03-------------------------
  1240. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  1241.     AX = 2780h
  1242.     CL = 03h (function number)
  1243.     CH = subfunction
  1244.         00h ???
  1245.         01h ???
  1246.         02h ???
  1247.         03h ???
  1248.         04h ???
  1249.         05h ???
  1250.         06h ???
  1251.         07h ???
  1252.         08h ???
  1253.         09h ???
  1254.         0Ah ???
  1255.         0Bh ???
  1256.         0Ch ???
  1257.         0Dh ???
  1258.         0Eh ???
  1259.         0Fh ???
  1260.         10h ???
  1261.         11h ???
  1262.         12h ???
  1263.         13h ???
  1264.         14h ???
  1265.         15h ???
  1266.         16h ???
  1267.         17h ???
  1268.         18h ???
  1269.         19h ???
  1270.         1Ah ???
  1271.         1Bh ???
  1272.         1Ch ???
  1273.         1Dh ???
  1274.         1Eh ???
  1275.         1Fh ???
  1276.         20h ???
  1277.         21h ???
  1278.         22h ???
  1279.         23h ???
  1280.         24h ???
  1281.         25h ???
  1282.         26h ???
  1283.         27h ???
  1284.         28h ???
  1285.         29h ???
  1286.         2Ah ???
  1287.         2Bh ???
  1288.         2Ch ???
  1289.         2Dh ???
  1290.         2Eh ???
  1291.         2Fh ???
  1292.         30h ???
  1293.         31h ???
  1294.         32h ???
  1295.         33h ???
  1296.         34h ???
  1297.         35h ???
  1298.         36h ???
  1299.         37h ???
  1300. Return: CX = status (most subfunctions)
  1301.     (E)AX and/or (E)BX contain return values, depending on function
  1302. Notes:    called by DPMS.EXE and EMM386.EXE
  1303.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  1304.       because the request is handled on the initial trap to the memory
  1305.       manager caused by INT instructions, this API must be invoked with
  1306.       an actual INT 2F instruction instead of some simulation such as a
  1307.       far call to the address in the interrupt vector table
  1308. SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=04h
  1309. --------m-2F2780CL04-------------------------
  1310. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  1311.     AX = 2780h
  1312.     CL = 04h (function number)
  1313.     CH = subfunction
  1314.         00h ???
  1315.         01h ???
  1316.         02h ???
  1317.         03h ???
  1318.         04h ???
  1319.         05h ???
  1320.         06h ???
  1321.         07h ???
  1322.         08h ???
  1323.         09h ???
  1324.         0Ah ???
  1325.         0Bh ???
  1326.         0Ch ???
  1327.         0Dh ???
  1328.         0Eh ???
  1329.         0Fh ???
  1330.         10h ???
  1331.         11h ???
  1332.         12h ???
  1333.         13h ???
  1334.         14h ???
  1335.         15h ???
  1336.         16h ???
  1337.         17h ???
  1338.         18h ???
  1339.         19h ???
  1340.         1Ah ???
  1341.         1Bh ???
  1342.         1Ch ???
  1343.         1Dh ???
  1344.         1Eh ???
  1345.         1Fh ???
  1346.         20h ???
  1347.         21h ???
  1348.         22h ???
  1349.         23h ???
  1350.         24h ???
  1351.         25h ???
  1352.         26h ???
  1353.         27h ???
  1354.         28h ???
  1355.         29h ???
  1356.         2Ah ???
  1357.         2Bh ???
  1358.         2Ch ???
  1359.         2Dh ???
  1360.         2Eh ???
  1361.         2Fh ???
  1362.         30h ???
  1363.         31h ???
  1364.         32h ???
  1365. Return: CX = status (most subfunctions)
  1366.     (E)AX and/or (E)BX contain return values, depending on function
  1367. Notes:    called by DPMS.EXE and EMM386.EXE
  1368.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  1369.       because the request is handled on the initial trap to the memory
  1370.       manager caused by INT instructions, this API must be invoked with
  1371.       an actual INT 2F instruction instead of some simulation such as a
  1372.       far call to the address in the interrupt vector table
  1373. SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
  1374. --------m-2F2780CL05-------------------------
  1375. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  1376.     AX = 2780h
  1377.     CL = 05h
  1378.     ???
  1379. Return: ???
  1380. Notes:    called by DPMS.EXE and EMM386.EXE
  1381.     the handler for this function may be set by one of the subfunctions
  1382.       of AX=2780h/CL=01h; the default handler returns AX=BX=FFFFh and
  1383.       CX=0001h (see #2021)
  1384.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  1385.       because the request is handled on the initial trap to the memory
  1386.       manager caused by INT instructions, this API must be invoked with
  1387.       an actual INT 2F instruction instead of some simulation such as a
  1388.       far call to the address in the interrupt vector table
  1389. SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
  1390. --------m-2F2780CL06-------------------------
  1391. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  1392.     AX = 2780h
  1393.     CL = 06h
  1394.     ???
  1395. Return: ???
  1396. Notes:    called by DPMS.EXE and EMM386.EXE
  1397.     the handler for this function may be set by one of the subfunctions
  1398.       of AX=2780h/CL=01h; the default handler returns AX=BX=FFFFh and
  1399.       CX=0001h (see #2021)
  1400.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  1401.       because the request is handled on the initial trap to the memory
  1402.       manager caused by INT instructions, this API must be invoked with
  1403.       an actual INT 2F instruction instead of some simulation such as a
  1404.       far call to the address in the interrupt vector table
  1405. SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
  1406. --------m-2F2780-----------------------------
  1407. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  1408.     AX = 2780h
  1409.     CL = function (07h-0Fh)
  1410.     ???
  1411. Return: ???
  1412. Notes:    called by DPMS.EXE and EMM386.EXE
  1413.     the handlers for each of these functions may be set individually by
  1414.       one of the subfunctions of AX=2780h/CL=01h; the default handlers
  1415.       return with all registers unchanged
  1416.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  1417.       because the request is handled on the initial trap to the memory
  1418.       manager caused by INT instructions, this API must be invoked with
  1419.       an actual INT 2F instruction instead of some simulation such as a
  1420.       far call to the address in the interrupt vector table
  1421. SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
  1422. --------T-2F2781-----------------------------
  1423. INT 2F U - Novell DOS 7 TaskMGR - BEGIN CRITICAL SECTION???
  1424.     AX = 2781h
  1425. Return: ???
  1426. SeeAlso: AX=2782h
  1427. --------T-2F2782-----------------------------
  1428. INT 2F U - Novell DOS 7 TaskMGR - END CRITICAL SECTION???
  1429.     AX = 2782h
  1430. Return: ???
  1431. SeeAlso: AX=2781h
  1432. --------m-2F2783-----------------------------
  1433. INT 2F U - Novell DOS 7 - EMM386.EXE - GET ???
  1434.     AX = 2783h
  1435. Return: AX = ???
  1436.     BX = ???
  1437. --------T-2F278F-----------------------------
  1438. INT 2F U - Novell DOS 7 TaskMGR - ??? API
  1439.     AX = 278Fh
  1440.     as for INT 2F/AX=2780h
  1441. Return: as for INT 2F/AX=2780h
  1442. Note:    Novell DOS 7 TaskMGR passes this call through to INT 2F/AX=2780h
  1443.       without changing any other registers
  1444. SeeAlso: AX=2780h/CL=01h,AX=2782h
  1445. --------F-2F2A-------------------------------
  1446. INT 2F - Gammafax DOS Dispatcher INTERFACE
  1447.     AH = 2Ah
  1448. Note:    details not available at this time
  1449. SeeAlso: AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB00h,AX=CBDDh,INT 66"BitFax"
  1450. --------V-2F2E00-----------------------------
  1451. INT 2F U - Novell DOS 7 - GRAFTABL - INSTALLATION CHECK
  1452.     AX = 2E00h
  1453. Return: AH = FFh if installed
  1454. Note:    this installation check does not follow the usual format of setting
  1455.       AL to FFh
  1456. SeeAlso: AX=2300h,AH=2Eh"GRAFTABL"
  1457. --------V-2F2E-------------------------------
  1458. INT 2F U - Novell DOS 7 - GRAFTABL - GET FONT TABLE
  1459.     AH = 2Eh
  1460.     AL nonzero
  1461. Return: AH = FFh if installed
  1462.         ES:BX -> graphics data (8 bytes per character from 80h to FFh)
  1463. SeeAlso: AX=2E00h,AH=23h"GRAFTABL"
  1464. --------t-2F3900-----------------------------
  1465. INT 2F - Kingswood TSR INTERFACE - COMPATIBILITY MODE
  1466.     AX = 3900h
  1467. Return: AL = status
  1468.         00h not installed
  1469.         FFh one or more TSRs using this interface is installed
  1470.         DX may be destroyed
  1471. Note:    this function is provided to that the multiplex number will appear used
  1472.       to other programs
  1473. SeeAlso: AH=39h/BL=00h
  1474. --------t-2F39--BL00-------------------------
  1475. INT 2F - Kingswood TSR INTERFACE - INSTALLATION CHECK
  1476.     AH = 39h
  1477.     BL = 00h
  1478.     AL = TSR ID number (01h-FFh, currently only 01h-1Bh used) (see #2022)
  1479. Return: AL = status
  1480.         00h not installed
  1481.         FFh installed
  1482.         DX = segment address of resident module
  1483. Note:    All of Kingswood Software's TSRs use this interface.  Usually the
  1484.       resident module is installed by allocating a block of upper memory,
  1485.       setting its owner ID to 000Ah (used by DOS), and filling the MCB name
  1486.       field with the TSR's name.
  1487. SeeAlso: #2023,AX=3900h,AH=39h/BL=01h
  1488.  
  1489. (Table 2022)
  1490. Values for Kingswood TSR ID number:
  1491.  01h    TSR Windows
  1492.  02h    NOBUSY
  1493.  03h    CD STACK
  1494.  04h    DISK WATCH
  1495.  05h    PUSHBP
  1496.  06h    ALIAS
  1497.  07h    KEYMACRO
  1498.  08h    SLOWDOWN
  1499.  09h    ANSIGRAB
  1500.  0Ah    TEE
  1501.  0Bh    FASTMOUS
  1502.  0Ch    EXTWILD
  1503.  0Dh    BREAKOUT
  1504.  0Eh    STOPDISK
  1505.  0Fh    MEMINIT
  1506.  10h    JANUSEXT
  1507.  11h    CAPS
  1508.  12h    ANSI
  1509.  13h    TRAPPER
  1510.  14h    EATMEM
  1511.  15h    WPJOKE
  1512.  16h    SHOWDOS
  1513.  17h    LOGINTS
  1514.  18h    BLANKVGA
  1515.  19h    SWAPEXEC
  1516.  1Ah    SHELL
  1517.  1Bh    TSRGAMES
  1518.  
  1519. Format of Kingswood TSR modules:
  1520. Offset    Size    Description    (Table 2023)
  1521.  00h  4 BYTEs    signature "FTSR"
  1522.  04h    WORD    segment address of this module (used to check validity)
  1523.  06h    WORD    number of words to skip (usually 0000h if no PSP present)
  1524.  08h  N WORDs    module-defined data that must be at a fixed segment offset
  1525.         (usually only a PSP if file access is required)
  1526.      5N BYTEs    interrupt list (see #2024)
  1527.     BYTE    FFh terminator
  1528.  
  1529. Format of Kingswood TSR interrupt list entry:
  1530. Offset    Size    Description    (Table 2024)
  1531.  00h    BYTE    interrupt number (00h-FEh)
  1532.  01h    WORD    offset within segment of DWORD pointer to previous interrupt
  1533.  03h    WORD    offset within segment of begin of interrupt handler code
  1534. --------t-2F39--BL01-------------------------
  1535. INT 2F - Kingswood TSR INTERFACE - REMOVAL CHECK
  1536.     AH = 39h
  1537.     BL = 01h
  1538.     AL = TSR ID number (01h-FFh) (see #2022)
  1539. Return: AL = status
  1540.         00h not ready to be removed
  1541.         FFh resident module may be removed by deassigning the interrupts
  1542.           hooked by the TSR and deallocating the TSR's memory block
  1543.     AH,BX,CX,DX,ES may be destroyed
  1544. SeeAlso: AX=3900h,AH=39h/BL=00h
  1545. --------t-2F39-------------------------------
  1546. INT 2F - Kingswood TSR INTERFACE - APPLICATION-SPECIFIC FUNCTION CALLS
  1547.     AH = 39h
  1548.     BL = function number (02h-FFh)
  1549.     AL = TSR ID number (01h-FFh) (see #2022)
  1550.     CX,DX,SI,DI,DS,ES may contain parameters
  1551.     BH reserved for use by the function dispatcher
  1552. Return: as appropriate for the called function
  1553. SeeAlso: AX=3900h,AH=39h/BL=00h,AX=3901h/BL=02h
  1554. --------r-2F3901BL02-------------------------
  1555. INT 2F - Kingswood TSR Windows - OPEN WINDOW
  1556.     AX = 3901h
  1557.     BL = 02h
  1558. Return: AX = error code (0000h if successful)
  1559.     SI,DI,DS,ES preserved
  1560. Notes:    opens the next TSR window on top of any others.     Only three
  1561.       TSR windows can be opened at any one time.  The three windows
  1562.       are all 40x11 characters, partly overlapping.
  1563. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=03h,AX=3901h/BL=05h,AX=3901h/BL=06h
  1564. --------r-2F3901BL03-------------------------
  1565. INT 2F - Kingswood TSR Windows - HIDE WINDOWS
  1566.     AX = 3901h
  1567.     BL = 03h
  1568. Return: AX = error code (0000h if successful)
  1569.     SI,DI,DS,ES preserved
  1570. Notes:    Hide any visible TSR windows from view.
  1571. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=05h
  1572. --------r-2F3901BL04-------------------------
  1573. INT 2F - Kingswood TSR Windows - SHOW WINDOWS
  1574.     AX = 3901h
  1575.     BL = 04h
  1576. Return: AX = error code (0000h if successful)
  1577.     SI,DI,DS,ES preserved
  1578. Notes:    Re-display all TSR windows after a HIDE WINDOWS call.
  1579. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=03h
  1580. --------r-2F3901BL05-------------------------
  1581. INT 2F - Kingswood TSR Windows - CLOSE WINDOW
  1582.     AX = 3901h
  1583.     BL = 05h
  1584. Return: AX = error code (0000h if successful)
  1585.     SI,DI,DS,ES preserved
  1586. Notes:    Close the last opened TSR window.
  1587. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
  1588. --------r-2F3901BL06-------------------------
  1589. INT 2F - Kingswood TSR Windows - SET WINDOW TITLE
  1590.     AX = 3901h
  1591.     BL = 06h
  1592.     DS:SI -> title string
  1593. Return: AX = error code (0000h if successful)
  1594.     SI,DI,DS,ES preserved
  1595. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
  1596. --------r-2F3901BL07-------------------------
  1597. INT 2F - Kingswood TSR Windows - POSITION CURSOR
  1598.     AX = 3901h
  1599.     BL = 07h
  1600.     CH = Y coordinate (0-10)
  1601.     CL = X coordinate (0-39)
  1602. Return: AX = error code (0000h if successful)
  1603.     SI,DI,DS,ES preserved
  1604. Note:    the hardware cursor is always disabled when a TSR window is opened;
  1605.       this call only sets a text position
  1606. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=08h,AX=3901h/BL=09h
  1607. --------r-2F3901BL08-------------------------
  1608. INT 2F - Kingswood TSR Windows - DISPLAY STRING
  1609.     AX = 3901h
  1610.     BL = 08h
  1611.     DS:SI -> string
  1612. Return: AX = error code (0000h if successful)
  1613.     SI,DI,DS,ES preserved
  1614. Notes:    The text is not clipped.
  1615.     This routine understands Tab, NewLine and Carriage Return
  1616. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
  1617. --------r-2F3901BL09-------------------------
  1618. INT 2F - Kingswood TSR Windows - SCROLL WINDOW
  1619.     AX = 3901h
  1620.     BL = 09h
  1621.     CL = scroll direction: 01h up, FFh down, 00h clear window
  1622. Return: AX = error code (0000h if successful)
  1623.     SI,DI,DS,ES preserved
  1624. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
  1625. --------r-2F3901BL0A-------------------------
  1626. INT 2F - Kingswood TSR Windows - SOUND BEEPER
  1627.     AX = 3901h
  1628.     BL = 0Ah
  1629.     DX = sound divisor, or 0 for silence.
  1630.          (divide 1843200 by required frequency to get value for DX)
  1631.     CL = sound length in 18.2 Hz clock ticks
  1632. Return: AX = error code (0000h if successful)
  1633.     SI,DI,DS,ES preserved
  1634. SeeAlso: AH=39h/BL=00h
  1635. --------r-2F3901BL0B-------------------------
  1636. INT 2F - Kingswood TSR Windows - ADD OR REMOVE USER
  1637.     AX = 3901h
  1638.     BL = 0Bh
  1639.     CL = number of users increment: +1 if adding a new user
  1640.                     -1 if removing a user
  1641. Return: AX = error code (0000h if successful)
  1642.     SI,DI,DS,ES preserved
  1643. Note:    the TSR windows resident module may only be removed when the internal
  1644.       user count is zero
  1645. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
  1646. --------V-2F3912BL03-------------------------
  1647. INT 2F - Kingswood ANSI display driver - SET COMPATIBILITY MODE
  1648.     AX = 3912h
  1649.     BL = 03h
  1650.     CL = new mode (00h fast, FFh BIOS)
  1651. Return: AL = old compatibility mode
  1652.     SI,DI,DS,ES preserved
  1653. SeeAlso: AX=3900h,AX=3912h/BL=04h
  1654. --------V-2F3912BL04-------------------------
  1655. INT 2F - Kingswood ANSI display driver - SET FLAGS
  1656.     AX = 3912h
  1657.     BL = 04h
  1658.     CL = new flags (see #2025)
  1659. Return: AL = old flags
  1660.     SI,DI,DS,ES preserved
  1661. SeeAlso: AX=3900h,AX=3912h/BL=03h
  1662.  
  1663. Bitfields for Kingswood ANSI flags:
  1664. Bit(s)    Description    (Table 2025)
  1665.  0    do not wrap at end of line
  1666.  1    wait for beeps to end before displaying next character
  1667.  2    do not use graphics cursor
  1668. --------W-2F4000-----------------------------
  1669. INT 2F - Windows 3+ (OS/2 2.x???) - GET VIRTUAL DEVICE DRIVER (VDD) CAPABILTIES
  1670.     AX = 4000h
  1671. Return: AL = video virtualization (see #2026)
  1672. Note:    this function is used by display drivers to find out what capabilities
  1673.       exist for the VDD driver and also trigger the VDD driver to call
  1674.       functions 4005h and 4006h.  This function also gives the Video Driver
  1675.       hardware access to the video registers.
  1676.  
  1677. (Table 2026)
  1678. Values for Windows video virtualization:
  1679.  01h    does not virtualize video access
  1680.  02h    virtualizes the video when in text mode
  1681.  03h    virtualizes the video when in text mode or single plane graphics modes
  1682.  04h    virtualizes the video when in text mode, single plane graphics modes,
  1683.       and VGA multiplane modes
  1684.  FFh    virtualizes the video fully
  1685. --------O-2F4001-----------------------------
  1686. INT 2F C - OS/2 compatibility box - SWITCHING DOS TO BACKGROUND
  1687.     AX = 4001h
  1688. Note:    called by OS/2 when the DOS box is about to be placed in the background
  1689.       and the video driver should save any necessary state
  1690. SeeAlso: AX=4002h,AX=4005h
  1691. --------O-2F4002-----------------------------
  1692. INT 2F C - OS/2 compatibility box - SWITCHING DOS TO FOREGROUND
  1693.     AX = 4002h
  1694. Note:    called by OS/2 when the DOS box is about to be placed in the foreground
  1695.       and the video driver should restore the previously-saved state
  1696. SeeAlso: AX=4001h,AX=4006h
  1697. --------W-2F4003-----------------------------
  1698. INT 2F - Windows 3.x - ENTERING VIDEO DRIVER CRITICAL SECTION
  1699.     AX = 4003h
  1700. Note:    This critical section must be exited within 1 second.
  1701. SeeAlso: AX=4004h
  1702. --------W-2F4004-----------------------------
  1703. INT 2F - Windows 3.x - EXITING VIDEO DRIVER CRITICAL SECTION
  1704.     AX = 4004h
  1705. SeeAlso: AX=4003h
  1706. --------W-2F4005-----------------------------
  1707. INT 2F C - Windows 3.x - SWITCHING DOS TO BACKGROUND
  1708.     AX = 4005h
  1709. Note:    called by Windows when the DOS box is about to be placed in the
  1710.       background and the video driver should save any necessary state
  1711.       information (this may be called only in Standard mode)
  1712. SeeAlso: AX=4001h,AX=4006h
  1713. --------W-2F4006-----------------------------
  1714. INT 2F C - Windows 3.x - SWITCHING DOS TO FOREGROUND
  1715.     AX = 4006h
  1716. Note:    called by Windows when the DOS box is about to be placed in the
  1717.       foreground and the video driver should restore any necessary state
  1718.       information (this may be called only in Standard mode)
  1719. SeeAlso: AX=4002h,AX=4005h
  1720. --------W-2F4007-----------------------------
  1721. INT 2F - Windows 3.x - ENABLE VDD TRAPPING OF VIDEO REGISTERS
  1722.     AX = 4007h
  1723. Note:    used by Windows Standard mode
  1724. --------O-2F4010-----------------------------
  1725. INT 2F - OS/2 v2.0+ - INSTALLATION CHECK / GET VERSION
  1726.     AX = 4010h
  1727. Return: AX = 4010h if OS/2 not installed
  1728.     AX = 0000h for OS/2 Warp 3.0
  1729.     BX = OS/2 version if installed
  1730. Note:    OS/2 Warp 3.0
  1731. SeeAlso: INT 21/AH=30h,INT 21/AX=3306h
  1732. --------O-2F4011-----------------------------
  1733. INT 2F - OS/2 - GET VDD API ENTRY POINT
  1734.     AX = 4011h
  1735.     DS:(E)SI -> ASCIZ name of VDD registered with VDHRegisterAPI
  1736. Return: ES:DI -> breakpoint address to call for VDD API, or 0000h:0000h
  1737. Note:    this function may be invoked from either V86 or protected mode, and
  1738.       will return the appropriate address to call for invoking the VDD
  1739.       in that mode
  1740. SeeAlso: AX=1684h"DEVICE API"
  1741. --------E-2F4040-----------------------------
  1742. INT 2F - PharLap 286|DOS-Extender Lite v2.5 - ???
  1743.     AX = 4040h
  1744. Return: BX:CX -> ???
  1745. --------N-2F4100-----------------------------
  1746. INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - INSTALLATION CHECK
  1747.     AX = 4100h
  1748. Return: CF clear if successful
  1749.         AL = FFh
  1750.     CF set on error
  1751.         AX = ???
  1752. Notes:    MINIPOP and NETPOPUP provide a network message popup service
  1753.     LAN Manager enhanced mode adds features beyond the standard redirector
  1754.       file/printer services
  1755. SeeAlso: AX=118Ah,AX=4103h,AX=4104h,AH=42h,AH=4Bh
  1756. --------N-2F4103-----------------------------
  1757. INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - ???
  1758.     AX = 4103h
  1759. Return: ???
  1760. SeeAlso: AX=4100h,AX=4104h
  1761. --------N-2F4104-----------------------------
  1762. INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - ???
  1763.     AX = 4104h
  1764. Return: ???
  1765. SeeAlso: AX=4100h,AX=4103h
  1766. --------N-2F42-------------------------------
  1767. INT 2F - LAN Manager 2.0 DOS Enhanced MSRV.EXE - MESSENGER SERVICE
  1768.     AH = 42h
  1769.     ???
  1770. Return: ???
  1771. Note:    LAN Manager enhanced mode adds features beyond the standard redirector
  1772.       file/printer services
  1773. SeeAlso: AX=118Ah,AX=4100h,AH=4Bh
  1774. --------m-2F4300-----------------------------
  1775. INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - INSTALLATION CHECK
  1776.     AX = 4300h
  1777. Return: AL = 80h XMS driver installed
  1778.     AL <> 80h no driver
  1779. Notes:    XMS gives access to extended memory and noncontiguous/nonEMS memory
  1780.       above 640K
  1781.     this installation check DOES NOT follow the format used by other
  1782.       software
  1783. SeeAlso: AX=4310h
  1784. Index:    installation check;XMS version 2+
  1785. --------m-2F4308-----------------------------
  1786. INT 2F U - HIMEM.SYS v2.77+ - GET A20 HANDLER NUMBER
  1787.     AX = 4308h
  1788. Return: AL = 43h if supported
  1789.         BL = A20 handler number (value of /MACHINE:nn switch)
  1790.         BH = AT A20 switch time (00h medium, 01h fast, 02h slow)
  1791. Note:    if the A20 handler number returned in BL is 00h, an external handler
  1792.       is being used (see AX=4330h)
  1793. SeeAlso: AX=4309h,AX=4330h
  1794. --------m-2F4309-----------------------------
  1795. INT 2F U - HIMEM.SYS v3.09+ - GET XMS HANDLE TABLE
  1796.     AX = 4309h
  1797. Return: AL = 43h if function supported
  1798.         ES:BX -> XMS handle table (see #2027)
  1799. Note:    HIMEM.SYS v3.09 is part of MS-DOS 6.0.
  1800. SeeAlso: AX=4308h
  1801.  
  1802. Format of XMS handle table:
  1803. Offset    Size    Description    (Table 2027)
  1804.  00h    BYTE    ??? (01h in HIMEM.SYS v3.09)
  1805.  01h    BYTE    size of one handle descriptor
  1806.  02h    WORD    number of handles (default = 20h)
  1807.  04h    DWORD    pointer to XMS handle array (see #2028)
  1808. SeeAlso: #2057
  1809.  
  1810. Format of XMS handle descriptor [array]:
  1811. Offset    Size    Description    (Table 2028)
  1812.  00h    BYTE    flag
  1813.         01h=free, 02h=used, 04h=in pool but not associated with any EMB
  1814.  01h    BYTE    lock count (00h=unlocked)
  1815.  02h    DWORD    address of XMS block in KB (shift left by 10 for abs. address)
  1816.  06h    DWORD    size of XMS block in KB
  1817. --------m-2F4310-----------------------------
  1818. INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - GET DRIVER ADDRESS
  1819.     AX = 4310h
  1820. Return: ES:BX -> driver entry point (see #2029,#2030,#2033,#2040,#2049,#2054)
  1821. Notes:    HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
  1822.     HIMEM.SYS requires at least 256 bytes free stack space when calling
  1823.       the driver entry point
  1824. SeeAlso: AX=4300h,AX=4310h"Cloaking",AX=4310h"Netroom",AX=4310h"XMZ"
  1825.  
  1826. Format of XMS driver entry point:
  1827. Offset    Size    Description    (Table 2029)
  1828.  00h  5 BYTEs    jump to actual handler
  1829.         either short jump (EBh XXh) followed by three NOPs or
  1830.           far jump (EAh XXXX:XXXX) to a program which has hooked itself
  1831.           into the XMS driver chain
  1832. Note:    to hook into the XMS driver chain, a program should follow the chain of
  1833.       far jumps until it reaches the short jump of the driver at the end
  1834.       of the chain; this short jump is to be replaced with a far jump to
  1835.       the new handler's entry point, which should contain a short jump
  1836.       followed by three NOPs.  The new handler must return to the address
  1837.       pointed at by the short jump which was overwritten.  Using this
  1838.       method, the new handler becomes the first to see every XMS request.
  1839.  
  1840. (Table 2030)
  1841. Call the XMS driver "Get XMS version number" function with:
  1842.     AH = 00h
  1843. Return: AX = XMS version (in BCD, AH=major, AL=minor)
  1844.     BX = internal revision number (in BCD for HIMEM.SYS)
  1845.     DX = High Memory Area (HMA) state
  1846.         0001h HMA (1M to 1M + 64K) exists
  1847.         0000h HMA does not exist
  1848. SeeAlso: #2031,#2032,#2037,#2038,#2044
  1849.  
  1850. (Table 2031)
  1851. Call the XMS driver "Request High Memory Area" function with:
  1852.     AH = 01h
  1853.     DX = memory in bytes (for TSR or device drivers)
  1854.         FFFFh if application program
  1855. Return: AX = status
  1856.         0001h success
  1857.         0000h failure
  1858.         BL = error code (80h,81h,90h,91h,92h) (see #2055)
  1859. Note:    HIMEM.SYS will fail function 01h with error code 91h if AL=40h and
  1860.       DX=KB free extended memory returned by last call of function 08h
  1861. SeeAlso: #2032,#2064
  1862.  
  1863. (Table 2032)
  1864. Call the XMS driver "Release High Memory Area" function with:
  1865.     AH = 02h
  1866. Return: AX = status
  1867.         0001h success
  1868.         0000h failure
  1869.         BL = error code (80h,81h,90h,93h) (see #2055)
  1870. SeeAlso: #2031
  1871.  
  1872. (Table 2033)
  1873. Call the XMS driver "Global enable A20, for using the HMA" function with:
  1874.     AH = 03h
  1875. Return: AX = status
  1876.         0001h success
  1877.         0000h failure
  1878.         BL = error code (80h,81h,82h) (see #2055)
  1879. SeeAlso: #2034,#2035,MSR 00001000h
  1880.  
  1881. (Table 2034)
  1882. Call the XMS driver "Global disable A20" function with:
  1883.     AH = 04h
  1884. Return: AX = status
  1885.         0001h success
  1886.         0000h failure
  1887.         BL = error code (80h,81h,82h,94h) (see #2055)
  1888. SeeAlso: #2033,#2036,MSR 00001000h
  1889.  
  1890. (Table 2035)
  1891. Call the XMS driver "Local enable A20" function with:
  1892.     AH = 05h
  1893. Return: AX = status
  1894.         0001h success
  1895.         0000h failure
  1896.         BL = error code (80h,81h,82h) (see #2055)
  1897. Note:    this function is used for direct access to extended memory
  1898. SeeAlso: #2033,#2036
  1899.  
  1900. (Table 2036)
  1901. Call the XMS driver "Local disable A20" function with:
  1902.     AH = 06h
  1903. Return: AX = status
  1904.         0001h success
  1905.         0000h failure
  1906.         BL = error code (80h,81h,82h,94h) (see #2055)
  1907. SeeAlso: #2034,#2035
  1908.  
  1909. (Table 2037)
  1910. Call the XMS driver "Query A20 state" function with:
  1911.     AH = 07h
  1912. Return: AX = status
  1913.         0001h enabled
  1914.         0000h disabled
  1915.         BL = error code (00h,80h,81h) (see #2055)
  1916. SeeAlso: #2030,#2038
  1917.  
  1918. (Table 2038)
  1919. Call the XMS driver "Query free extended memory" function with:
  1920.     AH = 08h
  1921.     BL = 00h (some implementations leave BL unchanged on success)
  1922. Return: AX = size of largest extended memory block in KB
  1923.     DX = total extended memory in KB
  1924.     BL = error code (00h,80h,81h,A0h) (see #2055)
  1925. Note:    this function does not include the HMA in the returned memory sizes
  1926. SeeAlso: #2030,#2037,#2039,#2051
  1927.  
  1928. (Table 2039)
  1929. Call the XMS driver "Allocate extended memory block" function with:
  1930.     AH = 09h
  1931.     DX = Kbytes needed
  1932. Return: AX = status
  1933.         0001h success
  1934.         DX = handle for memory block
  1935.         0000h failure
  1936.         BL = error code (80h,81h,A0h) (see #2055)
  1937. SeeAlso: #2038,#2041,#2044,#2045,#2046,#2052
  1938.  
  1939. (Table 2040)
  1940. Call the XMS driver "Free extended memory block" function with:
  1941.     AH = 0Ah
  1942.     DX = handle of block to free
  1943. Return: AX = status
  1944.         0001h success
  1945.         0000h failure
  1946.         BL = error code (80h,81h,A2h,ABh) (see #2055)
  1947. SeeAlso: #2039,#2052
  1948.  
  1949. (Table 2041)
  1950. Call the XMS driver "Move extended memory block" function with:
  1951.     AH = 0Bh
  1952.     DS:SI -> EMM structure (see #2056)
  1953. Return: AX = status
  1954.         0001h success
  1955.         0000h failure
  1956.         BL = error code (80h-82h,A3h-A9h) (see #2055)
  1957. Note:    if either handle in the EMM structure is 0000h, the corresponding
  1958.       offset is considered to be an absolute segment:offset address in
  1959.       directly addressable memory
  1960. SeeAlso: #2039,#2042
  1961.  
  1962. (Table 2042)
  1963. Call the XMS driver "Lock extended memory block" function with:
  1964.     AH = 0Ch
  1965.     DX = handle of block to lock
  1966. Return: AX = status
  1967.         0001h success
  1968.         DX:BX = 32-bit physical address of locked block
  1969.         0000h failure
  1970.         BL = error code (80h,81h,A2h,ACh,ADh) (see #2055)
  1971. Note:    MS Windows 3.x rejects this function for handles allocated after
  1972.       Windows started
  1973. SeeAlso: #2039,#2041,#2043
  1974.  
  1975. (Table 2043)
  1976. Call the XMS driver "Unlock extended memory block" function with:
  1977.     AH = 0Dh
  1978.     DX = handle of block to unlock
  1979. Return: AX = status
  1980.         0001h success
  1981.         0000h failure
  1982.         BL = error code (80h,81h,A2h,AAh) (see #2055)
  1983. SeeAlso: #2042
  1984.  
  1985. (Table 2044)
  1986. Call the XMS driver "Get handle information" function with:
  1987.     AH = 0Eh
  1988.     DX = handle for which to get info
  1989. Return: AX = status
  1990.         0001h success
  1991.         BH = block's lock count
  1992.         BL = number of free handles left
  1993.         DX = block size in KB
  1994.         0000h failure
  1995.         BL = error code (80h,81h,A2h) (see #2055)
  1996. BUG:    MS Windows 3.10 acts as though unallocated handles are in use
  1997. Note:    MS Windows 3.00 has problems with this call
  1998. SeeAlso: #2030,#2039,#2053
  1999.  
  2000. (Table 2045)
  2001. Call the XMS driver "Reallocate extended memory block" function with:
  2002.     AH = 0Fh
  2003.     DX = handle of block
  2004.     BX = new size of block in KB
  2005. Return: AX = status
  2006.         0001h success
  2007.         0000h failure
  2008.         BL = error code (80h,81h,A0h-A2h,ABh) (see #2055)
  2009. SeeAlso: #2039,#2048
  2010.  
  2011. (Table 2046)
  2012. Call the XMS driver "Request upper memory block" function with:
  2013.     AH = 10h
  2014.     DX = size of block in paragraphs
  2015. Return: AX = status
  2016.         0001h success
  2017.         BX = segment address of UMB
  2018.         DX = actual size of block
  2019.         0000h failure
  2020.         BL = error code (80h,B0h,B1h) (see #2055)
  2021.         DX = largest available block
  2022. Notes:    Upper Memory consists of non-EMS memory between 640K and 1024K
  2023.     the XMS driver need not implement functions 10h through 12h to be
  2024.       considered compliant with the standard
  2025.     under DOS 5+, if CONFIG.SYS contains the line DOS=UMB, then no upper
  2026.       memory blocks will be available for allocation because all blocks
  2027.       have been grabbed by MS-DOS while booting
  2028. SeeAlso: #2039,#2047,#2065,INT 21/AH=58h"UMB"
  2029.  
  2030. (Table 2047)
  2031. Call the XMS driver "Release upper memory block" function with:
  2032.     AH = 11h
  2033.     DX = segment address of UMB to release
  2034. Return: AX = status
  2035.         0001h success
  2036.         0000h failure
  2037.         BL = error code (80h,B2h) (see #2055)
  2038. Note:    the XMS driver need not implement functions 10h through 12h to be
  2039.       considered compliant with the standard
  2040. SeeAlso: #2040,#2046,#2048
  2041.  
  2042. (Table 2048)
  2043. Call the XMS v3.0+ driver "Reallocate upper memory block" function with:
  2044.     AH = 12h
  2045.     DX = segment address of UMB to resize
  2046.     BX = new size of block in paragraphs
  2047. Return: AX = status
  2048.         0001h success
  2049.         0000h failure
  2050.         BL = error code (80h,B0h,B2h) (see #2055)
  2051.         DX = maximum available size (RM386)
  2052. Note:    the XMS driver need not implement functions 10h through 12h to be
  2053.       considered compliant with the standard
  2054. SeeAlso: #2045,#2046,#2047,#2063
  2055.  
  2056. (Table 2049)
  2057. Call the QEMM v5.11 "???" function with:
  2058.     AH = 34h  (QEMM 5.11 only, undocumented)
  2059.     ???
  2060. Return: ???
  2061. SeeAlso: #2050
  2062.  
  2063. (Table 2050)
  2064. Call the QEMM v5.11 "???" function with:
  2065.     AH = 44h  (QEMM 5.11 only, undocumented)
  2066.     ???
  2067. Return: ???
  2068. SeeAlso: #2049,#2063
  2069.  
  2070. (Table 2051)
  2071. Call the XMS v3.0 driver "Query free extended memory" function with:
  2072.     AH = 88h
  2073. Return: EAX = largest block of extended memory, in KB
  2074.     BL = status (00h,80h,81h,A0h) (see #2055)
  2075.     ECX = physical address of highest byte of memory
  2076.         (valid even on error codes 81h and A0h)
  2077.     EDX = total Kbytes of extended memory (0 if status A0h)
  2078. BUG:    HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
  2079.       are called
  2080. SeeAlso: #2038,#2052
  2081.  
  2082. (Table 2052)
  2083. Call the XMS v3.0 driver "Allocate any extended memory" function with:
  2084.     AH = 89h
  2085.     EDX = Kbytes needed
  2086. Return: AX = status
  2087.         0001h success
  2088.         DX = handle for allocated block (free with AH=0Ah) (see #2040)
  2089.         0000h failure
  2090.         BL = status (80h,81h,A0h,A1h,A2h) (see #2055)
  2091. SeeAlso: #2039,#2051
  2092.  
  2093. (Table 2053)
  2094. Call the XMS v3.0 driver "Get extended EMB handle information" function with:
  2095.     AH = 8Eh
  2096.     DX = handle
  2097. Return: AX = status
  2098.         0001h success
  2099.         BH = block's lock count
  2100.         CX = number of free handles left
  2101.         EDX = block size in KB
  2102.         0000h failure
  2103.         BL = status (80h,81h,A2h) (see #2055)
  2104. BUG:    MS-DOS 6.0 HIMEM.SYS leaves CX unchanged
  2105. SeeAlso: #2044,#2052,#2054
  2106.  
  2107. (Table 2054)
  2108. Call the XMS v3.0 driver "Reallocate any extended memory block" function with:
  2109.     AH = 8Fh
  2110.     DX = unlocked memory block handle
  2111.     EBX = new size in KB
  2112. Return: AX = status
  2113.         0001h success
  2114.         0000h failure
  2115.         BL = status (80h,81h,A0h-A2h,ABh) (see #2055)
  2116. BUG:    HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
  2117.       are called
  2118. SeeAlso: #2045,#2053
  2119.  
  2120. (Table 2055)
  2121. Values for XMS error code returned in BL:
  2122.  00h    successful
  2123.  80h    function not implemented
  2124.  81h    Vdisk was detected
  2125.  82h    an A20 error occurred
  2126.  8Eh    a general driver error
  2127.  8Fh    unrecoverable driver error
  2128.  90h    HMA does not exist or is not managed by XMS provider
  2129.  91h    HMA is already in use
  2130.  92h    DX is less than the /HMAMIN= parameter
  2131.  93h    HMA is not allocated
  2132.  94h    A20 line still enabled
  2133.  A0h    all extended memory is allocated
  2134.  A1h    all available extended memory handles are allocated
  2135.  A2h    invalid handle
  2136.  A3h    source handle is invalid
  2137.  A4h    source offset is invalid
  2138.  A5h    destination handle is invalid
  2139.  A6h    destination offset is invalid
  2140.  A7h    length is invalid
  2141.  A8h    move has an invalid overlap
  2142.  A9h    parity error occurred
  2143.  AAh    block is not locked
  2144.  ABh    block is locked
  2145.  ACh    block lock count overflowed
  2146.  ADh    lock failed
  2147.  B0h    only a smaller UMB is available
  2148.  B1h    no UMB's are available
  2149.  B2h    UMB segment number is invalid
  2150.  
  2151. Format of EMM structure:
  2152. Offset    Size    Description    (Table 2056)
  2153.  00h    DWORD    number of bytes to move (must be even)
  2154.  04h    WORD    source handle
  2155.  06h    DWORD    offset into source block
  2156.  0Ah    WORD    destination handle
  2157.  0Ch    DWORD    offset into destination block
  2158. Notes:    if source and destination overlap, only forward moves (source base
  2159.       less than destination base) are guaranteed to work properly
  2160.     if either handle is zero, the corresponding offset is interpreted
  2161.       as a real-mode address referring to memory directly addressable
  2162.       by the processor
  2163.  
  2164. Format of XMS handle info [array]:
  2165. Offset    Size    Description    (Table 2057)
  2166.  00h    BYTE    handle
  2167.  01h    BYTE    lock count
  2168.  02h    DWORD    handle size
  2169.  06h    DWORD    handle physical address (only valid if lock count nonzero)
  2170. SeeAlso: #2027
  2171. --------m-2F4310-----------------------------
  2172. INT 2F - Cloaking - REAL-MODE API
  2173.     AX = 4310h
  2174. Return: ES:BX -> driver entry point (see #2029,#2058,#2059,#2060,#2061)
  2175. SeeAlso: AX=4310h"XMS"
  2176.  
  2177. (Table 2058)
  2178. Call the Cloaking v1.01 "Client Registration" function with:
  2179.     AH = 7Eh
  2180.     BX = subfunction
  2181.         0000h get client registration count
  2182.         0001h get client registration structures
  2183.         ES:DI -> buffer for registration structures
  2184. Return: AX = status
  2185.         0000h failed
  2186.         0001h successful
  2187.         ---subfunction 00h---
  2188.         BX = size of client structure in bytes
  2189.         CX = number of clients installed
  2190.         ---subfunction 01h---
  2191.         ES:DI buffer filled
  2192. SeeAlso: #2059,#2061,INT 2C/AX=0033h
  2193.  
  2194. (Table 2059)
  2195. Call the Cloaking v1.01 "Verify Cloaking Host" function with:
  2196.     AH = 7Fh
  2197. Return: AX = status
  2198.         0000h failed
  2199.         0001h (successful) if installed
  2200.         BX = version (0101h for v1.01)
  2201.         CX = flags
  2202.             bit 0: host is VCPI-based
  2203.         DS:DX -> ASCIZ Cloaking host signature
  2204.             "CLOAKING.EXE"0, followed by a far-call entry point to
  2205.               uninstall host (see #2060) in Helix's CLOAKING.EXE
  2206. SeeAlso: #2058,#2061
  2207. Index:    installation check;Cloaking host|installation check;CLOAKING.EXE
  2208.  
  2209. (Table 2060)
  2210. Call the CLOAKING.EXE "Uninstall Host" function with:
  2211. Return: AX = 4F4Bh ('OK') if successfully uninstalled protected-mode code
  2212.  
  2213. (Table 2061)
  2214. Call the Cloaking "Start Protected-Mode Client" function with:
  2215.     AH = 82h
  2216.     DX = XMS handle of locked block containing protected-mode code
  2217.     CL = code size (00h 16-bit, else 32-bit)
  2218.     ESI, EDI = parameters to pass to protected-mode code
  2219. Return: AX = status
  2220.         nonzero success
  2221.         0000h failed
  2222.         BL = error code (A2h,B0h) (see #2055)
  2223. Notes:    this function calls a user initialization function at offset 0 in
  2224.       the XMS memory block (see #2062)
  2225.     supported by Helix's RM386 v6.00 and Helix's CLOAKING.EXE
  2226. SeeAlso: #2058,#2059
  2227.  
  2228. (Table 2062)
  2229. Values user initialization function is called with:
  2230.     EBX = physical address of block's start
  2231.     ESI = user data from function 82h call
  2232.     EDI = user data from function 82h call
  2233.     CS = code selector for XMS block at EBX (16-bit or 32-bit)
  2234.     DS = data selector for XMS block, starting at EBX
  2235.     ES = selector for V86 memory access to full real-mode 1088K
  2236.     GS = selector for full 4G flat address space
  2237.     SS:ESP -> stack provided by host
  2238. Return: via 32-bit FAR return
  2239. Note:    the initialization function may call any protected-mode Cloaking
  2240.       service; it should store the values of DS, ES, and GS for future
  2241.       reference
  2242. --------m-2F4310-----------------------------
  2243. INT 2F - Helix Netroom RM386 v6.00 - XMS EXTENSIONS
  2244.     AX = 4310h
  2245. Return: ES:BX -> driver entry point (see #2063,#2064,#2065,#2066)
  2246. Notes:    HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
  2247.     HIMEM.SYS requires at least 256 bytes free stack space when calling
  2248.       the driver entry point
  2249. SeeAlso: AX=4300h,AX=4310h"XMS",AX=4310h"Cloaking"
  2250.  
  2251. (Table 2063)
  2252. Call the Netroom RM386 v6.00 "Reallocate upper memory block" function with:
  2253.     AH = 80h
  2254.     DX = segment address of UMB to resize
  2255.     BX = new size of block in paragraphs
  2256. Return: AX = status
  2257.         0001h success
  2258.         0000h failure
  2259.         BL = error code (80h,B0h,B2h) (see #2055)
  2260.         DX = maximum available size
  2261. Note:    this function is identical to function 12h
  2262. SeeAlso: #2048,#2064
  2263.  
  2264. (Table 2064)
  2265. Call the Netroom RM386 v6.00 "re-enable HMA allocation" function with:
  2266.     AH = 81h
  2267. Return: AX = 0001h (success)
  2268. SeeAlso: #2031,#2063,#2065
  2269.  
  2270. (Table 2065)
  2271. Call the Netroom RM386 v6.00 "Create new UMB entry" function with:
  2272.     AH = 83h
  2273.     BX = segment of high-memory block
  2274.     DX = first page of start of block
  2275.     CX = number of consecutive pages in block
  2276.     DI = start of UMB in block
  2277. Return: AX = 0001h (success)
  2278.     DI = segment of first high-DOS block
  2279. Note:    the new UMB is not linked into the high-memory chain
  2280. SeeAlso: #2046,#2064,#2066
  2281.  
  2282. (Table 2066)
  2283. Call the Netroom RM386 v6.00 "Get all XMS handles info" function with:
  2284.     AH = 84h
  2285.     CX = size of buffer for handle info
  2286.     ES:DI -> buffer for handle info (see #2057)
  2287. Return: AX = 0001h (success)
  2288.     DX = current number of allocated XMS handles
  2289. SeeAlso: #2065,#2051
  2290. --------m-2F4310-----------------------------
  2291. INT 2F - NEC PC-9800 - XMZ - PRIVATE API
  2292.     AX = 4310h
  2293. Return: ES:BX -> driver entry point (see #2067,#2068)
  2294. Program: XMZ is an XMS 2.x-compatible driver for the NEC PC-98 series written
  2295.       by ZOBplus Hayami and available at
  2296.       ftp:/ftp.tohoku.ac.jp/pub/msdos/Memory/xmz/
  2297. SeeAlso: AX=4300h,AX=4310h"XMS"
  2298.  
  2299. (Table 2067)
  2300. Call XMZ v1.02 "Get HMA Information" function with:
  2301.     AH = FFh  (XMZ only)
  2302.     AL = 01h
  2303. Return: AX = 1 on success
  2304.     DX = minimum HMA allocation size (/HMAMIN=)
  2305.     BX = actual size of HMA allocation, if in use (i.e. the value in DX
  2306.           when XMS function 1 was called)
  2307. SeeAlso: #2068
  2308.  
  2309. (Table 2068)
  2310. Call XMZ v1.02 "Get EMB Handle Information" function with:
  2311.     AH = FFh  (XMZ only)
  2312.     AL = 02h
  2313. Return: AX = 1 on success
  2314.     DX = number of EMB handles configured (/NUMHANDLES=)
  2315.     BX = offset in XMZ's segment of the handle table (use segment of
  2316.           entry point) (see #2069)
  2317. SeeAlso: #2067
  2318.  
  2319. Format of XMZ v1.02 EMB Handle structure:
  2320. Offset    Size    Description    (Table 2069)
  2321.  00h    BYTE    flag byte
  2322.         04h unused handle slot
  2323.         02h in-use handle slot
  2324.         01h handle slot that represents a free block
  2325.  01h    BYTE    lock count
  2326.  02h    WORD    block start address (1K increments)
  2327.  04h    WORD    block length (1K increments)
  2328. SeeAlso: #2068
  2329. --------m-2F4320-----------------------------
  2330. INT 2F U - HIMEM.SYS - Mach 20 SUPPORT
  2331.     AX = 4320h
  2332.     ???
  2333. Return: ???
  2334. --------m-2F4330-----------------------------
  2335. INT 2F CU - HIMEM.SYS v2.77+ - GET EXTERNAL A20 HANDLER ADDRESS
  2336.     AX = 4330h
  2337. Return: AL = 80h if external A20 handler provided
  2338.         ES:BX -> external A20 handler (see #2070)
  2339.         CL = A20 detection support
  2340.         00h handler is unable to report A20 state
  2341.         01h handler supports function 0002h to report A20 state
  2342. Note:    HIMEM.SYS calls this function to allow an external program to provide
  2343.       an A20 handler (i.e. to support a machine not supported by HIMEM
  2344.       itself)
  2345. SeeAlso: AX=4308h,AX=4310h
  2346.  
  2347. (Table 2070)
  2348. Call parameters for external A20 handler are:
  2349.     AX = function
  2350.         0000h disable A20
  2351.         0001h enable A20
  2352.         0002h get A20 state
  2353. Return: AX = status (functions 0000h and 0001h)
  2354.         0000h failure
  2355.         0001h successful
  2356.     AX = A20 state (function 0002h)
  2357.         0000h disabled
  2358.         0001h enabled
  2359. Note:    HIMEM.SYS only calls function 0002h if the returned CL indicated that
  2360.       the handler supports the call
  2361. ----------2F43D6-----------------------------
  2362. INT 2F - Multiplex - ???
  2363.     AX = 43D6h
  2364. Note:    Central Point's CPBACKUP v9 calls this function with CX=07FFh and
  2365.       DX=80D3h at startup
  2366. --------E-2F43E0BX0000-----------------------
  2367. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - INSTALLATION CHECK
  2368.     AX = 43E0h
  2369.     BX = 0000h
  2370.     CX = 4450h ('DP')
  2371.     DX = 4D53h ('MS')
  2372. Return: AX = 0000h if installed
  2373.         CF clear
  2374.         ES:DI -> server structure (see #2071)
  2375.         ES:BX -> registration structure (pre-NWDOS 7 beta spec) (see #2073)
  2376. Note:    the DPMS 1.0 server included with the original release of Novell DOS
  2377.       7.0 supports both the beta and 1.0 specification, setting ES:BX even
  2378.       if CX and DX are not as specified on entry (since the beta
  2379.       specification did not use those registers).  However, the DPMS 1.1
  2380.       server included with the March 1994 update does not support the beta
  2381.       specification
  2382. SeeAlso: AX=43E1h,AX=43E2h,AX=43E3h,INT 2F/AX=1687h
  2383. Index:    signature strings;DPMS
  2384.  
  2385. Format of DPMS 1.0 server structure:
  2386. Offset    Size    Description    (Table 2071)
  2387.  00h  4 BYTEs    signature string "DPMS"
  2388.  04h  2 BYTEs    DPMS version (major,minor)
  2389.  06h  8 BYTEs    blank-padded server OEM name
  2390.  0Eh  2 BYTEs    OEM server version (major,minor)
  2391.  10h    WORD    DPMS flags (see #2072)
  2392.  12h    BYTE    CPU type
  2393.         (02h = 286, 03h = 386 or higher, higher values allowed)
  2394.  
  2395. Bitfields for DPMS flags:
  2396. Bit(s)    Description    (Table 2072)
  2397.  0    fast processor reset available (286 only)
  2398.  1    DPMS server is enabled
  2399.  2    memory is remapped
  2400.  3-15    reserved (undefined)
  2401.  
  2402. Format of beta DPMS registration structure:
  2403. Offset    Size    Description    (Table 2073)
  2404.  00h    DWORD    real-mode API entry point (see #2075)
  2405.  04h    DWORD    16-bit protected-mode API entry point (see #2075)
  2406.  08h  8 BYTEs    reserved (0)
  2407.  10h  8 BYTEs    blank-padded server OEM name
  2408.  18h    WORD    flags
  2409.         bit 0: fast processor reset available (286 only)
  2410.         bits 1-15 reserved (undefined)
  2411.  1Ah  2 BYTEs    DPMS version (major,minor)
  2412.  1Ch    BYTE    CPU type (02h = 286, 03h = 386 or higher)
  2413. --------m-2F43E1-----------------------------
  2414. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - REGISTER CLIENT
  2415.     AX = 43E1h
  2416.     CX = required protected-mode stack size in bytes
  2417.     ES:DI -> DPMS client interface structure (see #2074)
  2418. Return: AX = 0000h if supported
  2419.        CF clear
  2420.        ES:DI buffer filled with API entry point code from offset 0Ah
  2421. Note:    the client is allowed to copy the returned API code to any location in
  2422.       memory, and need not keep the three code fields together
  2423. SeeAlso: AX=43E0h,AX=43E2h,AX=43E3h
  2424.  
  2425. Format of DPMS client interface structure:
  2426. Offset    Size    Description    (Table 2074)
  2427.  00h    WORD    0000h (structure version / flags)
  2428.  02h  8 BYTEs    blank-padded client name
  2429.  0Ah  7 BYTEs    real/virtual-86 mode API code (see #2075)
  2430.  11h    BYTE    space for return instruction
  2431.         set to C3h for near return, CBh for far return
  2432.  12h  7 BYTEs    16-bit protected-mode API code (see #2075)
  2433.  19h    BYTE    space for return instruction
  2434.         set to C3h for near return, CBh for far return
  2435.  1Ah  9 BYTEs    32-bit protected-mode API code (see #2075)
  2436.  23h    BYTE    space for return instruction
  2437.         set to C3h for near return, CBh for far return
  2438. Note:    the DPMS server fills the return opcode bytes with zeros and DPMS
  2439.       requests will thus crash the system unless the application
  2440.       explicitly sets them (some early versions set them to C3h by
  2441.       default, but one should not rely on that)
  2442.  
  2443. (Table 2075)
  2444. Call DPMS entry point with:
  2445.     AX = 0000h unregister client from server
  2446.  ---control transfer functions---
  2447.     AX = 0100h call protected-mode procedure
  2448.         CX = number of words of stack to copy
  2449.         ES:(E)DI -> callup/down register structure (see #2077)
  2450.         Return: CF clear if successful
  2451.             CF set on error
  2452.                 AX = error code (see #2076)
  2453.     AX = 0101h call real-mode procedure (RETF return)
  2454.         CX = number of words of stack to copy
  2455.         ES:(E)DI -> callup/down register structure (see #2077)
  2456.         Return: CF clear if successful
  2457.             CF set on error
  2458.                 AX = error code (see #2076)
  2459.     AX = 0102h call real-mode procedure (IRET return)
  2460.         CX = number of words of stack to copy
  2461.         ES:(E)DI -> callup/down register structure (see #2077)
  2462.         Return: CF clear if successful
  2463.             CF set on error
  2464.                 AX = error code (see #2076)
  2465.     AX = 0103h call real-mode interrupt handler
  2466.         BL = interrupt number
  2467.         CX = number of words of stack to copy
  2468.         ES:(E)DI -> callup/down register structure (see #2077)
  2469.         Return: CF clear if successful
  2470.             CF set on error
  2471.                 AX = error code (see #2076)
  2472.     AX = 0104h register default protected mode procedure
  2473.         ES:(E)DI -> default register structure (see #2078)
  2474.         Return: CF clear if successful
  2475.             CF set on error
  2476.                 AX = error code (see #2076)
  2477.     AX = 0105h register default real-mode procedure (RETF return)
  2478.         ES:(E)DI -> default register structure (see #2078)
  2479.         Return: CF clear if successful
  2480.             CF set on error
  2481.                 AX = error code (see #2076)
  2482.         Note:    the procedure will be called from 16-bit prot. mode
  2483.     AX = 0106h register default real-mode procedure (IRET return)
  2484.         ES:(E)DI -> default register structure (see #2078)
  2485.         Return: CF clear if successful
  2486.             CF set on error
  2487.                 AX = error code (see #2076)
  2488.         Note:    the procedure will be called from 16-bit prot. mode
  2489.     AX = 0107h register default real-mode interrupt handler
  2490.         BL = interrupt number
  2491.         ES:(E)DI -> default register structure (see #2078)
  2492.         Return: CF clear if successful
  2493.             CF set on error
  2494.                 AX = error code (see #2076)
  2495.         Note:    the handler will be called from 16-bit protected mode
  2496.     AX = 0108h register default real-mode procedure (RETF return)
  2497.         ES:(E)DI -> default register structure (see #2078)
  2498.         Return: CF clear if successful
  2499.             CF set on error
  2500.                 AX = error code (see #2076)
  2501.         Note:    the procedure will be called from 32-bit prot. mode
  2502.     AX = 0109h register default real-mode procedure (IRET return)
  2503.         ES:(E)DI -> default register structure (see #2078)
  2504.         Return: CF clear if successful
  2505.             CF set on error
  2506.                 AX = error code (see #2076)
  2507.         Note:    the procedure will be called from 32-bit prot. mode
  2508.     AX = 010Ah register default real-mode interrupt handler
  2509.         BL = interrupt number
  2510.         ES:(E)DI -> default register structure (see #2078)
  2511.         Return: CF clear if successful
  2512.             CF set on error
  2513.                 AX = error code (see #2076)
  2514.         Note:    the handler will be called from 32-bit protected mode
  2515.  ---descriptor management---
  2516.     AX = 0200h allocate descriptors
  2517.         CX = number of descriptors to allocate
  2518.         Return: CF clear if successful
  2519.                 AX = selector for first descriptor allocated
  2520.             CF set on error
  2521.                 AX = error code (see #2076)
  2522.     AX = 0201h free a descriptor
  2523.         BX = selector for descriptor
  2524.         Return: CF clear if successful
  2525.             CF set on error
  2526.                 AX = error code (see #2076)
  2527.     AX = 0202h create alias descriptor
  2528.         BX = selector for descriptor to be aliased
  2529.         Return: CF clear if successful
  2530.                 AX = alias descriptor
  2531.             CF set on error
  2532.                 AX = error code (see #2076)
  2533.     AX = 0203h build alias to real-mode segment
  2534.         BX = descriptor
  2535.         CX = real-mode segment
  2536.         Return: CF clear if successful
  2537.             CF set on error
  2538.                 AX = error code (see #2076)
  2539.     AX = 0204h set descriptor base
  2540.         BX = descriptor
  2541.         CX:DX = base address
  2542.         Return: CF clear if successful
  2543.             CF set on error
  2544.                 AX = error code (see #2076)
  2545.     AX = 0205h set descriptor limit
  2546.         BX = descriptor
  2547.         CX = limit
  2548.         Return: CF clear if successful
  2549.             CF set on error
  2550.                 AX = error code (see #2076)
  2551.     AX = 0206h set descriptor type/attribute
  2552.         BX = descriptor
  2553.         CL = type
  2554.         CH = attribute
  2555.         Return: CF clear if successful
  2556.             CF set on error
  2557.                 AX = error code (see #2076)
  2558.     AX = 0207h get descriptor base
  2559.         BX = descriptor
  2560.         Return: CF clear if successful
  2561.                 CX:DX = base address
  2562.             CF set on error
  2563.                 AX = error code (see #2076)
  2564.  ---linear memory functions---
  2565.     AX = 0300h get size of largest free block of memory
  2566.         Return: CF clear if successful
  2567.                 BX:CX = size
  2568.             CF set on error
  2569.                 AX = error code (see #2076)
  2570.     AX = 0301h allocate block of extended memory
  2571.         BX:CX = required size
  2572.         Return: CF clear if successful
  2573.                 BX:CX = base address
  2574.                 SI:DI = handle
  2575.             CF set on error
  2576.                 AX = error code (see #2076)
  2577.     AX = 0302h free block of extended memory
  2578.         SI:DI = handle
  2579.         Return: CF clear if successful
  2580.             CF set on error
  2581.                 AX = error code (see #2076)
  2582.     AX = 0303h map linear memory
  2583.         ES:(E)DI -> DDS (see #2079)
  2584.         Return: CF clear if successful
  2585.                 BX:CX = base address
  2586.                 SI:DI = handle
  2587.             CF set on error
  2588.                 AX = error code (see #2076)
  2589.     AX = 0304h unmap linear memory
  2590.         SI:DI = handle
  2591.         Return: CF clear if successful
  2592.             CF set on error
  2593.                 AX = error code (see #2076)
  2594.     AX = 0305h get page table entries
  2595.         ESI = linear address
  2596.         (E)CX = count
  2597.         ES:(E)DI -> buffer for page table entries
  2598.         Return: CF clear if successful
  2599.                 ES:(E)DI buffer filled
  2600.             CF set on error
  2601.                 AX = error code (see #2076)
  2602.     AX = 0306h set page table entries
  2603.         EBX = linear memory handle
  2604.         ESI = linear address
  2605.         (E)CX = count
  2606.         ES:(E)DI -> buffer containing page table entries
  2607.         Return: CF clear if successful
  2608.             CF set on error
  2609.                 AX = error code (see #2076)
  2610.     AX = 0307h get largest mappable block size
  2611.         Return: CF clear if successful
  2612.                 BX:CX = size
  2613.             CF set on error
  2614.                 AX = error code (see #2076)
  2615.  ---miscellaneous---
  2616.     AX = 0400h relocate segment to extended memory
  2617.         ES:SI = base address
  2618.         CX = limit
  2619.         BL = type
  2620.         BH = attribute
  2621.         DX = selector or 0000h
  2622.         Return: CF clear if successful
  2623.                 AX = selector
  2624.                 BX:CX = new base address
  2625.                 SI:DI = handle
  2626.             CF set on error
  2627.                 AX = error code (see #2076)
  2628. Note:    the beta DPMS specification, which is still supported by the Novell
  2629.       DOS 7.0 DPMS host, only supported functions 0100h-0103h, 0200h-0207h,
  2630.       0300h-0304h, and 0400h
  2631.  
  2632. (Table 2076)
  2633. Values for DPMS error code:
  2634.  8000h    general error
  2635.  8001h    unsupported function
  2636.  8002h    unable to switch to protected mode
  2637.  8004h    no default stack defined
  2638.  8005h    unknown client
  2639.  8010h    resource unavailable
  2640.  8011h    descriptor unavailable
  2641.  8012h    linear memory unavailable
  2642.  8013h    physical memory unavailable
  2643.  8021h    invalid value
  2644.  8022h    invalid selector
  2645.  8023h    invalid handle
  2646.  8025h    invalid linear address
  2647.  
  2648. Format of DPMS callup/down register structure:
  2649. Offset    Size    Description    (Table 2077)
  2650.  00h    DWORD    EDI
  2651.  04h    DWORD    ESI
  2652.  08h    DWORD    EBP
  2653.  0Ch  4 BYTEs    reserved (0) (ESP, may be used by DPMS server)
  2654.  10h    DWORD    EBX
  2655.  14h    DWORD    EDX
  2656.  18h    DWORD    ECX
  2657.  20h    DWORD    EAX
  2658.  24h    DWORD    EIP
  2659.  28h    WORD    CS
  2660.  2Ah  2 BYTEs    reserved (0)
  2661.  2Ch    DWORD    EFLAGS
  2662.  30h    DWORD    ESP
  2663.  34h    WORD    SS
  2664.  36h  2 BYTEs    reserved (0)
  2665.  38h    WORD    ES
  2666.  3Ah  2 BYTEs    reserved (0)
  2667.  3Ch    WORD    DS
  2668.  3Eh  2 BYTEs    reserved (0)
  2669.  40h    WORD    FS
  2670.  42h  2 BYTEs    reserved (0)
  2671.  44h    WORD    GS
  2672.  46h  2 BYTEs    reserved (0)
  2673.  
  2674. Format of DPMS default register structure:
  2675. Offset    Size    Description    (Table 2078)
  2676.  00h    DWORD    EIP
  2677.  04h    WORD    CS
  2678.  06h  2 BYTEs    reserved (0)
  2679.  08h    WORD    number of words to copy from stack to stack
  2680.  0Ah    BYTE    (call) 00h
  2681.         (ret) nonzero if call could not be made
  2682.  0Bh    BYTE    reserved (may be used by some servers)
  2683.  0Ch    DWORD    ESP
  2684.  10h    WORD    SS
  2685.  12h  2 BYTEs    reserved (0)
  2686.  14h    WORD    ES
  2687.  16h  2 BYTEs    reserved (0)
  2688.  18h    WORD    DS
  2689.  1Ah  2 BYTEs    reserved (0)
  2690.  1Ch    WORD    FS
  2691.  1Eh  2 BYTEs    reserved (0)
  2692.  20h    WORD    GS
  2693.  22h  2 BYTEs    reserved (0)
  2694.  24h  9 BYTEs    API entry code (filled in by server)
  2695.  
  2696. Format of DPMS lock DDS:
  2697. Offset    Size    Description    (Table 2079)
  2698.  00h    DWORD    total size in bytes
  2699.  04h    DWORD    offset
  2700.  08h    WORD    segment or selector
  2701.  0Ah    WORD    reserved
  2702.  0Ch    WORD    maximum number of physical blocks structure has space for
  2703.  0Eh    WORD    number of physical blocks listed
  2704.  10h    DWORD    physical address of first block
  2705.  14h    DWORD    size in bytes of first block
  2706.     ...
  2707. --------m-2F43E2-----------------------------
  2708. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - ENABLE/DISABLE DPMS
  2709.     AX = 43E2h
  2710.     BX = new state (0000h disable, 0001h enable)
  2711. Return: AX = 0000h if supported
  2712. Note:    this function should normally be called only by system software
  2713. SeeAlso: AX=43E0h,AX=43E1h,AX=43E3h
  2714. --------m-2F43E3BX0000-----------------------
  2715. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - DPMS STARTUP BROADCAST
  2716.     AX = 43E3h
  2717.     BX = 0000h
  2718.     CX = 4450h ('DP')
  2719.     DX = 4D53h ('MS')
  2720. SeeAlso: AX=43E0h,AX=43E4h
  2721. --------m-2F43E4BX0000-----------------------
  2722. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - DPMS EXIT BROADCAST
  2723.     AX = 43E4h
  2724.     BX = 0000h
  2725.     CX = 4450h ('DP')
  2726.     DX = 4D53h ('MS')
  2727. SeeAlso: AX=43E0h,AX=43E3h
  2728. --------E-2F44-------------------------------
  2729. INT 2F U - DOS Extender support???
  2730.     AH = 44h
  2731.     AL = function (at least 0Bh, 15h, 17h)
  2732.     ???
  2733. Return: ???
  2734. Note:    called by Codeview for Windows
  2735. SeeAlso: AH=86h
  2736. --------G-2F4500-----------------------------
  2737. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - INSTALLATION CHECK
  2738.     AX = 4500h
  2739. Return: AL = installation status
  2740.         01h if PROF.COM installed
  2741.         02h if VPROD.386 installed
  2742. SeeAlso: AX=4501h,AX=4502h
  2743. --------G-2F4501-----------------------------
  2744. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SETUP PROFILER
  2745.     AX = 4501h
  2746.     BX = CSIPS buffer size in KB (first parameter for ProfSetup)
  2747.     CX = output limit in KB (second parameter for ProfSetup)
  2748. Note:    this call is not supported by PROF.COM
  2749. SeeAlso: AX=4502h,AX=4503h
  2750. --------G-2F4502-----------------------------
  2751. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SET SAMPLING RATE
  2752.     AX = 4502h
  2753.     BL = sampling rate for PROF.COM (0 < BL <= 13)
  2754.         (01h = 8192/s, 04h = 1024/s, 08h = 32/s, 0Dh = 1/s)
  2755.     CX = sampling rate for VPROD.386
  2756. Note:    for PROF.COM, this programs the CMOS clock by setting BL+2 as the
  2757.       low four bits of CMOS register 0Ah.  The interruption rate is
  2758.       1 SHL (15 - BL) per second.
  2759. SeeAlso: AX=4501h,AX=4503h
  2760. --------G-2F4503-----------------------------
  2761. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - START PROFILING
  2762.     AX = 4503h
  2763. Notes:    Profiling is also turned on by the key combinations
  2764.       LeftShift + RightShift + Alt and LeftShift + RightShift + Ctrl
  2765.     for PROF.COM, this call programs the CMOS clock by reading register
  2766.       0Ch, and setting bit 6 of register 0Bh.  It then makes sure that IRQ8
  2767.       is unmasked
  2768. SeeAlso: AX=4504h
  2769. --------G-2F4504-----------------------------
  2770. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - STOP PROFILING
  2771.     AX = 4504h
  2772. Notes:    profiling is also turned off by the key combination
  2773.       LeftShift + RightShift
  2774.     for PROF.COM, this programs the CMOS clock by reading register 0Ch
  2775.       and clearing bit 6 of register 0Bh.  It then masks IRQ8.
  2776. SeeAlso: AX=4503h,AX=4505h,AX=4506h,AX=4507h
  2777. --------G-2F4505-----------------------------
  2778. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - CLEAR PROFILING DATA
  2779.     AX = 4505h
  2780. SeeAlso: AX=4503h,AX=4504h,AX=4506h
  2781. --------G-2F4506-----------------------------
  2782. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFlush"
  2783.     AX = 4506h
  2784. SeeAlso: AX=4505h,AX=4507h
  2785. --------G-2F4507-----------------------------
  2786. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFinish"
  2787.     AX = 4507h
  2788. Note:    this call is essentially a "ProfStop" (AX=4504h) followed by
  2789.       "ProfFlush" (AX=4506h)
  2790. SeeAlso: AX=4504h,AX=4505h,AX=4506h
  2791. --------G-2F4508-----------------------------
  2792. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - ALTERNATE SEGDEBUG IFACE
  2793.     AX = 4508h
  2794.     BX = ordinal (or 0000h)
  2795.     CX = segment
  2796.     DX = instance (or 0000h)
  2797.     SI = type (or 0000h)
  2798.     ES:DI -> ASCIZ module name
  2799. Notes:    this call is an alternate entry to the profiler's SEGDEBUG
  2800.       interface, but only to function 0, for notifying the profiler of
  2801.       each new segment loaded.  The SHOWHITS utility then examines the
  2802.       profiler's output files (CSIPS.DAT and SEGENTRY.DAT) in conjunction
  2803.       with symbol files to provide information in a useful form.
  2804.     this call does not have a corresponding Windows function
  2805. SeeAlso: AX=4500h
  2806. --------D-2F4601-----------------------------
  2807. INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
  2808.     AX = 4601h
  2809. Return: ???
  2810. Note:    the DOS 5+ kernel intercepts this function and copies the MCB
  2811.        following the caller's PSP memory block into the DOS data segment;
  2812.        in conjunction with AX=4602h, this intercept is used by DOS to
  2813.        avoid corruption of the Windows real-mode heap's end sentinel
  2814. SeeAlso: AX=1700h,AX=4602h
  2815. --------D-2F4602-----------------------------
  2816. INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
  2817.     AX = 4602h
  2818. Return: ???
  2819. Note:    the DOS 5+ kernel intercepts this function and copies the
  2820.       previously-saved MCB from the DOS data segment into the MCB following
  2821.       the caller's PSP memory block; in conjunction with AX=4601h, this
  2822.       intercept is used by DOS to avoid corruption of the Windows real-mode
  2823.       heap's end sentinel
  2824. SeeAlso: AX=1700h,AX=4601h
  2825. --------E-2F46-------------------------------
  2826. INT 2F U - Windows/286 DOS Extender
  2827.     AH = 46h
  2828.     AL = subfunction (03h,04h)
  2829. Return: ???
  2830. Note:    these two subfunctions are called by MS Windows 3.0
  2831. --------v-2F4653CX0002-----------------------
  2832. INT 2F - F-PROT v1.x only - F-LOCK.EXE - API
  2833.     AX = 4653h ('FS')
  2834.     CX = 0002h
  2835.     BX = subfunction
  2836.         0000h  installation check
  2837.         Return: AX = FFFFh
  2838.         0001h  uninstall
  2839.         Return: AX,BX,ES destroyed
  2840.         0002h  disable (v1.08 and below only)
  2841.         0003h  enable (v1.08 and below only)
  2842. Program: F-LOCK is part of the shareware F-PROT virus/trojan protection
  2843.       package by Fridrik Skulason
  2844. SeeAlso: AX=4653h/CX=0003h,AX=CA00h,INT 21/AX=4BEEh
  2845. Index:    installation check;F-LOCK|uninstall;F-LOCK
  2846. --------v-2F4653CX0003-----------------------
  2847. INT 2F - F-PROT v1.x only - F-XCHK.EXE - API
  2848.     AX = 4653h ('FS')
  2849.     CX = 0003h
  2850.     BX = subfunction
  2851.         0000h  installation check
  2852.         Return: AX = FFFFh
  2853.         0001h  uninstall
  2854.         Return: AX,BX,ES destroyed
  2855. Program: F-XCHK is part of the shareware F-PROT virus/trojan protection
  2856.       package by Fridrik Skulason
  2857. SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0004h,AX=CA00h
  2858. Index:    installation check;F-XCHK|uninstall;F-XCHK
  2859. --------v-2F4653CX0004-----------------------
  2860. INT 2F - F-PROT v1.x only - F-POPUP.EXE - API
  2861.     AX = 4653h ('FS')
  2862.     CX = 0004h
  2863.     BX = subfunction
  2864.         0000h  installation check
  2865.         Return: AX = FFFFh
  2866.         0001h  uninstall
  2867.         Return: AX,BX,ES destroyed
  2868.         0002h  disable (v1.08 and below only)
  2869.            display message (v1.14+)
  2870.             other registers: ???
  2871.         0003h  enable (v1.08 and below only)
  2872.            display message (v1.14+)
  2873.             other registers: ???
  2874.             Return: AX = key pressed by user
  2875. Program: F-POPUP is part of the shareware F-PROT virus/trojan protection
  2876.       package by Fridrik Skulason
  2877. SeeAlso: AX=4653h/CX=0003h,AX=4653h/CX=0005h,AX=CA00h
  2878. Index:    installation check;F-POPUP|uninstall;F-POPUP
  2879. --------v-2F4653CX0005-----------------------
  2880. INT 2F - F-PROT v1.x only - F-DLOCK.EXE - API
  2881.     AX = 4653h ('FS')
  2882.     CX = 0005h
  2883.     BX = subfunction
  2884.         0000h installation check
  2885.         Return: AX = FFFFh
  2886.         0001h uninstall
  2887.         Return: AX,BX,ES destroyed
  2888. Program: F-DLOCK is part of the shareware F-PROT virus/trojan protection
  2889.       package by Fridrik Skulason
  2890. SeeAlso: AX=4653h/CX=0004h,AX=CA00h
  2891. Index:    installation check;F-DLOCK|uninstall;F-DLOCK
  2892. ----------2F4653CX0007-----------------------
  2893. INT 2F - F-PROT v2.x - VIRSTOP - ENABLE/DISABLE BOOTSECTOR READ CHECKING
  2894.     AX = 4653h ('FS')
  2895.     CX = 0007h
  2896.     BL = new state of bootsector checking (01h = disabled)
  2897. Program: VIRSTOP is the resident virus-checker from Fridrik Skulason's F-PROT
  2898.       virus/trojan protection package
  2899. ----------2F4653CX0008-----------------------
  2900. INT 2F - F-PROT v2.x - ???
  2901.     AX = 4653h ('FS')
  2902.     CX = 0008h
  2903.     ???
  2904. Return: ???
  2905. Note:    called by F-PROT v2.x VIRSTOP
  2906. ----------2F4653CX0008-----------------------
  2907. INT 2F - F-PROT v2.x - VIRSTOP - INSTALLATION CHECK
  2908.     AX = 4653h ('FS')
  2909.     CX = 0008h
  2910. Return: AX = 5346h if installed
  2911.         BX = version???
  2912.         DS:SI -> ASCIZ name of file containing virus signatures
  2913.         DS:DI -> 80-byte buffer for ???
  2914. --------W-2F4680-----------------------------
  2915. INT 2F U - MS Windows v3.0 - INSTALLATION CHECK
  2916.     AX = 4680h
  2917. Return: AX = result
  2918.         0000h MS Windows 3.0 running in real (/R) or standard (/S) mode,
  2919.           or DOS 5 DOSSHELL active
  2920.         nonzero  no Windows, Windows prior to 3.0, or Windows3 in enhanced
  2921.           mode
  2922. Note:    Windows 3.1 finally provides an installation check which works in all
  2923.       modes (see AX=160Ah)
  2924. SeeAlso: AX=1600h,AX=160Ah
  2925. ----------2F47-------------------------------
  2926. INT 2F U - ???
  2927.     AH = 47h
  2928.     ???
  2929. Return: ???
  2930. Note:    reportedly called by Microsoft BASIC Compiler v7.0
  2931. --------K-2F4800-----------------------------
  2932. INT 2F - DOS 5+ DOSKEY - INSTALLATION CHECK
  2933.     AX = 4800h
  2934. Return: AL = nonzero if installed (DOS 5.0 and 6.0 return AX=AA02h)
  2935.         ES = segment of DOSKEY resident portion
  2936. Note:    DOSKEY chains if AL is not 00h or 10h on entry
  2937. SeeAlso: AX=4800h"PCED",AX=4810h
  2938. --------K-2F4800-----------------------------
  2939. INT 2F - PCED v2.1 - INSTALLATION CHECK
  2940.     AX = 4800h
  2941. Return: AX = AACDh if installed
  2942.         ES = segment of PCED kernel (PCED has multiple code segments)
  2943. Program: PCED v2.1 is a command line editor/history/macro facility by
  2944.       Cove Software.  It is the commercial version of the freeware CED.
  2945. Notes:    DOSKEY also responds to this call if installed, returning AX=AA02h.
  2946.     unlike DOSKEY, PCED does *not* chain if AL contains an
  2947.       unsupported function code.  It IRETs with all registers intact.
  2948. --------K-2F4810-----------------------------
  2949. INT 2F - DOS 5+ DOSKEY, PCED v2.1 - READ INPUT LINE FROM CONSOLE
  2950.     AX = 4810h
  2951.     DS:DX -> line buffer (see #0692 at INT 21/AH=0Ah)
  2952. Return: AX = 0000h if successful
  2953. Notes:    the first byte (length) of the buffer MUST be 80h, or DOSKEY chains to
  2954.       the previous handler; PCED allows sizes other than 80h
  2955.     if the user's input is a macro name, no text is placed in the buffer
  2956.       even though AX=0000h on return; the program must immediately issue
  2957.       this call again to retrieve the expansion of the macro.  Similarly,
  2958.       if the user enters a special parameter such as $*, this call must
  2959.       be repeated to retrieve the expansion; on the second call, DOSKEY
  2960.       overwrites the macro name on the screen with its expansion.
  2961.     unlike DOSKEY, PCED expands all macros on the first call, so it is
  2962.       not necessary to make two calls; since the buffer is not empty on
  2963.       return, DOSKEY-aware programs will not make the second call
  2964.     DOSKEY chains if AL is not 00h or 10h on entry
  2965. SeeAlso: AX=4800h,INT 21/AH=0Ah
  2966. --------K-2F48C0-----------------------------
  2967. INT 2F - PCED v2.1 - PCED API
  2968.     AX = 48C0h
  2969.     DX = API function code
  2970.     other registers as required by the specified function
  2971. Return: CF clear if successful
  2972.     CF set on error
  2973.         AX = PCED error code
  2974.     other registers as appropriate for API function
  2975. Program: PCED v2.1 is a command line editor/history/macro facility by
  2976.       Cove Software.  It is the commercial version of the freeware CED.
  2977. Note:    the full API information is available from Cove Software
  2978. SeeAlso: AX=4800h"PCED",AX=48C1h,AX=48C2h,AX=48C3h
  2979. --------U-2F48C1BL00-------------------------
  2980. INT 2F - PCED/VSTACK - INSTALLATION CHECK
  2981.     AX = 48C1h
  2982.     BL = 00h
  2983. Return: AX = 0000h if installed
  2984.         BX = VSTACK resident segment
  2985. Program: VSTACK is a resident backscroll utility included as part of the PCED
  2986.       package by Cove Software
  2987. Note:    chains if BL <> 00h on entry
  2988. SeeAlso: AX=48C0h,AX=48C2h
  2989. --------U-2F48C2BL00-------------------------
  2990. INT 2F - PCED/ATTRIB - INSTALLATION CHECK
  2991.     AX = 48C2h
  2992.     BL = 00h
  2993. Return: AX = 0000h if installed
  2994.         BX = ATTRIB resident segment
  2995. Program: ATTRIB is a resident file attribute changer included as part of the
  2996.       PCED package by Cove Software
  2997. Note:    chains if BL <> 00h on entry
  2998. SeeAlso: AX=48C0h,AX=48C1h,AX=48C3h
  2999. --------K-2F48C3BL00-------------------------
  3000. INT 2F - PCED/KEYDEF - INSTALLATION CHECK
  3001.     AX = 48C3h
  3002.     BL = 00h
  3003. Return: AX = 0000h if installed
  3004.         BX = KEYDEF resident segment
  3005. Program: KEYDEF is a resident keyboard redefinition utility included as part
  3006.       of the PCED package by Cove Software
  3007. Note:    chains if BL <> 00h on entry
  3008. SeeAlso: AX=48C0h,AX=48C2h,AX=48C4h
  3009. --------U-2F48C4BL00-------------------------
  3010. INT 2F - PCED/FLIST - INSTALLATION CHECK
  3011.     AX = 48C4h
  3012.     BL = 00h
  3013. Return: AX = 0000h if installed
  3014.         BX = FLIST resident segment
  3015. Program: FLIST is a resident filelist processor included as part of the PCED
  3016.       package by Cove Software
  3017. Note:    chains if BL <> 00h on entry
  3018. SeeAlso: AX=48C0h,AX=48C3h,AX=48C5h
  3019. --------U-2F48C5BL00-------------------------
  3020. INT 2F - PCED/ASSOC - INSTALLATION CHECK
  3021.     AX = 48C5h
  3022.     BL = 00h
  3023. Return: AX = 0000h if installed
  3024.         BX = ASSOC resident segment
  3025. Program: ASSOC is a resident utility included as part of the PCED package which
  3026.       associates files with executable programs based on their extensions
  3027. Note:    chains if BL > 02h on entry
  3028. SeeAlso: AX=48C0h,AX=48C4h,AX=48C5h/BL=01h,AX=48C5h/BL=02h
  3029. --------U-2F48C5BL01-------------------------
  3030. INT 2F - PCED/ASSOC - GET VERSION
  3031.     AX = 48C5h
  3032.     BL = 01h
  3033. Return: AX = 0000h if installed
  3034.         BX = binary ASSOC version (BL = major, BH = minor)
  3035. Note:    chains if BL > 02h on entry
  3036. SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=02h
  3037. --------U-2F48C5BL02-------------------------
  3038. INT 2F - PCED/ASSOC - ASSOCIATION TEST
  3039.     AX = 48C5h
  3040.     BL = 02h
  3041.     DS:SI -> ASCIZ filename
  3042. Return: AX = status
  3043.         0000h if filename is unknown
  3044.         0001h if there is an association defined for the file
  3045.     BX destroyed
  3046. Program: ASSOC is a resident utility included as part of the PCED package which
  3047.       associates files with executable programs based on their extensions
  3048. Note:    chains if BL > 02h on entry
  3049. SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=01h
  3050. ----------2F49-------------------------------
  3051. INT 2F U - ???
  3052.     AH = 49h
  3053.     ???
  3054. Return: ???
  3055. Note:    reportedly called by DOS 5.0 installation
  3056. --------D-2F4A00CX0000-----------------------
  3057. INT 2F CU - DOS 5+ - FLOPPY-DISK LOGICAL DRIVE CHANGE NOTIFICATION
  3058.     AX = 4A00h
  3059.     CX = 0000h
  3060.     DH = new drive number
  3061.     DL = current drive number
  3062. Return: CX = FFFFh to skip "Insert diskette for drive X:" message
  3063. Note:    called by MS-DOS 5.0+ IO.SYS just before displaying the message
  3064.       "Insert diskette for drive X:" on single-floppy systems
  3065. --------D-2F4A01-----------------------------
  3066. INT 2F - DOS 5+ - QUERY FREE HMA SPACE
  3067.     AX = 4A01h
  3068. Return: BX = number of bytes available in HMA (0000h if DOS not using HMA)
  3069.     ES:DI -> start of available HMA area (FFFFh:FFFFh if not using HMA)
  3070. Notes:    called by Windows 3.1 DOSX.EXE
  3071.     supported by Novell DOS 7
  3072. SeeAlso: AX=4310h,AX=4A02h
  3073. --------D-2F4A02-----------------------------
  3074. INT 2F - DOS 5+ - ALLOCATE HMA SPACE
  3075.     AX = 4A02h
  3076.     BX = number of bytes
  3077. Return: ES:DI -> start of allocated HMA block or FFFFh:FFFFh
  3078.     BX = number of bytes actually allocated (rounded up to next paragraph
  3079.           for DOS 5.0 and 6.0)
  3080. Notes:    this call is not valid unless DOS is loaded in the HMA (DOS=HIGH)
  3081.     called by Windows 3.1 DOSX.EXE
  3082.     supported by Novell DOS 7
  3083. SeeAlso: AX=4A01h
  3084. --------T-2F4A05-----------------------------
  3085. INT 2F U - DOS 5+ DOSSHELL - TASK SWITCHING API???
  3086.     AX = 4A05h
  3087.     SI = function
  3088.         0000h reset???
  3089.         0001h ???
  3090.         ES:BP -> 80-byte buffer containing ???
  3091.         0002h ???
  3092.         0003h ???
  3093.         0004h ???
  3094.         BL = ???
  3095.         0005h ???
  3096.         0006h get ???
  3097.         Return: ES:SI -> ???
  3098.         0007h get ???
  3099.         Return: AX = ???
  3100.         0008h get ???
  3101.         Return: DX:AX -> ??? (internal control data of some kind)
  3102.         0009h get ???
  3103.         Return: ES:SI -> ??? (apparently identical to function 0006h)
  3104.         000Ah ???
  3105.         BL = length of buffer
  3106.         ES:BP -> buffer containing ???
  3107.         000Bh get ???
  3108.         Return: AX = ???
  3109.         000Ch ???
  3110.         BL = ???
  3111.         Return: if BL nonzero on entry
  3112.                 DX:AX -> ???
  3113.             if BL = 00h on entry
  3114.                 ES:SI -> ???
  3115. Notes:    DOSSHELL chains to the previous handler if SI is not one of the values
  3116.       listed above
  3117.     the DOSSWAP.EXE module calls functions 03h,04h,05h,07h,08h,09h,0Ch
  3118.     the Windows 3.1 DSWAP.EXE and WSWAP.EXE task switchers use these calls
  3119. SeeAlso: AX=4B01h
  3120. --------D-2F4A06-----------------------------
  3121. INT 2F CU - DOS 5+ - DOS SUPERVISOR "REBOOT PANEL" - ADJUST MEMORY SIZE
  3122.     AX = 4A06h
  3123.     DX = segment following last byte of conventional memory
  3124. Return: DX = segment following last byte of memory available for use by DOS
  3125. Desc:    used to override the default memory size when booting diskless
  3126.       workstations
  3127. Notes:    called by MS-DOS 5+ IO.SYS startup code if the signature "RPL" is
  3128.       present three bytes beyond the INT 2F handler; this call overrides
  3129.       the value returned by INT 12
  3130.     hooked by RPL code at the top of memory to protect itself from being
  3131.       overwritten; DOS builds a memory block with owner = 0008h and name
  3132.       "RPL" which must be freed by the RPL code when it is done
  3133. SeeAlso: INT 12"BIOS",INT 18"BOOT HOOK"
  3134. --------N-2F4A07-----------------------------
  3135. INT 2F U - RESERVED FOR PROTMAN SUPPORT
  3136.     AX = 4A07h
  3137.     ???
  3138. Return: ???
  3139. --------c-2F4A10BX0000-----------------------
  3140. INT 2F - SMARTDRV v4.00+ - INSTALLATION CHECK AND HIT RATIOS
  3141.     AX = 4A10h
  3142.     BX = 0000h
  3143.     CX = EBABh (v4.1+; see Note)
  3144. Return: AX = BABEh if installed
  3145.         DX:BX = cache hits
  3146.         DI:SI = cache misses
  3147.         CX = number of dirty cache elements
  3148.         BP = version in BCD (4.10 = 0410h)
  3149. Notes:    most of the SMARTDRV API, including this call, is supported by
  3150.       PC-Cache v8.0 and recent versions of the Norton Caches
  3151.     if DBLSPACE.BIN is installed but SMARTDRV has not yet been installed,
  3152.       then calls of this function with CX<>EBABh on entry cause
  3153.       DBLSPACE.BIN to display the error message
  3154.       "Cannot run SMARTDrive 4.0 with DoubleSpace" and abort the caller
  3155.       with INT 21/AX=4C00h
  3156.     SMARTDRV v3.x had a completely different API using IOCTL calls, which
  3157.       was also supported by the Norton Caches
  3158. SeeAlso: AX=4A10h/BX=0001h,AX=4A10h/BX=0004h,AX=4A10h/BX=0005h
  3159. SeeAlso: AX=4A10h/BX=0007h,AX=4A10h/BX=1234h,AX=4A11h/BX=0000h
  3160. SeeAlso: INT 21/AX=4402h"SMARTDRV",INT 21/AX=4403h"SMARTDRV"
  3161. --------c-2F4A10BX0000-----------------------
  3162. INT 2F U - Novell NWCACHE - ???
  3163.     AX = 4A10h
  3164.     BX = 0000h
  3165.     CX = 0EDCh ('EDC' = Novell European Development Center)
  3166. Return: ???
  3167. SeeAlso: AX=4A10h/BX=0001h"NWCACHE"
  3168. --------c-2F4A10BX0001-----------------------
  3169. INT 2F - SMARTDRV v4.00+ - FLUSH BUFFERS (COMMIT CACHE)
  3170.     AX = 4A10h
  3171.     BX = 0001h
  3172. Note:    this function is also supported by PC-Cache v8.0.
  3173. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0002h,INT 21/AH=0Dh
  3174. --------c-2F4A10BX0001-----------------------
  3175. INT 2F U - Novell NWCACHE - ???
  3176.     AX = 4A10h
  3177.     BX = 0001h
  3178.     CX = 0EDCh ('EDC' = Novell European Development Center)
  3179. Return: ???
  3180. SeeAlso: AX=4A10h/BX=0000h"NWCACHE"
  3181. --------c-2F4A10BX0002-----------------------
  3182. INT 2F - SMARTDRV v4.00+ - RESET CACHE
  3183.     AX = 4A10h
  3184.     BX = 0002h
  3185. Note:    this function is also supported by PC-Cache v8.0.
  3186. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0001h
  3187. --------c-2F4A10BX0003-----------------------
  3188. INT 2F - SMARTDRV v4.00+ - STATUS
  3189.     AX = 4A10h
  3190.     BX = 0003h
  3191.     BP = drive number (0=A, 1=B, etc.)
  3192.     DL = subfunction
  3193.         00h only get information
  3194.         01h turn on read cache
  3195.         02h turn off read cache
  3196.         03h turn on write cache
  3197.         04h turn off write cache
  3198.         ---NWCACHE---
  3199.         05h ???
  3200.         06h ???
  3201. Return: AX = BABEh if OK
  3202.     DL = status (see #2080)
  3203.     DL = FFh if drive does not exist
  3204. Notes:    If the read cache is off, reads will not be cached, but writes will
  3205.       continue to be cached if the write-cache is enabled.
  3206.     this function is also supported by PC-Cache v8.0.
  3207. SeeAlso: AX=4A10h/BX=0000h
  3208.  
  3209. Bitfields for SMARTDRV status:
  3210. Bit(s)    Description    (Table 2080)
  3211.  7    not cached
  3212.  6    write-through (not write-cached)
  3213.  0-5    real drive number (0=A, 1=B...)
  3214. --------c-2F4A10BX0004-----------------------
  3215. INT 2F - SMARTDRV v4.00+ - GET CACHE SIZE
  3216.     AX = 4A10h
  3217.     BX = 0004h
  3218. Return: AX = size in elements of full-sized cache
  3219.     BX = current size in elements
  3220.     CX = size of one element in bytes
  3221.     DX = number of elements under Windows
  3222. Note:    this function is also supported by PC-Cache v8.0.
  3223. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0005h
  3224. --------c-2F4A10BX0005-----------------------
  3225. INT 2F - SMARTDRV v4.00+ - GET DOUBLE-BUFFER STATUS
  3226.     AX = 4A10h
  3227.     BX = 0005h
  3228.     BP = drive number (0=A, 1=B...)
  3229. Return: AX = BABEh if double-buffered
  3230.         ES:DI -> 16-byte array of status bytes for fixed disks (see #2081)
  3231. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0006h
  3232.  
  3233. (Table 2081)
  3234. Values for SMARTDRV status byte:
  3235.  00h    state unknown
  3236.  FFh    drive double-buffered
  3237.  else    not double-buffered
  3238. --------c-2F4A10BX0006-----------------------
  3239. INT 2F CU - SMARTDRV v4.00+ - CHECK IF DRIVE CACHEABLE
  3240.     AX = 4A10h
  3241.     BX = 0006h
  3242.     CL = drive number (01h = A:)
  3243. Return: AX = 0006h if drive should not be cached by SMARTDRV
  3244. Note:    called by SMARTDRV at startup to determine whether it should cache
  3245.       a particular drive
  3246. SeeAlso: AX=4A10h/BX=0000h
  3247. --------c-2F4A10BX0007-----------------------
  3248. INT 2F - SMARTDRV v4.00+ - GET DEVICE DRIVER FOR DRIVE
  3249.     AX = 4A10h
  3250.     BX = 0007h
  3251.     BP = drive number (00h=A:)
  3252. Return: DL = unit number within device driver
  3253.     ES:DI -> device driver header for drive (see #0987)
  3254. Note:    this function is also supported by PC-Cache v8.0.
  3255.     this call is reported to always return the driver header of the
  3256.       standard block driver (A:-C:+) for SmartDrive v5.00 from MS-DOS 6.2
  3257. SeeAlso: AX=4A10h/BX=0000h,AX=4A11h/BX=0003h,AX=4A11h/BX=0004h
  3258. --------c-2F4A10BX0008-----------------------
  3259. INT 2F - SMARTDRV v4.20+ - GET/SET FLUSH BEFORE PROMPT, CD-ROM SUPPORT
  3260.     AX = 4A10h
  3261.     BX = 0008h
  3262.     DL = subfunction
  3263.         00h set
  3264.         DH = new states
  3265.             bit 0: flush before prompt
  3266.             bits 1-7 reserved (0)
  3267.         01h get
  3268.         Return: DH = status flags
  3269.                 bit 0: (v4.2+) flush before prompt
  3270.                 bit 1: (v5.0+) CD-ROM caching support installed
  3271. Note:    v4.2 was an interim release to fix problems in the SMARTDRV included
  3272.       with MS-DOS 6.00; v5.00 is included with MS-DOS 6.2
  3273. --------c-2F4A10BX000A-----------------------
  3274. INT 2F - SMARTDRV v4.00+ - GET ELEMENT STATUS TABLE
  3275.     AX = 4A10h
  3276.     BX = 000Ah
  3277. Return: ES:BX -> information pointer table (see #2082)
  3278. Note:    this function is also supported by PC-Cache v8.0.
  3279. SeeAlso: AX=4A10h/BX=0000h
  3280.  
  3281. Format of SMARTDRV information pointer table:
  3282. Offset    Size    Description    (Table 2082)
  3283.  00h    WORD    offset of ??? byte/word array (byte if elements < 2000h bytes)
  3284.  02h    WORD    offset of dirty flag byte/word array (byte if elts < 2000h)
  3285.         each byte/word is a bit string of the dirty sectors in element
  3286.  04h    WORD    offset of word array containing low halves of unique
  3287.           identifiers for the corresponding element's contents
  3288.  06h    WORD    offset of word array containing high halves of unique
  3289.           identifiers for the corresponding element's contents
  3290.  08h    WORD    offset of WORD containing current number of elements in cache
  3291. --------c-2F4A10BX1234-----------------------
  3292. INT 2F - SMARTDRV v4.00+ - SIGNAL SERIOUS ERROR
  3293.     AX = 4A10h
  3294.     BX = 1234h
  3295. Desc:    this function pops up a message box saying that a serious error
  3296.       occurred and to hit R to retry, then waits for the keypress
  3297. Note:    this function is also supported by PC-Cache v8.0.
  3298. SeeAlso: AX=4A10h/BX=0000h
  3299. --------k-2F4A11BX0000-----------------------
  3300. INT 2F - DBLSPACE.BIN - "GetVersion" - INSTALLATION CHECK
  3301.     AX = 4A11h
  3302.     BX = 0000h
  3303. Return: AX = 0000h (successful)
  3304.     BX = 444Dh ("DM")
  3305.     CL = first drive letter used by DBLSPACE (41h ['A'] = A:)
  3306.     CH = number of drive letters used by DBLSPACE
  3307.     DX = internal DBLSPACE.BIN version number (bits 14-0)
  3308.         bit 15 set if DBLSPACE.BIN has not yet been relocated to final
  3309.           position in memory (i.e. DBLSPACE.SYS /MOVE)
  3310. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  3311.       disk-compression software bundled with MS-DOS 6.0 and 6.20
  3312. Notes:    this function is also supported by the version of SuperStor bundled
  3313.       with IBM DOS 6.x and "preloading" versions of Stacker
  3314.     the complete DBLSPACE.BIN API is still supported by MS-DOS 6.22's
  3315.       DRVSPACE.BIN
  3316. SeeAlso: AX=4A11h/BX=0001h,AX=4A11h/BX=0002h,AX=4A11h/BX=0003h
  3317. SeeAlso: AX=4A11h/BX=0005h,AX=4A11h/BX=0007h,AX=4A11h/BX=FFFFh
  3318. SeeAlso: INT 21/AX=4404h"DBLSPACE"
  3319. --------k-2F4A11BX0001-----------------------
  3320. INT 2F - DBLSPACE.BIN - "GetDriveMapping" - GET DRIVE MAPPING
  3321.     AX = 4A11h
  3322.     BX = 0001h
  3323.     DL = drive number (0=A:)
  3324. Return: AX = status (see also #2083)
  3325.         0000h successful
  3326.         if DL was compressed drive,
  3327.             BL = host drive (bit 7 set if drive is compressed)
  3328.         else if DL was host drive,
  3329.             BL = compressed drive
  3330.         else
  3331.             BL = specified drive (if available for DoubleSpace)
  3332.         BH = DoubleSpace sequence number
  3333.         other error code (0101h) (see #2083)
  3334.         apparently never returned for the MS-DOS 6.2 DoubleSpace
  3335. Note:    the compressed volume file for the specified compressed drive is
  3336.       host:\DBLSPACE.sequence
  3337. SeeAlso: AX=4A11h/BX=0000h
  3338.  
  3339. (Table 2083)
  3340. Values for DBLSPACE function status:
  3341.  0000h    successful
  3342.  0100h    bad function
  3343.  0101h    invalid drive
  3344.  0102h    not a compressed drive
  3345.  0103h    drive already swapped
  3346.  0104h    drive not swapped
  3347. --------k-2F4A11BX0002-----------------------
  3348. INT 2F - DBLSPACE.BIN - "Swap Drive" - SWAP DRIVE LETTERS OF CVF AND HOST DRIVE
  3349.     AX = 4A11h
  3350.     BX = 0002h
  3351.     DL = drive number (0=A:) of compressed drive to swap with its host
  3352. Return: AX = status (0000h,0101h,0102h,0103h) (see #2083)
  3353. Note:    this function is intended for use by DBLSPACE.EXE only
  3354. SeeAlso: AX=4A11h/BX=0000h
  3355. --------k-2F4A11BX0003-----------------------
  3356. INT 2F - DBLSPACE.BIN - "DSGetEntryPoints" - GET DEVICE DRIVER ENTRY POINTS
  3357.     AX = 4A11h
  3358.     BX = 0003h
  3359.     CL = drive number (0=A:) of compressed drive
  3360. Return: CL = FFh on error (not compressed drive)
  3361.     CL <> FFh driver unit number of host drive
  3362.         ES:SI -> device driver's strategy routine
  3363.         ES:DI -> device driver's interrupt routine
  3364.     BX destroyed
  3365. Note:    in conjunction with subfunction 0004h, this call allows disk caches
  3366.       like SMARTDRV to apply a device driver wrapper to DoubleSpaced
  3367.       drives just like SMARTDRV applies to regular block devices
  3368. SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0004h
  3369. --------k-2F4A11BX0004-----------------------
  3370. INT 2F - DBLSPACE.BIN - "DSSetEntryPoints" - SET DEVICE DRIVER ENTRY POINTS
  3371.     AX = 4A11h
  3372.     BX = 0004h
  3373.     CL = drive number (0=A:) of compressed drive
  3374.     DL = unit number for new driver entry points
  3375.     DH = 00h
  3376.     ES:SI -> device driver strategy routine to call for drive
  3377.     ES:DI -> device driver interrupt routine to call for drive
  3378. Return: CL = FFh on error (not a compressed drive)
  3379.     BX destroyed
  3380. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  3381.       disk-compression software bundled with MS-DOS 6.0
  3382. Note:    in conjunction with subfunction 0003h, this call allows disk caches
  3383.       like SMARTDRV to apply a device driver wrapper to DoubleSpaced
  3384.       drives just like SMARTDRV applies to regular block devices
  3385. SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0003h
  3386. --------k-2F4A11BX0005-----------------------
  3387. INT 2F - DBLSPACE.BIN - "ActivateDrive" - MOUNT COMPRESSED DRIVE
  3388.     AX = 4A11h
  3389.     BX = 0005h
  3390.     DL = drive number (0=A:) to assign to new drive
  3391.     ES:SI -> activation record (see #2084)
  3392. Return: status returned in activation record (see #2085)
  3393. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0006h
  3394.  
  3395. Format of DBLSPACE activation record:
  3396. Offset    Size    Description    (Table 2084)
  3397.  00h  2 BYTEs    signature "MD" (4Dh 44h)
  3398.  02h    BYTE    4Dh ('M') mount command
  3399.  03h    BYTE    error code (set to FFh before calling) (see #2085)
  3400.  04h    BYTE    host drive number (0=A:)
  3401.  05h    ???    DISK_UNIT structure (not documented)
  3402.  
  3403. (Table 2085)
  3404. Values for DBLSPACE Mount error code:
  3405.  00h    successful
  3406.  01h    drive letter not available for DoubleSpace
  3407.  02h    drive letter already in use
  3408.  03h    no more disk units (increase MaxRemovableDrives in .INI)
  3409.  09h    CVF too fragmented
  3410. --------k-2F4A11BX0006-----------------------
  3411. INT 2F - DBLSPACE.BIN - "DeactivateDrive" - UNMOUNT COMPRESSED DRIVE
  3412.     AX = 4A11h
  3413.     BX = 0006h
  3414.     DL = drive number (0=A:) to unmount
  3415. Return: AX = status (0000h,0102h) (see #2083)
  3416. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0005h
  3417. --------k-2F4A11BX0007-----------------------
  3418. INT 2F - DBLSPACE.BIN - "GetDriveSpace" - GET SPACE AVAIL ON COMPRESSED DRIVE
  3419.     AX = 4A11h
  3420.     BX = 0007h
  3421.     DL = compressed drive number (0=A:)
  3422. Return: AX = status (0000h,0102h) (see also #2083)
  3423.         0000h successful
  3424.         DS:SI -> free space record (see #2086)
  3425. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  3426.       disk-compression software bundled with MS-DOS 6.0
  3427. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
  3428.  
  3429. Format of DBLSPACE free space record:
  3430. Offset    Size    Description    (Table 2086)
  3431.  00h    DWORD    total number of sectors in drive's sector heap
  3432.  04h    DWORD    number of free sectors in drive's sector heap
  3433. --------k-2F4A11BX0008-----------------------
  3434. INT 2F - DBLSPACE.BIN - "GetFileFragmentSpace" - GET SIZE OF FRAGMENT HEAP
  3435.     AX = 4A11h
  3436.     BX = 0008h
  3437.     DL = compressed drive number (0=A:)
  3438. Return: AX = status (0000h,0102h) (see also #2083)
  3439.         0000h successful
  3440.         BX = maximum entries in File Fragment heap
  3441.         CX = available entries in File Fragment heap
  3442. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0007h,AX=4A11h/BX=0009h
  3443. --------k-2F4A11BX0009-----------------------
  3444. INT 2F - DBLSPACE.BIN - "GetExtraInfo" - DETERMINE NUMBER OF DISK_UNIT STRUCTS
  3445.     AX = 4A11h
  3446.     BX = 0009h
  3447.     DL = compressed drive number (0=A:)
  3448. Return: AX = status (see also #2083)
  3449.         0000h successful
  3450.         CL = number of DISK_UNIT structures allocated
  3451.               (see AX=4A11h/BX=0005h)
  3452.         CH = DoubleGuard enabled-checks bitflags in bits 6-0 (DOS 6.2)
  3453. Note:    the DoubleGuard checks are enabled or disabled as a block by the
  3454.       DoubleGuard= line in DBLSPACE.INI; they may be individually set with
  3455.       the CheckSum= line.
  3456. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
  3457. --------k-2F4A11BX000A-----------------------
  3458. INT 2F - DBLSPACE.BIN v6.2 - SET AUTOMOUNT DRIVES
  3459.     AX = 4A11h
  3460.     BX = 000Ah
  3461.     CX:DX = bitmask of drives on which to enable AutoMount
  3462.         (DX bit 0 = A:, CX bit 0 = P:, etc.)
  3463. Return: AX = 0000h if supported
  3464.         CX:DX = old mask or 0000h:0000h on error
  3465.     BX destroyed
  3466. SeeAlso: AX=4A11h/BX=000Bh
  3467. --------k-2F4A11BX000B-----------------------
  3468. INT 2F - DBLSPACE.BIN v6.2 - GET AUTOMOUNT DRIVES
  3469.     AX = 4A11h
  3470.     BX = 000Bh
  3471. Return: AX = 0000h if supported
  3472.         CX:DX = mask of drives with AutoMount enabled
  3473.         0000h:0000h on error
  3474.     BX destroyed
  3475. SeeAlso: AX=4A11h/BX=000Ah
  3476. --------k-2F4A11BXFFFE-----------------------
  3477. INT 2F U - DBLSPACE.BIN - RELOCATE
  3478.     AX = 4A11h
  3479.     BX = FFFEh
  3480.     ES = segment to which to relocate DBLSPACE.BIN
  3481. Return: ???
  3482. Notes:    called by DBLSPACE.SYS to relocate DBLSPACE.BIN to its final position
  3483.       in memory
  3484.     this function also unhooks and discards the code providing this
  3485.       function and AX=4A11h/BX=FFFFh
  3486.     this function is also supported by the version of SuperStor bundled
  3487.       with IBM DOS 6.x and "preloading" versions of Stacker
  3488. SeeAlso: AX=4A11h/BX=FFFFh
  3489. --------k-2F4A11BXFFFF-----------------------
  3490. INT 2F U - DBLSPACE.BIN - GET RELOCATION SIZE
  3491.     AX = 4A11h
  3492.     BX = FFFFh
  3493. Return: AX = number of paragraphs needed by DBLSPACE.BIN
  3494. Note:    used by DBLSPACE.SYS to relocate the DBLSPACE driver to its final
  3495.       position in memory
  3496.     this function is also supported by the version of SuperStor bundled
  3497.       with IBM DOS 6.x and "preloading" versions of Stacker
  3498. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=FFFEh
  3499. --------k-2F4A12CX4D52-----------------------
  3500. INT 2F - Microsoft Realtime Compression Interface (MRCI) - RAM-BASED SERVER
  3501.     AX = 4A12h
  3502.     CX = 4D52h ("MR")
  3503.     DX = 4349h ("CI")
  3504. Return: CX = 4943h ("IC") if installed
  3505.     DX = 524Dh ("RM") if installed
  3506.         ES:DI -> MRCINFO structure (see #0621 at INT 1A/AX=B001h)
  3507. Note:    this call is functionally identical to INT 1A/AX=B001h, but should be
  3508.       called first, as the latter call is used for the first, ROM-based
  3509.       MRCI server, while this call is used for RAM-based servers which
  3510.       may be partially or entirely replacing a prior server
  3511. SeeAlso: AX=4A12h/CX=5354h,INT 1A/AX=B001h
  3512. --------k-2F4A12CX5354-----------------------
  3513. INT 2F - Stacker 4 LZS Compression Interface (LZSAPI)
  3514.     AX = 4A12h
  3515.     CX = 5354h ("ST")
  3516.     DX = 4143h ("AC")
  3517. Return: AX = 4F4Bh ("OK") if installed
  3518.     CX = 7374h ("st") if installed
  3519.     DX = 6163h ("ac") if installed
  3520.         ES:DI -> entry point in LZSAPI server (usually, driver
  3521.               STACKER.COM) containing far address of an actual
  3522.               LZSINFO structure (see #2087)
  3523. SeeAlso: AX=4A12h/CX=4D52h,INT 25/AX=CDCDh
  3524.  
  3525. Format of LZSINFO structure:
  3526. Offset    Size    Description    (Table 2087)
  3527.  00h  6 BYTEs    signature "LZSAPI"
  3528.  06h    WORD    server version (200 (0C8h) for Stacker 4 and Stacker Anywhere)
  3529.  08h  4 BYTEs    vendor signature
  3530.         "STAC" = Stac Electronics, Inc.
  3531.  0Ch  6 BYTEs    ???
  3532.  12h    WORD    bit flags: server status/capabilities (see #2088)
  3533.  14h    DWORD    -> Stacker 3.X-compatible compression procedure
  3534.  18h    DWORD    -> Stacker 3.X-compatible decompression procedure
  3535.  1Ch  4 BYTEs    reserved (always set to 0)
  3536.  20h    DWORD    -> incremental Stacker 3.x-compatible compression procedure
  3537.           (see #2089)
  3538.  24h  4 BYTEs    ???
  3539.  28h    DWORD    -> incremental Stacker 3.x-compatible decompression procedure
  3540.           (see #2090)
  3541.  2Ch  4    BYTES    ???
  3542.  30h    DWORD    -> new (Stacker 4) compression procedure
  3543.  34h  4 BYTEs    ???
  3544.  38h    DWORD    -> new (Stacker 4) decompression procedure
  3545. Notes:    Stacker 4 usally keeps two different data-compression algorithms in
  3546.       memory (preferably in XMA):
  3547.         1) new (Stacker 4) data compression algorithm (4K LZ77 with hashing
  3548.           and static Huffman encoding), and
  3549.         2) old (Stacker 3.x-compatible) one (2K LZ77 with hashing), which
  3550.           is used to work with STACVOL files created under older
  3551.           versions of Stacker.
  3552.  
  3553. Bitfields for LZSAPI capabilities:
  3554. Bit(s)    Description    (Table 2088)
  3555.  0    ???
  3556.  1    busy/error flag
  3557.  2-10    ???
  3558.  11    maximum compressor/decompressor presented
  3559.  
  3560. (Table 2089)
  3561. Call Stacker 3.x-style non-incremental functions with:
  3562.     STACK:    DWORD    return address for compress/decompress procedure
  3563.         WORD    compression algorithm parameters (see #2091)
  3564.         WORD    size of destination buffer (in bytes)
  3565.         DWORD    address of destination buffer
  3566.         WORD    size of source buffer (in bytes)
  3567.         DWORD    address of source buffer
  3568. Return: (compression/decompression procedure)
  3569.     AX = size of resulting data in destination buffer
  3570.         0000h if error (either destination buffer too small or error in
  3571.           compressed data)
  3572.  
  3573. (Table 2090)
  3574. Call Stacker 4-style incremental procedures with:
  3575.     STACK:    DWORD    return address for compr./decompr. procedure
  3576.         DWORD    address of LZSSWAP structure (see #2092)
  3577.             if 0000:0000, procedure uses non-incremental technique
  3578.         WORD    compression algorithm parameters (see #2091)
  3579.         WORD    size of destination buffer (in bytes)
  3580.         DWORD    address of destination buffer
  3581.         WORD    size of source buffer (in bytes)
  3582.         DWORD    address of source buffer
  3583.  
  3584. (Table 2091)
  3585. Values for Compression algorithm parameters:
  3586. Value    Compression level (/P=xx parameter)
  3587.  07F9h      1
  3588.  0621h      2
  3589.  0625h      3
  3590.  0665h      4
  3591.  0669h      5
  3592.  06E9h      6
  3593.  06EDh      7
  3594.  07D1h      8
  3595.  07D9h      9
  3596.  
  3597. Format of LZSSWAP structure:
  3598. Offset    Size    Description    (Table 2092)
  3599.  00h  2 BYTEs    signature "CS"
  3600.  02h  6 BYTEs    reserved
  3601.  08h    DWORD    address of destination buffer swapping procedure
  3602.  0Ch    DWORD    address of stack swapping procedure
  3603. --------k-2F4A13-----------------------------
  3604. INT 2F U - DBLSPACE.BIN - GET ??? ENTRY POINTS
  3605.     AX = 4A13h
  3606. Return: AX = 134Ah if supported
  3607.         ES:BX -> entry point record (see #2093)
  3608. SeeAlso: AX=4A11h/BX=0000h
  3609.  
  3610. Format of DBLSPACE entry point record:
  3611. Offset    Size    Description    (Table 2093)
  3612.  00h    DWORD    pointer to FAR function for ???
  3613.  04h  5 BYTEs    FAR JUMP instruction to ???
  3614. ----------2F4A15BX0000-----------------------
  3615. INT 2F - MS EMM386.EXE v4.46+ - INSTALL I/O VIRTUALIZATION HANDLER
  3616.     AX = 4A15h
  3617.     BX = 0000h (function number)
  3618.     DX = starting I/O address
  3619.     EDX high word = ending I/O address
  3620.     CX = number of ports to trap
  3621.     DS:SI -> I/O dispatch table (see #2094)
  3622.     DI = size of client's code and data
  3623. Return: CF clear if successful
  3624.     CF set on error
  3625. Notes:    this interface is only available in virtual-86 mode; the I/O handlers
  3626.       will be called in protected mode
  3627.     only ports 0100h-FFFFh may be trapped; EMM386 reserved ports 0000h-
  3628.       00FFh
  3629.  
  3630. Format of EMM386 I/O dispatch table [array]:
  3631. Offset    Size    Description    (Table 2094)
  3632.  00h    WORD    I/O port offset (added to DX to get actual port number)
  3633.  02h    WORD    offset of I/O handler for port (see #2095)
  3634.  
  3635. (Table 2095)
  3636. Values EMM386 I/O dispatch function is called with:
  3637.     CX = Ring0 code selector for I/O handler's segment
  3638.     DS = Ring0 data selector for I/O handler's segment (alias of CS)
  3639.     EDX = faulting I/O address
  3640.     ECX = direction (00000008h for byte output, 00000000h for byte input)
  3641.     EAX = data in/out
  3642. Return: (via FAR RET)
  3643.     CF clear if I/O access successfully virtualized
  3644.     CF set if access not virtualized (default handler will be called to
  3645.           perform the I/O)
  3646. SeeAlso: #2094
  3647. --------D-2F4A33-----------------------------
  3648. INT 2F - Windows95 - CHECK MS-DOS VERSION 7
  3649.     AX = 4A33h
  3650. Return: AX = 0000h for MS-DOS 7.00+
  3651.         (officially) BX,DX,SI,DS may be destroyed
  3652.         (undoc) DS:DX -> ASCIZ primary shell executable name
  3653.         (undoc) DS:SI -> CONFIG.SYS SHELL= command line (counted string)
  3654.         (undoc) BH = ??? (0000h)
  3655.         (undoc) BL = ??? (0000h)
  3656.     AX nonzero (usually 4A33h) if MS-DOS 6- or other DOS
  3657. SeeAlso: AX=1611h,INT 21/AH=30h
  3658. --------N-2F4B-------------------------------
  3659. INT 2F - LAN Manager 2.0 DOS Enh NETWKSTA.EXE - NETWORK WORKSTATION REDIRECTOR
  3660.     AH = 4Bh
  3661.     ???
  3662. Return: ???
  3663. Note:    LAN Manager enhanced mode adds features beyond the standard redirector
  3664.       file/printer services
  3665. SeeAlso: AX=118Ah,AX=4100h,AH=42h
  3666. --------T-2F4B01-----------------------------
  3667. INT 2F C - DOS 5+ TASK SWITCHER - BUILD CALLOUT CHAIN
  3668.     AX = 4B01h
  3669.     CX:DX -> task switcher entry point (see #2098)
  3670.     ES:BX = 0000h:0000h
  3671. Return: ES:BX -> callback info structure (see #2096) or 0000h:0000h
  3672. Notes:    called by the task switcher
  3673.     this function is hooked by clients which require notification of task
  3674.       switcher activities; the call must first be passed on to the prior
  3675.       handler with registers unchanged using a simulated interrupt.     On
  3676.       return, the client must build a callback info structure and store
  3677.       the returned ES:BX in the "next" field, then return the address of
  3678.       its own callback info structure.
  3679.     a client program must add itself to the notification chain if it
  3680.       provides services to other programs; before terminating, it must
  3681.       remove itself from the chain by calling the task switcher's entry
  3682.       point with AX=0005h (see #2098)
  3683.     the task switcher entry point should not be saved, as it is subject to
  3684.       change and will be provided on any notification call
  3685.     the Windows 3.1 Standard Mode supports this API
  3686. SeeAlso: AX=160Bh,AX=4B02h
  3687.  
  3688. Format of task switcher callback info structure:
  3689. Offset    Size    Description    (Table 2096)
  3690.  00h    DWORD    pointer to next callback info structure
  3691.  04h    DWORD    pointer to notification function (see #2097)
  3692.  08h    DWORD    reserved
  3693.  0Ch    DWORD    address of zero-terminated list of API info structures
  3694.         (see #2100)
  3695.  
  3696. (Table 2097)
  3697. Values task switcher notification function is called with:
  3698.     AX = function
  3699.         0000h switcher initialization
  3700.         Return: AX = status
  3701.                 0000h if OK to load
  3702.                 nonzero to abort task switcher
  3703.         0001h query suspend
  3704.         BX = session ID
  3705.         Return: AX = status
  3706.                 0000h if OK to switch session
  3707.                 0001h if not
  3708.         0002h suspend session
  3709.         BX = session ID
  3710.         interrupts disabled
  3711.         Return: AX = 0000h if OK to switch session
  3712.                = 0001h if not
  3713.         0003h activate session
  3714.         BX = session ID
  3715.         CX = session status flags
  3716.             bit 0: set if first activation of session
  3717.             bits 1-15: reserved (0)
  3718.         interrupts disabled
  3719.         Return: AX = 0000h
  3720.         0004h session active
  3721.         BX = session ID
  3722.         CX = session status flags
  3723.             bit 0: set if first activation of session
  3724.             bits 1-15: reserved (0)
  3725.         Return: AX = 0000h
  3726.         0005h create session
  3727.         BX = session ID
  3728.         Return: AX = 0000h if OK to create session
  3729.                = 0001h if not
  3730.         0006h destroy session
  3731.         BX = session ID
  3732.         Return: AX = 0000h
  3733.         0007h switcher termination
  3734.         BX = flags
  3735.             bit 0: set if calling switcher is only switcher loaded
  3736.             bits 1-15: reserved (0)
  3737.         Return: AX = 0000h
  3738.     ES:DI -> task switcher entry point (see #2098)
  3739. Notes:    function 0000h is generally called by the program which controls or
  3740.       invokes the task switcher, rather than by the task switcher itself;
  3741.       the entry point supplied to this function is not necessarily the
  3742.       entry point to the task switcher itself, and may be 0000h:0000h.  If
  3743.       any client indicates that loading is not possible, all clients will
  3744.       be called with function 0007h; thus it is possible for a client to
  3745.       receive a termination notice without a corresponding initialization
  3746.       notice.
  3747.     except for functions 0002h and 0003h, the notification handler is
  3748.       called with interrupts enabled and may make any INT 21h function
  3749.       call; interrupts must not be enabled in functions 0002h and 0003h
  3750.     function 0007h may be called with ES:DI = 0000h:0000h if the entry
  3751.       point is no longer valid
  3752. --------T-2F4B02BX0000-----------------------
  3753. INT 2F - DOS 5+ TASK SWITCHER - INSTALLATION CHECK
  3754.     AX = 4B02h
  3755.     BX = 0000h
  3756.     ES:DI = 0000h:0000h
  3757. Return: ES:DI = 0000h:0000h if task switcher not loaded
  3758.     ES:DI -> task switcher entry point (see #2098) if loaded
  3759.         AX = 0000h
  3760. Notes:    the returned entry point is that for the most-recently loaded task
  3761.       switcher; the entry points for prior task switchers may be determined
  3762.       with the "get version" call (see #2098)
  3763.     this function is supported by PC Tools v8+ CPTASK
  3764. SeeAlso: AX=4A05h,AX=4B03h
  3765.  
  3766. (Table 2098)
  3767. Call task switcher entry point with:
  3768.     AX = 0000h get version
  3769.         Return: CF clear if successful
  3770.                 AX = 0000h
  3771.                 ES:BX -> task switcher version struct (see #2099)
  3772.             CF set if unsupported function
  3773.     AX = 0001h test memory region
  3774.         ES:DI -> first byte to be tested
  3775.         CX = size of region to test
  3776.         Return: CF clear if successful
  3777.                 AX = memory type of tested region
  3778.                 0000h global
  3779.                 0001h global and local
  3780.                 0002h local (replaced on session switch)
  3781.             CF set if unsupported function
  3782.     AX = 0002h suspend switcher
  3783.         ES:DI -> new task switcher's entry point
  3784.         Return: CF clear if successful
  3785.                 AX = state
  3786.                 0000h switcher has been suspended
  3787.                 0001h switcher not suspended, new switcher must
  3788.                     abort
  3789.                 0002h switcher not suspended, but new switcher
  3790.                     may run anyway
  3791.             CF set if unsupported function
  3792.     AX = 0003h resume switcher
  3793.         ES:DI -> new task switcher's entry point
  3794.         Return: CF clear if successful
  3795.                 AX = 0000h
  3796.             CF set if unsupported function
  3797.     AX = 0004h hook notification chain
  3798.         ES:DI -> callback info structure to be added to chain
  3799.               (see #2096)
  3800.         Return: CF clear if successful
  3801.                 AX = 0000h
  3802.             CF set if unsupported function
  3803.     AX = 0005h unhook notification chain
  3804.         ES:DI -> callback info structure to be removed from chain
  3805.               (see #2096)
  3806.         Return: CF clear if successful
  3807.                 AX = 0000h
  3808.             CF set if unsupported function
  3809.     AX = 0006h query API support
  3810.         BX = asynchronous API identifier
  3811.         Return: CF clear if successful
  3812.                 AX = 0000h
  3813.                 ES:BX -> API info structure (see #2100) for the
  3814.                       client which provides the highest
  3815.                       level of API support
  3816.             CF set if unsupported function
  3817.  
  3818. Format of task switcher version structure:
  3819. Offset    Size    Description    (Table 2099)
  3820.  00h    WORD    major version of supported protocol  (current protocol is 1.0)
  3821.  02h    WORD    minor version of supported protocol
  3822.  04h    WORD    major version of task switcher
  3823.  06h    WORD    minor version of task switcher
  3824.  08h    WORD    task switcher ID (see AX=4B03h)
  3825.  0Ah    WORD    operation flags
  3826.         bit 0: set if task switcher disabled
  3827.         bits 1-15: reserved (0)
  3828.  0Ch    DWORD    pointer to ASCIZ task switcher name
  3829.         ("MS-DOS Shell Task Switcher" for DOSSHELL task switcher)
  3830.  10h    DWORD    pointer to previous task switcher's entry point or 0000h:0000h
  3831.  
  3832. Format of API info structure:
  3833. Offset    Size    Description    (Table 2100)
  3834.  00h    WORD    size of structure in bytes (000Ah)
  3835.  02h    WORD    API identifier
  3836.         0001h NetBIOS
  3837.         0002h 802.2
  3838.         0003h TCP/IP
  3839.         0004h LAN Manager named pipes
  3840.         0005h Novell NetWare IPX
  3841.  04h    WORD    major version \ of highest version of API for which the support
  3842.  06h    WORD    minor version / level specified in the next field is provided
  3843.  08h    WORD    support level
  3844.         0001h minimal support
  3845.         0002h API-level support
  3846.         0003h switcher compatibility
  3847.         0004h seamless compatibility
  3848. --------T-2F4B03-----------------------------
  3849. INT 2F - DOS 5+ TASK SWITCHER - ALLOCATE SWITCHER ID
  3850.     AX = 4B03h
  3851.     ES:DI -> task switcher entry point (see #2098)
  3852. Return: AX = 0000h
  3853.     BX = switcher ID (0001h-000Fh), or 0000h if no more available
  3854. Notes:    if a task switcher has determined that it is the first to be loaded, it
  3855.       must allocate an identifier for itself and provide this function to
  3856.       all subsequent task switchers; if it is not the first to be loaded,
  3857.       it must call this function to allocate an ID.     The switcher ID is
  3858.       used as the high four bits of all session identifiers to ensure
  3859.       unique session IDs.
  3860.     if no more switcher IDs are available, the new task switcher making the
  3861.       call must terminate or disable itself
  3862.     the task switcher providing the identifiers may call the new task
  3863.       switcher's entry point as needed
  3864.     this call is available from within DOSSHELL even if the task switcher
  3865.       is not installed
  3866.     this function is supported by PC Tools v8+ CPTASK, but appears to
  3867.       always return an ID of 0000h
  3868. SeeAlso: AX=4B02h,AX=4B04h
  3869. --------T-2F4B04-----------------------------
  3870. INT 2F - DOS 5+ TASK SWITCHER - FREE SWITCHER ID
  3871.     AX = 4B04h
  3872.     BX = switcher ID
  3873.     ES:DI -> task switcher entry point (see #2098)
  3874. Return: AX = 0000h
  3875.     BX = status
  3876.         0000h successful
  3877.         other error (invalid ID or ID not allocated)
  3878. Notes:    called by a task switcher when it exits, unless it was the first loaded
  3879.       and is providing the support for AX=4B03h and AX=4B04h
  3880.     the task switcher providing the identifiers may call the terminating
  3881.       task switcher's entry point as needed
  3882.     this call is available from within DOSSHELL even if the task switcher
  3883.       is not installed
  3884.     this call is supported by PC Tools v8+ CPTASK, but appears to return
  3885.       sucessfully no matter which ID is given
  3886. SeeAlso: AX=4B02h,AX=4B03h
  3887. --------T-2F4B05-----------------------------
  3888. INT 2F C - DOS 5+ TASK SWITCHER - IDENTIFY INSTANCE DATA
  3889.     AX = 4B05h
  3890.     ES:BX = 0000h:0000h
  3891.     CX:DX -> task switcher entry point (see #2098)
  3892. Return: ES:BX -> startup info structure (see #2101) or 0000h:0000h
  3893. Notes:    called by task switcher
  3894.     clients with instance data should hook this call, pass it through to
  3895.       the previous handler with unchanged registers using a simulated
  3896.       interrupt.  On return, the client should create a startup info
  3897.       structure (see #2101), store the returned ES:BX in the "next"
  3898.       field, and return the address of the created structure in ES:BX
  3899.     all MS-DOS function calls are available from within this call
  3900. SeeAlso: AX=1605h,AX=160Bh,AX=4B02h
  3901.  
  3902. Format of task switcher startup info structure:
  3903. Offset    Size    Description    (Table 2101)
  3904.  00h  2 BYTEs    major, minor version of info structure (03h,00h)
  3905.  02h    DWORD    pointer to next startup info structure or 0000h:0000h
  3906.  06h    DWORD    0000h:0000h (ignored)
  3907.  0Ah    DWORD    ignored
  3908.  0Eh    DWORD    pointer to instance data records (see #2102)
  3909.  
  3910. Format of one instance data record in array:
  3911. Offset    Size    Description    (Table 2102)
  3912.  00h    DWORD    address of instance data (end of array if 0000h:0000h)
  3913.  04h    WORD    size of instance data
  3914. --------W-2F4B06-----------------------------
  3915. INT 2F - MS Windows - WIN.COM - GET ??? POINTER TO WIN.COM
  3916.     AX = 4B06h
  3917. Return: AX = 0000h
  3918.     ES:BX -> ??? function in WIN.COM
  3919. Note:    the entry point is called with
  3920.         AX = 0001h or 0003h
  3921.         BX = ???
  3922. SeeAlso: AX=4B80h
  3923. --------W-2F4B20-----------------------------
  3924. INT 2F - MS Windows 3+ - WIN.COM - SET PROGRAM TO EXECUTE ON EXIT
  3925.     AX = 4B20h
  3926. Return: AX = 0000h if successful
  3927.         DX:CX -> 256-byte buffer for pathname and commandline (see #2103)
  3928. Notes:    when the Windows function ExitWindows is called with an exit code of
  3929.       44h, WIN.COM executes the program specified in the returned buffer
  3930.       and then restarts Windows
  3931. SeeAlso: AX=4B21h
  3932.  
  3933. Format of WIN.COM buffer:
  3934. Offset    Size    Description    (Table 2103)
  3935.  00h 128 BYTEs    ASCIZ pathname of program to execute
  3936.  80h 128 BYTEs    commandline for program (count byte, command tail, 0Dh)
  3937. --------W-2F4B21-----------------------------
  3938. INT 2F - Windows95 - WIN.COM - GET NESTING LEVEL
  3939.     AX = 4B21h
  3940. Return: AH = 00h if WIN.COM already active
  3941.         AL = number of instances of WIN.COM in memory
  3942. SeeAlso: AX=4B20h
  3943. --------K-2F4B52-----------------------------
  3944. INT 2F - KeyRus v7.3 - API
  3945.     AX = 4B52h ('KR')
  3946.     BL = function number
  3947.         00h installation check
  3948.         Return: AL = 82h if installed
  3949.                 BH = major version number
  3950.                 BL = minor version number
  3951.                 ES destroyed
  3952.         01h get driver status
  3953.         Return: AL??? = current status (see #2104)
  3954.         02h set driver state
  3955.         AL = new driver state (see #2104)
  3956.         03h blank screen (if blanking enabled when TSR was loaded)
  3957.         04h unblank screen
  3958.         4Ch switch to English keyboard mode
  3959.         90h switch to Russian keyboard mode
  3960. Return:
  3961.  
  3962. Bitfields for KeyRus driver status:
  3963. Bit(s)    Description    (Table 2104)
  3964.  1-0    language mode
  3965.     00 Latin
  3966.     01 Russian
  3967.     10 Alternative
  3968.     11 unused
  3969.  2    allow character loading (if disabled, use ROM fonts)
  3970.  3    English keyboard support
  3971.  7-4    used internally (read-only)
  3972. --------W-2F4B80-----------------------------
  3973. INT 2F - MS Windows - WSWAP.EXE - RESET INTERNAL VARIABLES
  3974.     AX = 4B80h
  3975. Return: nothing
  3976. Note:    called by WINOLDAP.MOD
  3977. SeeAlso: AX=4B06h
  3978. --------p-2F4C-------------------------------
  3979. INT 2F U - Advanced Power Management
  3980.     AH = 4Ch
  3981.     AL = function
  3982.         00h version check
  3983.         01h suspend system requested
  3984.         FFh suspend/resume battery notification
  3985.     ???
  3986. Return: ???
  3987. ----------2F4D-------------------------------
  3988. INT 2F U - ???
  3989.     AH = 4Dh
  3990.     ???
  3991. Return: ???
  3992. Note:    reportedly called by Kana Kanji Converter and MSKK
  3993. --------N-2F4E53BL00-------------------------
  3994. INT 2F - SilverNET v2+ - INSTALLATION CHECK
  3995.     AX = 4E53h ("NS")
  3996.     BL = 00h (function "installation check")
  3997.     BH = module ID (see #2105)
  3998. Return: AX = 0000h if specified module installed
  3999.     BX = 4E53h if installed
  4000. Program: SilverNET is an SMB-compatible peer-to-peer NOS for DOS or
  4001.       Windows systems, by Net-Source, Inc. of Santa Clara, CA.
  4002. SeeAlso: AX=4E53h/BL=01h,AX=4E53h/BL=02h,AX=B800h,AX=B809h
  4003.  
  4004. (Table 2105)
  4005. Values for SilverNET module ID:
  4006.  01h    SilverCACHE
  4007.  02h    Workstation
  4008.  03h    NetBIOS
  4009.  04h    Peer
  4010.  20h    NS Share
  4011.  80h    NetWare help TSR
  4012. --------N-2F4E53BL01-------------------------
  4013. INT 2F - SilverNET - GET RUNTIME PARAMETER
  4014.     AX = 4E53h ("NS")
  4015.     BL = 01h (function "get runtime parameter")
  4016.     BH = module ID (see #2105)
  4017.     CX = parameter index (see #2106,#2108,#2109)
  4018. Return: AX = WORD value at specified index (see #2107)
  4019. Desc:    retrieve a word of data from the specified SilverNET module
  4020.  
  4021. (Table 2106)
  4022. Values for SilverNET Peer parameter index (* = read-only):
  4023.  00h *    maximum outstanding SMB buffers
  4024.  02h *    maximum logged-in nodes
  4025.  04h *    number of shareable resources
  4026.  06h *    number of characters to print per time slice
  4027.  08h *    number of printers that can be shared
  4028.  0Ah *    number of nodes logged in
  4029.  0Ch *    number of files to allow opened
  4030.  0Eh    how fast to despool (/PSLICE)
  4031.  10h    audit flag
  4032.  24h *    far pointer to resource table (each resource is 96 bytes in length)
  4033.  32h *    far pointer to SFT (internal if SilverNET files > CONFIG.SYS files,
  4034.     else DOS SFT)
  4035.  36h    spool flags (see #2107)
  4036.  
  4037. Bitfields for spool flags:
  4038. Bit(s)    Description    (Table 2107)
  4039.  0    LPT1 needs despooling
  4040.  1    LPT2 needs despooling
  4041.  2    LPT2 needs despooling
  4042.  4    COM1 needs despooling
  4043.  5    COM2 needs despooling
  4044.  6    COM3 needs despooling
  4045.  
  4046. (Table 2108)
  4047. Values for NS Share parameter index (* = read-only):
  4048.  00h    version number (high byte = minor, low byte = major)
  4049.  10h *    segment of first lock record (other records in consecutive paragraphs)
  4050.     (if PSP field = 0000h, lock record is free)
  4051.  12h *    maximum possible number of lock records
  4052.  14h *    starting segment of sharing buffer
  4053.     (NS Share's sharing records are identical to DOS SHARE except that
  4054.       fields which are normally offsets into SHARE are segment numbers)
  4055.  18h *    size of sharing buffer in paragraphs
  4056.  1Ah *    total free paragraphs in sharing buffer
  4057.  1Ch *    current number of shared files
  4058.  1Eh *    current number of locked records
  4059.  
  4060. (Table 2109)
  4061. Values for Workstation parameter index (* = read-only):
  4062.  00h    version number (high byte = minor, low byte = major)
  4063.  02h *    size of each network buffer for file operations
  4064.  04h *    number of redirector file buffers
  4065.  06h *    size of each print cache buffer
  4066.  08h *    number of network LPT printers
  4067.  0Ch    flush time in ticks (idle time on network printer before flushing)
  4068.  0Eh    (16 WORDs) last active time for each printer
  4069.  2Eh *    stub segment if program split into two parts
  4070.  60h    receive name number for datagram listens
  4071.  62h *    18-byte machine name
  4072.  74h *    LASTDRIVE (01h = A:, etc.)
  4073.  7Ch    row number of message box on screen
  4074.  7Eh    message time in clock ticks
  4075.  82h *    number of network adapters in use
  4076.  84h    station ID broadcast flag (never set on redirectors)
  4077.  96h *    NetBIOS names left
  4078.  98h *    NCBs left
  4079.  9Ah *    sessions left
  4080.  A2h *    total number of network printers (LPT+COM)
  4081.  A4h *    number of serial network printers
  4082.  A8h *    segment containing file cache buffers
  4083.  AAh *    segment containing print cache buffers
  4084.  ACh *    bytes remaining free in HMA before program loaded
  4085.  AEh *    start of free memory in HMA
  4086.  B2h *    flag: using HMA
  4087. --------N-2F4E53BL02-------------------------
  4088. INT 2F - SilverNET - SET RUNTIME PARAMETERS
  4089.     AX = 4E53h ("NS")
  4090.     BL = 02h (function "set runtime parameters")
  4091.     BH = module ID (see #2105)
  4092.     CX = parameter index (see #2108,#2109)
  4093.     DX = new value for specified parameter
  4094. Desc:    set a WORD value in the specified SilverNET module
  4095. Note:    not all indexed parameters are writable; modifying a read-only
  4096.       parameter can result in system crashes
  4097. SeeAlso: AX=4E53h/BL=00h,AX=4E53h/BL=01h
  4098. --------N-2F5100-----------------------------
  4099. INT 2F U - ODIHLP.EXE - INSTALLATION CHECK
  4100.     AX = 5100h
  4101. Return: AL = FFh if installed
  4102.         BX = 0000h
  4103.         DX:SI -> signature string "ODI$HLP$"
  4104. Program: ODIHLP is a real-mode helper allowing the Windows for Workgroups 3.11
  4105.       protected-mode NDIS3 protocol to work with real-mode ODI drivers
  4106.       and LSL.COM
  4107. Note:    the returned signature string might be the first field of a structure
  4108. SeeAlso: AX=C000h"LSL.COM"
  4109. --------k-2F5200-----------------------------
  4110. INT 2F - JAM.SYS v1.10+ - "GetVersion" - INSTALLATION CHECK
  4111.     AX = 5200h
  4112. Return: AH = 80h (successful) if installed
  4113.     BX = internal JAM.SYS version number
  4114.     CX = size of JAMINFO structure (see #2110,#2111)
  4115.     DX = JAM.SYS segment address
  4116. Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
  4117.       Utilities by George A. Reznik and friends (JAM Software).
  4118. SeeAlso: AX=5201h
  4119.  
  4120. Format of JAMINFO v1.10 structure:
  4121. Offset    Size    Description    (Table 2110)
  4122.  00h 25 BYTEs    extended BIOS parameter block (BPB)
  4123.  19h 11 BYTEs    ???
  4124.  25h    DWORD    total number of sectors in JAM archive file
  4125.         (size of compressed data area)
  4126.  29h    BYTE    flags (see #2112)
  4127.  2Ah 127 BYTEs    full JAM archive file name
  4128.  A9h    WORD    the number of fragments in archive file
  4129.  ABh 96 BYTEs    archive file fragmentation list -
  4130.         array of 16 FRAGMENT structures (see #2113)
  4131. 10Bh    DWORD    address of the host-drive DPB (Drive Parameter Block)
  4132. 10Fh    DWORD    number of free sectors in JAM archive file
  4133. 113h    WORD    device status word (see #2114)
  4134. SeeAlso: #2111
  4135.  
  4136. Format of JAMINFO v1.20 structure:
  4137. Offset    Size    Description    (Table 2111)
  4138.  00h 25 BYTEs    extended BIOS parameter block (BPB)
  4139.  19h    BYTE    physical driver number
  4140.  1Ah    BYTE    reserved
  4141.  1Bh    BYTE    extended boot record signature
  4142.  1Ch    DWORD    volume serial number
  4143.  20h 11 BYTEs    volume label
  4144.  2Bh  8 BYTEs    file system ID
  4145.  33h    DWORD    total number of sectors in JAM archive file
  4146.         (size of compressed data area)
  4147.  37h    BYTE    flags (see #2112)
  4148.  38h 128 BYTEs    full JAM archive file name
  4149.  B8h    WORD    the number of fragments in archive file
  4150.  BAh 96 BYTEs    archive file fragmentation list -
  4151.         array of 16 FRAGMENT structures (see #2113)
  4152. 11Ah    DWORD    address of the host-drive DPB (Drive Parameter Block)
  4153. 11Eh    DWORD    number of free sectors in JAM archive file
  4154. 122h    WORD    device status word (see #2114)
  4155. Note:    the first 33h bytes are copied from the archive file's boot sector
  4156. SeeAlso: #2110
  4157.  
  4158. Bitfields for JAMINFO flags:
  4159. Bit(s)    Description    (Table 2112)
  4160.  2-0    reserved
  4161.  3    (v1.20+)
  4162.  4    enable direct write requests (Int 26h, non-DOS requests, etc.)
  4163.  5    read-only mode
  4164.  6    no write-behind caching
  4165.  7    full undelete-compatible allocation strategy
  4166. SeeAlso: #2110,#2111
  4167.  
  4168. Format of JAM FRAGMENT structure:
  4169. Offset    Size    Description    (Table 2113)
  4170.  00h    WORD    starting sector (low word)
  4171.  02h    BYTE    starting sector (high byte)
  4172.  03h    WORD    size of fragment (low word)
  4173.  05h    BYTE    size of fragment (high byte)
  4174. SeeAlso: #2110,#2111
  4175.  
  4176. (Table 2114)
  4177. Values for JAM.SYS status (high byte):
  4178.  00h    successful
  4179.  01h    drive is not a JAM drive
  4180.  02h    drive is already attached
  4181.  03h    archive file cluster size value is larger than driver's one
  4182.  04h    drive is not attached
  4183.  05h    drive is locked
  4184.  06h    drive is not locked
  4185.  07h    bad physical-level request
  4186.  08h    host drive reading/writing error
  4187.  09h    bad entries in JAM descriptor table
  4188.  0Ah    compressed data integrity error
  4189.  0Bh    archive file overflow
  4190.  0Ch    bad DOS request
  4191.  0Dh    incorrect parameters in JAMINFO structure
  4192. Note:    the low byte of the status is the DOS error code for the Host drive
  4193. SeeAlso: #1932 at INT 2F/AX=0802h
  4194. --------k-2F5201-----------------------------
  4195. INT 2F - JAM.SYS v1.10+ - "GetInfo" - GET COMPRESSED DRIVE INFORMATION
  4196.     AX = 5201h
  4197.     DL = compressed drive number (0-default, 1-A:, etc.)
  4198.     DS:BX -> buffer for JAMINFO structure (see #2110,#2111)
  4199. Return: AH = status (00h,01h) (see #2114)
  4200. SeeAlso: AX=5200h
  4201. --------k-2F5202-----------------------------
  4202. INT 2F - JAM.SYS v1.10+ - "Attach" - MOUNT COMPRESSED DRIVE
  4203.     AX = 5202h
  4204.     DL = drive number (0-default, 1-A:, etc.) to attach to the JAM
  4205.           archive file
  4206.     DS:BX -> pointer to JAMINFO structure (see #2110,#2111), which
  4207.           contains parameters of the JAM file to mount, and pointer
  4208.           to the host drive DPB (i.e. DPB of the drive on which the
  4209.           JAM file is located)
  4210. Return: AH = status (00h,02h,03h,08h,09h,0Dh) (see also #2114)
  4211.         03h archive file cluster size value is larger than driver's - not
  4212.           mounted
  4213.         09h bad entries in JAM descriptor table - file mounted read-only
  4214.     AL = host drive error code (see #1932 at INT 2F/AX=0802h)
  4215. SeeAlso: AX=5203h
  4216. --------k-2F5203-----------------------------
  4217. INT 2F - JAM.SYS v1.10+ - "Detach" - UNMOUNT COMPRESSED DRIVE
  4218.     AX = 5203h
  4219.     DL = drive number (0-default, 1-A:, etc.) to detach
  4220. Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #2114)
  4221.     AL = host drive error code (see #1932 at INT 2F/AX=0802h)
  4222. SeeAlso: AX=5202h
  4223. --------k-2F5204-----------------------------
  4224. INT 2F - JAM.SYS v1.10+ - "Lock" - LOCK COMPRESSED DRIVE
  4225.     AX = 5204h
  4226.     DL = drive number (0-default, 1-A:, etc.) to lock
  4227. Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #2114)
  4228.     AL = host drive error code (see #1932 at INT 2F/AX=0802h)
  4229. SeeAlso: AX=5205h, AX=5206h, AX=5207h
  4230. --------k-2F5205-----------------------------
  4231. INT 2F - JAM.SYS v1.10+ - "UnLock" - UNLOCK COMPRESSED DRIVE
  4232.     AX = 5205h
  4233.     DL = drive number (0-default, 1-A:, etc.) to unlock
  4234. Return: AH = status (00h,01h,04h,06h,08h,09h,0Dh) (see #2114)
  4235.     AL = host drive error code (see #1932 at INT 2F/AX=0802h)
  4236. SeeAlso: AX=5204h, AX=5206h, AX=5207h
  4237. Note:    Lock and UnLock functions were added to the JAM API to prevent
  4238.       asynchronous physical-level access (see AX=5206h,AX=5207h) to
  4239.       compressed data on JAM drives. In other words, two or more programs
  4240.       which use JAM API (say, JMAX optimizer and JCHKDSK - disk checker)
  4241.       cannot be run on the same JAM drive simultaneously.
  4242. --------k-2F5206-----------------------------
  4243. INT 2F - JAM.SYS v1.10+ - "Read" - PHYSICAL READ DATA FROM JAM ARCHIVE
  4244.     AX = 5206h
  4245.     DL = drive number (0-default, 1-A:, etc.)
  4246.     DS:BX -> disk transfer packet (see #2115)
  4247. Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #2114)
  4248.     AL = host drive error code (see #1932 at INT 2F/AX=0802h)
  4249. Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
  4250.       Utilities by George A. Reznik and friends (JAM Software).
  4251. SeeAlso: AX=5207h
  4252.  
  4253. Format of disk transfer packet:
  4254. Offset    Size    Description    (Table 2115)
  4255.  00h    DWORD    sector number
  4256.  04h    WORD    number of sectors to read(write)
  4257.  06h    DWORD    transfer address
  4258. --------k-2F5207-----------------------------
  4259. INT 2F - JAM.SYS v1.10+ - "Write" - PHYSICAL WRITE DATA TO JAM ARCHIVE
  4260.     AX = 5207h
  4261.     DL = drive number (0-default, 1-A:, etc.)
  4262.     DS:BX -> disk transfer packet (see #2115)
  4263. Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #2114)
  4264.     AL = host drive error code (see #1932 at INT 2F/AX=0802h)
  4265. SeeAlso: AX=5206h
  4266. --------p-2F53-------------------------------
  4267. INT 2F U - POWER.EXE - APM event broadcasting???
  4268.     AH = 53h
  4269.     AL = event???
  4270.         05h CPU idle
  4271.         0Bh PM event broadcast API
  4272. Return: ???
  4273. Note:    called by MS Windows 3.1 POWER.DRV; hooked by MS Mouse driver v8.20+
  4274.       and PC-Cache v8.0
  4275. SeeAlso: AX=530Bh,AX=5400h,INT 33/AX=002Fh
  4276. --------p-2F530B-----------------------------
  4277. INT 2F U - ??? (MOUSEPWR.COM, others) - ???
  4278.     AX = 530Bh
  4279.     BX = subfunction
  4280.         0003h ???
  4281.         0004h ???
  4282.     ???
  4283. Return: ???
  4284. Note:    it appears that subfunction 0003h reads or restores the current mouse
  4285.       settings (the MS Mouse driver hooks AX=530Bh), and 0004h might be
  4286.       the converse
  4287. --------p-2F5400-----------------------------
  4288. INT 2F U - POWER.EXE - INSTALLATION CHECK
  4289.     AX = 5400h
  4290. Return: AX = POWER.EXE version (AH = major, AL = minor) if installed
  4291.     BX = 504Dh ("PM")
  4292.     CF clear
  4293. Note:    called by MS Windows 3.1 POWER.DRV
  4294. SeeAlso: AH=53h,AX=5401h,AX=5402h,AX=5481h,AX=5482h
  4295. --------p-2F5401-----------------------------
  4296. INT 2F U - POWER.EXE - GET/SET POWER STATUS
  4297.     AX = 5401h
  4298.     BH = function
  4299.         00h get status
  4300.         Return: BL = current power management status (see #2116)
  4301.         01h set status
  4302.         BL = new power managment status (see #2116)
  4303. Return: AX = function status (see #2117)
  4304. Note:    called by MS Windows 3.1 POWER.DRV
  4305. SeeAlso: AH=53h,AX=5400h,AX=5402h,AX=5403h
  4306.  
  4307. Bitfields for power management status:
  4308. Bit(s)    Description    (Table 2116)
  4309.  0    POWER.EXE power management enabled
  4310.  1    APM firmware power management enabled
  4311.  2-7    reserved (0)
  4312. Notes:    bit 1 is ignored if there is no APM firmware
  4313.     bits 1-0: 00 = POWER OFF, 10 = POWER STD, 11 = POWER ADV
  4314.  
  4315. (Table 2117)
  4316. Values for POWER.EXE function status:
  4317.  0000h    successful
  4318.  0002h    "ERROR_PM_ALREADY_CONNECTED"
  4319.  0003h    "ERROR_PM_NOT_CONNECTED"
  4320.  0087h    "ERROR_PM_INVALID_PARAMETER"
  4321. --------p-2F5402-----------------------------
  4322. INT 2F U - POWER.EXE - GET/SET IDLE DETECTION STRATEGY
  4323.     AX = 5402h
  4324.     BH = subfunction
  4325.         00h get
  4326.         other set
  4327.         BL = detection strategy (00h-0Fh or FFh)
  4328. Return: BX = current/new detection strategy
  4329. SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5481h,AX=5482h
  4330. --------p-2F5403-----------------------------
  4331. INT 2F U - POWER.EXE - GET/SET ADVANCED POWER MANAGEMENT SETTING
  4332.     AX = 5403h
  4333.     BX = new power management setting or 0000h to get current setting
  4334. Return: AX = status
  4335.         0000h successful
  4336.         BX = power management setting (see #2118)
  4337.         other error code
  4338. SeeAlso: AX=5401h,AX=5480h
  4339.  
  4340. (Table 2118)
  4341. Values for power management setting:
  4342.  0001h-0005h "min"
  4343.  0006h         "reg"
  4344.  0007h-0008h "max"
  4345. --------t-2F5453-----------------------------
  4346. INT 2F - TesSeRact RAM-RESIDENT PROGRAM INTERFACE
  4347.     AX = 5453h
  4348.     BX = subfunction
  4349.         00h installation check
  4350.         CX = 0000h
  4351.         DS:SI -> 8-char blank-padded name (see #2119)
  4352.         Return: AX = FFFFh installed
  4353.                 CX = ID number of already-installed copy
  4354.             AX = anything else, not installed
  4355.                 CX = ID number for TSR when installed
  4356.         01h get user parameters
  4357.         CX = TSR ID number
  4358.         Return: AX = status
  4359.                 0000h successful
  4360.                 ES:BX -> user parameter block (see #2120)
  4361.                 nonzero failed
  4362.         02h check if hotkey in use
  4363.         CL = scan code of hot key (see #0005)
  4364.         Return: AX = FFFFh hot key conflicts with another TSR
  4365.                  otherwise safe to use the hotkey
  4366.         03h replace default critical error handler
  4367.         CX = TSR ID number
  4368.         DS:SI -> new routine for INT 24h
  4369.         Return: AX = nonzero, unable to install new handler
  4370.         04h get internal data area
  4371.         CX = TSR ID number
  4372.         Return: AX = status
  4373.                 0000h successful
  4374.                 ES:BX -> TSR's internal data area (see #2121)
  4375.                 nonzero, TSR not found
  4376.         05h set multiple hot keys
  4377.         CX = TSR ID number
  4378.         DL = number of additional hot keys to allocate
  4379.         DS:SI -> table of hot keys
  4380.             BYTE  hotkey scan code (see #0005)
  4381.             BYTE  hotkey shift state
  4382.             BYTE  flag value to pass to TSR (nonzero)
  4383.         Return: AX = nonzero, unable to install hot keys
  4384.         06h - 0Fh reserved
  4385.         10h enable TSR
  4386.         CX = TSR ID number
  4387.         Return: AX = nonzero, unable to enable
  4388.         11h disable TSR
  4389.         CX = TSR ID number
  4390.         Return: AX = nonzero, unable to disable
  4391.         12h unload TSR
  4392.         CX = TSR ID number
  4393.         Return: AX = nonzero, invalid TSR number
  4394.         Note: if any interrupts used by TSR have been grabbed by
  4395.             another TSR, the TesSeRact routines will wait until
  4396.             it is safe to remove the indicated TSR from memory
  4397.         13h restart TSR
  4398.         CX = TSR ID number of TSR which was unloaded but is still in
  4399.              memory
  4400.         Return: AX = nonzero, unable to restart TSR
  4401.         14h get status word
  4402.         CX = TSR ID number
  4403.         Return: AX = FFFFh invalid ID number
  4404.                = other, successful
  4405.                 BX = bit flags
  4406.         15h set status word
  4407.         CX = TSR ID number
  4408.         DX = new bit flags
  4409.         Return: AX = nonzero, unable to set status word
  4410.         16h get INDOS state at popup
  4411.         CX = TSR ID number
  4412.         Return: AX = 0000h successful
  4413.                 BX = value of INDOS flag
  4414.         17h - 1Fh reserved
  4415.         20h call user procedure
  4416.         CX = TSR ID number
  4417.         ES:DI -> user-defined data
  4418.         Return: AX = 0000h successful
  4419.         21h stuff keystrokes into keyboard buffer
  4420.         CX = TSR ID number
  4421.         DL = speed
  4422.             00h stuff keystrokes only when buffer is empty
  4423.             01h stuff up to four keystrokes per clock tick
  4424.             02h stuff up to 15 keystrokes per clock tick
  4425.         DH = scan code flag
  4426.             if zero, buffer contains alternating ASCII and scan codes
  4427.             if nonzero, buffer contains only ASCII codes
  4428.         SI = number of keystrokes
  4429.         ES:DI -> buffer to stuff
  4430.         Return: AX = 0000h success
  4431.                  F0F0h user aborted with ^C or ^Break
  4432.                  other unable to stuff keystrokes
  4433.         22h (v1.10) trigger popup
  4434.         CX = TSR ID number
  4435.         Return: AX = 0000h success, TSR will either pop up or beep to
  4436.                    indicate that it is unable to pop up
  4437.                  nonzero invalid ID number
  4438.         23h (v1.10) invoke TSR's background function
  4439.         CX = TSR ID number
  4440.         Return: AX = 0000h success
  4441.                  FFFFh not safe to call background function
  4442.                  nonzero invalid ID number
  4443.         24h - 2Fh reserved
  4444. Notes:    Borland's THELP.COM popup help system for Turbo Pascal and Turbo C
  4445.       (versions 1.x and 2.x only) fully supports the TesSeRact API, as
  4446.       do the SWAP?? programs by Innovative Data Concepts.
  4447.     AVATAR.SYS supports functions 00h and 01h (only the first three fields
  4448.       of the user parameter block) using the name "AVATAR  "
  4449. SeeAlso: AX=CAFEh,INT 16/AX=55FFh,INT 2D"AMIS"
  4450. Index:    installation check;TesSeRact TSR interface|uninstall;TesSeRact
  4451.  
  4452. (Table 2119)
  4453. Values for TesSeRact names:
  4454.  "AVATAR  "    AVATAR.SYS
  4455.  "QeditTSR"    TSR version of SemWare's Qedit editor
  4456.  "SCRNBLNK"    Trusted Access screen blanker
  4457.  
  4458. Format of TesSeRact User Parameter Block:
  4459. Offset    Size    Description    (Table 2120)
  4460.  00h  8 BYTEs    blank-padded TSR name
  4461.  08h    WORD    TSR ID number
  4462.  0Ah    DWORD    bitmap of supported functions
  4463.  0Eh    BYTE    scan code of primary hotkey (see #0005)
  4464.         00h = pop up when shift states match
  4465.         FFh = no popup (if shift state also FFh)
  4466.  0Fh    BYTE    shift state of primary hotkey
  4467.         FFh = no popup (if scan code also FFh)
  4468.  10h    BYTE    number of secondary hotkeys
  4469.  11h    DWORD    pointer to extra hotkeys set by func 05h
  4470.  15h    WORD    current TSR status flags
  4471.  17h    WORD    PSP segment of TSR
  4472.  19h    DWORD    DTA for TSR
  4473.  1Dh    WORD    default DS for TSR
  4474.  1Fh    DWORD    stack at popup
  4475.  23h    DWORD    stack at background invocation
  4476. Index:    hotkeys;TesSeRact TSR interface
  4477.  
  4478. Format of TSR internal data area:
  4479. Offset    Size    Description    (Table 2121)
  4480.  00h    BYTE    revision level of TesSeRact library
  4481.  01h    BYTE    type of popup in effect
  4482.  02h    BYTE    INT 08 occurred since last invocation
  4483.  03h    BYTE    INT 13 occurred since last invocation
  4484.  04h    BYTE    active interrupts
  4485.  05h    BYTE    active soft interrupts
  4486.  06h    BYTE    DOS major version
  4487.  07h    BYTE    how long to wait before popping up
  4488.  08h    DWORD    pointer to INDOS flag
  4489.  0CH    DWORD    pointer to DOS critical error flag
  4490.  10h    WORD    PSP segment of interrupted program
  4491.  12h    WORD    PSP segment of prog interrupted by INT 28
  4492.  14h    DWORD    DTA of interrupted program
  4493.  18h    DWORD    DTA of program interrupted by INT 28
  4494.  1Ch    WORD    SS of interrupted program
  4495.  1Eh    WORD    SP of interrupted program
  4496.  20h    WORD    SS of program interrupted by INT 28
  4497.  22h    WORD    SP of program interrupted by INT 28
  4498.  24h    DWORD    INT 24 of interrupted program
  4499.  28h  3 WORDs    DOS 3.0+ extended error info
  4500.  2Eh    BYTE    old BREAK setting
  4501.  2Fh    BYTE    old VERIFY setting
  4502.  30h    BYTE    were running MS WORD 4.0 before popup
  4503.  31h    BYTE    MS WORD 4.0 special popup flag
  4504.  32h    BYTE    enhanced keyboard call in use
  4505.  33h    BYTE    delay for MS WORD 4.0
  4506. 11 times (for INTs 08h,09h,13h,16h,1Ch,21h,28h,2Fh,1Bh,23h, and 24h):
  4507.     DWORD    old interrupt vector
  4508.     BYTE    interrupt number
  4509.     WORD    offset in TesSeRact code segment of new interrupt handler
  4510. --------p-2F5480-----------------------------
  4511. INT 2F U - POWER.EXE - GET/SET ???
  4512.     AX = 5480h
  4513.     BX = direction
  4514.         0000h get
  4515.         other set
  4516.     CX = size of buffer (at least 0010h)
  4517.     DS:SI -> buffer
  4518. Return: AX = status
  4519.         0000h successful
  4520.         other error code
  4521. SeeAlso: AX=5400h,AX=5481h,AX=548Fh
  4522. --------p-2F5481-----------------------------
  4523. INT 2F U - POWER.EXE - GET STATISTICS
  4524.     AX = 5481h
  4525.     BX = which statistics
  4526.         0000h idle detection
  4527.         0001h APM statistics
  4528.     CX = length of buffer in bytes
  4529.     DS:SI -> buffer for statistics (see #2122,#2123)
  4530. Return: AX = status
  4531.         0000h successful
  4532.         0071h "ERROR_PM_BUFFER_TOO_SMALL"
  4533.         0087h "ERROR_PM_INVALID_PARAMETER"
  4534. SeeAlso: AH=53h,AX=5400h,AX=5480h,AX=5402h,AX=5482h
  4535.  
  4536. Format of POWER.EXE idle detection statistics:
  4537. Offset    Size    Description    (Table 2122)
  4538.  00h    DWORD    "CPU_ON_TIME" total time CPU is active with POWER.EXE idle
  4539.           detection enabled, in timer ticks
  4540.  04h    DWORD    "CPU_IDLE_TIME" timer ticks during which CPU was idle
  4541.         (divide by previous to get idle    rate)
  4542.  08h    DWORD    total idle calls
  4543.  0Ch    DWORD    "TOTAL_APP_IDLE" total INT 2Fh idle calls
  4544.  10h    DWORD    "TOTAL_DOS_YIELD" total INT 28h idle calls
  4545.  14h    DWORD    "TOTAL_KEY_IDLE" total INT 16h idle calls
  4546.  18h    DWORD    "TOTAL_DOS_IDLE" total INT 2Ah idle calls
  4547.  
  4548. Format of APM statistics:
  4549. Offset    Size    Description    (Table 2123)
  4550.  00h    DWORD    "RESUME_COUNT" total number of resumes since last APM_ENABLE
  4551. --------p-2F5482-----------------------------
  4552. INT 2F U - POWER.EXE - GET/SET APM POLLING FREQUENCY
  4553.     AX = 5482h
  4554.     BX = new polling frequency or 0000h to get current frequency
  4555. Return: AX = 0000h (successful)
  4556.     BX = current frequency if BX=0000h on entry
  4557. SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5480h,AX=5481h,AX=548Fh
  4558. --------p-2F548F-----------------------------
  4559. INT 2F U - POWER.EXE - GET/SET ???
  4560.     AX = 548Fh
  4561.     BX = ??? or 0000h to get current ???
  4562. Return: AX = 0000h (successful)
  4563.     BX = current ???
  4564.     CX = ???
  4565. SeeAlso: AX=5400h,AX=5480h,AX=5482h
  4566. --------l-2F5500-----------------------------
  4567. INT 2F U - DOS 5+ - COMMAND.COM INTERFACE
  4568.     AX = 5500h
  4569. Return: AX = 0000h if an instance of COMMAND.COM is already running
  4570.     DS:SI -> entry point table
  4571. Notes:    used to access the shareable portion of COMMAND.COM, which may have
  4572.       been moved into the HMA; only the primary COMMAND.COM retains this
  4573.       portion
  4574.     procedures called from a dispatcher in COMMAND's resident portion;
  4575.       most assume that the segment address of the resident portion is on
  4576.       the stack and are thus not of general use
  4577. SeeAlso: AX=5501h
  4578. --------l-2F5501-----------------------------
  4579. INT 2F U - DOS 5+ - ROM COMMAND.COM INTERFACE
  4580.     AX = 5501h
  4581. Return: ???
  4582. Note:    used to determine whether the caller is the first instance of ROM
  4583.       COMMAND.COM
  4584. SeeAlso: AX=5500h
  4585. --------R-2F5600-----------------------------
  4586. INT 2F - INTERLNK - INSTALLATION CHECK
  4587.     AX = 5600h
  4588.     DX = magic value FFFFh
  4589.     BL = instance number (00h = any, 01h = first loaded, etc.)
  4590. Return: AL = FFh if installed
  4591.         BL = instance number
  4592.         CX = ??? (apparently always 0001h)
  4593.         DX = resident CS of driver, DX:0000h -> header (see #2124)
  4594. SeeAlso: AX=5601h,AX=5602h,INT 60/AX=0000h
  4595.  
  4596. Format of Interlnk device driver header:
  4597. Offset    Size    Description    (Table 2124)
  4598.  00h    DWORD    pointer to next driver, offset=FFFFh if last driver
  4599.  04h    WORD    device attributes (see #0988,#0989)
  4600.  06h    WORD    device strategy entry point
  4601.  08h    WORD    device interrupt entry point
  4602.  0Ah  8 BYTEs    character device name "NUL2    "
  4603.  12h 165 BYTEs    ???
  4604.  B7h 67 BYTEs    fully qualified Interlnk filename
  4605.  FAh  6 BYTEs    ???
  4606. 100h    DWORD    pointer back to Interlnk filename at offset B7h
  4607. 104h  8 BYTEs    ???
  4608. 10Ch    BYTE    total number of redirected drives
  4609. 10Dh    BYTE    first local drive number (0=A:)
  4610. 10Eh    BYTE    printer redirection (0=no, 1=yes)
  4611. 10Fh    BYTE    ???
  4612. 110h  3    BYTEs    LPT1...3 status (0FFh=invalid)
  4613. 113h 26 BYTEs    remote drive number (0=A:, 0FEh=unused) (refer to note below)
  4614. 12Dh 26 BYTEs    always 0FEh ???
  4615. 147h 26 BYTEs    always 0FFh ???
  4616. Note:    to obtain the remote drive number, subtract the value at offset 10Ch
  4617.       from the local drive number before indexing into the table at 113h
  4618.       (example: if local drives F, G, H are remote drives C, F, E then
  4619.       the first three bytes at offset 113h are 02h, 05h, 04h)
  4620.     for each instance of Interlnk, an extra device driver is loaded, but
  4621.       all have the same device name NUL2
  4622. SeeAlso: #0987 at INT 21/AH=52h
  4623. --------R-2F5601-----------------------------
  4624. INT 2F - INTERLNK - CHECK IF REDIRECTED DRIVE
  4625.     AX = 5601h
  4626.     DX = magic value FFFFh
  4627.     BH = drive number (0=A:)
  4628.     BL = 00h
  4629. Return: (as for AL=00h if redirected drive)
  4630. SeeAlso: AX=5600h
  4631. --------R-2F5602-----------------------------
  4632. INT 2F - INTERLNK - GET ???
  4633.     AX = 5602h
  4634.     DX = magic value FFFFh
  4635. Return: CX = ???
  4636. SeeAlso: AX=5600h
  4637. --------d-2F5700-----------------------------
  4638. INT 2F U - IOMEGA DRIVERS - INSTALLATION CHECK
  4639.     AX = 5700h
  4640.     BX = program ID??? (0201h used by GUEST.EXE)
  4641.     DX = 496Fh ('Io')
  4642. Return: AL = status
  4643.         00h not installed
  4644.         FFh installed
  4645. SeeAlso: AX=5701h,AX=5710h,AX=5711h,AX=5712h
  4646. --------d-2F5701-----------------------------
  4647. INT 2F U - IOMEGA DRIVERS - ???
  4648.     AX = 5701h
  4649.     BX = program ID??? (0201h used by GUEST.EXE)
  4650.     DX = 496Fh ('Io')
  4651. Return: AX = 0001h
  4652. SeeAlso: AX=5700h,AX=5710h,AX=5711h,AX=5712h
  4653. --------d-2F5710-----------------------------
  4654. INT 2F U - IOMEGA DRIVERS - GET DRIVER INFORMATION???
  4655.     AX = 5710h
  4656.     BX = program ID??? (0201h used by GUEST.EXE)
  4657.     DX = 496Fh ('Io')
  4658. Return: AX = ??? (BX ORed with ???)
  4659.     BX = ??? (internal variable)
  4660.     CX = ??? (internal variable)
  4661.     DX = ??? (CX ORed with ???)
  4662. SeeAlso: AX=5700h,AX=5701h,AX=5711h,AX=5712h
  4663. --------d-2F5711-----------------------------
  4664. INT 2F U - IOMEGA DRIVERS - LOCK MEDIA IN DRIVE
  4665.     AX = 5711h
  4666.     BX = program ID??? (0201h used by GUEST.EXE)
  4667.     DX = 496Fh ('Io')
  4668. Return: CF clear if successful (storage medium in drive)
  4669.         AX = new lock count
  4670.     CF set on error (drive empty)
  4671. SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5712h
  4672. --------d-2F5712-----------------------------
  4673. INT 2F U - IOMEGA DRIVERS - UNLOCK MEDIA IN DRIVE / EJECT
  4674.     AX = 5712h
  4675.     BX = program ID??? (0201h used by GUEST.EXE)
  4676.     DX = 496Fh ('Io')
  4677. Return: AX = new lock count (00h = unlocked)
  4678. Note:    if the lock count was already zero, the storage medium is ejected
  4679.       from the drive
  4680. SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5711h
  4681. --------c-2F5758BX4858-----------------------
  4682. INT 2F U - Helix Multimedia Cloaking - CACHECLK - INSTALLATION CHECK
  4683.     AX = 5758h
  4684.     BX = 4858h ('HX')
  4685.     DX = 4443h ('DC')
  4686.     CX <> 5758h
  4687. Return: BX = 6878h if installed
  4688.     DX = 6463h if installed
  4689.        CX = version (CH=major,CL=minor)
  4690. Program: CACHECLK is a 'Cloaked' disk cache by Helix Software
  4691. Note:    returns with registers unchanged if CX=5758h on entry
  4692. SeeAlso: INT 16/AX=5758h/BX=4858h,INT 2F/AX=4310h"Cloaking"
  4693. --------X-2F5D00-----------------------------
  4694. INT 2F U - PCMCIA - AWARD PCDISK - GET INFO FROM DRIVER ???
  4695.     AX = 5D00h
  4696. Return: ES:BX -> ???
  4697. Note:    supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
  4698. SeeAlso: AX=5D01h,INT 21/AX=440Dh"DOS 3.2+"
  4699. --------X-2F5D01-----------------------------
  4700. INT 2F U - PCMCIA - AWARD PCDISK - PUT INFO INTO DRIVER ???
  4701.     AX = 5D01h
  4702.     ES:BX -> ???
  4703. Return: nothing
  4704. Note:    supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
  4705. SeeAlso: AX=5D00h,INT 21/AX=440Dh"DOS 3.2+"
  4706. --------s-2F60FFDL00-------------------------
  4707. INT 2F U - IPLAY v1.00b - INSTALLATION CHECK
  4708.     AX = 60FFh
  4709.     DL = 00h (function number)
  4710.     BX = 5344h ('SD')
  4711.     CX = 4D50h ('MP')
  4712. Return: AX = 4F4Bh ('OK') if installed
  4713. Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
  4714.       (digitized music files)
  4715. Note:    in version 1.00b, any value for DL except 01h invokes this function
  4716. SeeAlso: AX=60FFh/DL=01h
  4717. --------s-2F60FFDL01-------------------------
  4718. INT 2F U - IPLAY v1.00b - GET DATA SEGMENT
  4719.     AX = 60FFh
  4720.     DL = 01h (function number)
  4721.     BX = 5344h ('SD')
  4722.     CX = 4D50h ('MP')
  4723. Return: AX = data segment
  4724. Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
  4725.       (digitized music files)
  4726. SeeAlso: AX=60FFh/DL=00h
  4727. --------v-2F6282-----------------------------
  4728. INT 2F U - PC Tools v7.0+ VDEFEND, VSAFE, VWATCH, DATAMON - SET ??? ADDRESS
  4729.     AX = 6282h
  4730.     CX:DX -> ??? or 0000h:0000h
  4731.     DI = segment of ??? record (see #2125) or 0000h/FFFFh to ignore
  4732. Return: BX = 0062h
  4733. Note:    if CX:DX = 0000h:0000h on entry, the ??? address is not changed
  4734.       (DATAMON only)
  4735. SeeAlso: INT 13/AH=FAh"VSAFE",INT 21/AH=FAh"VDEFEND"
  4736.  
  4737. Format of VSAFE/VWATCH record:
  4738. Offset    Size    Description    (Table 2125)
  4739.  00h    DWORD    ???
  4740.  04h    WORD    offset of ??? in record's segment
  4741.         VSAFE 2.0 sets byte at +01h to 56h or 58h
  4742.         VWATCH 2.1 sets byte at +02h to 56h or 58h
  4743.  06h  2 BYTEs    ???
  4744.  08h    BYTE    ??? (01h/other)
  4745. --------v-2F6284BX0000-----------------------
  4746. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT    - INSTALLATION CHECK
  4747.     AX = 6284h
  4748.     BX = 0000h
  4749.     CX = 0000h
  4750. Return: AX = segment of resident code
  4751.     BX = 5555h
  4752.     CX = 5555h
  4753. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  4754. SeeAlso: AX=6284h/BX=0001h,INT 16/AX=FFA3h/BX=0000h
  4755. --------v-2F6284BX0001-----------------------
  4756. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  4757.     AX = 6284h
  4758.     BX = 0001h
  4759.     CX = 0001h
  4760. Return: AX:BX -> ??? data (see #2126)
  4761.     CX = BX
  4762. SeeAlso: AX=6284h/BX=0000h
  4763.  
  4764. Format of DPROTECT data for v9.0:
  4765. Offset    Size    Description    (Table 2126)
  4766.  00h  5 BYTEs    ???
  4767.  05h    WORD    resident code segment (may be segment of DWORD at +03h)
  4768.  07h    DWORD    -> FAR function to sound alert tone
  4769.     ???
  4770. --------v-2F6284BX0002-----------------------
  4771. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET OPTIONS
  4772.     AX = 6284h
  4773.     BX = 0002h
  4774.     CX = 0002h
  4775. Return: AX = options (see #2127)
  4776.     BX = ??? (0000h for v9)
  4777.     CX = AX
  4778.     DX = BX
  4779. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  4780. SeeAlso: AX=6284h/BX=0000h,AX=6284h/BX=0003h
  4781.  
  4782. Bitfields for DATAMON/DPROTECT options:
  4783. Bit(s)    Description    (Table 2127)
  4784.  1    ???
  4785.  12    disabled
  4786.  13    using Delete Sentry
  4787.  14    using Delete Tracker
  4788. --------v-2F6284BX0003-----------------------
  4789. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - SET OPTION??? FLAGS
  4790.     AX = 6284h
  4791.     BX = 0003h
  4792.     CX = flags (see #2128)
  4793.     DX = flags
  4794.         bit 15: ???
  4795. Note:    v9 DPROTECT only checks bit 12 of CX, and ignores DX entirely
  4796. SeeAlso: AX=6284h/BX=0002h
  4797.  
  4798. Bitfields for DATAMON/DPROTECT CX flags:
  4799. Bit(s)    Description    (Table 2128)
  4800.  3    ???
  4801.  5    ???
  4802.  10    ???
  4803.  12    disable DATAMON/DPROTECT
  4804. --------v-2F6284BX0004-----------------------
  4805. INT 2F U - PC Tools v8 DATAMON, v9+ DPROTECT - ???
  4806.     AX = 6284h
  4807.     BX = 0004h
  4808.     CX = 0004h
  4809. Return: AX = 5555h
  4810.     BX = ??? (0800h)
  4811.     CX = ??? (FCCCh for v8, FCCBh for v9)
  4812. --------V-2F6400-----------------------------
  4813. INT 2F - SCRNSAV2.COM - INSTALLATION CHECK
  4814.     AX = 6400h
  4815. Return: AL = installation state
  4816.         00h not installed
  4817.         FFh installed
  4818. Program: SCRNSAV2.COM is a screen saver for PS/2s with VGA by Alan Ballard
  4819. SeeAlso: INT 10/AX=5555h,INT 14/AX=AA01h
  4820. Index:    screen saver;SCRNSAV2
  4821. --------N-2F7000-----------------------------
  4822. INT 2F - License Service API - INSTALLATION CHECK
  4823.     AX = 7000h
  4824.     CX = license server index (0000h to 001Fh)
  4825. Return: AL = status
  4826.         00h not installed
  4827.         FFh installed
  4828. Notes:    The License Service API is being maintained by Microsoft but is being
  4829.       supported by a large number of companies including Apple, Banyan,
  4830.       DEC, HP, Lotus, Microsoft, Novell, Software Publishers Association,
  4831.       and Wordperfect (not a complete list!)
  4832.     Each license service provider must search for the next free index
  4833.       slot to use
  4834. SeeAlso: AX=7001h,AX=7003h,AX=7004h,AX=7005h
  4835. --------N-2F7001-----------------------------
  4836. INT 2F - License Service API - REQUEST LICENSE
  4837.     AX = 7001h
  4838.     CX = license server index (0000h to 001Fh)
  4839.     DS:DX -> SLSREQUEST structure (see #2129)
  4840. Return: AX = status
  4841.         0000h success
  4842.         else  provider error code
  4843.     ES:BX = provider specific handle for the license context
  4844. SeeAlso: AX=7002h,AX=7004h,AX=7005h
  4845.  
  4846. Format of License Service SLSREQUEST structure:
  4847. Offset    Size    Description    (Table 2129)
  4848.  00h    DWORD    (ret) status code
  4849.  04h    DWORD    (ret) handle identifying context
  4850.  08h    DWORD    (call) address of Publisher string
  4851.  0Ch    DWORD    (call) address of Product string
  4852.  10h    DWORD    (call) address of Version string
  4853.  14h    DWORD    units required
  4854.  18h    DWORD    address of comment string
  4855.  1Ch    DWORD    address of SLSCHALLENGE structure (see #2130)
  4856.  
  4857. Format of License Service SLSCHALLENGE structure:
  4858. Offset    Size    Description    (Table 2130)
  4859.  00h    DWORD    algorithm (currently always 1)
  4860.  04h    DWORD    secret to be challenged (1-255)
  4861.  08h    DWORD    size of challenge in bytes (1-255)
  4862.  0Ch  N BYTEs    challenge data
  4863. --------N-2F7002-----------------------------
  4864. INT 2F - License Service API - RELEASE LICENSE
  4865.     AX = 7002h
  4866.     CX = license server index (0000h to 001Fh)
  4867.     DS:DX -> SLSRELEASE structure (see #2131)
  4868.     ES:BX = provider specific handle for the license context
  4869. Return: AL = status
  4870.         00h not installed
  4871.         FFh installed
  4872. SeeAlso: AX=7001h,AX=7005h
  4873.  
  4874. Format of License Service SLSRELEASE structure:
  4875. Offset    Size    Description    (Table 2131)
  4876.  00h    DWORD    handle indentifying license context
  4877.  04h    DWORD    total units consumed
  4878.  08h    DWORD    address of comment string
  4879. --------N-2F7003-----------------------------
  4880. INT 2F - License Service API - UPDATE
  4881.     AX = 7003h
  4882.     CX = license server index (0000h to 001Fh)
  4883.     DS:DX -> SLSUPDATE structure (see #2132)
  4884.     ES:BX = provider specific handle for the license context
  4885. Return: AL = status
  4886.         00h not installed
  4887.         FFh installed
  4888. SeeAlso: AX=7004h,AX=7005h
  4889.  
  4890. Format of License Service SLSUPDATE structure:
  4891. Offset    Size    Description    (Table 2132)
  4892.  00h    DWORD    (ret) status code
  4893.  04h    DWORD    (call) handle identifying license context
  4894.  08h    DWORD    (call) total units consumed
  4895.  0Ch    DWORD    additional units required
  4896.  10h    DWORD    address of comment string
  4897.  14h    DWORD    address of SLSCHALLENGE structure (see #2130)
  4898. --------N-2F7004-----------------------------
  4899. INT 2F - License Service API - GET ERROR
  4900.     AX = 7004h
  4901.     CX = license server index (0000h to 001Fh)
  4902.     DS:DX -> SLSGETERROR structure (see #2133)
  4903.     ES:BX = provider specific handle for the license context
  4904. Return: AL = status
  4905.         00h not installed
  4906.         FFh installed
  4907. SeeAlso: AX=7000h,AX=7001h
  4908.  
  4909. Format of License Service SLSGETERROR structure:
  4910. Offset    Size    Description    (Table 2133)
  4911.  00h    DWORD    (ret) status code
  4912.  04h    DWORD    handle identifying license context
  4913.  08h    DWORD    error code
  4914.  0Ch    DWORD    buffer size in bytes
  4915.  10h  N BYTEs    data buffer
  4916. --------N-2F7005-----------------------------
  4917. INT 2F - License Service API - QUERY LICENSE
  4918.     AX = 7005h
  4919.     CX = license server index (0000h to 001Fh)
  4920.     DS:DX -> SLSQUERY structure (see #2134)
  4921.     ES:BX = provider specific handle for the license context
  4922. Return: AL = status
  4923.         00h not installed
  4924.         FFh installed
  4925. SeeAlso: AX=7001h,AX=7002h
  4926.  
  4927. Format of License Service SLSQUERY structure:
  4928. Offset    Size    Description    (Table 2134)
  4929.  00h    DWORD    (ret) status code
  4930.  04h    DWORD    handle identifying license context
  4931.  08h    DWORD    information index
  4932.  0Ch    DWORD    buffer size in bytes
  4933.  10h  N BYTEs    data buffer
  4934. --------K-2F7041BX4B70-----------------------
  4935. INT 2F U - HP 200LX - KEY200 - INSTALLATION CHECK
  4936.     AX = 7041h
  4937.     BX = 4B70h
  4938. Return: BX = 7965h if keyboard remapper KEY200.COM installed
  4939. --------d-2F7200-----------------------------
  4940. INT 2F - SRDISK v1.30+ - INSTALLATION CHECK
  4941.     AX = 7200h
  4942. Return: AL = FFh if installed
  4943.         ES = segment of device driver header (see #2135)
  4944. Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
  4945. SeeAlso: AX=7201h
  4946.  
  4947. Format of SRDISK device driver header:
  4948. Offset    Size    Description    (Table 2135)
  4949.  00h 10 BYTEs    same as standard device driver header
  4950.           (see #0987 at INT 21/AH=52h)
  4951.  0Ah    BYTE    number of subunits (drives) supported by driver
  4952.  0Bh  3 BYTEs    signature "SRD"
  4953.  0Eh  4 BYTEs    memory type string ("XMS "/"EMS ")
  4954.  12h  4 BYTEs    ASCII driver version string "N.NN"
  4955.  16h    BYTE    00h
  4956.  17h    BYTE    configuration format version (currently 00h or 01h)
  4957.  18h    WORD    offset of drive configuration data
  4958. SeeAlso: #0987
  4959. --------d-2F7201-----------------------------
  4960. INT 2F - SRDISK v2.02 - GET CODE/DATA SEGMENT
  4961.     AX = 7201h
  4962. Return: AL = FFh if installed
  4963.         ES = segment of device driver header (see #2135)
  4964. Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
  4965. SeeAlso: AX=7200h
  4966. --------N-2F7A00-----------------------------
  4967. INT 2F - Novell NetWare - LOW-LEVEL API (IPX) INSTALLATION CHECK
  4968.     AX = 7A00h
  4969. Return: AL = status
  4970.         00h not installed
  4971.         FFh installed
  4972.         ES:DI -> FAR entry point for routines accessed exclusively
  4973.               through INT 7A in NetWare versions through 2.0a.
  4974.               Call with same values as INT 7A
  4975.         ES:BX -> two bytes containing IPX major/minor version
  4976.             (IPXODI v2.12; BX unchanged by older IPX drivers)
  4977. SeeAlso: AX=7AFFh/BX=0000h,AX=D800h,INT 64"Novell",INT 7A"LOW-LEVEL API"
  4978. --------N-2F7A10-----------------------------
  4979. INT 2F U - Novell NetWare - TBMI v1.1+ - GET TBMI STATUS
  4980.     AX = 7A10h
  4981. Return: DH = major TBMI version number
  4982.     DL = minor TBMI version number (01h for v1.1)
  4983.     CX = segment address of TBMI resident part
  4984.     BX = status word of TBMI (see #2136)
  4985. Note:    TBMI is the Task-Switched Buffer Manager Interface
  4986. SeeAlso: AX=7A11h,AX=7A12h,AX=7A13h,AX=7A14h
  4987.  
  4988. Bitfields for NetWare TBMI status word:
  4989. Bit(s)    Description    (Table 2136)
  4990.  0    INT2F intercepted by TBMI
  4991.  1    INT7A intercepted by TBMI
  4992.  2    INT64 intercepted by TBMI
  4993.  3-14    reserved or unused ???
  4994.  15    outstanding task ID was detected
  4995. --------N-2F7A11-----------------------------
  4996. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT2F HANDLERS
  4997.     AX = 7A11h
  4998. Return: ES:BX -> old INT 2F handler
  4999.     DS:DX -> TBMI INT 2F handler
  5000. SeeAlso: AX=7A10h,AX=7A12h,AX=7A13h,AX=7A1Ah
  5001. --------N-2F7A12-----------------------------
  5002. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT64 HANDLERS
  5003.     AX = 7A12h
  5004. Return: ES:BX -> old INT 64 handler
  5005.     DS:DX -> TBMI INT 64 handler
  5006. SeeAlso: AX=7A10h,AX=7A11h,AX=7A13h
  5007. --------N-2F7A13-----------------------------
  5008. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT7A HANDLERS
  5009.     AX = 7A13h
  5010. Return: ES:BX -> old INT 7A handler
  5011.     DS:DX -> TBMI INT 7A handler
  5012. SeeAlso: AX=7A10h,AX=7A11h,AX=7A12h
  5013. --------N-2F7A14-----------------------------
  5014. INT 2F U - Novell NetWare - TBMI v1.1+ - GET STATISTICS
  5015.     AX = 7A14h
  5016.     CX = statistic to retrieve
  5017.         0000h available diagnostic functions???
  5018.         Return: CX = maximum available function??? (000Ch for v2.0)
  5019.         0001h buffers in use
  5020.         Return: CX = TBMI buffers currently in use
  5021.         0002h maximum buffers used
  5022.         Return: CX = maximum number of buffers ever in use
  5023.         0003h unavailable buffers
  5024.         Return: CX = count of unavailable TBMI buffers
  5025.         0004h old interrupt usage
  5026.         Return: CX = TBMI accesses to intercepted old vectors INT 2F,
  5027.                   INT 64, and INT 7A
  5028.         0005h far call usage
  5029.         Return: CX = TBMI accesses to IPX/SPX far call handler (not
  5030.                   including internal accesses)
  5031.         0006h task buffering
  5032.         Return: CX = TBMI task buffering status (enabled/disabled or
  5033.                   disable/enable switch count???)
  5034.         0007h current task ID
  5035.         Return: CX = TBMI current task ID number (0000h if ???)
  5036.         0008h outstanding ID count
  5037.         Return: CX = number of outstanding TBMI IDs
  5038.         0009h configured ECBs
  5039.         Return: CX = number of TBMI Event Control Blocks configured
  5040.         000Ah configured data ECBs
  5041.         Return: CX = number of TBMI data ECBs configured
  5042.         000Bh configured sockets
  5043.         Return: CX = number of TBMI sockets configured (from NETCFG)
  5044.         000Ch current sockets
  5045.         Return: CX = number of TBMI sockets currently in use
  5046. Return: BX = maximum supported subfunction (000Ch)
  5047. SeeAlso: AX=7A10h
  5048. --------N-2F7A15-----------------------------
  5049. INT 2F OU - Novell NetWare - TBMI v1.1 only - RESET ???
  5050.     AX = 7A15h
  5051. Return: BX = new value of ???
  5052. Desc:    set ??? to its default value
  5053. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  5054. SeeAlso: AX=7A17h
  5055. --------N-2F7A16-----------------------------
  5056. INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
  5057.     AX = 7A16h
  5058.     CX = ???
  5059.     ???
  5060. Return: ???
  5061. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  5062. --------N-2F7A17-----------------------------
  5063. INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
  5064.     AX = 7A17h
  5065.     ???
  5066. Return: BX = old value of ???
  5067.     CX = new value of ???
  5068. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  5069. SeeAlso: AX=7A15h
  5070. --------N-2F7A18-----------------------------
  5071. INT 2F U - Novell NetWare - TASKID v1.0 - INSTALLATION CHECK
  5072.     AX = 7A18h
  5073. Return: AL = FFh if installed
  5074.         BX = configuration flags (see #2137)
  5075.         CX = resident code segment
  5076. SeeAlso: AX=7A10h
  5077.  
  5078. Bitfields for NetWare TASKID configuration flags:
  5079. Bit(s)    Description    (Table 2137)
  5080.  0    INT 2F hooked
  5081.  3    INT 08 hooked
  5082.  other    unused
  5083. --------N-2F7A19-----------------------------
  5084. INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 08 HANDLERS
  5085.     AX = 7A19h
  5086. Return: AL = FFh
  5087.     DS:DX -> TASKID INT 08 handler
  5088.     ES:BX -> original INT 08 handler
  5089. --------N-2F7A1A-----------------------------
  5090. INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 2F HANDLERS
  5091.     AX = 7A1Ah
  5092. Return: AL = FFh
  5093.     DX:DX -> TASKID INT 2F handler
  5094.     ES:BX -> original INT 2F handler
  5095. SeeAlso: AX=7A11h,AX=7A19h
  5096. --------N-2F7A1B-----------------------------
  5097. INT 2F U - Novell NetWare - TASKID v1.0 - GET DIAGNOSTICS INFORMATION
  5098.     AX = 7A1Bh
  5099.     CX = desired information
  5100.         0000h supported functions
  5101.         0001h TASKID ID number
  5102.         Return: CX = ID number
  5103.         0002h set-ID count
  5104.         Return: CX = ID set count
  5105. Return: AL = FFh
  5106.     BX = highest supported subfunction number (0002h)
  5107. SeeAlso: AX=7A14h,AX=7A18h
  5108. --------N-2F7A1C-----------------------------
  5109. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  5110.     AX = 7A1Ch
  5111.     BP = ???
  5112.     CX:DX = ???
  5113. Return: AX = 70FFh
  5114. --------N-2F7A1D-----------------------------
  5115. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  5116.     AX = 7A1Dh
  5117.     ???
  5118. Return: ES = ???
  5119.     ???
  5120.     SI destroyed
  5121. --------N-2F7A1E-----------------------------
  5122. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  5123.     AX = 7A1Eh
  5124.     ES:SI -> ???
  5125.     ???
  5126. Return: ???
  5127. --------N-2F7A20BX0000-----------------------
  5128. INT 2F - Novell NetWare - Adv NetWare 4.0 DOS Requester - GET VLM CALL ADDRESS
  5129.     AX = 7A20h
  5130.     BX = 0000h
  5131. Return: AX = 0000h on success (installed)
  5132.         ES:BX -> far call address for DOS Requester (see #2138)
  5133. Notes:    the DOS Requester replaces the NetWare Shell (ANETx, NETx) on
  5134.       NetWare LAN's as of the release of Advanced NetWare 4.0 (1993).  It
  5135.       is backward compatible with NetWare 2.1x through 3.11 servers as
  5136.       well.     Note that there was a NetWare 4.0 in the early 1980's, which
  5137.       can cause confusion.
  5138.     this call is used as the installation check by VLM.EXE, which is the
  5139.       loader for all the modules of the DOS Requester
  5140.     .VLMs are standard old .EXE format executables whose normal entry point
  5141.       merely terminates to prevent loading from the command line.  The
  5142.       real entry point is found by looking at the VLM header at the
  5143.       beginning of the load image (see #2141)
  5144. Index:    installation check;NetWare 4.0 DOS Requester
  5145. SeeAlso: AX=7A20h/BX=0001h,AX=7A20h/BX=0002h
  5146.  
  5147. (Table 2138)
  5148. Call DOS Requester entry point with:
  5149.     STACK:    WORD    destination function
  5150.         WORD    destination VLM ID (see #2140)
  5151.         WORD    source VLM ID (0000h = application program)
  5152.     other registers (except BP) as appropriate for function
  5153. Return: AX = status code (0000h,8811h,8846h,8848h,8853h) (see #2139)
  5154.     ZF set if successful, clear on error
  5155.     other registers as appropriate for function
  5156.     STACK popped
  5157.     BP destroyed
  5158.  
  5159. (Table 2139)
  5160. Values for VLM status code:
  5161.  0000h    successful
  5162.  88xxh    error generated by requester
  5163.  8801h    invalid or non-attached connection handle
  5164.  8802h    drive in use (OS/2 only)
  5165.  8803h    cannot add CDS
  5166.  8804h    bad path
  5167.  8805h    error sending or receiving NCP packets
  5168.  8806h    unknown network error
  5169.  8807h    invalid server connection slot
  5170.  8808h    no connection slots available
  5171.  880Ah    no route to server
  5172.  880Bh    "BAD_LOCAL_TARGET" (OS/2 only)
  5173.  880Ch    too many request fragments
  5174.  880Dh    "CONNECT_LIST_OVERFLOW" (OS/2 only)
  5175.  880Eh    buffer overflow on receive
  5176.  880Fh    no connection to server
  5177.  8810h    no router found (OS/2 only)
  5178.  8811h    nonexistent function called
  5179.  8830h    internal server request attempted between two separate connections
  5180.  8831h    no primary connection set
  5181.  8833h    invalid buffer length
  5182.  8834h    invalid user name
  5183.  8835h    no local print spooler installed
  5184.  8836h    attempted function with invalid parameter
  5185.  8837h    failed to open configuration file (OS/2 only)
  5186.  8838h    no configuration file (OS/2 only)
  5187.  8839h    configuration file read failed (OS/2 only)
  5188.  883Ah    line too long in configuration file (OS/2 only)
  5189.  883Bh    configuration lines ignored (OS/2 only)
  5190.  883Ch    foreign resource
  5191.  883Dh    daemon already installed (OS/2 only)
  5192.  883Eh    print spooler already installed
  5193.  883Fh    local connection table already full
  5194.  8840h    configuration section not found (OS/2 only)
  5195.  8841h    invalid transport type
  5196.  8842h    TDS tag in use (OS/2 only)
  5197.  8843h    TDS out of memory (OS/2 only)
  5198.  8844h    called TDS function with invalid tag
  5199.  8845h    TDS write was truncated
  5200.  8846h    called partially asynchronous function while it was busy
  5201.  8847h    unable to find any responding servers
  5202.  8848h    non-loaded or nonexistent VLM called
  5203.  8849h    network drive already mapped
  5204.  884Ah    attempted map to local drive which was already in use
  5205.  884Bh    no more drives available for mapping
  5206.  884Ch    device is not redirected
  5207.  884Dh    no more SFT entries (too many handles)
  5208.  884Eh    unable to unload
  5209.  884Fh    connection entry was already in use
  5210.  8850h    too many reply fragments
  5211.  8851h    name table already full
  5212.  8852h    socket not open
  5213.  8853h    memory management error
  5214.  8854h    SFT III switch occurred in mid-transfer
  5215.  8855h    preferred server was not found (alternate returned)
  5216.  8856h    device not recognized
  5217.  8857h    bad network byte
  5218.  88A0h    memory allocation error
  5219.  88A1h    connection timeout failure
  5220.  88A2h    transport: bad request
  5221.  88A3h    specified transport not installed
  5222.  88A4h    unable to open connection with specified parameters
  5223.  88A6h    unsupported function
  5224.  88A7h    no such task
  5225.  88A8h    too many tasks
  5226.  88A9h    version mismatch
  5227.  88AAh    request cancelled
  5228.  88ABh    invalid NDS name
  5229.  88ACh    unable to perform operation while logged into NDS
  5230.  88ADh    requester not available for use
  5231.  88AEh    MacIPX not configured properly
  5232.  88AFh    no servers found
  5233.  88B0h    no volume or session associated with identifier
  5234.  88B1h    not a NetWare volume
  5235.  88B2h    MacIPX version incompatible with Requester
  5236.  88B4h    MacIPX not open
  5237.  88B5h    insufficient stack
  5238.  88B6h    client API already initialized
  5239.  88B7h    checksums required by client are not available
  5240.  88B8h    packet signing required by client are not available
  5241.  88B9h    server requires checksum
  5242.  88BAh    server requires packet signing
  5243.  88BBh    already logged in
  5244.  88BCh    negotiated checksums but connection timed out
  5245.  89xxh    error generated by server
  5246.     low byte = return code from server (see also #1261,#1295)
  5247.  8900h    server successful
  5248.  8901h    out of disk space
  5249.  897Eh    NCP boundary check failed
  5250.  897Fh    ???
  5251.  8980h    lock failed; file in use
  5252.  8981h    out of handles
  5253.  8982h    no open privileges
  5254.  8983h    hard (non-correctable) I/O error
  5255.  8984h    no creation privileges
  5256.  8985h    no create/delete privileges
  5257.  8986h    attempted to create a file which already exists read-only
  5258.  8987h    filename error during creation (wildcards in name)
  5259.  8988h    invalid file handle
  5260.  8989h    no search privileges
  5261.  898Ah    no deletion privileges
  5262.  898Bh    no rename privileges
  5263.  898Ch    no modify privileges
  5264.  898Dh    some affected files are in use
  5265.  898Eh    all affected files are in use
  5266.  898Fh    some affected files are read-only
  5267.  8990h    all affected files are read-only; volume read-only
  5268.  8991h    some files could not be renamed because target names already exist
  5269.  8992h    all affected names exist
  5270.  8993h    no read privileges
  5271.  8994h    no write privileges
  5272.  8995h    file detached
  5273.  8996h    server out of memory
  5274.  8997h    no disk space for spool file
  5275.  8998h    disk map error; volume does not exist
  5276.  8999h    directory full
  5277.  899Ah    attempt to rename across volumes
  5278.  899Bh    bad directory handle
  5279.  899Ch    invalid path; no more trustees
  5280.  899Dh    no directory handles
  5281.  899Eh    bad filename
  5282.  899Fh    directory active
  5283.  89A0h    directory not empty
  5284.  89A1h    directory I/O error
  5285.  89A2h    I/O lock error
  5286.  89A3h-89A5h ???
  5287.  89A6h    auditing is active
  5288.  89A7h    auditing version error
  5289.  89A8h    no auditing rights
  5290.  89A3h-89BEh ???
  5291.  89BFh    invalid name space
  5292.  89C0h    no account privileges
  5293.  89C1h    no account balance
  5294.  89C2h    credit limit exceeded
  5295.  89C4h    account disabled
  5296.  89C5h    login lockout (intruder detection activated)
  5297.  89C6h    no console rights
  5298.  89C7h-89CFh
  5299.  89D0h    queue error
  5300.  89D1h    no queue
  5301.  89D2h    no queue server
  5302.  89D3h    no queue rights
  5303.  89D4h    queue full
  5304.  89D5h    no queue job
  5305.  89D6h    no job rights; unencrypted password
  5306.  89D7h    queue servicing error; duplicate password; bad account
  5307.  89D8h    queue not active; password too short
  5308.  89D9h    station not queue server; maximum logins exceeded
  5309.  89DAh    queue halted; bad login time
  5310.  89DBh    maximum queue servers; unauthorized login station
  5311.  89DCh    account disabled or expired
  5312.  89DEh    password expired (all grace logins used up)
  5313.  89DFh    password expired but login allowed (grace login)
  5314.  89E0h-89E6h ???
  5315.  89E7h    no disk track
  5316.  89E8h    property is not an item property; write to group
  5317.  89E9h    member exists
  5318.  89EAh    no such member
  5319.  89EBh    property is not a set property
  5320.  89ECh    no such set
  5321.  89EDh    property exists
  5322.  89EEh    object exists
  5323.  89EFh    illegal name
  5324.  89F0h    illegal wildcard
  5325.  89F1h    invalid bindery security level
  5326.  89F2h    not allowed to read object
  5327.  89F3h    not allowed to write/rename object
  5328.  89F4h    not allowed to delete object
  5329.  89F5h    not allowed to create object
  5330.  89F6h    not allowed to delete property
  5331.  89F7h    not allowed to create property; attempt to use non-local drive
  5332.  89F8h    not allowed to write property; already attached to server
  5333.  89F9h    not allowed to read property; no free connection slots
  5334.  89FAh    temporary remap error; no more server slots
  5335.  89FBh    no such property; invalid parameters
  5336.  89FCh    no such object; internet packet request canceled; unknown file server
  5337.  89FDh    bad station number; lock collision
  5338.  89FEh    directory locked; bindery locked; timeout
  5339.  89FFh    general error; hard error; lock error
  5340. Note:    some server-generated error codes have multiple interpretations; use
  5341.       the one appropriate to the failing call
  5342.  
  5343. (Table 2140)
  5344. Values for VLM identifier:
  5345.  0001h    VLM.EXE        Virtual Loadable Modules manager (see also #2143)
  5346.  0010h    CONN.VLM    connection table manager (see also #2146)
  5347.  0020h    TRAN.VLM    transport protocol multiplexor (see also #2150)
  5348.  0021h    IPXNCP.VLM    transport protocol implementation using IPX (see #2152)
  5349.  0022h    TCPNCP.VLM    TCP/IP transport
  5350.  0030h    NWP.VLM        NetWare protocol multiplexor (see also #2154)
  5351.  0031h    BIND.VLM    bindery
  5352.  0032h    NDS.VLM        NetWare Directory Services (see also #2156)
  5353.  0033h    PNW.VLM        Personal NetWare
  5354.  0034h    RSA.VLM        RSA encryption for directory services re-authentication
  5355.  0040h    REDIR.VLM    DOS redirector (see also #2158)
  5356.  0041h    FIO.VLM        file I/O (see also #2161)
  5357.  0042h    PRINT.VLM    printer redirector (see also #2163)
  5358.  0043h    GENERAL.VLM    misc functions for NETx and REDIR (see also #2167)
  5359.  0050h    NETX.VLM    NetWare shell compatibility (see also #2169)
  5360.  0060h    AUTO.VLM    auto-reconnect/auto-retry
  5361.  0061h    SECURITY.VLM    enhanced security module (see #2171)
  5362.  0100h    NMR.VLM        NetWare management responder
  5363.  09F2h    DRVPRN.VLM    Desktop SNMP Services - Drive/Printer Mappings
  5364.  09F5h    SAA.VLM        SAA client API for Netware
  5365.  09F6h    IPXMIB.VLM    SNMP IPX-monitoring Module???
  5366.  09F7h    PNWMIB.VLM    Personal Netware SNMP Instrumentation Module
  5367.  09F8h    PNWTRAP.VLM    Personal Netware SNMP Trap Module
  5368.  09F9h    MIB2PROT.VLM    MIB-II Protocol Groups
  5369.  09FAh    MIB2IF.VLM    MIB-II Interfaces Group
  5370.  09FBh    NVT.VLM        ???
  5371.  09FCh    WSTRAP.VLM    Desktop SNMP Services - Trap Module
  5372.  09FDh    WSREG.VLM    Desktop SNMP Services - Registration Module
  5373.  09FEh    WSASN1.VLM    Desktop SNMP Services - ASN.1 Module
  5374.  09FFh    WSSNMP.VLM    Desktop SNMP Services - Agent Module
  5375.  
  5376. Format of VLM header:
  5377. Offset    Size    Description    (Table 2141)
  5378.  00h    DWORD    -> initialization entry point
  5379.  04h    DWORD    -> VLM API entry point
  5380.  08h    DWORD    -> ??? entry point
  5381.  0Ch    DWORD    -> ??? entry point
  5382.  10h    DWORD    -> ??? entry point
  5383.     ...
  5384.  var    DWORD    00000000h (end of entry point list)
  5385.       4 BYTEs    signature "NVlm"
  5386.     WORD    VLM identifier (see #2140)
  5387. ---v1.20+ ---
  5388.  1Eh    WORD    ???
  5389.  20h    WORD    Transient Switch Count
  5390.  22h    WORD    VLM Call Count
  5391.  24h    WORD    Offset ControlBlocks (See #2142)
  5392.  26h    WORD    Current VLMID
  5393.  28h    BYTE    Memory Type
  5394.         00h=Conventional 02h=EMS 04h=XMS
  5395.  29h    BYTE    Modules Loaded
  5396.  2Ah    WORD    BlockId
  5397.  2Ch    WORD    Transient Block
  5398.  2Eh    WORD    Global Segment
  5399.  30h  3    DWORDs    pointers to AsyncQueue head, tail, and s???
  5400.  3Ch  3    DWORDs    pointers BusyQueue head, tail, and s???
  5401.  48h    WORD    ReEntrance Level
  5402.  4Ah    WORD    Full Map Count
  5403.  4Ch    WORD    ???
  5404.  4Eh 80 BYTEs    ASCIZ configuration file filename
  5405. Note:    the number of entry points in the header is reported as "Func" in the
  5406.       VLM /D display.
  5407.  
  5408. Format of VLM Control Block for VLM v1.20 [array]:
  5409. Offset    Size    Description    (Table 2142)
  5410.  00h    WORD    Flag
  5411.  02h    WORD    VLM Identifier (See #2140)
  5412.  04h    WORD    Func
  5413.  06h    WORD    Maps
  5414.  08h    WORD    number of times called
  5415.  0Ah    WORD    ???
  5416.  0Ch    WORD    Transient Segment
  5417.  0Eh    WORD    Global Segment
  5418.  10h    WORD    Address Low
  5419.  12h    WORD    Address High
  5420.  14h    WORD    TSegSize
  5421.  16h    WORD    GSegSize
  5422.  18h    WORD    SSegSize
  5423.  1Ah    BYTE    VLMName[9] ASCIZ
  5424. Note:    this information is shown in VLM /d under the dashed line. There are
  5425.       as many 35-byte blocks as modules loaded
  5426. SeeAlso: #2141
  5427.  
  5428. (Table 2143)
  5429. Call VLM Manager (VLM.EXE, ID 0001h) with:
  5430. Func    Description/Registers
  5431.  01h    VLM Notify
  5432.     BX = function
  5433.         0000h get version
  5434.         Return: AX = status (see #2139)
  5435.             BX = major version of VLM supported (0001h)
  5436.             CX = minor version of VLM supported (0000h)
  5437.  03h    VLM Statistics
  5438.     CX = length of buffer
  5439.     ES:DI -> buffer for statistics (see #2144)
  5440.     Return: AX = status (0000h if successful)
  5441.         buffer filled if successful
  5442.  04h    VLM internal use
  5443.     BX = function
  5444.         0000h get interrupt vector (calls INT 21/AH=35h)
  5445.         0001h begin critical section (calls INT 2F/AX=1681h)
  5446.         0002h end critical section (calls INT 2F/AX=1682h)
  5447.         0003h ???
  5448.  
  5449. Format of VLM.EXE statistics:
  5450. Offset    Size    Description    (Table 2144)
  5451.  00h    WORD    size of statistics record in bytes (including this word)
  5452.  02h    WORD    number of times a VLM has been mapped into memory
  5453.  04h    WORD    number of times a VLM has been called
  5454.  06h    WORD    offset of vcbArray buffer
  5455.  08h    WORD    VLM ID of VLM currently mapped into memory
  5456.  0Ah    BYTE    memory type: conventional/EMS/XMS
  5457.  0Bh    BYTE    number of loaded VLMs
  5458.  0Ch    WORD    EMS/XMS handle or 0000h if conventional memory
  5459.  0Eh    WORD    start segment for conventional memory swap
  5460.  10h    WORD    segment for global memory, or 0000h if conventional memory
  5461.  12h 12 BYTEs    queue structure for asynchronous calls (see #2145)
  5462.  1Eh 12 BYTEs    queue structure for synchronous calls (see #2145)
  5463.  2Ah    WORD    current re-entrance level
  5464.  2Ch    WORD    number of times EMS/XMS map-out performed
  5465.  2Eh    BYTE    stack switch control
  5466.  2Fh    BYTE    flag: nonzero if switcher loaded
  5467.  30h 80 BYTEs    pathname of configuration file
  5468. SeeAlso: #2143
  5469.  
  5470. Format of VLM.EXE queue structure:
  5471. Offset    Size    Description    (Table 2145)
  5472.  00h    DWORD    queue head (initially 00000000h)
  5473.  04h    DWORD    queue tail (initialized to be same as head)
  5474.  08h    WORD    current queue size (number of nodes in queue)
  5475.  0Ah    WORD    maximum queue size (in nodes)
  5476. SeeAlso: #2144
  5477.  
  5478. (Table 2146)
  5479. Call Connection Manager (CONN.VLM, ID 0010h) with:
  5480. Func    Description/Registers
  5481.  01h    Conn Get Version
  5482.     BX = function
  5483.         0000h get version
  5484.         Return: AX = status (see #2139)
  5485.             BX = major version of VLM supported (0001h)
  5486.             CX = minor version of VLM supported (0000h)
  5487.  03h    Conn Statistics
  5488.     CX = length of buffer
  5489.     ES:DI -> buffer for connection statistics (see #2147)
  5490.     Return: AX = status (0000h successful)
  5491.  04h    Conn Alloc Handle
  5492.     Return: AX = status (0000h successful)
  5493.         CX = connection handle
  5494.  05h    Conn Validate Handle
  5495.     CX = connection handle
  5496.     Return: AX = 0000h if valid handle
  5497.  06h    Conn Free Handle
  5498.     CX = connection handle
  5499.     Return: AX = status (0000h successful)
  5500.  07h    Conn Get Entry Field
  5501.     BH = connection parameter (see #2149)
  5502.     CX = connection handle
  5503.     DX = value if BH is non-array parameter
  5504.     DH = offset in array if BH is array parameter
  5505.     DL = number of bytes to copy if BH is array
  5506.     ES:DI -> return buffer if BH is array
  5507.     Return: AX = 0000h if successful
  5508.         DL/DX = value if non-array parameter
  5509.         DH = maximum number of bytes in buffer if array parameter
  5510.         DL = number of bytes copied if array
  5511.         BX destroyed
  5512.  08h    Conn Set Entry Field
  5513.     BH = connection parameter (see #2149)
  5514.     CX = connection handle
  5515.     DL/DX = value if BH is non-array parameter
  5516.     DH = offset in array if BH is array parameter
  5517.     DL = number of bytes to copy if BH is array
  5518.     DS:SI -> buffer if BH is array
  5519.     Return: AX = 0000h if successful
  5520.         DH = maximum number of bytes in buffer
  5521.         DL = number of bytes copied
  5522.         BX destroyed
  5523.  09h    Conn Reset Entry Field
  5524.     BH = connection parameter (see #2149)
  5525.     CX = connection handle
  5526.     Return: AX = 0000h if successful
  5527.         BX,DX destroyed
  5528.  0Ah    Conn Lookup Handle
  5529.     BL = lookup type (00h equal, 40h not equal)
  5530.     BH = connection parameter (see #2149)
  5531.     CX = connection handle, 0000h if first
  5532.     DL/DX = value if BH is non-array parameter
  5533.     DH = offset in array if BH is array parameter
  5534.     DL = number of bytes to copy if BH is array
  5535.     DS:SI (ES:DI???) -> buffer if BH is array
  5536.     Return: AX = 0000h if successful
  5537.         CX = handle matching given parameters
  5538.  0Dh    Conn Name Lookup
  5539.     CX = connection handle
  5540.     ES:DI -> 49-byte buffer for server name or 0000h:0000h
  5541.     Return: AX = 0000h if successful
  5542.         BX = length of server name
  5543.         ES:DI buffer filled if pointer not 0000h:0000h
  5544.  0Eh    Conn Name To Handle
  5545.     DS:SI -> uppercased server name
  5546.     CX = length of server name, 0000h if ASCIZ name
  5547.     Return: AX = error code or 0000h if successful
  5548.             CX = connection handle if successful
  5549.  0Fh    Conn Get Num Connections
  5550.     Return: AX = status (0000h if successful)
  5551.         DX = number of connections
  5552.         CX = segment of connection table
  5553.             first entry in table (See #2148)
  5554.  
  5555. Format of VLM connection statistics:
  5556. Offset    Size    Description    (Table 2147)
  5557.  00h    WORD    total length of statistics record (including this word)
  5558.  02h    WORD    number of connection handles allocated
  5559.  04h    WORD    average name length (configured in NET.CFG)
  5560.  06h    WORD    maximum number of tasks (configured in NET.CFG)
  5561.  08h    WORD    number of failed "allocate handle" calls
  5562.  0Ah    WORD    number of failed "add name" calls
  5563.  0Ch    WORD    number of failed task calls
  5564. Note:    some versions of the NetWare requester reportedly do not implement
  5565.       this correctly
  5566. SeeAlso: #2146
  5567.  
  5568. Format of NetWare VLM Connection Table [array]:
  5569. Offset    Size    Description    (Table 2148)
  5570.  00h    WORD    Protocol VLMid      0032(NDS) 0031(BIND)        Func 07 equiv.
  5571.                   0033(PNW) 0000(unused)       BH=01h
  5572.  02h    BYTE    (connection status)
  5573.         bit 6: connection locked               BH=16h
  5574.         bit 5: authenticated                   BH=03h
  5575.         bit 4: permanent                   BH=02h
  5576.         bit 2: broadcast msg waiting               BH=12h
  5577.  03h    BYTE    (connection capabilities)
  5578.         bit 5: Large Internet Packets               none
  5579.         bit 3: Packet Burst Reset               BH=07h
  5580.         bit 2: Max I/O                       BH=06h
  5581.         bit 1: SFT3 change                   BH=05h
  5582.         bit 0: Packet Burst Support               BH=04h
  5583.  04h    WORD    reference count                       BH=09h
  5584.  06h    WORD    soft resource count                   BH=15h
  5585.  08h    BYTE    NCP Order Number                   BH=0Eh
  5586.  09h    BYTE    Server security options                   BH=14h
  5587.         bit 0: CRC enabled
  5588.         bit 1: packet signing required
  5589.         bit 5: packet signing enabled
  5590.  0Ah    BYTE    OS Major Version                   BH=08h
  5591.  0Bh    BYTE    OS Minor Version                   BH=08h
  5592.  0Ch    WORD    Hops to Server                       BH=0Ah
  5593.  0Eh    WORD    Maximum Packet Size for this connection           BH=0Bh
  5594.  10h    WORD    LIP Parameters                       BH=13h
  5595.  12h    WORD    NCP Request Type                   BH=10h
  5596.  14h    BYTE    NCP Sequence                       BH=0Ch
  5597.  15h    WORD    Connection Number                   BH=0Dh
  5598.  17h    BYTE    ???                           none
  5599.  18h    WORD    Transport VLMid 21(IPXNCP) 22(TCPNCP)           BH=0Fh
  5600.  1Ah    BYTE    Node Address[4]                       BH=11h
  5601.  1Eh    BYTE    Network[6]                       BH=11h
  5602.  24h    BYTE    Socket[2]                       BH=11h
  5603.  26h    BYTE    Local Target[6]                       BH=11h
  5604.  2Ch    WORD    Round Trip Time                       BH=11h
  5605.  2Eh    WORD    ???                           none
  5606. SeeAlso: #2146
  5607.  
  5608. (Table 2149)
  5609. Values for NetWare Connection Manager CEI (Connection Entry Information):
  5610.  number    flags    description
  5611.  00h    FR    error
  5612.  01h    WL    VLM id of transport protocol (NDS/BIND/PNW)
  5613.         00h = wildcard
  5614.  02h    FR    permanent flag (01h if connection is permanent)
  5615.  03h    F    authenticated flag (01h if connection is authenticated)
  5616.  04h    F    packet burst supported
  5617.  05h    FR    SFT3 change status
  5618.  06h    FR    connection needs maximum I/O transmission
  5619.  07h    FR    packet burst reset needed
  5620.  08h    W    server version
  5621.  09h    W    reference count (tasks using connection, 00h = dynamic)
  5622.  0Ah    W    distance to server associated with connection
  5623.  0Bh    W    maximum packet size supported by transport protocol
  5624.  0Ch    B    NCP sequence number
  5625.  0Dh    W    connection number
  5626.  0Eh    B    NCP order number
  5627.  0Fh    WL    VLM id for transport protocol
  5628.         00h = wildcard, 21h = IPX, 22h = TCP
  5629.  10h    W    NCP request type
  5630.  11h    A    transport specific buffer
  5631.         12 byte server address
  5632.         6 byte    router address
  5633.         2 byte round trip time
  5634.  12h    FR    broadcast message waiting
  5635.  13h    W    large internet packets supported
  5636.  14h    B    security options
  5637.         bit 0: CRC enabled
  5638.         bit 1: packet signing enabled
  5639.         bit 5: packet signing active
  5640.  15h    W    soft resource count
  5641.  16h    FR    connection locked
  5642. Note:    flag meanings
  5643.         F=flag value
  5644.         B=byte value
  5645.         W=word value
  5646.         A=array
  5647.         R=resettable
  5648.         L=settable only before authentication
  5649.         others=read only
  5650. SeeAlso: #2146
  5651.  
  5652. (Table 2150)
  5653. Call TRAN.VLM (VLM ID 0020h) with:
  5654. Func    Description/Registers
  5655.  01h    TRAN Get Version
  5656.     BX = function
  5657.         0000h get version
  5658.         Return: AX = status (see #2139)
  5659.             BX = major version of VLM supported (0001h)
  5660.             CX = minor version of VLM supported (0000h)
  5661.  03h    TRAN Statistics
  5662.  06h    TRAN Request Reply (see INT 21/AH=F2h)
  5663.     AL = NCP request code (see #1431 at INT 21/AH=F2h)
  5664.     BH = error handler flag
  5665.         00h default error handler
  5666.         01h return network errors to caller
  5667.         02h handle network errors in requester
  5668.     BL = request list length (max 5 fragments) (see #2151)
  5669.     CX = connection handle
  5670.     DH = 00h (reserved)
  5671.     DL = reply list length (max 5 fragments) (see #2151)
  5672.     DS:SI -> address list (each element is DWORD address + WORD length)
  5673.     ES:DI -> address list
  5674.     Return: AX = error code, 0000h if successful (see #2139)
  5675.         BX,DX destroyed
  5676.         ES:DI buffer filled with reply packet fragments
  5677.  08h    TRAN Schedule/Cancel Event
  5678.     BX = subfunction
  5679.         0000h schedule event
  5680.         AX = number of timer ticks to delay before calling function
  5681.         ES:SI -> event control block (including valid call address)
  5682.         0001h cancel event
  5683.         ES:SI -> event control block (including call address)
  5684.     Return: AX = status (0000h = successful) (see #2139)
  5685.  09h    TRAN Get Max Phys Size
  5686.     BX = subfunction
  5687.         00h get maximum node size
  5688.         Return: AX = status (0000h = successful) (see #2139)
  5689.             BX = maximum supported physical packet size
  5690.             DX = size of protocol header
  5691.             SI = RequestReply socket number
  5692.         01h get maximum route size to specified server
  5693.         CX = connection handle for route to be checked
  5694.         Return: AX = status (0000h = successful) (see #2139)
  5695.             DX = maximum supported packet size for current route
  5696.  0Ah    TRAN Broadcast Mux
  5697.     BX = subfunction
  5698.         0001h get stored broadcast (Personal NetWare)
  5699.         ES:DI -> 60-byte buffer for counted ASCIZ message string
  5700.     Return: AX = status (0000h = successful) (see #2139)
  5701.  
  5702. Format of TRAN.VLM request/reply fragment descriptor (array):
  5703. Offset    Size    Description    (Table 2151)
  5704.  00h    DWORD    address of buffer
  5705.  04h    WORD    length of buffer
  5706.  
  5707. (Table 2152)
  5708. Call IPXNCP.VLM (VLM ID 0021h) with:
  5709. Func    Description/Registers
  5710.  01h    IPX Get Version
  5711.     BX = function
  5712.         0000h get version
  5713.         Return: AX = status (see #2139)
  5714.             BX = major version of VLM supported (0001h)
  5715.             CX = minor version of VLM supported (0000h)
  5716.  03h    IPX Statistics
  5717.     CX = length of buffer
  5718.     ES:DI -> buffer for statistics (see #2153)
  5719.     Return:    AX = status (see #2139)
  5720.  06h    IPXNCP Request Reply???
  5721.     functionally equivalent to Tran Request Reply???
  5722.  
  5723. Format of NetWare IPX statistics:
  5724. Offset    Size    Description    (Table 2153)
  5725.  00h    WORD    size of statistics, including this word
  5726.  02h    DWORD    number of TRAN Request Reply calls made
  5727.  06h    WORD    number of user aborts
  5728.  08h    WORD    number of user retries
  5729.  0Ah    WORD    IPX receive errors
  5730.  0Ch    WORD    IPX send errors
  5731.  0Eh    WORD    number of unrecognized responses
  5732.  10h    WORD    number of bad connection numbers in requests
  5733.  12h    WORD    number of bad sequence responses
  5734.  14h    WORD    receive buffer overflows
  5735.  16h    WORD    number of times route to attached server was lost
  5736.  18h    WORD    number of times server responded "busy"
  5737.  1Ah    WORD    number of unknown "NCPRepCompCode" values
  5738.  1Ch    WORD    number of bad connection numbers in responses
  5739.  1Eh    WORD    padding for NETX compatibility
  5740.  20h    WORD    padding for NETX compatibility
  5741.  22h    WORD    number of attach requests to server without route
  5742.  24h    WORD    number of times server responded to attach without slot
  5743.  26h    WORD    number of times a server went down during a request
  5744.  28h    DWORD    same-server optimizations
  5745.  2Ch    WORD    local route changes
  5746.  2Eh    WORD    IPX CRC errors
  5747.  30h    WORD    number of user fails
  5748.  32h    BYTE    flag: CRCs enabled
  5749.  33h    BYTE    flag: LIP enabled
  5750.  34h    BYTE    flag: configurable NET error handler
  5751. SeeAlso: #2152
  5752.  
  5753. (Table 2154)
  5754. Call NWP.VLM (VLM ID 0030h) with:
  5755. Func    Description/Registers
  5756.  01h    NWP Get Version
  5757.     BX = function
  5758.         0000h get version
  5759.         Return: AX = status (see #2139)
  5760.             BX = major version of VLM supported (0001h)
  5761.             CX = minor version of VLM supported (0000h)
  5762.  03h    NWP Statistics
  5763.     CX = size of buffer for statistics
  5764.     ES:DI -> buffer for statistics (see #2155)
  5765.     Return: AX = status (see #2139)
  5766.  04h    NWP Connect
  5767.     DL = resource count state (NDS connections only)
  5768.     CX = proposed connection handle (not yet connected to server)
  5769.     DS:SI -> 48-byte server name (NUL-terminated if less than 48 bytes)
  5770.     Return: AX = status (0000h = successful) (see #2139)
  5771.         CX = actual connection handle to use
  5772.     Note:    if the returned handle differs from the proposed handle, the
  5773.           proposed handle should be freed
  5774.  05h    NWP Disconnect
  5775.     DL = ???
  5776.         00h global disconnect -- clear all resources associated with conn.
  5777.         01h destroy connection -- send disconnect request to server
  5778.     CX = connected connection handle
  5779.     Return: AX = status (0000h = successful) (see #2139)
  5780.  06h    NWP Attach
  5781.     DL = resource count state (NDS connections only)
  5782.     CX = connection handle (allocated by not yet attached to server)
  5783.     DS:SI -> full network address for desired server
  5784.     Return: AX = status (0000h = successful) (see #2139)
  5785.  08h    NWP Login
  5786.     BX = object type
  5787.     CX = connection handle (must be connected) to be authenticated
  5788.     DS:SI -> ASCIZ user name (max 48 bytes)
  5789.     ES:DI -> ASCIZ user password (max 128 bytes)
  5790.     Return: AX = status (0000h = successful) (see #2139)
  5791.  09h    NWP Logout
  5792.     CX = connection handle
  5793.     Return: AX = status (0000h = successful) (see #2139)
  5794.  0Ah    NWP Get Bindery Object/Get Message Handler
  5795.     BX = subfunction
  5796.         0002h set workstation's broadcast message mode
  5797.         DL = message mode
  5798.             00h client hold client message set on, retrieve/display on
  5799.             01h client hold client message set off, retr/display on
  5800.             02h client hold client message set on, retrieve/dislay off
  5801.             03h client hold client message set off, retr/display off
  5802.             04h get current message mode
  5803.             05h set broadcast callback
  5804.             CX:SI -> callback handler
  5805.             06h get broadcast timeout
  5806.             07h set broadcast timeout
  5807.             CX = timeout in timer ticks (0000h = never)
  5808.         CX = connection handle, or 0000h to notify all servers
  5809.         0003h get object ID for object name
  5810.         AX = object type (big-endian)
  5811.         CX = connection handle
  5812.         DX = length of object name
  5813.         ES:DI -> uppercased ASCIZ object name
  5814.         Return: AX = status (see #2139)
  5815.             DX:BX = object ID
  5816.         0004h get object name for object ID
  5817.         DX:SI = object ID
  5818.         CX = connection handle for server which is to do the lookup
  5819.         ES:DI -> 48-byte buffer for object name
  5820.         Return: AX = status (see #2139)
  5821.         0005h retrieve broadcast message
  5822.  0Ch    NDS Fragment Request (passed to NDS.VLM's function 0Ch) (see #2156)
  5823.     AX = verb or request type
  5824.     CX = connection handle
  5825.     DS:SI -> request structure (DWORD data address followed by WORD size)
  5826.     ES:DI -> buffer for reply structure (same format as request)
  5827.     Return: AX = status (0000h = successful) (see #2139)
  5828.  0Eh    NWP Ordered Send To All
  5829.     AL = NCP request code
  5830.     AH = inverse request code (FFh if none) to back out from failures
  5831.     BX = number of fragments in request list
  5832.     DX = number of fragments in reply list buffer
  5833.     DS:SI -> request fragment list
  5834.     ES:DI -> reply fragment list
  5835.     Return: AX = status (see #2139)
  5836.         BX, CX, DX destroyed
  5837.     Note:    the available functions are described under INT 21/AX=F2xxh
  5838.  0Fh    NWP Preferred Handler
  5839.     BX = subfunction
  5840.         0000h get preferred connection name
  5841.         DX = VLM ID (NDS/BIND/PNW)
  5842.         ES:DI -> 49-byte buffer for connection name
  5843.         Return: ES:DI buffer filled
  5844.         0001h set preferred connection name
  5845.         DX = VLM ID (NDS/BIND/PNW)
  5846.         CX = length of connection name (may be 0000h, max 48)
  5847.         DS:SI -> name of preferred connection
  5848.         0002h get preferred connection ID
  5849.         DX = VLM ID (NDS/BIND/PNW)
  5850.         Return: AX = status (see #2139)
  5851.             CX = connection handle if successful
  5852.         0003h get server address
  5853.         CX = connection handle or 0000h
  5854.         DS:SI -> ASCIZ name to be resolved
  5855.         ES:DI -> 12-byte buffer for server address
  5856.  10h    NWP Security???
  5857.     BX = subfunction
  5858.         0001h get security flags (see also INT 21/AX=B301h)
  5859.         Return: BX:CX indicates signature level
  5860.                 = 0100h:0000h if signature level=0
  5861.                 = 0300h:0000h if signature level=1
  5862.                 = 0302h:0000h if signature level=2
  5863.                 = 0302h:0202h if signature level=3
  5864.         0002h create session keys (see also INT 21/AX=B302h)
  5865.         CX = server connection handle
  5866.         DS:SI -> 24-byte input buffer
  5867.         0004h set security flags (see also INT 21/AX=B304h)
  5868.         BL:CL = new flags
  5869.         0006h renegotiate security level (see also INT 21/AX=B306h)
  5870.         CX = server connection number (01h-08h)
  5871.  
  5872. Format of NWP.VLM statistics:
  5873. Offset    Size    Description    (Table 2155)
  5874.  00h    WORD    size of statistics record (including this byte)
  5875.  02h    BYTE    flag: Large Internet Packets enabled
  5876.  03h    BYTE    bit flags: enabled security features
  5877.  04h    BYTE    bit flags: preferred security features
  5878.  05h    BYTE    bit flags: required security features
  5879.  06h    BYTE    minimum level of required security
  5880. SeeAlso: #2154
  5881.  
  5882. (Table 2156)
  5883. Call NDS.VLM (VLM ID 0032h) with:
  5884. Func    Description/Registers
  5885.  01h    NDS Get Version
  5886.     BX = function
  5887.         0000h get version
  5888.         Return: AX = status (see #2139)
  5889.             BX = major version of VLM supported (0001h)
  5890.             CX = minor version of VLM supported (0000h)
  5891.  03h    NDS Statistics
  5892.  06h    NDS Attach
  5893.     CX = allocated connection handle
  5894.     DS:SI -> server address
  5895.  08h    NDS Fragment Requst
  5896.     Return: AX = 8836h (invalid parameter)
  5897.     Note:    this function was documented but does not work
  5898.  0Ch    NDS context
  5899.     BX = subfunction
  5900.         0000h get default name context
  5901.         CX = length of buffer for default context
  5902.         ES:DI -> buffer to receive name
  5903.         Return: ES:DI buffer filled
  5904.         0001h set default context
  5905.         CX = length of new default context name
  5906.         DS:SI -> context name
  5907.         0002h read from TDS
  5908.         CX = reply buffer length
  5909.         DX = 0110h ???
  5910.         SI = offset in TDS
  5911.         ES:DI -> reply buffer
  5912.         0003h write to TDS
  5913.         0005h "NWDSChangeResourceConnection/Lock Connection"
  5914.         CX = connection handle
  5915.         DL = subfunction (00h-09h)
  5916.             04h = NWDSChangeResourceOnConnection
  5917.             07h = NWDSChangeResourceOnConnection
  5918.             08h = NWDSLockConnection
  5919.         0006h NDS change connection state (internal)
  5920.         CX = connection handle
  5921.         AL = 00h or 01h
  5922.         0007h "NWDSSetMonitoredConnection"
  5923.         AX = subfunction
  5924.             0001h get monitored connection
  5925.             Return: CX = connection handle???
  5926.             0002h set monitored connection
  5927.             CX = connection handle???
  5928.         0008h send NDS request
  5929.         AX = NDS function
  5930.         CX = connection handle
  5931.         DS:SI -> request buffer descriptor (see #2157)
  5932.         ES:DI -> reply buffer descriptor (see #2157)
  5933.         000Ah set NDS CEI Info
  5934.         DL = buffer length
  5935.         DS:SI -> input buffer
  5936.  
  5937. Format of NetWare NDS request/reply buffer descriptor:
  5938. Offset    Size    Description    (Table 2157)
  5939.  00h    DWORD    -> buffer
  5940.  04h    WORD    length of buffer in bytes
  5941. SeeAlso: #2156
  5942.  
  5943. (Table 2158)
  5944. Call REDIR.VLM (VLM ID 0040h) with:
  5945. Func    Description/Registers
  5946.  01h    Redir Get Version
  5947.     BX = function
  5948.         0000h get version
  5949.         Return: AX = status (see #2139)
  5950.             BX = major version of VLM supported (0001h)
  5951.             CX = minor version of VLM supported (0000h)
  5952.  03h    Redir Statistics
  5953.     CX = length of buffer
  5954.     ES:DI -> buffer for statistics (see #2159)
  5955.     Return: AX = status (0000h if successful) (see #2139)
  5956.         buffer filled if successful
  5957.  04h    Redir Build SFT (see INT 21/AH=B4h"NetWare")
  5958.     CX = connection handle
  5959.     ES:DI -> SFT build request (see #2160)
  5960.     Return: AX = 0000h if successful
  5961.             BX = DOS file handle
  5962.  05h    Redir DOS To NW Handle
  5963.     BX = DOS file handle
  5964.     ES:DI -> 11-byte buffer for NetWare handle
  5965.  08h    Redir Specific
  5966.     BX = 0000h get item
  5967.         DS:SI -> ASCIZ string "LPTx" (x='1'-'9') or drive spec ("d:")
  5968.         ES:DI -> 512-byte reply buffer for
  5969.               "\\server\resource",00h,"path",00h
  5970.     Return: AX = status (0000h if successful) (see #2139)
  5971.  
  5972. Format of REDIR.VLM statistics:
  5973. Offset    Size    Description    (Table 2159)
  5974.  00h    WORD    size of statistics record (including this word)
  5975.  02h    WORD    number of network errors causing a critical error (see INT 24)
  5976.  04h    WORD    number of drives currently redirected
  5977. SeeAlso: #2158
  5978.  
  5979. Format of NetWare SFT build request:
  5980. Offset    Size    Description    (Table 2160)
  5981.  00h  6 BYTEs    NetWare handle
  5982.  06h    WORD    reserved for internal use
  5983.  08h 14 BYTEs    ASCIZ filename
  5984.  16h    BYTE    DOS file attributes
  5985.         bit 7: file is shareable
  5986.  17h    BYTE    reserved
  5987.  18h    LONG    file size
  5988.  1Ch    WORD    creation date
  5989.  1Eh    WORD    last access date or 0000h
  5990.  20h    WORD    last update date or 0000h
  5991.  22h    WORD    last update time or 0000h
  5992.  
  5993. (Table 2161)
  5994. Call File I/O FIO.VLM (VLM ID 0041h) with:
  5995. Func    Description/Registers
  5996.  01h    FIO Get Version
  5997.     BX = function
  5998.         0000h get version
  5999.         Return: AX = status (see #2139)
  6000.             BX = major version of VLM supported (0001h)
  6001.             CX = minor version of VLM supported (0000h)
  6002.  03h    FIO Statistics
  6003.     CX = length of buffer
  6004.     ES:DI -> buffer for statistics (see #2162)
  6005.     Return: AX = status (0000h if successful)
  6006.         buffer filled if successful
  6007.  04h    FIO Remote Copy
  6008.  
  6009. Format of NetWare FIO statistics:
  6010. Offset    Size    Description    (Table 2162)
  6011.  00h    WORD    length of statistics record (including this word)
  6012.  02h    WORD    number of read requests
  6013.  04h    WORD    number of write requests
  6014.  06h    WORD    number of cache read hits
  6015.  08h    WORD    number of cache write hits
  6016.  0Ah    WORD    number of cacheable files with free blocks
  6017.  0Ch    WORD    number of cacheable files without free blocks
  6018.  0Eh    WORD    number of standard read requests
  6019.  10h    WORD    number of standard write requests
  6020.  12h    WORD    number of burst read requests
  6021.  14h    WORD    number of burst write requests
  6022.  16h    BYTE    flag: cache writes enabled
  6023.  17h    BYTE    flag: true commits enabled
  6024.  18h    WORD    number of cache blocks
  6025.  1Ah    WORD    size of a cache buffer
  6026.  1Ch    WORD    number of ECBs for packet bursts (0000h if bursts disabled)
  6027. SeeAlso: #2161
  6028.  
  6029. (Table 2163)
  6030. Call PRINT.VLM (VLM ID 0042h) with:
  6031. Func    Description/Registers
  6032.  01h    Print Get Version
  6033.     BX = function
  6034.         0000h get version
  6035.         Return: AX = status (see #2139)
  6036.             BX = major version of VLM supported (0001h)
  6037.             CX = minor version of VLM supported (0000h)
  6038.  03h    Print Statistics
  6039.     CX = length of buffer
  6040.     ES:DI -> buffer for statistics (see #2164)
  6041.     Return: AX = status (0000h if successful) (see #2139)
  6042.         buffer filled if successful
  6043.  04h    Print Get/Set Data
  6044.     BX = subfunction
  6045.         00h set printer control flags (see #2165)
  6046.         01h get printer control flags
  6047.         02h set extended printer control flags (see #2166)
  6048.         03h get extended printer control flags
  6049.     AX = offset within Print structures at which to start read/write
  6050.     CX = number of bytes to transfer
  6051.     DX = printing device number (00h=LPT1/PRN, 01h=LPT2, etc.)
  6052.     DS:SI -> buffer containing values for flags (subfunctions 00h/02h)
  6053.     ES:DI -> buffer for flags (subfunctions 01h/03h
  6054.     Return: AX = status (see #2139)
  6055.         ---if successful---
  6056.         CX = number of bytes returned (subfunctions 01h/03h)
  6057.         DX = maximum supported size for function/type of data
  6058.  05h    Print Open Capture File
  6059.  07h    Print Get Num Of Printers
  6060.     BX = subfunction
  6061.         0000h get number of physical printers
  6062.         nonzero: get configured printer (from NET.CFG)
  6063.     Return: AX = status (see #2139)
  6064.         ---if successful---
  6065.         BX = number of physical/configured printers
  6066.  08h    Print Redirection
  6067.     BX = subfunction
  6068.         0000h redirect device to queue
  6069.         AX = length of queue name, 0000h to use queue ID
  6070.         CX = connection handle
  6071.         DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
  6072.         DS:SI -> uppercased ASCIZ queue name
  6073.         ES:DI -> DWORD queue ID, 00000000h to use queue name
  6074.         0001h test whether device is redirected
  6075.         DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
  6076.         0002h cancel redirection
  6077.         DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
  6078.         0003h redirect device to file
  6079.         AX = 0000h or 4E57h ('NW')
  6080.         CX = connection handle
  6081.         DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
  6082.         ES:DI -> ASCIZ path of file
  6083.         0004h get extended redirection information (see #2165)
  6084.         DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
  6085.         ES:DI -> buffer for server/queue name
  6086.         Return: ES:DI buffer filled
  6087.     Return: AX = 0000h if successful
  6088.  09h    Print Flush And Close Job
  6089.     BX = subfunction
  6090.         0000h unconditional close
  6091.         nonzero: conditional close -- close only if concatenate flag is
  6092.           clear
  6093.     DX = index of printing device (00h=LPT1/PRN, 01h=LPT2, etc.)
  6094.     Return: AX = status (see #2139)
  6095.  0Ch    Print Get/Set Banner Name
  6096.     BL = subfunction
  6097.         00h set banner name
  6098.         DS:SI -> ASCIZ banner name (12 bytes, including NUL)
  6099.         01h get banner name
  6100.         ES:DI -> 12-byte buffer for banner name
  6101.     Return: AX = status (see #2139)
  6102.  
  6103. Format of PRINT.VLM statistics:
  6104. Offset    Size    Description    (Table 2164)
  6105.  00h    WOFD    size of statistics buffer (including this word)
  6106.  02h    DWORD    -> old INT 17 handler
  6107.  06h    WORD    number of physical printers reported by BIOS
  6108. SeeAlso: #2163
  6109.  
  6110. Format of PRINT.VLM standard print control information:
  6111. Offset    Size    Description    (Table 2165)
  6112.  00h    BYTE    PFStatus (reserved, 00h)
  6113.  01h    BYTE    print flags (default 80h)
  6114.         bit 2: release job for printing if capture interrupted
  6115.         bit 3: suppress form feed
  6116.         bit 4: notify
  6117.         bit 6: text file
  6118.         bit 7: print banner
  6119.  02h    BYTE    tab size (01h-12h, default 08h)
  6120.  03h    BYTE    number of copies (default 01h)
  6121.  04h    BYTE    ??? (may be number of copies instead of offset 03h)
  6122.  05h    BYTE    form type to be mounted in printer (default 00h)
  6123.  06h    BYTE    reserved (00h)
  6124.  07h 14 BYTEs    banner
  6125.  15h    BYTE    capture printer (LPT) number
  6126.  16h    WORD    capture timeout in seconds
  6127.  18h    BYTE    job concatenation flag (00h or 01h, default 00h)
  6128.  19h    BYTE    maximum lines per page (default 66)
  6129.  1Ah    BYTE    ??? (may be maximum lines instead of offset 19h)
  6130.  1Bh    BYTE    maximum characters per line (default 132)
  6131.  1Ch    BYTE    ??? (may be maximum characters instead of offset 1Ch)
  6132.  1Dh 13 BYTEs    name of form to be mounted in printer
  6133.  2Ah    BYTE    flag: capture active (00h or FFh, default 00h)
  6134.  2Bh    BYTE    flag: capturing to file (00h or 01h, default 00h)
  6135.  2Ch    BYTE    flag: timeout field is being decremented (default 00h)
  6136.  2Dh    DWORD    -> printer setup string
  6137.  31h    DWORD    -> printer reset string
  6138.  35h    BYTE    reserved (01h)
  6139. ---remainder is read-only---
  6140.  36h    BYTE    flag: job has started printing (00h or FFh, default 00h)
  6141.  37h    BYTE    flag: job placed in queue (00h or FFh, default 00h)
  6142.  38h    BYTE    flag: PJobValid (00h or FFh, default 00h)
  6143.         FFh if associated capture file is open for capturing data
  6144.  39h    DWORD    print-queue ID
  6145.  3Dh    WORD    print-job number (default 00h) (1-999)
  6146.  3Fh    BYTE    number of chars in INT 17h print cache buffer (default 00h)
  6147.  40h    BYTE    ???
  6148.  41h    WORD    high word of print-job number (default 00h)
  6149. SeeAlso: #2163,#2166
  6150.  
  6151. Format of PRINT.VLM extended print control information:
  6152. Offset    Size    Description    (Table 2166)
  6153.  00h    DWORD    NDS printer object ID or directory entry number (when capturing
  6154.           to a file)
  6155.  04h    BYTE    connection handle for server
  6156.  06h 48 BYTEs    ASCIZ print queue name on server
  6157.  36h    DWORD    ID of target server, or FFFFFFFFh if any server may be used
  6158.  3Ah  6 BYTEs    target print time, FFFFFFFFFFFFh for immediate printing
  6159.  40h    BYTE    status flags
  6160.  41h    BYTE    ???
  6161.  42h 13 BYTEs    client's banner name (overrides global banner if set)
  6162.  4Fh 13 BYTEs    job description
  6163.  5Ch  4 BYTEs    reserved (0)
  6164. SeeAlso: #2163,#2165
  6165.  
  6166. (Table 2167)
  6167. Call GENERAL.VLM (VLM ID 0043h) with:
  6168. Func    Description/Registers
  6169.  01h    Gen Get Version
  6170.     BX = function
  6171.         0000h get version
  6172.         Return: AX = status (see #2139)
  6173.             BX = major version of VLM supported (0001h)
  6174.             CX = minor version of VLM supported (0000h)
  6175.  03h    Gen Statistics
  6176.     CX = length of statistics buffer
  6177.     ES:DI -> buffer for statistics (see #2168)
  6178.     Return: AX = status (see #2139)
  6179.  04h    Gen Get/Set Primary
  6180.     BX = subfunction
  6181.         0001h get primary connection
  6182.         CX = primary connection handle to be retrieved
  6183.         Return: AX = status (see #2139)
  6184.             CX = primary connection handle
  6185.         0002h set primary connection
  6186.         CX = primary connection handle to be stored
  6187.         Return: AX = status (see #2139)
  6188.  06h    Gen Specific
  6189.     BX = subfunction
  6190.         0000h get command processor and master environment addresses
  6191.         Return: DX = segment of master environment
  6192.             ES:DI -> command processor's private COMSPEC= copy
  6193.         0001h get default or primary connection
  6194.         Return: AX = status (0000h successful)
  6195.             CX = connection handle if successful
  6196.         0002h last queue information
  6197.         AL = operation
  6198.             00h zap
  6199.             01h set
  6200.             02h get
  6201.         DI:DX = queue file handle
  6202.         CX = connection handle
  6203.         Return: AX = status (0000h successful)
  6204.             DI:DX = queue file handle
  6205.             CX = connection handle or 0000h if queue info invalid
  6206.         0003h get/set machine name(s)
  6207.         AX = name type
  6208.             00h get short machine name
  6209.             02h get long machine name
  6210.             04h set short machine name
  6211.             06h set long machine name
  6212.             08h get DOS name
  6213.             0Ah set DOS name
  6214.         ES:SI -> ASCIZ name if setting
  6215.         Return: AX = status (0000h if successful)
  6216.             ES:SI -> ASCIZ name if getting
  6217.         0004h set per-task EXEC search mode
  6218.         Return: AX = status (0000h if successful)
  6219.  09h    Gen Return Drive Info
  6220.     BX = subfunction
  6221.         0000h get first available drive
  6222.         Return: AX = status (see #2139)
  6223.             BX = drive letter of first drive
  6224.         0001h get Lastdrive
  6225.         Return: AX = status (see #2139)
  6226.             CH = number lastdrive 1=A: - 1Ah=Z:
  6227.  
  6228. Format of NetWare GENERAL.VLM statistics:
  6229. Offset    Size    Description    (Table 2168)
  6230.  00h    WORD    size of statistics record, including this word
  6231.  02h    DWORD    previous INT 21 vector
  6232. SeeAlso: #2167
  6233.  
  6234. (Table 2169)
  6235. Call NETX.VLM (VLM ID 0050h) with:
  6236. Func    Description/Registers
  6237.  01h    NetX Get Version
  6238.     BX = function
  6239.         0000h get version
  6240.         Return: AX = status (see #2139)
  6241.             BX = major version of VLM supported (0001h)
  6242.             CX = minor version of VLM supported (0000h)
  6243.  03h    NetX Statistics
  6244.     CX = length of statistics buffer
  6245.     ES:DI -> buffer for statistics (see #2170)
  6246.     Return: AX = status (see #2139)
  6247.  
  6248. Format of NETX.VLM statistics:
  6249. Offset    Size    Description    (Table 2170)
  6250.  00h    WORD    buffer size, including this word
  6251.  02h    DWORD    previous INT 21 handler
  6252. SeeAlso: #2169
  6253.  
  6254. (Table 2171)
  6255. Call SECURITY.VLM (VLM ID 0061h) with:
  6256. Func    Description/Registers
  6257.  01h    Security Get Version
  6258.     BX = function
  6259.         0000h get version
  6260.         Return: AX = status (see #2139)
  6261.             BX = major version of VLM supported (0001h)
  6262.             CX = minor version of VLM supported (0000h)
  6263.  03h    Security Statistics
  6264.  04h    ???
  6265.     AL = subfunction
  6266.         01h compute session key
  6267.         DS:SI -> 24-byte input buffer
  6268.         ES:DI -> 8-byte output buffer
  6269. --------N-2F7A20BX0001-----------------------
  6270. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM CallA ADDRESS
  6271.     AX = 7A20h
  6272.     BX = 0001h
  6273. Return: AX = 0000h if request was handled
  6274.         ES:BX -> CallA entry point (see #2172)
  6275. SeeAlso: AX=7A20h/BX=0000h
  6276.  
  6277. (Table 2172)
  6278. Call VLM CallA entry point with:
  6279.     AX = function
  6280.         0000h submit
  6281.         0001h cancel (not implemented)
  6282.     ES:DI -> Overlay Asynchronous Control Block structure (see #2173)
  6283. Return: DI, DS, ES preserved; all other registers may be destroyed
  6284.     interrupts disabled
  6285. Desc:    asychronously call the specified VLM and then return to caller, which
  6286.       might be another VLM
  6287.  
  6288. Format of Overlay Asynchronous Control Block (OACB):
  6289. Offset    Size    Description    (Table 2173)
  6290.  00h    DWORD    link to next OACB, 0000h:0000h if last (filled by VLM.EXE)
  6291.  04h    DWORD    callback address or 0000h:0000h
  6292.  08h    BYTE    InUse flag (00h if complete) (set by VLM.EXE)
  6293.  09h    BYTE    flag, reserved for VLM use
  6294.  0Ah    WORD    destination VLM
  6295.  0Ch    WORD    destination function
  6296.  0Eh    WORD    temporary storage for VLM.EXE
  6297.  10h  6 BYTEs    reserved
  6298.  16h  6 DWORDs    EAX,EBX,ECX,EDX,ESI,EDI
  6299.  2Eh  4 WORDs    DS,ES,FS,GS (FS and GS not used)
  6300. --------N-2F7A20BX0002-----------------------
  6301. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTIPLEX ADDRESS
  6302.     AX = 7A20h
  6303.     BX = 0002h
  6304. Return: AX = 0000h
  6305.     ES:BX -> VLM multiplex entry point (see #2174)
  6306. Note:    for v1.10, this function is only available while VLM.EXE is loading
  6307.       the .VLM modules, because ES is destroyed on return
  6308. SeeAlso: AX=7A20h/BX=0000h,AX=7A20h/BX=0001h,AX=7A20h/BX=0003h
  6309.  
  6310. (Table 2174)
  6311. Call DOS Requester entry point with:
  6312.     BX = function???
  6313.         0000h
  6314.         DX = ???
  6315.         DI = ???
  6316.         BP = ???
  6317.         0002h
  6318.         CX = ???
  6319.         0003h
  6320.         DX = ???
  6321.         BP = ???
  6322.         0006h
  6323.         AH = subfunction???
  6324.         AL = ???
  6325.         STACK: variable (0, 4, 10, 14 bytes seen)
  6326. --------N-2F7A20BX0003-----------------------
  6327. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM PARSE API ADDRESS
  6328.     AX = 7A20h
  6329.     BX = 0003h
  6330. Return: AX = 0000h if request was handled
  6331.         ES:BX -> VLM parse API entry point
  6332. --------N-2F7A20BX0004-----------------------
  6333. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTICAST CALLOUT
  6334.     AX = 7A20h
  6335.     BX = 0004h
  6336. Return: AX = 0000h if request was handled
  6337.         ES:BX -> VLM multicast data (see #2175)
  6338. SeeAlso: AX=7A20h/BX=0000h,AX=7A20h/BX=0002h,AX=7A20h/BX=0005h
  6339.  
  6340. Format of DOS Requester data:
  6341. Offset    Size    Description    (Table 2175)
  6342.  00h    DWORD    pointer to ??? (code)
  6343.  04h  4 BYTEs    ???
  6344.  08h    DWORD    pointer to ??? (code) (see #2176)
  6345.     ???
  6346.  
  6347. (Table 2176)
  6348. Call offset 08h function with:
  6349.     AL = function (00h-07h)
  6350.     ???
  6351. Return: ???
  6352. --------N-2F7A20BX0005-----------------------
  6353. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM INT 24 ADDRESS
  6354.     AX = 7A20h
  6355.     BX = 0005h
  6356. Return: AX = 0000h if request was handled
  6357.         ES:BX -> VLM INT 24 handler
  6358. SeeAlso: AX=7A20h/BX=0000h,AX=7A20h/BX=0002h,AX=7A20h/BX=0004h
  6359. --------N-2F7A20BX0006-----------------------
  6360. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  6361.     AX = 7A20h
  6362.     BX = 0006h
  6363. Return: AX = 0000h if request was handled
  6364.         ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  6365. --------N-2F7A20BX0007-----------------------
  6366. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  6367.     AX = 7A20h
  6368.     BX = 0007h
  6369. Return: AX = 0000h
  6370.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  6371. --------N-2F7A20BX0008-----------------------
  6372. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  6373.     AX = 7A20h
  6374.     BX = 0008h
  6375. Return: AX = 0000h
  6376.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  6377. --------N-2F7A20BX0080-----------------------
  6378. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  6379.     AX = 7A20h
  6380.     BX = 0080h
  6381. Return: AX = 0000h
  6382.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  6383. Note:    this function is identical to AX=7A20h/BX=0006h in v1.03 and v1.10
  6384. --------N-2F7A20BX0081-----------------------
  6385. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  6386.     AX = 7A20h
  6387.     BX = 0081h
  6388. Return: AX = 0000h
  6389.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  6390. Note:    this function is identical to AX=7A20h/BX=0007h in v1.03 and v1.10
  6391. --------N-2F7A20BX0082-----------------------
  6392. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  6393.     AX = 7A20h
  6394.     BX = 0082h
  6395. Return: AX = 0000h
  6396.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  6397. Note:    this function is identical to AX=7A20h/BX=0008h in v1.03 and v1.10
  6398. --------N-2F7A21-----------------------------
  6399. INT 2F C - Novell NetWare - DOS Requester - BROADCAST CALLBACK
  6400.     AX = 7A21h
  6401.     CX = server connection (FFFFh if message from Personal NetWare user)
  6402.     interrupts disabled
  6403. Return: CX = 0000h if broadcast handled
  6404.     interrupts disabled
  6405. Note:    this function is only linked into INT 2F when INT 21/AH=DEh/DL=05h
  6406.       has been issued
  6407. SeeAlso: AX=7A22h,AX=7A85h,INT 21/AH=DEh
  6408. --------N-2F7A22-----------------------------
  6409. INT 2F C - Novell NetWare - DOS Requester - BROADCAST/SFT3 INFORM
  6410.     AX = 7A22h
  6411.     DL = function
  6412.         21h ('!') broadcast waiting for workstation
  6413.         40h ('@') SFT3 server-change inform
  6414.     BX = transport type
  6415.         0021h IPX
  6416.         0022h TCP
  6417.     ES:SI -> transport-specific data block
  6418.         (ECB for IPX, undefined for TCP)
  6419.     interrupts disabled
  6420. Return: AX = 0000h if event handled, unchanged if not
  6421.     interrupts disabled
  6422. Note:    this callback is made from within a hardware interrupt handler; a
  6423.       separate call to AX=7A21h is made once the system is in a safe
  6424.       state for receiving the message
  6425. SeeAlso: AX=7A21h
  6426. --------N-2F7A2F-----------------------------
  6427. INT 2F - Novell NetWare - IPXODI v2.12 - GET GNMA SUPPORT
  6428.     AX = 7A2Fh
  6429. Return: AX = 0000h if supported and active
  6430.         BX = support level (0001h)
  6431.         ES:DI -> GNMA entry point (see #2177)
  6432. Program: GNMA is the Generic NetWare Management Agent
  6433. Note:    IPXODI v2.12 is distributed as part of the Personal NetWare system
  6434.       bundled with Novell DOS 7
  6435. SeeAlso: INT 7A/BX=001Fh
  6436.  
  6437. (Table 2177)
  6438. Call IPXODI GNMA entry point with:
  6439.     BX = function
  6440.         0000h Register Responder
  6441.         ES:SI -> responder structure (see #2178)
  6442.         Return: CF clear if successful
  6443.             CF set on error
  6444.             AX = status
  6445.                 FFFFh if specified responder is already registered
  6446.             interrupts enabled
  6447.             all other registers except DS, CS:IP, SS:SP destroyed
  6448.         Note:    the responder structure must not be deallocated until
  6449.               the responder is deregistered
  6450.         0001h Deregister Responder
  6451.         AX = type of responder to deregister
  6452.         Return: AX = status
  6453.                 FFFFh if specified responder not registered
  6454.             interrupts enabled
  6455.             ES:SI buffer from original registration may now be
  6456.                   freed
  6457.             all other registers except DS, CS:IP, SS:SP destroyed
  6458.         0002h Get Responders
  6459.         Return: ES:SI -> head of responder structure list (read-only)
  6460.             interrupts enabled
  6461.             all other registers except DS, CS:IP, SS:SP destroyed
  6462.         Note:    the returned list may change as tasks are swapped in
  6463.               and out
  6464.         0003h Send Acknowledgement
  6465.         AL = completion code
  6466.             00h successful
  6467.             01h-FCh responder-specific
  6468.             FDh invalid function
  6469.         CX = length of return data (0000h if none)
  6470.         DX:SI -> return data
  6471.         Return: interrupts enabled
  6472.             all other registers except DS, CS:IP, SS:SP destroyed
  6473.  
  6474. Format of NetWare GNMA responder structure:
  6475. Offset    Size    Description    (Table 2178)
  6476.  00h    DWORD    -> next responder structure (used by GNMA)
  6477.  04h    DWORD    -> responder's request handler (called by GNMA) (see #2179)
  6478.  08h    WORD    responder ID
  6479.  0Ah    WORD    number of functions supported by responder
  6480.  0Ch    DWORD    reserved for use by GNMA
  6481. SeeAlso: #2177
  6482.  
  6483. (Table 2179)
  6484. Values GNMA responder's request handler is called with:
  6485.     AL = function
  6486.         00h responder request
  6487.         CX = length of request data (not including header) (see #2180)
  6488.         DS:DI -> request data (see #2180)
  6489.         DS:BX -> 528-byte reply buffer
  6490.         ES:SI -> responder structure (see #2178) from registration
  6491.         DF clear
  6492.         interrupts disabled
  6493.         Return: AH = acknowledement status
  6494.                 00h acknowledgment being returned synchronously
  6495.                 nonzero: acknowledgment will be sent via GNMA
  6496.                   function 0003h (see #2177)
  6497.                 CX = length of acknowledement data
  6498.                 DX:BX -> acknowledgment (may use provided
  6499.                       buffer or another buffer)
  6500.             AL = completion code
  6501.                 00h successful
  6502.                 01h-FCh responder-specific
  6503.                 FDh invalid request
  6504.             DF clear
  6505.             interrupts disabled
  6506.             other registers may be destroyed
  6507.         01h responder acknowledgement complete
  6508.         ES:SI -> responder structure (see #2178) from registration
  6509.         DF clear
  6510.         interrupts disabled
  6511.         Return:    DF clear
  6512.             interrupts disabled
  6513.             all registers (except SS:SP) may be destroyed
  6514.         Note:    this function is called if function 00h returned a
  6515.               responder-provided data buffer; once this function
  6516.               is called, the responder may deallocate the buffer
  6517.         02h responder reset
  6518.         ES:SI -> responder structure (see #2178) from registration
  6519.         DF clear
  6520.         interrupts disabled
  6521.         Return:    DF clear
  6522.             interrupts disabled
  6523.             all registers (except SS:SP) may be destroyed
  6524.         Note:    called whenever a network managment application
  6525.               terminates
  6526. Note:    the responder handler should switch to a local stack if it enables
  6527.       interrupts or uses more than a few words of stack space
  6528. SeeAlso: #2178
  6529.  
  6530. Format of GNMA responder request data:
  6531. Offset    Size    Description    (Table 2180)
  6532.  00h    WORD    responder's assigned ID
  6533.  02h    WORD    function number (defined by responder)
  6534.  04h  N BYTEs    data for request (max 528 bytes; actual amount is determined
  6535.           by CX)
  6536. SeeAlso: #2179
  6537. --------N-2F7A2FBX0EDC-----------------------
  6538. INT 2F U - Personal NetWare - HRMIB - UNINSTALL
  6539.     AX = 7A2Fh
  6540.     BX = 0EDCh ('EDC' = Novell European Development Center)
  6541. Return: ???
  6542. SeeAlso: AX=7AA0h
  6543. --------N-2F7A40-----------------------------
  6544. INT 2F - Novell NetWare - TCP/IP Protocol Stack - INSTALLATION CHECK
  6545.     AX = 7A40h
  6546. Return: AX = 7AFFh if installed
  6547.         0000h:BX = address of interrupt vector for MLID ISR
  6548.         CX = version (CH=major, CL=minor)
  6549.         DX = 0000h
  6550.         ES:DI -> entry point for TCP/IP stack (see #2182)
  6551. Notes:    Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
  6552.     this function is also supported by the Beame&Whiteside BWLWP40 shim,
  6553.       but it only returns AL and ES:DI, and does not support AX=7A41h
  6554. SeeAlso: AX=7A41h,INT 15/AX=DE2Eh,INT 60"Excelan"
  6555.  
  6556.  
  6557. (Table 2184)
  6558. Values for NetWare TCP/IP function code:
  6559.  01h    "accept" accept a network connection request
  6560.  02h    "bind" associate an address with a socket
  6561.  03h    close socket
  6562.     Call:    socket number field set
  6563.  04h    "connect" connect to a remote host
  6564.  05h    "getmyipaddr" get IP address
  6565.     Call:    socket number field in sockaddr set to 0000h
  6566.  06h    "getmymacaddr" get hardware address
  6567.  07h    "getpeername"
  6568.  08h    "getsockname" get socket name
  6569.  09h    "getsockopt" get socket options
  6570.  0Ah    "getsubnetmask" get subnet mask
  6571.  0Bh    "ioctl"
  6572.  0Ch    "listen" wait for connection request on socket
  6573.  0Dh    "select"
  6574.     Return: socket bitmap updated (1=active)
  6575.  0Eh    "setmyipaddr" (obsolete) set IP address
  6576.  0Fh    "setsockopt" set socket options
  6577.  10h    "shutdown"
  6578.  11h    "socket" open socket
  6579.     Call:    socket number field set to 0000h
  6580.     Return: socket number set
  6581.  12h    "recv" get data from peer
  6582.  13h    "recvfrom" get data from specified remote host
  6583.     Call:    socket number set
  6584.         packet length and buffer descriptors set
  6585.     Return:    packet length and receive buffers updated
  6586.         sockaddr field set to source port number + IP address
  6587.  14h    "send" write data to socket
  6588.  15h    "sendto" write data to specified recipient
  6589.     Call:    socket number set
  6590.         flags at offset 18h = 0000h
  6591.         packet length and buffer descriptors set
  6592. ---v4.02+ ---
  6593.  16h    get BOOTP data
  6594.     Return: BOOTP data stored in parameter block (see #3452)
  6595.  17h    "getsnmpinfo"
  6596.  18h    "getpathinfo" get/set configuration???
  6597. ---v4.??? ---
  6598.  19h    "getifn"    get interface number
  6599.  1Ah    "setipinfo"    set IP information
  6600.  1Bh    "getipinfo"    get IP information
  6601.  1Ch    "setdnsinfo"    set DNS information
  6602.  1Dh    "getdnsinfo"    get DNS information
  6603.  1Eh    "setroutes"    set/modify route entry(ies)
  6604.  1Fh    "getroutes"    get route entry(ies)
  6605.  20h    "removeroutes"    remove route entry(ies)
  6606.  21h    "setarpe"    set/modify ARP entry(ies)
  6607.  22h    "getarpe"    get ARP entry(ies)
  6608.  23h    "removearpe"    remove ARP entry(ies)
  6609. Notes:    these functions are based on the Unix socket interface
  6610.     OR function number with 80h to call ESR
  6611. SeeAlso: #2183
  6612.  
  6613. (Table 2182)
  6614. Call NetWare TCP/IP entry point with:
  6615.     ES:SI -> parameter block (see #2183)
  6616. Return: ES:SI parameter block updated
  6617.     DX may be destroyed
  6618.  
  6619. Format of NetWare TCP/IP Request Control Block (RCB):
  6620. Offset    Size    Description    (Table 2183)
  6621.  00h    DWORD    -> next RCB
  6622.  04h    DWORD    -> previous RCB
  6623.  08h    DWORD    -> FAR post routine called if bit 7 of function code set
  6624.  0Ch    BYTE    flags (internal use)
  6625.         bit 0: request in progress
  6626.         bit 1: posted
  6627.         bit 2: Windows
  6628.         bit 3: "PROTBUF"
  6629.         bit 4: "ABORTRCB" for Ctrl-Break handling
  6630.         bit 5: call INT 21/AX=0B00h while blocking
  6631.  0Dh  7 BYTEs    ???
  6632.  14h    BYTE    (ret) temporary result code
  6633.  15h    BYTE    (call) function code (bit 7 set if non-blocking) (see #2184)
  6634.  16h    BYTE    socket number
  6635.  17h    BYTE    (ret) result or error code (see #2181)
  6636. ---accept/bind/connect/getmyipaddr/getpeername/getsockname commands---
  6637.  18h        sockaddr structure (WORD port + DWORD IP address)
  6638. ---close comand---
  6639.  no additional fields
  6640. ---getmymacaddr command---
  6641.  18h  6 BYTEs    low-level hardware network address
  6642. ---BOOTP command---
  6643.  18h 64 BYTEs    BOOTP VSA data (see #3452)
  6644. ---getpathinfo command
  6645.  18h  8 BYTEs    key
  6646.         "TCP_CFG" used by PING.EXE
  6647.  20h 128 BYTEs    path
  6648.  A0h    WORD    length of path in previous field
  6649. ---getsockopt/setsockopt commands---
  6650.  18h    WORD    option name
  6651.         0004h SO_REUSEADDR
  6652.         0008h SO_KEEPALIVE
  6653.         0080h SO_LINGER
  6654.  1Ah    WORD    option value
  6655.  1Ch    WORD    "linger"
  6656. ---getsubnetmask command---
  6657.  18h    DWORD    subnet mask
  6658. ---ioctl command---
  6659.  18h    DWORD    argument value
  6660.  1Ch    WORD    ioctl number
  6661. ---listen command---
  6662.  18h    WORD    maximum allowable connection backlog
  6663. ---select command---
  6664.  18h    WORD    number of sockets
  6665.  1Ah        fd_set readfds (bitmap of sockets)
  6666.         fd_set writefds
  6667.         fd_set expectionfds
  6668.     DWORD    timeout in clock ticks
  6669. ---shutdown command---
  6670.  18h    WORD    shutdown type
  6671. ---socket command---
  6672.  18h    WORD    protocol (1 = ICMP, 6 = TCP, 17 = UDP)
  6673. ---I/O commands (recv,recvfrom,send,sendto)---
  6674.  18h    WORD    flags
  6675.  1Ah  6 BYTEs    sockaddr from/to
  6676.         WORD    port number
  6677.         DWORD    IP address
  6678.  20h    WORD    length of packet sent/received
  6679.  22h    WORD    number of pointer/length pairs following (max 8)
  6680.  24h 6N BYTEs    buffer descriptors, each
  6681.         Offset    Size    Description
  6682.          00h    DWORD    pointer to buffer
  6683.          04h    WORD    length of buffer
  6684. ---getsnmpinfo command---
  6685.  18h    DWORD    (ret) -> ??? data in TCPIP code segment
  6686. --getifn command---
  6687.  18h    WORD    interface number
  6688.  1Ah    WORD    MLID instance number
  6689.  1Ch 128 BYTEs    MLID name
  6690. ---getipinfo/setipinfo commands---
  6691.  18h    WORD    interface number (00h = default)
  6692.  1Ah    DWORD    IP address
  6693.  1Eh    DWORD    IP netmask
  6694.  22h  3 DWORDs    router addresses (00000000h = unused entry)
  6695. ---getdnsinfo/setdnsinfo commands---
  6696.  18h    WORD    interface number (00h = default)
  6697.  1Ah  3 DWORDs    name server IP addresses (00000000h = unused entry)
  6698.  26h 128 BYTEs    domain name
  6699. ---getroutes/setroutes/removeroutes commands---
  6700.  18h    WORD    number of route entries to follow (max 5)
  6701.  1Ah 10N BYTEs    route entries
  6702.         DWORD    destination host/net IP address
  6703.         DWORD    IP address of first router
  6704.         WORD    route type
  6705. ---getarpe/setarpe/removearpe commands---
  6706.  18h    WORD    number of ARP entries to follow (max 16)
  6707.  1Ah 10N BYTEs    ARP entries
  6708.         DWORD    destination IP address
  6709.         6 BYTEs    destination hardware address
  6710. ---other commands---
  6711.  18h  4 WORDs    parameter words 0 to 3 (see #2184 for usage)
  6712.  
  6713. (Table 2181)
  6714. Values for NetWare TCP/IP status:
  6715.  00h    successful
  6716.  04h    would block
  6717.  09h    invalid socket
  6718.  23h    would block
  6719.  24h    operation in progress
  6720.  25h    already in progress
  6721.  26h    not a socket
  6722.  27h    destination address required
  6723.  28h    message too long
  6724.  29h    wrong protocol type for socket
  6725.  2Ah    protocol not available
  6726.  2Bh    protocol not supported
  6727.  2Ch    socket type not supported
  6728.  2Dh    operation not supported on socket
  6729.  2Eh    protocol family not supported
  6730.  2Fh    address family not supported by protocol family
  6731.  30h    address already in use
  6732.  31h    unable to assign requested address
  6733.  32h    network is down
  6734.  33h    network is unreachable
  6735.  34h    network dropped connection
  6736.  35h    software caused connection abort
  6737.  36h    connection reset by peer
  6738.  37h    no buffer space
  6739.  38h    socket is already connected
  6740.  39h    socket is not connected
  6741.  3Ah    socket is in shutdown mode
  6742.  3Bh    too many references
  6743.  3Ch    connection timed out
  6744.  3Dh    connection refused
  6745.  3Eh    too many levels of symbolic links
  6746.  3Fh    file name too long
  6747.  40h    host is down
  6748.  41h    host unreachable
  6749.  42h    protocol stack not installed
  6750.  43h    asynchronous operation not supported
  6751.  44h    synchronous operation not supported
  6752.  45h    no RCB available
  6753.  FFh    blocking (call has not yet returned)
  6754. SeeAlso: #2183
  6755.  
  6756. Format of BOOTP data (stored in parameter block):
  6757. Offset    Size    Description    (Table 3452)
  6758.  18h  4 BYTEs    ???
  6759.  1Ch    BYTE    ??? (01h)
  6760.  1Dh    BYTE    address length (04h)
  6761.  1Eh  4 BYTEs    subnet mask
  6762.  22h    BYTE    ??? (03h)
  6763.  23h    BYTE    ??? (04h)
  6764.  24h  4 BYTEs    IP address of nearest router
  6765.  28h    BYTE    ??? (06h)
  6766.  29h    BYTE    length of following data (08h)
  6767.  2Ah  4 BYTEs    IP address of nameserver 1
  6768.  2Eh  4 BYTEs    IP address of nameserver 2
  6769.  32h    BYTE    ??? (0Ch)
  6770.  33h    BYTE    length of local name
  6771.  34h  N BYTEs    local host name
  6772.     BYTE    FFh (end marker)
  6773. SeeAlso: #2183,#2184
  6774. --------N-2F7A41-----------------------------
  6775. INT 2F U - Novell NetWare - TCP/IP Protocol Stack - WINDOWS SUPPORT???
  6776.     AX = 7A41h
  6777.     ES:DI -> FAR entry point for ??? (will be called with BX=1,2,3,4)
  6778. Return: AX = 7AFFh if supported
  6779.         0000h:BX = address of interrupt vector for MLID ISR
  6780.         CX = version (CH=major, CL=minor)
  6781.         DX = 0000h
  6782.         ES:SI -> DWORD containing passed value of ES:DI
  6783.         ES:DI -> entry point for TCP/IP stack
  6784. Notes:    Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
  6785.     the pointer which is set to ES:DI is cleared to 0000h:0000h when
  6786.       a Windows exit broadcast is received
  6787. SeeAlso: AX=7A40h
  6788. --------N-2F7A42-----------------------------
  6789. INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - GET ??? ENTRY POINT
  6790.     AX = 7A42h
  6791. Return: AX = 7AFFh if supported
  6792.         ES:DI -> ??? entry point (see #2185)
  6793.  
  6794. (Table 2185)
  6795. Call NetWare TCPIP.EXE entry point with:
  6796.     DX = ???
  6797.     ES:DI -> ??? (see #2186)
  6798. Return: AX = 0000h
  6799.     other registers destroyed
  6800.  
  6801. Format of data buffer:
  6802. Offset    Size    Description    (Table 2186)
  6803.  00h    WORD    offset of WORD ??? or 0000h
  6804.  02h    WORD    offset of DWORD ??? or 0000h
  6805.  04h    WORD    offset of DWORD ??? or 0000h
  6806. --------N-2F7A43-----------------------------
  6807. INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - GET ???
  6808.     AX = 7A43h
  6809. Return: AX = 7AFFh if supported
  6810.         DX = offset of ???
  6811. SeeAlso: AX=7A44h
  6812. --------N-2F7A44-----------------------------
  6813. INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - SET ???
  6814.     AX = 7A44h
  6815.     DX = offset of ??? (see AX=7A43h)
  6816. Return: AX = 7AFFh if supported
  6817. SeeAlso: AX=7A43h
  6818. --------N-2F7A4C-----------------------------
  6819. INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - GET ???
  6820.     AX = 7A4Ch
  6821. Return: AX = 7AFFh if supported
  6822.         BX = ??? (0037h)
  6823.         CX = ??? (001Ch)
  6824. --------N-2F7A4DBX0001-----------------------
  6825. INT 2F U - Novell NetWare - ???
  6826.     AX = 7A4Dh
  6827.     BX = 0001h
  6828.     ES:DI -> ???
  6829. Return: AL = FFh if ???
  6830.         ES:DI -> ???
  6831. Note:    called by NETBIOS.EXE v3.01
  6832. --------N-2F7A4E-----------------------------
  6833. INT 2F U - Novell LAN Workplace for DOS - RARPD.EXE - INSTALLATION CHECK
  6834.     AX = 7A4Eh
  6835. Return: AX = 7AFFh if installed
  6836. SeeAlso: AX=7A4Fh"RARPD"
  6837. --------N-2F7A4F-----------------------------
  6838. INT 2F U - Novell LAN Workplace for DOS - RARPD.EXE - UNINSTALL
  6839.     AX = 7A4Fh
  6840. Return: AX = 7AFFh if installed
  6841.     DX,ES destroyed
  6842. Note:    this call conflicts with SNMP.EXE (both RARPD and SNMP are supplied
  6843.       with LAN Workplace for DOS!), such that running SNMP will uninstall
  6844.       RARPD as SNMP checks whether it is already installed!
  6845. SeeAlso: AX=7A4Eh"RARPD",AX=7A4Fh/BX=0001h
  6846. --------N-2F7A4FBX0001-----------------------
  6847. INT 2F U - Novell NetWare - SNMP.EXE - INSTALLATION CHECK
  6848.     AX = 7A4Fh
  6849.     BX = 0001h
  6850. Return: AX = 7AFFh if installed
  6851. Note:    this call conflicts with RARPD.EXE (both SNMP and RARPD are supplied
  6852.       with LAN Workplace for DOS!), such that running SNMP will uninstall
  6853.       RARPD as SNMP checks whether it is already installed!
  6854. SeeAlso: AX=7A4Fh"RARPD",AX=7A4Fh/BX=0002h
  6855. --------N-2F7A4FBX0002-----------------------
  6856. INT 2F U - Novell NetWare - SNMP.EXE - ???
  6857.     AX = 7A4Fh
  6858.     BX = 0002h
  6859. Return: AL = status
  6860.         4Fh if failed
  6861.         FFh if successful
  6862. SeeAlso: AX=7A4Fh/BX=0001h
  6863. --------N-2F7A80-----------------------------
  6864. INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - ABNORMAL EXIT
  6865.     AX = 7A80h
  6866. Return: nothing
  6867. Notes:    called on abnormal exit of the NetWare shell to notify other Novell
  6868.       TSRs that it is unsafe to call the shell in the future; also called
  6869.       by NETX.VLM when it is unloaded
  6870.     must be passed through so that all interested programs see the exit
  6871.     on receiving this call, IPXODI clears an internal pointer to a
  6872.       default value; Novell's NETBIOS.EXE clears its INT 21h pointer to
  6873.       0000h:0000h and stops calling it
  6874. SeeAlso: AX=7A81h
  6875. --------N-2F7A81-----------------------------
  6876. INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - SET SHELL INT 21 HANDLER
  6877.     AX = 7A81h
  6878.     CX:DX -> shell's INT 21h entry point
  6879. Return: nothing
  6880. Notes:    the shell calls this function as it loads to allow interested TSRs
  6881.       and drivers to make a local copy of the shell's entry point
  6882.     must be passed through so that all interested programs see it
  6883. --------N-2F7A85-----------------------------
  6884. INT 2F C - Novell NetWare - shell 3.01 - BROADCAST INFORM
  6885.     AX = 7A85h
  6886.     CX = broadcast server number
  6887. Return: CX = 0000h if broadcast message handled by another program
  6888.     CX unchanged if broadcast not handled
  6889. SeeAlso: AX=7A21h
  6890. --------N-2F7A90-----------------------------
  6891. INT 2F U - Novell NetWare - NETBIOS.EXE 3+ - INSTALLATION CHECK
  6892.     AX = 7A90h
  6893. Return: AL = 00h if present
  6894.         BX = ???
  6895.         CX = PSP segment of NETBIOS resident code
  6896. SeeAlso: AX=7AFEh
  6897. --------N-2F7AA0-----------------------------
  6898. INT 2F U - Personal NetWare - HRMIB - ???
  6899.     AX = 7AA0h
  6900.     BX = function
  6901.         0000h ???
  6902.         0001h ???
  6903. Return: ???
  6904. SeeAlso: AX=7A2Fh/BX=0EDCh
  6905. --------N-2F7AC1-----------------------------
  6906. INT 2F - LAN HiJack - LHR - DISABLE???
  6907.     AX = 7AC1h
  6908. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  6909.       to take over control of a workstation remotely; LHR is the program
  6910.       run on the slave workstation
  6911. SeeAlso: AX=7AC8h,AX=7AC9h,AX=7ACFh
  6912. --------N-2F7AC2-----------------------------
  6913. INT 2F - LAN HiJack - LHR - SYNCHRONIZE SHIFT STATES???
  6914.     AX = 7AC2h
  6915. Note:    sets BIOS keyboard status byte to an internal variable
  6916. SeeAlso: AX=7AC3h,AX=7ACFh
  6917. --------N-2F7AC3-----------------------------
  6918. INT 2F - LAN HiJack - LHR - CLEAR ??? FLAG
  6919.     AX = 7AC3h
  6920. SeeAlso: AX=7AC2h,AX=7ACFh
  6921. --------N-2F7AC8-----------------------------
  6922. INT 2F - LAN HiJack - LHR - ENABLE FUNCTIONS
  6923.     AX = 7AC8h
  6924.     BL = function(s) to enable (see #2187)
  6925. SeeAlso: AX=7AC1h,AX=7AC9h,AX=7ACFh
  6926.  
  6927. Bitfields for LAN HiJack function(s) to enable/disable:
  6928. Bit(s)    Description    (Table 2187)
  6929.  0    ???
  6930.  1    remote keyboard enabled
  6931.  2    support remote's mouse
  6932.  3-7    unused
  6933. --------N-2F7AC9-----------------------------
  6934. INT 2F - LAN HiJack - LHR - DISABLE FUNCTIONS
  6935.     AX = 7AC9h
  6936.     BL = function(s) to disable (see #2187)
  6937. SeeAlso: AX=7AC1h,AX=7AC8h
  6938. --------N-2F7ACA-----------------------------
  6939. INT 2F - LAN HiJack - LHJ - ???
  6940.     AX = 7ACAh
  6941.     BL = ???
  6942. Return: ???
  6943. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  6944.       to take over control of a workstation remotely; LHJ is the program
  6945.       run on the controlling workstation
  6946. --------N-2F7ACB-----------------------------
  6947. INT 2F - LAN HiJack - LHJ - ???
  6948.     AX = 7ACBh
  6949.     BX = ???
  6950. Return: ???
  6951. Note:    this function appears to be related to the keyboard
  6952. SeeAlso: AX=7ACCh
  6953. --------N-2F7ACC-----------------------------
  6954. INT 2F - LAN HiJack - LHJ - ???
  6955.     AX = 7ACCh
  6956.     BX = ???
  6957. Return: ???
  6958. Note:    this function appears to be related to the mouse
  6959. SeeAlso: AX=7ACBh
  6960. --------N-2F7ACFBX0000-----------------------
  6961. INT 2F - LAN HiJack - LHR - INSTALLATION CHECK
  6962.     AX = 7ACFh
  6963.     BX = 0000h
  6964. Return: BX = segment of resident code if installed
  6965. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  6966.       to take over control of a workstation remotely; LHR is the program
  6967.       run on the slave workstation
  6968. --------N-2F7AF0-----------------------------
  6969. INT 2F - Novell NetWare - DOSNP.EXE v1.30G - INSTALLATION CHECK
  6970.     AX = 7AF0h
  6971. Return: AL = FFh if present
  6972.         ES = 7AF0h
  6973.         CX = PSP segment of resident code
  6974. --------N-2F7AF1-----------------------------
  6975. INT 2F - Novell NetWare - Access Server Driver - INSTALLATION CHECK
  6976.     AX = 7AF1h
  6977.     BL = sequence number (01h first driver, 02h second, 00h no driver)
  6978. Return: AX <> 7AF1h if present
  6979.         BH = total number of drivers
  6980.         ---if BL nonzero on entry---
  6981.         AL = number of ports provided by specified driver
  6982.         ES:DI -> driver entry point
  6983.               (see #2188,#2189,#2190,#2191,#2192,#2193,#2194,#2195)
  6984.         ES:DX -> ID string
  6985. SeeAlso: INT 7A/BX=001Ch
  6986.  
  6987. (Table 2188)
  6988. Call Access Server driver "initialize port" function with:
  6989.     AH = 01h
  6990.     AL = port number (00h-0Fh)
  6991.     ES:BX -> configuration parameter block (see #2201)
  6992.     interrupts disabled
  6993. Return: CF clear if successful
  6994.     CF set on error
  6995. SeeAlso: #2189
  6996.  
  6997. (Table 2189)
  6998. Call Access Server driver "get port status" function with:
  6999.     AH = 02h
  7000.     AL = port number (00h-0Fh)
  7001.     interrupts disabled
  7002. Return: CF clear if successful
  7003.         BL = transmitter status (see #2198)
  7004.         BH = receiver status (see #2199)
  7005.         DL = external status signals (see #2200)
  7006.     CF set on error
  7007.     interrupts disabled
  7008. SeeAlso: #2188,#2190,#2193
  7009.  
  7010. (Table 2190)
  7011. Call Access Server driver "get input from port" function with:
  7012.     AH = 03h
  7013.     AL = port number (00h-0Fh)
  7014.     CX = size of data buffer
  7015.     ES:BX -> buffer for data
  7016.     interrupts disabled
  7017. Return: CF clear if successful
  7018.     CF set on error
  7019.     interrupts disabled
  7020.     CX = number of bytes read
  7021. Note:    the driver will add a NUL to the buffer when a break signal is detected
  7022. SeeAlso: #2190,#2191
  7023.  
  7024. (Table 2191)
  7025. Call driver "send output data to port" function with:
  7026.     AH = 04h
  7027.     AL = port number (00h-0Fh)
  7028.     CX = number of bytes to send
  7029.     ES:BX -> buffer containing data
  7030.     interrupts disabled
  7031. Return: CF clear if successful
  7032.     CF set on error
  7033.     interrupts disabled
  7034.     CX = number of bytes actually written
  7035. SeeAlso: #2190,#2192
  7036.  
  7037. (Table 2192)
  7038. Call driver "get I/O character counts" function with:
  7039.     AH = 05h
  7040.     AL = port number (00h-0Fh)
  7041.     interrupts disabled
  7042. Return: CF clear if successful
  7043.         BX = number of bytes pending transmission
  7044.         CX = number of bytes available for reading
  7045.     CF set on error
  7046.     interrupts disabled
  7047. SeeAlso: #2190,#2191
  7048.  
  7049. (Table 2193)
  7050. Call driver "control XON/XOFF" function with:
  7051.     AH = 06h
  7052.     AL = port number (00h-0Fh)
  7053.     DL = new state
  7054.         (00h software flow control disabled, else enabled)
  7055.     interrupts disabled
  7056. Return: CF clear if successful
  7057.     CF set on error
  7058.     interrupts disabled
  7059. SeeAlso: #2194
  7060.  
  7061. (Table 2194)
  7062. Call driver "get error counts and statistics" function with:
  7063.     AH = 07h
  7064.     AL = port number (00h-0Fh)
  7065.     ES:BX -> buffer for statistics (see #2202)
  7066.     interrupts disabled
  7067. Return: CF clear if successful
  7068.         ES:BX buffer filled
  7069.     CF set on error
  7070.     interrupts disabled
  7071. SeeAlso: #2195,#2196,#2197
  7072.  
  7073. (Table 2195)
  7074. Call driver "general request" function with:
  7075.     AH = 08h
  7076.     AL = port number (00h-0Fh)
  7077.     DX = requested operations
  7078.         bit 0: flush transmit buffers
  7079.         bit 1: flush receive buffers
  7080.         bit 4: define XON/XOFF characters
  7081.     ES:BX -> XON/XOFF characters (see #2203) if DX bit 4 set
  7082.     interrupts disabled
  7083. Return: CF clear if successful
  7084.     CF set on error
  7085.     interrupts disabled
  7086.  
  7087. (Table 2196)
  7088. Call driver "deadman timer management" function with:
  7089.     AH = 09h
  7090.     AL = port number (00h-0Fh)
  7091.     BX = next time interval in seconds (0000h to disable timer)
  7092.     interrupts disabled
  7093. Return: CF clear
  7094.     interrupts disabled
  7095. SeeAlso: #2197
  7096.  
  7097. (Table 2197)
  7098. Call driver "get buffer sizes" function with:
  7099.     AH = 0Ah
  7100.     AL = port number (00h-0Fh)
  7101.     interrupts disabled
  7102. Return: CF clear if successful
  7103.        BX = size of transmit buffer
  7104.        CX = size of receive buffer
  7105.     CF set on error
  7106.     interrupts disabled
  7107. SeeAlso: #2196
  7108.  
  7109. (Table 2198)
  7110. Values for Access Server transmitter status:
  7111.  00h    uninitialized
  7112.  01h    ready, not transmitting
  7113.  02h    transmitting
  7114.  03h    XOFF received
  7115.  04h    transmitting, buffer full
  7116.  05h    XOFF received and buffer full
  7117.  
  7118. (Table 2199)
  7119. Values for Access Server receiver status:
  7120.  00h    uninitialized
  7121.  01h    ready
  7122.  02h    receive buffer full, data may have been lost
  7123.  
  7124. Bitfields for external status signals:
  7125. Bit(s)    Description    (Table 2200)
  7126.  7,6    undefined
  7127.  5    CTS active
  7128.  4    DSR active
  7129.  3    DCD active
  7130.  2,1    undefined
  7131.  0    ring indicator
  7132.  
  7133. Format of Access Server configuration parameter block:
  7134. Offset    Size    Description    (Table 2201)
  7135.  00h    BYTE    receive baud rate index
  7136.         00h 50 bps, 01h 75 bps, 02h 110 bps, 03h 134.5 bps,
  7137.         04h 150 bps, 05h 300 bps, 06h 600 bps, 07h 1200 bps,
  7138.         08h 1800 bps, 09h 2000 bps, 0Ah 2400 bps, 0Bh 3600 bps,
  7139.         0Ch 4800 bps, 0Dh 7200 bps, 0Eh 9600 bps, 0Fh 19200 bps,
  7140.         10h 38400 bps, 11h 57600 bps, 12h 115200 bps
  7141.  01h    BYTE    receive bits per character (0=5 bits..3=8 bits)
  7142.  02h    BYTE    receive stop bits
  7143.  03h    BYTE    receive parity
  7144.         00h none, 01h odd, 02h even, 03h mark, 04h space
  7145.  04h    BYTE    transmit baud rate index (same as receive baud rate)
  7146.  05h    BYTE    transmit bits per character (0=5 bits..3=8 bits)
  7147.  06h    BYTE    transmit stop bits
  7148.  07h    BYTE    transmit parity (same as receive parity)
  7149.  08h    BYTE    DTR state (00h off, 01h on)
  7150.  09h    BYTE    RTS state (00h off, 01h on)
  7151.  0Ah    BYTE    flow control (00h none, 01h XON/XOFF, 02h RTS/CTS, 03h both)
  7152.  0Bh    BYTE    break control (00h off, 01h on)
  7153.  
  7154. Format of Access Server statistics:
  7155. Offset    Size    Description    (Table 2202)
  7156.  00h    BYTE    port number
  7157.  01h    BYTE    external status signals (see #2200)
  7158.  02h    BYTE    transmitter status (see #2198)
  7159.  03h    BYTE    receiver status (see #2199)
  7160.  04h    DWORD    number of characters received
  7161.  08h    DWORD    number of characters transmitted
  7162.  0Ch    WORD    input parity errors
  7163.  0Eh    WORD    input framing errors
  7164.  10h    WORD    lost characters due to hardware overrun
  7165.  12h    WORD    lost characters due to data buffer overrun
  7166. Note:    the counts are not allowed to wrap around; once a count reaches FFFFh
  7167.       or FFFFFFFFh, it is no longer incremented
  7168.  
  7169. Format of Access Server XON/XOFF characters:
  7170. Offset    Size    Description    (Table 2203)
  7171.  00h    BYTE    04h (number of bytes following)
  7172.  01h    BYTE    transmit XON character
  7173.  02h    BYTE    transmit XOFF character
  7174.  03h    BYTE    receive XON character
  7175.  04h    BYTE    receive XOFF character
  7176. --------N-2F7AFE-----------------------------
  7177. INT 2F U - Novell NetWare - DOSNP.EXE - INSTALLATION CHECK
  7178.     AX = 7AFEh
  7179. Return: AL = FFh if present
  7180.         ES = (data???) segment of DOSNP
  7181. Program: DOSNP.EXE provides "named pipes" support for DOS workstations running
  7182.        NetWare
  7183. Note:    the NetWare shell calls this function and refuses to load if DOSNP is
  7184.       present
  7185. SeeAlso: AX=7A90h
  7186. --------N-2F7AFFBX0000-----------------------
  7187. INT 2F - Novell NetWare - TBMI v1.1+ - INSTALLATION CHECK / Windows SUPPORT
  7188.     AX = 7AFFh
  7189.     BX = 0000h
  7190.     CX = 4E65h ("Ne")
  7191.     DX = 7457h ("tW")
  7192.     ES:DI -> Windows support procedure (see #2204)
  7193. Return: AL = FFh if installed
  7194.         CX = configured sockets (14h)
  7195.         DS:SI -> data table ???
  7196.         ES:DI -> IPX far call handler
  7197. Notes:    for IPX/SPX this call reportedly returns DS:SI pointing to the table
  7198.       of pointers to service events queue head and tail
  7199.     this function is also supported by IPXODI; v2.12 does not change DS,
  7200.       but does set SI to an internal address
  7201. SeeAlso: AX=7AFFh/BX=0001h
  7202.  
  7203. (Table 2204)
  7204. Values Windows support procedure called with:
  7205.     BP = function
  7206.         0001h Get ECB
  7207.         BX = socket number
  7208.         Return: ES:SI -> ECB or 0000h:0000h if none available
  7209.         0002h Count Listen ECBs
  7210.         AX = BX = socket
  7211.         Return: CX = number of listen ECBs for socket
  7212.                 (must be >= 2 for SPX to work)
  7213.         0003h ???
  7214.         0004h Inform task switcher of ECB locations
  7215.         Note:    registers other than those listed above are equal
  7216.               to the values when IPX was called
  7217. Note:    the support function will not be called if IPX is called with BX
  7218.       bit 15 set
  7219. --------N-2F7AFFBX0001-----------------------
  7220. INT 2F - Novell NetWare - TBMI v1.1+, shell v3.01d - INSTALLATION CHECK???
  7221.     AX = 7AFFh
  7222.     BX = 0001h
  7223.     CX = 4E65h ("Ne")
  7224.     DX = 7457h ("tW")
  7225. Return: AL = FFh if installed
  7226.         CX = ???  (8000h)
  7227.         SI = ??? (or -> ???) (0002h and 0007h seen)
  7228.         ES:DI -> IPX far call handler
  7229.         ES:DX -> 6-byte data area ???
  7230. Note:    this function is also supported by IPXODI, but IPXODI v2.12 does not
  7231.       return ES:DX
  7232. SeeAlso: AX=7AFFh/BX=0000h
  7233. --------d-2F7F00-----------------------------
  7234. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - INSTALLATION CHECK
  7235.     AX = 7F00h
  7236. Return: AL = FFh if installed
  7237. SeeAlso: AX=7F01h"Harper",AX=7F02h"Harper",AX=7F03h"Harper"
  7238. --------P-2F7F00-----------------------------
  7239. INT 2F - PRINDIR v9.0 - INSTALLATION CHECK
  7240.     AX = 7F00h
  7241. Return: AL = FFh if installed
  7242.         BX = version (BH = major, BL = minor)
  7243.         CX:DX -> ASCIZ signature "PRINDIR"
  7244. Range:    AH=7Fh is the default, may be changed at installation time
  7245. Note:    prior versions of PRINDIR used INT 7C or INT 7A
  7246. SeeAlso: AX=7F01h"PRINDIR",AX=7F02h"PRINDIR",AX=7F03h"PRINDIR"
  7247. SeeAlso: AX=7F06h"PRINDIR",AX=7F08h,AX=7F0Ah,AX=7F0Ch,AX=7F0Eh,INT 7C"PRINDIR"
  7248. --------d-2F7F01-----------------------------
  7249. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO COMMAND
  7250.     AX = 7F01h
  7251.     DS:DX -> command record (see #2205)
  7252. Return: AL = status
  7253.         00h successful
  7254.         else error code
  7255. SeeAlso: AX=7F00h"Harper",AX=7F02h"Harper",INT 11/AH=FFh"SDLP"
  7256. SeeAlso: INT 21/AX=4402h"ASPI",INT 4F/AX=8100h
  7257.  
  7258. Format of CD-ROM redirector command record:
  7259. Offset    Size    Description    (Table 2205)
  7260.  00h    BYTE    ID
  7261.  01h 10 BYTEs    CDB (Command Descriptor Block) for operation (see #3303,#3304)
  7262.  0Bh    WORD    segment of buffer
  7263.  0Dh    WORD    offset of buffer
  7264.  0Fh    BYTE    status
  7265.  10h    BYTE    sense
  7266.  12h    WORD    count
  7267. --------P-2F7F01-----------------------------
  7268. INT 2F - PRINDIR v9.0 - SET CAPTURE DEVICE
  7269.     AX = 7F01h
  7270.     DX = capture device (as used by /GET commandline option)
  7271. Return: AX = status
  7272.         0000h successful
  7273.         FFFFh invalid device
  7274. SeeAlso: AX=7F00h"PRINDIR",AX=7F02h"PRINDIR",AX=7F03h"PRINDIR"
  7275. SeeAlso: AX=7F05h"PRINDIR"
  7276. --------d-2F7F02-----------------------------
  7277. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO RESET
  7278.     AX = 7F02h
  7279. SeeAlso: AX=7F00h,AX=7F01h
  7280. --------P-2F7F02-----------------------------
  7281. INT 2F - PRINDIR v9.0 - SET DESTINATION DEVICE
  7282.     AX = 7F02h
  7283.     DX = destination device number (as used by /PUT commandline option)
  7284. Return: AX = status
  7285.         0000h successful
  7286.         FFFFh invalid device number
  7287. SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F04h"PRINDIR"
  7288. SeeAlso: AX=7F06h"PRINDIR"
  7289. --------d-2F7F03-----------------------------
  7290. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - UNINSTALL
  7291.     AX = 7F03h
  7292. Return: AL = status
  7293.         00h successful
  7294.         01h unable to uninstall
  7295. SeeAlso: AX=7F00h
  7296. --------P-2F7F03-----------------------------
  7297. INT 2F - PRINDIR v9.0 - SET CAPTURE FILENAME
  7298.     AX = 7F03h
  7299.     CX:DX -> ASCIZ name of capture file
  7300. Return: AX = status
  7301.         0000h successful
  7302.         FFFFh name too long
  7303. SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F04h"PRINDIR"
  7304. SeeAlso: AX=7F05h"PRINDIR",AX=7F07h"PRINDIR"
  7305. --------P-2F7F04-----------------------------
  7306. INT 2F - PRINDIR v9.0 - SET LOCK FILENAME
  7307.     AX = 7F04h
  7308.     CX:DX -> ASCIZ name of lock file
  7309. Return: AX = status
  7310.         0000h successful
  7311.         FFFFh invalid device number
  7312. SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F03h"PRINDIR"
  7313. SeeAlso: AX=7F05h,AX=7F06h,AX=7F08h,AX=7F0Ah,AX=7F0Bh
  7314. --------P-2F7F05-----------------------------
  7315. INT 2F - PRINDIR v9.0 - DUMP CAPTURE BUFFER
  7316.     AX = 7F05h
  7317. Return: AX = status
  7318.         0000h successful
  7319. SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F04h"PRINDIR",AX=7F06h
  7320. --------P-2F7F06-----------------------------
  7321. INT 2F - PRINDIR v9.0 - SET NORMAL TEXT COLOR
  7322.     AX = 7F06h
  7323.     DH = new attribute for normal text
  7324. Return: AX = status
  7325.         0000h successful
  7326. SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F05h"PRINDIR",AX=7F07h
  7327. --------P-2F7F07-----------------------------
  7328. INT 2F - PRINDIR v9.0 - SET HIGHLIGHT TEXT COLOR
  7329.     AX = 7F07h
  7330.     DH = new attribute for highlighted text
  7331. Return: AX = status
  7332.         0000h successful
  7333. SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F06h"PRINDIR",AX=7F08h
  7334. --------P-2F7F08-----------------------------
  7335. INT 2F - PRINDIR v9.0 - SET POPUP HOTKEY
  7336.     AX = 7F08h
  7337.     DH = new scancode for hotkey
  7338. Return: AX = status
  7339.         0000h successful
  7340. SeeAlso: AX=7F00h"PRINDIR",AX=7F05h"PRINDIR",AX=7F09h,AX=7F0Bh,AX=7F0Dh
  7341. --------P-2F7F09-----------------------------
  7342. INT 2F - PRINDIR v9.0 - SET BYTE COUNTER DISPLAY
  7343.     AX = 7F09h
  7344.     DH = new state (00h off, 01h on)
  7345. Return: AX = status
  7346.         0000h successful
  7347. SeeAlso: AX=7F00h"PRINDIR",AX=7F07h"PRINDIR",AX=7F08h,AX=7F0Ah,AX=7F0Ch
  7348. --------P-2F7F0A-----------------------------
  7349. INT 2F - PRINDIR v9.0 - SET FLUSH DELAY
  7350.     AX = 7F0Ah
  7351.     DX = number of clock ticks before flushing
  7352. Return: AX = status
  7353.         0000h successful
  7354. SeeAlso: AX=7F00h"PRINDIR",AX=7F07h"PRINDIR",AX=7F09h,AX=7F0Bh,AX=7F0Ch
  7355. --------P-2F7F0B-----------------------------
  7356. INT 2F - PRINDIR v9.0 - SET MINIMUM DUMP SIZE
  7357.     AX = 7F0Bh
  7358.     DX = number of kilobytes to accumulate before dumping
  7359. Return: AX = status
  7360.         0000h successful
  7361. SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Ch,AX=7F0Dh,AX=7F0Eh
  7362. --------P-2F7F0C-----------------------------
  7363. INT 2F - PRINDIR v9.0 - SET ECHO STATE
  7364.     AX = 7F0Ch
  7365.     DX = new state (00h echo off, 01h echo on)
  7366. Return: AX = status
  7367.         0000h successful
  7368. SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Bh,AX=7F0Dh,AX=7F0Eh
  7369. --------P-2F7F0D-----------------------------
  7370. INT 2F - PRINDIR v9.0 - SHOW POPUP PARAMETER MENU
  7371.     AX = 7F0Dh
  7372. Return: AX = status
  7373.         0000h successful
  7374.         else  failed
  7375. SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Bh,AX=7F0Ch,AX=7F0Eh
  7376. --------P-2F7F0E-----------------------------
  7377. INT 2F - PRINDIR v9.0 - SUBMIT BYTE TO CURRENT DESTINATION DEVICE
  7378.     AX = 7F0Eh
  7379.     DL = byte to send to destination device
  7380. Return: AX = status
  7381.         0000h successful
  7382.         else  failed
  7383. SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Bh,AX=7F0Ch,AX=7F0Dh
  7384. ----------2F7F24-----------------------------
  7385. INT 2F - Multiplex - ???
  7386.     AX = 7F24h
  7387.     ???
  7388. Return: ???
  7389. Note:    called by PC/370, an IBM 370 emulator by Donald S. Higgins
  7390. ----------2F7F26-----------------------------
  7391. INT 2F - Multiplex - ???
  7392.     AX = 7F26h
  7393.     ???
  7394. Return: ???
  7395. Note:    called by PC/370, an IBM 370 emulator by Donald S. Higgins
  7396. --------N-2F8000-----------------------------
  7397. INT 2F - EASY-NET - INSTALLATION CHECK
  7398.     AX = 8000h
  7399. Return: AL = 00h not installed
  7400.          FFh installed
  7401. Program: EASY-NET is a shareware two-machine serial-port network
  7402. --------N-2F8000-----------------------------
  7403. INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
  7404.     AX = 8000h
  7405. Return: AL = FFh if installed
  7406.         BX = CS of resident code
  7407.         CX = ??? (03FCh)
  7408. Program: TurboNET is a NetBIOS-based file redirector and server; a
  7409.       demonstration version may be downloaded from Nanosoft's BBS
  7410. SeeAlso: AX=8100h
  7411. --------t-2F8000-----------------------------
  7412. INT 2F - CS_TSR specification - TSR INSTALLATION CHECK
  7413.     AX = 8000h
  7414.     DS:SI -> 4-byte CS_TSR signature (11h 43h 53h 10h)
  7415. Return: AL = status
  7416.         00h no CS_TSR-compliant TSRs installed
  7417.         01h installed, but signature did not match
  7418.         FFh installed, signature matches
  7419.         ES:DI -> resident process block (see #2206) of last installed
  7420.               TSR (if DS:SI pointed at signature on entry)
  7421. Program: the CS_TSR specification is a standardized TSR interface by Compact
  7422.       Soft group in Kiev, Ukraine
  7423. Desc:    determine whether any CS_TSR-compliant TSRs are installed on the
  7424.       selected multiplex number
  7425. Range:    AH=80h to AH=FFh
  7426. SeeAlso: AX=8001h"CS_TSR",AX=8002h"CS_TSR",AX=8003h"CS_TSR"
  7427.  
  7428. Format of CS_TSR process block:
  7429. Offset    Size    Description    (Table 2206)
  7430.  00h  4 BYTEs    CS_TSR signature 11h 43h 53h 10h
  7431.  04h    BYTE    INT 2F multiplex number
  7432.  05h    WORD    virtual process handle (unique among loaded TSRs)
  7433.  07h  2 BYTEs    version (binary minor version, then major version)
  7434.  09h    WORD    PSP segment of TSR
  7435.  0Bh    DWORD    pointer to ASCIZ program name
  7436.  0Fh  3 BYTEs    program creation date (day, month, year)
  7437.  12h  3 BYTEs    process start time (seconds, minutes, hours)
  7438.  15h  3 BYTEs    process start date (day, month, year)
  7439. --------F-2F8000DX0000-----------------------
  7440. INT 2F - FaxBIOS interface - INSTALLATION CHECK
  7441.     AX = 8000h
  7442.     DX = 0000h
  7443.     DI = 0000h
  7444. Return: AL = FFh if installed
  7445.     DX:DI -> signature "FaxBiosjpc"
  7446. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  7447. SeeAlso: AH=2Ah,AX=80FBh
  7448. --------N-2F8001-----------------------------
  7449. INT 2F - Nanosoft, Inc. TurboNET server - ???
  7450.     AX = 8001h
  7451.     DS:SI -> 16-byte buffer for ???
  7452. Return: AH = status
  7453.         00h successful
  7454.         01h error (TurboNET busy)
  7455. Note:    makes NetBIOS calls
  7456. --------t-2F8001-----------------------------
  7457. INT 2F - CS_TSR specification - GET HANDLE (TSR-SPECIFIC INSTALLATION CHECK)
  7458.     AX = 8001h
  7459.     DS:SI -> ASCIZ signature string for desired TSR (see #2207)
  7460. Return: BX = process handle or 0000h if specified TSR not installed
  7461.     ES:DI -> process block for TSR (see #2206) if BX<>0000h
  7462. Note:    A widely-available copy of ASCII billing itself as "ASCII 2.OO by
  7463.       Nick Zaikin Jr." is in fact a hacked copy of the Compact Soft
  7464.       ASCII v4.23 which is identical except for the changed attribution
  7465.       and version (in fact, some instances of "4.23" were missed); the
  7466.       hacked copy requires the signature string
  7467.       "ASCII 2.OO by Nick Zaikin Jr." instead of the unhacked version's
  7468.       simple signature "ASCII"
  7469. SeeAlso: AX=8000h"CS_TSR",AX=8002h"CS_TSR"
  7470.  
  7471. (Table 2207)
  7472. Values for CS_TSR signature strings:
  7473.  "ASCII"    ASCII, a popup ASCII table with character input
  7474.  "Halculator"    HALC, a 32-bit RPN WYSIWIH calculator with undo and ptr support
  7475.  "AntiTurbo"    AT!, an intelligent system slow-down utility
  7476. --------t-2F8002-----------------------------
  7477. INT 2F - CS_TSR specification - GET PROCESS BLOCK BY PROCESS HANDLE
  7478.     AX = 8002h
  7479.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  7480. Return: ES:DI -> process block for specified TSR (see #2206)
  7481.         unchanged if no match for process handle
  7482. Note:    This function is used to allocate a process handle when the TSR
  7483.       installs itself, by setting ES:DI to point at something other than
  7484.       a CS_TSR process block's signature string and iterating through the
  7485.       possible process handles (0001h to FFFFh) until ES:DI is returned
  7486.       unchanged
  7487. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8003h"CS_TSR"
  7488. --------t-2F8003-----------------------------
  7489. INT 2F - CS_TSR specification - CUSTOM SUBFUNCTION
  7490.     AX = 8003h
  7491.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  7492.     other registers vary by TSR
  7493. Return: vary by TSR, unchanged if not supported
  7494. Program: the CS_TSR specification is a standardized TSR interface by Compact
  7495.       Soft group in Kiev, Ukraine
  7496. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8002h"CS_TSR"
  7497. --------F-2F80FB-----------------------------
  7498. INT 2F - FaxBIOS interface - COMMAND SUBMISSION
  7499.     AX = 80FBh
  7500.     BX = function number (see #2208)
  7501.     DX:DI -> command buffer
  7502.           (see #2210,#2213,#2214,#2215,#2216,#2217,#2222,#2228,#2235)
  7503. Return: AL = FFh if submitted OK
  7504.     CX = result code (see #2209)
  7505. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  7506. SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
  7507.  
  7508. (Table 2208)
  7509. Values for FaxBIOS function number:
  7510.  0001h    SYS_LOGIN
  7511.  0002h    SYS_LOGOUT
  7512.  0003h    SYS_GET_FAXAPP_INFO
  7513.  0004h    STAT_IO_GET
  7514.  0005h    STAT_FAXBIOS_GET
  7515.  0006h    PDIR_OPEN
  7516.  0007h    PDIR_CLOSE (see #2218)
  7517.  0008h    PDIR_READ_PERSON (see #2219)
  7518.  0009h    PDIR_PARTIAL_READ
  7519.  000Ah    PDIR_READ_GROUP
  7520.  000Bh    PDIR_READ_MEMBER_LIST
  7521.  000Ch    PDIR_WRITE_PERSON
  7522.  000Dh    PDIR_WRITE_GROUP
  7523.  000Eh    PDIR_DELETE_PERSON
  7524.  000Fh    PDIR_DELETE_GROUP
  7525.  0010h    PDIR_READ_GROUP_LIST
  7526.  0011h    PDIR_IN_GROUP
  7527.  0012h    PDIR_OUT_GROUP
  7528.  0013h    SCHED_OPEN (see #2220)
  7529.  0014h    SCHED_ADD_DEST (see #2221)
  7530.  0015h    SCHED_ADD_FILE (see #2222)
  7531.  0016h    SCHED_SET_PARAMS (see #2223)
  7532.  0017h    SCHED_CANCEL (see #2220)
  7533.  0018h    SCHED_CLOSE (see #2224)
  7534.  0019h    SLOG_OPEN (see #2225)
  7535.  001Ah    SLOG_CLOSE (see #2225)
  7536.  001Bh    SLOG_SHORT_ENV_STAT
  7537.  001Ch    SLOG_LONG_ENV_STAT
  7538.  001Dh    SLOG_DEST_STAT
  7539.  001Eh    SLOG_FILE_STAT
  7540.  001Fh    SLOG_CANCEL_ENV
  7541.  0020h    RLOG_OPEN (see #2225)
  7542.  0021h    RLOG_CLOSE (see #2225)
  7543.  0022h    RLOG_READ
  7544.  0023h    GRAPH_GET_FILE_TYPE (see #2226)
  7545.  0024h    GRAPH_EXPORT_FILE
  7546.  0025h    GRAPH_GET_LAYOUT_INFO
  7547.  0026h    GRAPH_CREATE_FILE (see #2227)
  7548.  0027h    GRAPH_CLOSE_FILE (see #2228)
  7549.  0028h    GRAPH_CREATE_PAGE (see #2229)
  7550.  0029h    GRAPH_WRITE (see #2230)
  7551.  002Ah    GRAPH_END_PAGE
  7552.  002Bh    GRAPH_OPEN_FILE (see #2231)
  7553.  002Ch    GRAPH_GOTO_PAGE (see #2232)
  7554.  002Dh    GRAPH_READ (see #2233)
  7555.  002Eh    IOCTL_GET
  7556.  002Fh    IOCTL_SET
  7557.  0030h    IOCTL_ANSWER_FAX (see #2234)
  7558.  0031h    IOCTL_DIAL (see #2235)
  7559.  
  7560. (Table 2209)
  7561. Values for FaxBIOS result code:
  7562.  0000h    successful
  7563.  0001h    not prepared or servicing another client (busy)
  7564.  0002h    call failed due to sharing (LOCKED)
  7565.  0003h    logged-in client limit reached (FULL)
  7566.  0004h    transport denied (TRANSPORT_DENIED)
  7567.  0005h    not implemented (NOT_IMPLEMENTED)
  7568.  0006h    aborted while in progress (ABORTED)
  7569.  0007h    permissions denied (PERMISSION_DENIED)
  7570.  0008h    requested data is no longer valid (NO_LONGER_VALID)
  7571.  0080h    unspecified system error occurred
  7572.  0081h    an internal file was not found
  7573.  0082h    an internal file could not be created
  7574.  0083h    an internal file could not be opened
  7575.  0084h    an internal file could not be closed
  7576.  0085h    error occurred writing to an internal file
  7577.  0086h    error occurred reading from an internal file
  7578.  0087h    bad or corrupted file encountered
  7579.  0088h    an access violation occurred
  7580.  0089h    an internal file is empty
  7581.  008Ah    insufficient memory to process request
  7582.  008Bh    FaxBIOS was unable to issue a handle
  7583.  008Ch    an error internal to FaxBIOS occurred
  7584.  008Dh    no room on disk
  7585.  0100h    unspecified error accessing client file
  7586.  0101h    file not found
  7587.  0102h    creation fault
  7588.  0103h    open fault
  7589.  0104h    close fault
  7590.  0105h    write fault
  7591.  0106h    read fault
  7592.  0107h    file corrupted
  7593.  0108h    access violation
  7594.  0109h    empty file
  7595.  0200h    unspecified argument error
  7596.  0201h    bad function
  7597.  0202h    bad option
  7598.  0203h    bad structure size
  7599.  0204h    bad buffer size
  7600.  0205h    bad client ID
  7601.  0300h    unspecified error with token
  7602.  0301h    cover sheet token was invalid
  7603.  0302h    logo token was invalid
  7604.  0303h    signature token was invalid
  7605.  0304h    font token was invalid
  7606.  0305h    phone directory token was invalid
  7607.  0306h    outbound route token was invalid
  7608.  0307h    priority token was invalid
  7609.  0308h    sort token was invalid
  7610.  0309h    billing token was invalid
  7611.  0400h    unspecified handle error
  7612.  0401h    bad Phone Directory handle
  7613.  0402h    bad scheduling handle
  7614.  0403h    bad read send log handle
  7615.  0404h    bad read receive log handle
  7616.  0405h    bad graphics handle
  7617.  0500h    data passed in structure was invalid
  7618.  0501h    name field given is invalid
  7619.  0502h    phone number given is invalid
  7620.  0503h    poll code submitted is invalid
  7621.  0504h    file type constant was invalid
  7622.  0505h    BFT constant not defined or supported
  7623.  0506h    resolution not defined or supported
  7624.  0507h    page length not defined or supported
  7625.  0508h    page width not defined or supported
  7626.  0509h    date & time requested are ridiculous
  7627.  050Ah    Subject text was not an ASCIZ string
  7628.  050Bh    From text was not an ASCIZ string
  7629.  050Ch    requested envelope ID was not found
  7630.  050Dh    requested envelope ID is not valid
  7631.  050Eh    envelope requested was not found
  7632.  050Fh    destination index is out of range
  7633.  0510h    file index is out of range
  7634.  0511h    index into receive log is out of range
  7635.  0512h    file name specified was incomplete or invalid
  7636.  0513h    page selected was out of range
  7637.  0514h    bit width more than byte width
  7638.  0515h    mode for open is not defined
  7639.  0516h    person index is out of range
  7640.  0517h    person ID is out of range
  7641.  0518h    group index out of range or invalid
  7642.  0519h    group ID out of range or invalid
  7643.  051Ah    range of indices to read is invalid
  7644.  051Bh    group name given is invalid
  7645.  051Ch    field_to_use is badly specified
  7646.  051Dh    predicate invalid for field specified
  7647.  0600h    unspecified client procedure error
  7648.  0601h    device of interest is not present
  7649.  0602h    device of interest has been removed
  7650.  0603h    device of interest is not responding
  7651.  0604h    device of interest is disabled
  7652.  0605h    could not dial because device was in use
  7653.  0606h    maximum destination limit exceeded
  7654.  0607h    maximum file limit exceeded
  7655.  0608h    scheduling closed with no destination
  7656.  0609h    scheduling closed with no files or poll
  7657.  060Ah    scheduling closed with no parameters specified
  7658.  060Bh    file type specified does not match file
  7659.  060Ch    file type specified is not supported
  7660.  060Dh    file submitted is not exportable
  7661.  060Eh    file type specified is not imageable
  7662.  060Fh    error converting file
  7663.  0610h    envelope could not be cancelled
  7664.  0611h    Phone Directory is full
  7665.  0612h    record is already in the Phone Directory
  7666.  0613h    selected group in Phone Directory is full
  7667.  0614h    person is already in the group
  7668.  0615h    person is not in the group & cannot be removed
  7669.  0616h    a graphics file to be created already exists
  7670.  0617h    a graphics file to be read is empty
  7671.  0618h    GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
  7672.  0619h    graph read or write attempted without goto or create
  7673.  061Ah    graph page contains no data
  7674.  061Bh    Phone Directory is already open for this client
  7675.  061Ch    schedule log is already open for this client
  7676.  061Dh    receive log is aready open for this client
  7677.  061Eh    Phone Directory function requires write mode
  7678.  0800h    denied exclusive use of the API
  7679.  
  7680. Format of FaxBIOS SYS_LOGIN command buffer:
  7681. Offset    Size    Description    (Table 2210)
  7682.  00h    WORD    structure size
  7683.  02h    WORD    function number
  7684.  04h    WORD    return code
  7685.  06h    WORD    client ID
  7686.  08h    WORD    API Major Version
  7687.  0Ah    WORD    API Minor Version
  7688.  0Ch    DWORD    reserved for manufacturer's use
  7689.  10h 22 BYTEs    manufacturer's ID
  7690.  26h    WORD    highest possible device number
  7691.  28h    WORD    maximum destinations per envelope
  7692.  2Ah    WORD    maximum files per envelope
  7693.  2Ch    WORD    FaxBIOS capabilities (see #2211)
  7694.  2Eh    DWORD    T.30 capabilities (see #2212)
  7695.  32h    WORD    IPC handle
  7696.  34h    DWORD    amount of memory needed to load
  7697.  38h    WORD    scope (00h for public, nonzero for private)
  7698.  3Ah  6 BYTEs    future expansion
  7699.  40h    WORD    structure size
  7700.  
  7701. Bitfields for FaxBIOS capabilities:
  7702. Bit(s)    Description    (Table 2211)
  7703.  0    transmit supported
  7704.  1    receive supported
  7705.  2    IOCTL supported
  7706.  3    IOCTL_DIAL supported
  7707.  4    IOCTL_ANSWER_FAX supported
  7708.  5    manual transmit supported
  7709.  6    optional phone services supported
  7710.  7    canonical phone objects
  7711.  8    seam with next supported
  7712.  
  7713. Bitfields for T.30 capabilities:
  7714. Bit(s)    Description    (Table 2212)
  7715.  0    low vertical resolution (minimum)
  7716.  1    high vertical resolution
  7717.  2    page width 107mm (4.21 in)
  7718.  3    page width 151mm (5.91 in)
  7719.  4    page width 215mm (8.46 in) (minimum)
  7720.  5    page width 255mm (10.04 in)
  7721.  6    page width 303mm (11.93 in)
  7722.  7    unused
  7723.  8    page length 297mm (11.69 in) (minimum)
  7724.  9    page length 364mm (14.33 in)
  7725.  10    page length 279mm (11 in)
  7726.  11    page length unlimited
  7727.  12    Group 4 resolution 300x300
  7728.  13    Group 4 resolution 400x400
  7729.  14    able to respond to poll from remote
  7730.  15    able to poll remote
  7731.  16    binary file transfer supported
  7732.  
  7733. Format of FaxBIOS SYS_LOGOUT command buffer:
  7734. Offset    Size    Description    (Table 2213)
  7735.  00h    WORD    structure size
  7736.  02h    WORD    function number
  7737.  04h    WORD    return code
  7738.  06h    WORD    client ID
  7739.  08h    DWORD    client tag (for client's internal use)
  7740.  0Ch  6 BYTEs    future expansion
  7741.  12h    WORD    structure size
  7742.  
  7743. Format of FaxBIOS SYS_GET_FAXAPP_INFO command buffer:
  7744. Offset    Size    Description    (Table 2214)
  7745.  00h 12 BYTEs    common data (see #2213)
  7746.  0Ch 80 BYTEs    FaxBIOS data
  7747.  5Ch 80 BYTEs    default cover
  7748.  ACh 80 BYTEs    default logo
  7749.  FCh 80 BYTEs    default signature
  7750. 14Ch 80 BYTEs    default font 10
  7751. 19Ch 80 BYTEs    default font 165
  7752. 1ECh 80 BYTEs    default user font
  7753. 23Ch 80 BYTEs    default Pdir
  7754. 28Ch 80 BYTEs    default sort
  7755. 2DCh 10 BYTEs    default bill
  7756. 2E6h 10 BYTEs    default route
  7757. 2F0h 40 BYTEs    default cover sheet form
  7758. 318h 34 BYTEs    valid dial characters
  7759. 33Ah  6 BYTEs    local country code
  7760. 340h  6 BYTEs    local city or area code
  7761. 346h  6 BYTEs    future expansion
  7762. 34Ch    WORD    structure size
  7763.  
  7764. Format of FaxBIOS STAT_IO_GET command buffer:
  7765. Offset    Size    Description    (Table 2215)
  7766.  00h 12 BYTEs    common data (see #2213)
  7767.  0Ch    WORD    device number
  7768.  0Eh    WORD    current activity
  7769.  10h    WORD    number of rings (if ringing)
  7770.  12h    WORD    number of fascimiles transmitted
  7771.  14h    WORD    number of fascimiles received
  7772.  16h    WORD    status of last transmission
  7773.  18h    WORD    envelope number of last transmission
  7774.  1Ah    WORD    index of last destination in envelope
  7775.  1Ch    WORD    status of last reception
  7776.  1Eh    WORD    current page (if session in progress)
  7777.  20h 80 BYTEs    current file
  7778.  70h 104 BYTEs    remote number
  7779.  D8h 20 BYTEs    last name
  7780.  ECh 20 BYTEs    first name
  7781. 100h 32 BYTEs    company name
  7782. 120h 32 BYTEs    notes
  7783. 140h    WORD    current envelope ID (if sending)
  7784. 142h    WORD    total pages in transmission (if sending)
  7785. 144h  6 BYTEs    future expansion
  7786. 14h    WORD    structure size
  7787.  
  7788. Format of FaxBIOS STAT_FAXBIOS_GET command buffer:
  7789. Offset    Size    Description    (Table 2216)
  7790.  00h 12 BYTEs    common data (see #2213)
  7791.  0Ch    WORD    status ID
  7792.  0Eh    WORD    currenty FaxBIOS function number
  7793.  10h    WORD    current Client ID being serviced
  7794.  12h    WORD    number of things to do
  7795.  14h    WORD    number of them done
  7796.  16h    WORD    number of pages to do (if any)
  7797.  18h    WORD    number of them done
  7798.  1Ah    WORD    number of files to do
  7799.  1Ch    WORD    number of them done
  7800.  1Eh 80 BYTEs    current File
  7801.  6Eh    WORD    0 if all devices are idle
  7802.  70h    WORD    number of fascimiles transmitted
  7803.  72h    WORD    number of fascimiles received
  7804.  74h    WORD    status of last transmission in system
  7805.  76h    WORD    envelope ID of last transmission
  7806.  78h    WORD    index of last destination in envelope
  7807.  7Ah    WORD    status of last reception in system
  7808.  7Ch    DWORD    time of next transmission
  7809.  80h  6 BYTEs    future expansion
  7810.  86h    WORD    structure size
  7811.  
  7812. Format of FaxBIOS PDIR_OPEN command buffer:
  7813. Offset    Size    Description    (Table 2217)
  7814.  00h 12 BYTEs    common data (see #2213)
  7815.  0Ch 80 BYTEs    Phone Directory token
  7816.  5Ch 80 BYTEs    sort order token
  7817.  ACh    WORD    open Mode (0 = read, 1 = write)
  7818.  AEh    WORD    Phone Directory handle
  7819.  B0h    WORD    number of people
  7820.  B2h    WORD    number of groups
  7821.  B4h    WORD    bitmap of fields supported by partial read
  7822.  B6h  6 BYTEs    future expansion
  7823.  BCh    WORD    structure size
  7824.  
  7825. Format of FaxBIOS PDIR_CLOSE command buffer:
  7826. Offset    Size    Description    (Table 2218)
  7827.  00h 12 BYTEs    common data (see #2213)
  7828.  0Ch    WORD    Phone Directory handle
  7829.  0Eh  6 BYTEs    future expansion
  7830.  14h    WORD    structure size
  7831.  
  7832. Format of FaxBIOS PDIR_READ_PERSON command buffer:
  7833. Offset    Size    Description    (Table 2219)
  7834.  00h 12 BYTEs    common data (see #2213)
  7835.  0Ch    WORD    Phone Directory handle
  7836.  0Eh    WORD    retrieve by index
  7837.  10h    WORD    person ID or index
  7838.  12h    WORD    how many groups person is in
  7839.  14h    WORD    person ID
  7840.  16h 20 BYTEs    last name
  7841.  2Ah 20 BYTEs    first name
  7842.  3Eh 32 BYTEs    company
  7843.  5Eh 32 BYTEs    notes
  7844.  7Eh  6 BYTEs    FAX country code
  7845.  84h  6 BYTEs    FAX city/area code
  7846.  8Ah 14 BYTEs    FAX local number
  7847.  98h 14 BYTEs    FAX extension
  7848.  A6h 24 BYTEs    reserved
  7849.  BEh  6 BYTEs    voice country code
  7850.  C4h  6 BYTEs    voice city/area code
  7851.  CAh 14 BYTEs    voice local number
  7852.  D8h 14 BYTEs    voice extension
  7853.  E6h 24 BYTEs    reserved
  7854.  FEh 10 BYTEs    outbound routing information
  7855. 108h 10 BYTEs    billing information, credit card etc
  7856. 112h    DWORD    remote FAX capabilities
  7857. 116h 21 BYTEs    T.30 poll code of FAX number
  7858. 12Bh 15 BYTEs    reserved
  7859. 13Ah  6 BYTEs    future expansion
  7860. 140h    WORD    structure size
  7861.  
  7862. Format of FaxBIOS SCHED_OPEN, SCHED_CANCEL command buffer:
  7863. Offset    Size    Description    (Table 2220)
  7864.  00h 12 BYTEs    common data (see #2213)
  7865.  0Ch    WORD    scheduler handle
  7866.  0Eh  6 BYTEs    future expansion
  7867.  14h    WORD    structure size
  7868.  
  7869. Format of FaxBIOS SCHED_ADD_DEST command buffer:
  7870. Offset    Size    Description    (Table 2221)
  7871.  00h 12 BYTEs    common data (see #2213)
  7872.  0Ch    WORD    schedule handle
  7873.  0Eh    WORD    device number if manual send wanted
  7874.  10h    WORD    non-zero if poll desired
  7875.  12h    WORD    person ID
  7876.  14h 20 BYTEs    last name
  7877.  28h 20 BYTEs    first name
  7878.  3Ch 32 BYTEs    company
  7879.  5Ch 32 BYTEs    notes
  7880.  7Ch  6 BYTEs    FAX country code
  7881.  82h  6 BYTEs    FAX city/area code
  7882.  88h 14 BYTEs    FAX local number
  7883.  96h 14 BYTEs    FAX extension
  7884.  A4h 24 BYTEs    reserved
  7885.  BCh  6 BYTEs    voice country code
  7886.  C2h  6 BYTEs    voice city/area code
  7887.  C8h 14 BYTEs    voice local number
  7888.  D6h 14 BYTEs    voice extension
  7889.  E4h 24 BYTEs    reserved
  7890.  FCh 10 BYTEs    outbound routing information
  7891. 106h 10 BYTEs    billing information, credit card etc
  7892. 110h    DWORD    remote FAX capabilities
  7893. 114h 21 BYTEs    T.30 poll code of FAX number
  7894. 129h 15 BYTEs    reserved
  7895. 138h  6 BYTEs    future expansion
  7896. 13Eh    WORD    structure size
  7897. SeeAlso: #2222
  7898.  
  7899. Format of FaxBIOS SCHED_ADD_FILE command buffer:
  7900. Offset    Size    Description    (Table 2222)
  7901.  00h 12 BYTEs    common data (see #2213)
  7902.  0Ch    WORD    schedule handle
  7903.  0Eh    WORD    file type
  7904.         0000h unidentified
  7905.         0001h native file format
  7906.         0002h ASCII
  7907.         0003h FaxBIOS Tiff Class F
  7908.  10h 80 BYTEs    file name
  7909.  60h 80 BYTEs    font token
  7910.  B0h    WORD    conversion options bitmap
  7911.  B2h    WORD    resolution
  7912.         0000h standard 98 lines per inch, 204 dpi
  7913.         0001h fine 196 lines per inch, 204 dpi
  7914.         0002h Group4 300 dpi
  7915.         0003h Group4 400 dpi
  7916.  B4h    WORD    page length
  7917.         0000h 279 mm (11 in)
  7918.         0001h 297 mm (11.69 in)
  7919.         0002h 364 mm (14.33 in)
  7920.         0003h unlimited
  7921.  B6h    WORD    page width
  7922.         0000h 215 mm (8.46 in)
  7923.         0001h 255 mm (10.04 in)
  7924.         0002h 303 mm (11.93 in)
  7925.         0003h 151 mm (5.91 in)
  7926.         0004h 107 mm (4.21 in)
  7927.  B8h    WORD    binary file transfer specification
  7928.         0000h only as FAX
  7929.         0001h only as file (for non-faxable files)
  7930.         0002h as file when possible else FAX
  7931.  BAh    WORD    seam flag (nonzero for seam with next)
  7932.  BCh    WORD    delete flag (nonzero to delete when done)
  7933.  BEh  6 BYTEs    future expansion
  7934.  C4h    WORD    structure size
  7935. SeeAlso: #2221,#2223
  7936.  
  7937. Format of FaxBIOS SCHED_SET_PARAMS command buffer:
  7938. Offset    Size    Description    (Table 2223)
  7939.  00h 12 BYTEs    common data (see #2213)
  7940.  0Ch    WORD    scheduler handle
  7941.  0Eh    DWORD    time to send
  7942.  10h 10 BYTEs    priority token
  7943.  1Ch 80 BYTEs    logo file token
  7944.  6Ch 80 BYTEs    signature file token
  7945.  BCh 80 BYTEs    cover page token
  7946. 10Ch 40 BYTEs    Subject text
  7947. 134h 40 BYTEs    From text
  7948. 15Ch    WORD    user ID
  7949. 15Eh  6 BYTEs    future expansion
  7950. 164h    WORD    structure size
  7951. SeeAlso: #2221,#2222,#2224
  7952.  
  7953. Format of FaxBIOS SCHED_CLOSE command buffer:
  7954. Offset    Size    Description    (Table 2224)
  7955.  00h 12 BYTEs    common data (see #2213)
  7956.  0Ch    WORD    scheduler handle
  7957.  0Eh    WORD    envelope ID generated
  7958.  10h  6 BYTEs    future expansion
  7959.  16h    WORD    structure size
  7960. SeeAlso: #2223
  7961.  
  7962. Format of FaxBIOS SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
  7963. Offset    Size    Description    (Table 2225)
  7964.  00h 12 BYTEs    common data (see #2213)
  7965.  0Ch    WORD    log handle
  7966.  0Eh    WORD    number of entries
  7967.  10h  6 BYTEs    future expansion
  7968.  16h    WORD    structure size
  7969.  
  7970. Format of FaxBIOS GRAPH_GET_FILE_TYPE command buffer:
  7971. Offset    Size    Description    (Table 2226)
  7972.  00h 12 BYTEs    common data (see #2213)
  7973.  0Ch 80 BYTEs    filename
  7974.  5Ch    WORD    file type
  7975.         0000h unidentified
  7976.         0001h native file format
  7977.         0002h ASCII
  7978.         0003h FaxBIOS Tiff Class F
  7979.  5Eh    WORD    bitmap of supported capabilities
  7980.  60h  6 BYTEs    future expansion
  7981.  66h    WORD    structure size
  7982. SeeAlso: #2227,#2228
  7983.  
  7984. Format of FaxBIOS GRAPH_CREATE_FILE command buffer:
  7985. Offset    Size    Description    (Table 2227)
  7986.  00h 12 BYTEs    common data (see #2213)
  7987.  0Ch 80 BYTEs    filename
  7988.  5Ch    WORD    graph handle
  7989.  5Eh  6 BYTEs    future expansion
  7990.  64h    WORD    structure size
  7991. SeeAlso: #2226,#2228,#2229
  7992.  
  7993. Format of FaxBIOS GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
  7994. Offset    Size    Description    (Table 2228)
  7995.  00h 12 BYTEs    common data (see #2213)
  7996.  0Ch    WORD    graph handle
  7997.  0Eh  6 BYTEs    future expansion
  7998.  14h    WORD    structure size
  7999. SeeAlso: #2227,#2229
  8000.  
  8001. Format of FaxBIOS GRAPH_CREATE_PAGE command buffer:
  8002. Offset    Size    Description    (Table 2229)
  8003.  00h 12 BYTEs    common data (see #2213)
  8004.  0Ch    WORD    graph handle
  8005.  0Eh    WORD    resolution
  8006.  10h    WORD    page width
  8007.  12h  6 BYTEs    future expansion
  8008.  18h    WORD    structure size
  8009. SeeAlso: #2227,#2228,#2230
  8010.  
  8011. Format of FaxBIOS GRAPH_WRITE_PAGE command buffer:
  8012. Offset    Size    Description    (Table 2230)
  8013.  00h 12 BYTEs    common data (see #2213)
  8014.  0Ch    WORD    graph handle
  8015.  0Eh    DWORD    pointer to storage for image
  8016.  12h    WORD    band height in lines
  8017.  14h    WORD    width of page image in bytes
  8018.  16h    WORD    facsimile page width constant
  8019.  18h    WORD    width of page image in bits
  8020.  1Ah    WORD    number of bytes actually processed
  8021.  1Ch  6 BYTEs    future expansion
  8022.  22h    WORD    structure size
  8023. SeeAlso: #2229,#2231
  8024.  
  8025. Format of FaxBIOS GRAPH_OPEN_FILE command buffer:
  8026. Offset    Size    Description    (Table 2231)
  8027.  00h 12 BYTEs    common data (see #2213)
  8028.  0Ch 80 BYTEs    filename
  8029.  5Ch    WORD    file type
  8030.  5Eh    WORD    graph handle
  8031.  60h    WORD    number of pages
  8032.  62h  6 BYTEs    future expansion
  8033.  68h    WORD    structure size
  8034. SeeAlso: #2230,#2232
  8035.  
  8036. Format of FaxBIOS GRAPH_GOTO_PAGE command buffer:
  8037. Offset    Size    Description    (Table 2232)
  8038.  00h 12 BYTEs    common data (see #2213)
  8039.  0Ch    WORD    graph handle
  8040.  0Eh    WORD    page number
  8041.  10h    WORD    vertical resolution
  8042.  12h    WORD    page width
  8043.  14h    DWORD    page length
  8044.  18h  6 BYTEs    future expansion
  8045.  1Eh    WORD    structure size
  8046. SeeAlso: #2230,#2231,#2233
  8047.  
  8048. Format of FaxBIOS GRAPH_READ_PAGE command buffer:
  8049. Offset    Size    Description    (Table 2233)
  8050.  00h 12 BYTEs    common data (see #2213)
  8051.  0Ch    WORD    graph handle
  8052.  0Eh    DWORD    pointer to storage for image
  8053.  12h    WORD    band height in lines
  8054.  14h    WORD    width of page image in bytes
  8055.  16h    WORD    facsimile page width constant
  8056.  18h    WORD    width of page image in bits
  8057.  1Ah    WORD    number of bytes actually processed
  8058.  1Ch  6 BYTEs    future expansion
  8059.  22h    WORD    structure size
  8060.  
  8061. Format of FaxBIOS IOCTL_ANSWER_FAX command buffer:
  8062. Offset    Size    Description    (Table 2234)
  8063.  00h 12 BYTEs    common data (see #2213)
  8064.  0Ch    WORD    device number
  8065.  0Eh  6 BYTEs    future expansion
  8066.  14h    WORD    structure size
  8067. SeeAlso: #2235
  8068.  
  8069. Format of FaxBIOS IOCTL_DIAL command buffer:
  8070. Offset    Size    Description    (Table 2235)
  8071.  00h 12 BYTEs    common data (see #2213)
  8072.  0Ch    WORD    device number
  8073.  0Eh  6 BYTEs    country code
  8074.  14h  6 BYTEs    city or area code
  8075.  1Ah 14 BYTEs    local number
  8076.  28h 14 BYTEs    extension
  8077.  36h 14 BYTEs    reserved
  8078.  4Eh  6 BYTEs    future expansion
  8079.  54h    WORD    structure size
  8080. SeeAlso: #2234
  8081. --------N-2F8100-----------------------------
  8082. INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
  8083.     AX = 8100h
  8084. Return: AL = FFh if installed
  8085. Program: TurboNET is a NetBIOS-based file redirector and server; a
  8086.       demonstration version may be downloaded from Nanosoft's BBS
  8087. SeeAlso: AX=8000h"TurboNET"
  8088. --------N-2F8101-----------------------------
  8089. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  8090.     AX = 8101h
  8091. Return: AL = ???
  8092.     DL = ???
  8093. --------N-2F8102-----------------------------
  8094. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  8095.     AX = 8102h
  8096. Return: AL = ???
  8097.     DL = ???
  8098. --------N-2F8103-----------------------------
  8099. INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
  8100.     AX = 8103h
  8101.     ES:DI -> 17-byte buffer
  8102. Return: buffer filled
  8103. --------N-2F8104-----------------------------
  8104. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  8105.     AX = 8104h
  8106.     BL = ???
  8107.     BH = ???
  8108.     CX = ???
  8109.     DX = ???
  8110.     DS:SI -> 16-byte buffer containing ???
  8111. Return: AL = 00h ???
  8112. --------N-2F8105-----------------------------
  8113. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  8114.     AX = 8105h
  8115.     CX = ??? (don't change current value if 0000h)
  8116.     DX = ??? (don't change current value if 0000h)
  8117. Return: AL = 00h successful
  8118. --------s-2F8200-----------------------------
  8119. INT 2F - RESPLAY - SAMPLE/PLAYBACK
  8120.     AX = 8200h
  8121.     DX:DI -> start of sample space
  8122.     CX:BX = length in bytes
  8123. Return: AX = status (see #2236)
  8124. Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  8125. SeeAlso: AX=8201h"RESPLAY",AX=8210h
  8126.  
  8127. (Table 2236)
  8128. Values for RESPLAY status:
  8129.  1000h    successful
  8130.  2000h    not initialized (see AX=8210h)
  8131.  other    RESPLAY not installed
  8132. --------G-2F8200-----------------------------
  8133. INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
  8134.     AX = 8200h
  8135. Return: AL = FFh if installed
  8136. Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
  8137.       captured and recorded for later analysis
  8138. SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
  8139. SeeAlso: AX=8204h"CAPDOS"
  8140. --------s-2F8201-----------------------------
  8141. INT 2F - RESPLAY - INSTALLATION CHECK
  8142.     AX = 8201h
  8143. Return: AX = 7746h if installed
  8144. SeeAlso: AX=8202h"RESPLAY",AX=8210h
  8145. --------G-2F8201-----------------------------
  8146. INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
  8147.     AX = 8201h
  8148. Note:    resets queue of captured INT 21 calls
  8149. SeeAlso: AX=8200h"CAPDOS"
  8150. --------s-2F8202-----------------------------
  8151. INT 2F - RESPLAY - UNINSTALL
  8152.     AX = 8202h
  8153. Return: AX = status
  8154.         1000h successful
  8155. SeeAlso: AX=8201h"RESPLAY",AX=8210h"RESPLAY"
  8156. --------G-2F8202-----------------------------
  8157. INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
  8158.     AX = 8202h
  8159. SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
  8160. --------G-2F8203-----------------------------
  8161. INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
  8162.     AX = 8203h
  8163. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
  8164. --------G-2F8204-----------------------------
  8165. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
  8166.     AX = 8204h
  8167. Return: AH = flag: queue wrapped if nonzero
  8168.     BX = index of current start of queue
  8169.     CX = size of queue in entries
  8170. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
  8171. --------G-2F8205-----------------------------
  8172. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
  8173.     AX = 8205h
  8174.     BX = queue item number
  8175. Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
  8176. SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
  8177. --------s-2F8210-----------------------------
  8178. INT 2F - RESPLAY - INITIALIZE
  8179.     AX = 8210h
  8180.     BL = sound device number (see #2237)
  8181.     BH = sample rate in multiples of 250 Hz (14h to A0h)
  8182.     CL = direction
  8183.         00h playback
  8184.         01h sample
  8185. Return: AX = status (see #2236)
  8186. SeeAlso: AX=8200h"RESPLAY",AX=8220h"MODRES"
  8187.  
  8188. (Table 2237)
  8189. Values for RESPLAY sound device:
  8190.  00h    printer port LPT1
  8191.  01h    printer port LPT2
  8192.  02h    prototype board at I/O address 0300h
  8193.  03h    printer port (alternative LPT1)
  8194.  04h    internal speaker
  8195. --------s-2F8220-----------------------------
  8196. INT 2F - MODRES - PLAY MODULE
  8197.     AX = 8220h
  8198.     DX:CX -> MODPARM structure (see #3447)
  8199. Return: AX = status
  8200.         5722h succesful
  8201.         2000h parameters out of range
  8202.         other MODRES not installed
  8203. SeeAlso: AX=8221h,AX=8223h,AX=8225h,AX=8227h,AX=8200h"RESPLAY"
  8204.  
  8205. Format of MODPARM Structure:
  8206. Offset    Size    Description    (Table 3447)
  8207.  00h    WORD    signature 504Dh ("MP" = Modparm)
  8208.  02h    BYTE    output device (see #3449 at INT 2F/AX=8221h)
  8209.  03h    WORD    segment of start of main module (pattern) data
  8210.  05h 31    WORDs    segment of start of sample numbers 1-31
  8211.  43h    BYTE    pattern at which to start playing (00h to 7Fh)
  8212.  44h    BYTE    function
  8213.         00h play from pattern [offset 43h] until end of the song
  8214.         01h play indicated pattern [offset 43h] only
  8215.  45h    BYTE    Machine speed
  8216.         00h 10-12Mhz
  8217.         01h 12-25Mhz (default)
  8218.         02h 25Mhz+
  8219.         03h mix speed 10kHz (fast 8Mhz machines)
  8220.         04h mix speed 12kHz (10Mhz machines)
  8221.         05h mix speed 13kHz
  8222.         06h mix speed 8kHz (test for 8Mhz machines)
  8223.  46h    BYTE    allow >64k sample playing
  8224.         80h MOD has samples >64k in it
  8225.         else all samples in MOD are <64k
  8226. Notes:    Main module data and all samples must start on segment boundaries.
  8227.     In version 2.00 (ONLY) this function carries on playing (works in
  8228.       the background)
  8229. SeeAlso: #3448
  8230. --------s-2F8221-----------------------------
  8231. INT 2F - MODRES - INSTALLATION CHECK
  8232.     AX = 8221h
  8233. Return: AX = status
  8234.         5722h successful
  8235.         other MODRES not installed
  8236.     BX = BCD version number (BH = major, BL = minor)
  8237.     DX:CX -> Output Device structure (read-only) (see #3448)
  8238. SeeAlso: AX=8220h,AX=8222h,AX=8225h,AX=8227h
  8239.  
  8240. Format of Output Device structure [array]:
  8241. Offset    Size    Description    (Table 3448)
  8242.  00h 20 BYTEs    ASCIZ name of the output device
  8243.         (end of list if first char is FFh)
  8244.  14h    WORD    apparently always FFFFh
  8245.  16h    WORD    0000h if output device not available
  8246.         else first I/O port for the output device
  8247.  18h    WORD    second I/O port for the output device (for example
  8248.           if it is stereo)
  8249.         000oh if only one port used or device is not available
  8250.  1Ah  7 BYTEs    ???
  8251. SeeAlso: #3447,#3449
  8252.  
  8253. (Table 3449)
  8254. Values for MODRES v1.52 output device index:
  8255.  00h    PC speaker
  8256.  01h    D/A Converter on LPT1
  8257.  02h    D/A Converter on LPT2
  8258.  03h    D/A Converter on LPT3
  8259.  04h    D/A Converter on LPT4
  8260.  05h    D/A Converter on LPT1&LPT2 (stereo)
  8261.  06h    D/A Converter on LPT1&LPT2 (mono)
  8262.  07h    Sound Blaster (port 02x0h)
  8263.  08h    User Defined D/A (mono)
  8264.  09h    User Defined D/A (stereo)
  8265.  0Ah    Stereo-on-1
  8266.  0Bh    Disney SS su LPT1
  8267.  0Ch    Disney SS su LPT2
  8268.  0Dh    Disney SS su LPT3
  8269.  0Eh    Disney SS su LPT4
  8270. Note:    this list may vary between versions of MODRES
  8271. --------s-2F8222-----------------------------
  8272. INT 2F - MODRES - UNINSTALL
  8273.     AX = 8222h
  8274. Return: AX = code segment of the program
  8275. Note:    this function does not release the TSRs memory; the caller must do so
  8276. SeeAlso: AX=8220h,AX=8221h,AX=8223h
  8277. --------s-2F8223-----------------------------
  8278. INT 2F - MODRES - PLAY SAMPLE
  8279.     AX = 8223h
  8280.     DX:CX -> SAMPARM structure (see #3450)
  8281. Return: AX = status
  8282.         5722h succesful
  8283.         2000h parameters out of range
  8284.         other MODRES not installed
  8285. SeeAlso: AX=8221h,AX=8224h,AX=8225h,AX=8226h
  8286.  
  8287. Format of SAMPARM Structure:
  8288. Offset    Size    Description    (Table 3450)
  8289.  00h    WORD    signature 5053h ("SP" = SAMPARM)
  8290.  02h    WORD    segment of start of sample to play
  8291.  04h    WORD    length of sample (IN WORD)
  8292.  06h    BYTE    output device (see #3449 at INT 2F/AX=8221h)
  8293.  07h    WORD    pitch to play (see #3451)
  8294.  09h    BYTE    volume (from 00h to 40h)
  8295.  0Ah    WORD    loop start
  8296.  0Ch    WORD    loop length
  8297.  0Eh    BYTE    machine speed (see INT 2F/AX=8220h)
  8298. SeeAlso: #3447
  8299.  
  8300. (Table 3451)
  8301. Values for Pitch to play::
  8302.  C 0 is    06B0h
  8303.  C#0 is    06B0h / 2^(1/12)
  8304.  D 0 is    (06B0h / 2^(1/12)) / 2^(1/12)
  8305.  ...
  8306. Note:    C 1 is    06B0h / 2
  8307.     C 2 is    06B0h / 4
  8308.     etc.
  8309. SeeAlso: #3450
  8310. --------s-2F8224-----------------------------
  8311. INT 2F - MODRES - ???
  8312.     AX = 8224h
  8313.     DX:CX -> ???
  8314. Return: ???
  8315. SeeAlso: AX=8221h,AX=8223h,AX=8224h
  8316. --------s-2F8225-----------------------------
  8317. INT 2F - MODRES v2.00+ - GET LOCATION IN MOD
  8318.     AX = 8225h
  8319. Return: AL = status
  8320.        00h playing
  8321.        01h reached end or stopped
  8322.     AH = speed of MOD
  8323.     BX = position within pattern 0000h-0400h
  8324.     CL = position within the song (track number)
  8325. SeeAlso: AX=8220h,AX=8221h,AX=8223h,AX=8226h
  8326. --------s-2F8226-----------------------------
  8327. INT 2F - MODRES v2.00+ - STOP PLAYING
  8328.     AX = 8226h
  8329. Return: AX = status
  8330.         5722h succesful
  8331.         other MODRES not installed
  8332. Desc:    stops playing the MOD file before performing critical operations such
  8333.       as disk accesses
  8334. SeeAlso: AX=8220h,AX=8221h,AX=8223h,AX=8225h,AX=8227h
  8335. --------s-2F8227-----------------------------
  8336. INT 2F - MODRES - CONFIGURE
  8337.     AX = 8227h
  8338.     BX = function
  8339.         0001h set default playing speed (06h)
  8340.         0002h select output device
  8341.         CL = output device (see #3449 at INT 2F/AX=8221h)
  8342. Return: AX = status
  8343.         5722h succesful
  8344.         2000h parameters out of range
  8345.         other MODRES not installed
  8346. Note:    function 0001h should be called every time a new module is loaded
  8347. SeeAlso: AX=8220h,AX=8221h,AX=8222h,AX=8223h
  8348. ----------2F86-------------------------------
  8349. INT 2F U - ???
  8350.     AH = 86h
  8351.     AL = function (at least 06h and 07h)
  8352.     ???
  8353. Return: ???
  8354. Note:    called by Codeview for Windows
  8355. SeeAlso: AH=44h
  8356. --------U-2F8900-----------------------------
  8357. INT 2F - WHOA!.COM - INSTALLATION CHECK
  8358.     AX = 8900h
  8359. Return: AL = state
  8360.         00h not installed
  8361.         FFh installed
  8362. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  8363. SeeAlso: AX=8901h,AX=8902h
  8364. --------U-2F8901-----------------------------
  8365. INT 2F - WHOA!.COM - UNINSTALL
  8366.     AX = 8901h
  8367. Return: AL = status
  8368.         FDh successful
  8369.         FEh error
  8370. SeeAlso: AX=8900h
  8371. --------U-2F8902-----------------------------
  8372. INT 2F - WHOA!.COM - SET DELAY COUNT
  8373.     AX = 8902h
  8374.     BX = delay count (larger values slow system down more)
  8375. Return: AL = status
  8376.         FDh successful
  8377.         FEh error
  8378. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  8379. SeeAlso: AX=8900h
  8380. --------U-2F9000-----------------------------
  8381. INT 2F U - RAID - INSTALLATION CHECK
  8382.     AX = 9000h
  8383. Return: AL = FFh if installed
  8384. Program: RAID (Resident AID) is a TSR utility program by Ross Neilson
  8385.       Wentworth that resides mostly in EMS
  8386. --------U-2F9001-----------------------------
  8387. INT 2F U - RAID - GET ???
  8388.     AX = 9001h
  8389. Return: DX:AX -> ???
  8390. SeeAlso: AX=9000h
  8391. --------U-2F9002-----------------------------
  8392. INT 2F U - RAID - GET RESIDENT SEGMENT
  8393.     AX = 9002h
  8394. Return: AX = segment of resident (conventional memory) portion
  8395. SeeAlso: AX=9000h
  8396. --------U-2F9003-----------------------------
  8397. INT 2F U - RAID - UNINSTALL
  8398.     AX = 9003h
  8399. Return: ???
  8400. SeeAlso: AX=9000h
  8401. --------U-2F9004-----------------------------
  8402. INT 2F U - RAID - GET ???
  8403.     AX = 9004h
  8404. Return: AX = first available paragraph past end of resident portion???
  8405.     CX destroyed
  8406. SeeAlso: AX=9000h
  8407. --------e-2F92-------------------------------
  8408. INT 2F - Network Courier E-Mail - API
  8409.     AH = 92h
  8410.     AL = function
  8411.         00h installation check
  8412.         01h uninstall
  8413.         02h pop down MICRO.EXE notification window
  8414.         03h ???
  8415.         04h ???
  8416.         05h ???
  8417. Return: ???
  8418. Program: The Network Courier is an electronic mail package by Consumers
  8419.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  8420.       renamed Microsoft Mail v3.0.
  8421. SeeAlso: AX=9400h,AX=9401h,AX=9402h,AH=9Ch
  8422. Index:    installation check;Network Courier E-Mail
  8423. Index:    uninstall;Network Courier E-Mail
  8424. --------R-2F9200-----------------------------
  8425. INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
  8426.     AX = 9200h
  8427. Program: DRIVEMAP is a redirector which allows drives on computers connected
  8428.       over the parallel or serial ports to appear as local drives
  8429. BUG:    jumps to data because jump table entry is 0000h
  8430. Note:    DRIVEMAP returns AX=FFFFh if not a valid function number in AL
  8431. --------R-2F9201-----------------------------
  8432. INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
  8433.     AX = 9201h
  8434.     DL = drive number (01h = A:, etc.)
  8435. Return: AL = 92h if mapped drive
  8436.     AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
  8437. SeeAlso: AX=9204h,AX=920Bh
  8438. --------R-2F9202-----------------------------
  8439. INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
  8440.     AX = 9202h
  8441.     BX = caller's CS
  8442. Return: AX = status
  8443.         0000h failed
  8444.         nonzero successful
  8445. SeeAlso: AX=9204h
  8446. --------R-2F9203-----------------------------
  8447. INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
  8448.     AX = 9203h
  8449. Return: AH = major version
  8450.     AL = minor version
  8451.     CX = segment of resident code
  8452. Note:    the DRIVEMAP included with PC Tools v8.0 is version 1.00
  8453. SeeAlso: AX=9204h,INT 16/AX=FF70h
  8454. --------R-2F9204-----------------------------
  8455. INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
  8456.     AX = 9204h
  8457. Return: AX = 9200h if installed
  8458.        BL = ???
  8459.        CX = segment of resident code
  8460. Program: DRIVEMAP is a redirector which allows drives on computers connected
  8461.       over the parallel or serial ports to appear as local drives
  8462. SeeAlso: AX=9201h,AX=9202h,AX=9203h
  8463. --------R-2F9205-----------------------------
  8464. INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
  8465.     AX = 9205h
  8466.     BX = ??? to set
  8467. Return: CX = new value of ???
  8468. --------R-2F9206-----------------------------
  8469. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8470.     AX = 9206h
  8471.     ???
  8472. Return: ???
  8473. --------R-2F9207-----------------------------
  8474. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  8475.     AX = 9207h
  8476.     ???
  8477. Return: AX = ???
  8478. --------R-2F9208-----------------------------
  8479. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8480.     AX = 9208h
  8481.     ???
  8482. Return: ???
  8483. --------R-2F9209-----------------------------
  8484. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8485.     AX = 9209h
  8486.     ???
  8487. Return: AX = ???
  8488.     BX = ???
  8489.     CX = ???
  8490.     DX = ???
  8491. --------R-2F920A-----------------------------
  8492. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8493.     AX = 920Ah
  8494.     BX = ???
  8495. Return: AX = ??? or FFFBh on error
  8496. --------R-2F920B-----------------------------
  8497. INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
  8498.     AX = 920Bh
  8499.     BL = drive letter (41h ['A'] = A:, etc)
  8500.     CX = ??? (0000h removes mapping)
  8501. Return: AX = ??? or FFF8h on error
  8502. SeeAlso: AX=9201h,AX=920Dh
  8503. --------R-2F920C-----------------------------
  8504. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8505.     AX = 920Ch
  8506.     ???
  8507. Return: AX = ??? (0002h)
  8508.     CX = ??? (0000h)
  8509. --------R-2F920D-----------------------------
  8510. INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
  8511.     AX = 920Dh
  8512.     BL = drive letter (41h ['A'] = A:, etc)
  8513. Return: AX = type flags
  8514.         bit 0: ???
  8515.         bit 1: available
  8516.         bit 5: local
  8517.     BX = ???
  8518.     CX = segment of resident code (apparently an unintended side effect)
  8519. Program: DRIVEMAP is a redirector which allows drives on computers connected
  8520.       over the parallel or serial ports to appear as local drives
  8521. SeeAlso: AX=9218h,INT 16/AX=FF70h
  8522. --------R-2F920E-----------------------------
  8523. INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
  8524.     AX = 920Eh
  8525.     BX = port number (0-2)
  8526.     CX = ??? (0000h to unmap)
  8527. Return: ???
  8528. --------R-2F920F-----------------------------
  8529. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  8530.     AX = 920Fh
  8531.     ES:DI -> 3-byte buffer for ???
  8532. Return: CX = 0000h
  8533.     ES:DI buffer filled
  8534. --------R-2F9210-----------------------------
  8535. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8536.     AX = 9210h
  8537.     ???
  8538. Return: ???
  8539. --------R-2F9211-----------------------------
  8540. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  8541.     AX = 9211h
  8542.     ES:DI -> 8-word buffer for ???
  8543. Return: CX = 0000h
  8544.     ES:DI buffer filled
  8545. --------R-2F9212-----------------------------
  8546. INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
  8547.     AX = 9212h
  8548.     BX = phase
  8549.         0000h leave critical section???
  8550.         nonzero enter critical section???
  8551. --------R-2F9213-----------------------------
  8552. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8553.     AX = 9213h
  8554.     BX = function number (0000h-000Bh)
  8555.     ???
  8556. Return: ???
  8557. --------R-2F9214-----------------------------
  8558. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  8559.     AX = 9214h
  8560.     ES:DI -> 6-word buffer for ???
  8561. Return: CX = 0000h
  8562.     AX = ???
  8563.     ES:DI buffer filled
  8564. --------R-2F9215-----------------------------
  8565. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  8566.     AX = 9215h
  8567.     ES:DI -> 100-word buffer for ???
  8568. Return: CX = 0000h
  8569.     ES:DI buffer filled
  8570. --------R-2F9216-----------------------------
  8571. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8572.     AX = 9216h
  8573.     ES:DI -> ???
  8574. Return: ???
  8575. --------R-2F9217-----------------------------
  8576. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8577.     AX = 9217h
  8578.     DS:SI -> 25-word buffer containing ???
  8579. Return: ???
  8580. --------R-2F9218-----------------------------
  8581. INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
  8582.     AX = 9218h
  8583.     BX = port number???
  8584. Return: AX = ???
  8585.     BX = ??? (0000h)
  8586.     CX = ??? (0000h)
  8587. Program: DRIVEMAP is a redirector which allows drives on computers connected
  8588.       over the parallel or serial ports to appear as local drives
  8589. --------R-2F9219-----------------------------
  8590. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8591.     AX = 9219h
  8592.     ???
  8593. Return: ???
  8594. --------R-2F921A-----------------------------
  8595. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8596.     AX = 921Ah
  8597.     ???
  8598. Return: AH = ???
  8599.     AL = ???
  8600.     BX = ???
  8601. --------R-2F921B-----------------------------
  8602. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8603.     AX = 921Bh
  8604.     ???
  8605. Return: AX = ???
  8606.     CX = segment of resident code (apparently an unintended side effect)
  8607. --------R-2F921C-----------------------------
  8608. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8609.     AX = 921Ch
  8610.     ???
  8611. Return: ???
  8612. --------R-2F921D-----------------------------
  8613. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  8614.     AX = 921Dh
  8615. Return: AX = ???
  8616. --------R-2F921E-----------------------------
  8617. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  8618.     AX = 921Eh
  8619.     ???
  8620. Return: ???
  8621. Program: DRIVEMAP is a redirector which allows drives on computers connected
  8622.       over the parallel or serial ports to appear as local drives
  8623. Note:    this function sets two variables to 24h each
  8624. SeeAlso: INT 16/AX=FF70h
  8625. --------V-2F93-------------------------------
  8626. INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
  8627.     AH = 93h
  8628.     BX = CX = AX
  8629. Return: AL = state
  8630.         FFh if installed and BX=CX=AX on entry
  8631.         BX = segment of resident code
  8632.         01h if installed but BX or CX differ from AX (multiplex number not
  8633.           available)
  8634. Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
  8635. SeeAlso: INT 14/AX=AA01h,INT 2F/AX=6400h
  8636. Index:    screen saver;InnerMission
  8637. --------e-2F9400-----------------------------
  8638. INT 2F - MICRO.EXE - INSTALLATION CHECK
  8639.     AX = 9400h
  8640. Return: AL = 07h or 08h if installed
  8641. Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection
  8642. SeeAlso: AH=92h"Network Courier",AX=9401h,AX=9402h,AX=9403h,AX=9404h
  8643. SeeAlso: INT 21/AH=3Fh"WORKGRP.SYS"
  8644. --------e-2F9401-----------------------------
  8645. INT 2F - MICRO.EXE - SET ??? FLAG
  8646.     AX = 9401h
  8647. SeeAlso: AX=9400h,AX=9403h
  8648. --------e-2F9402-----------------------------
  8649. INT 2F - MICRO.EXE - ???
  8650.     AX = 9402h
  8651.     ???
  8652. Return: ???
  8653. SeeAlso: AX=9400h
  8654. --------e-2F9403-----------------------------
  8655. INT 2F - MICRO.EXE - SET ??? FLAG
  8656.     AX = 9403h
  8657. SeeAlso: AX=9400h,AX=9404h
  8658. --------e-2F9404-----------------------------
  8659. INT 2F - MICRO.EXE - CLEAR ??? FLAG
  8660.     AX = 9404h
  8661.     ES:DI -> name of executable from which MICRO.EXE was started
  8662. Note:    if the specified name is identical to the name of the program file
  8663.       from which MICRO was started, the ??? flag is cleared; otherwise,
  8664.       it is left unchanged
  8665. SeeAlso: AX=9400h,AX=9403h
  8666. --------V-2F96C7-----------------------------
  8667. INT 2F U - STRETCH - INSTALLATION CHECK
  8668.     AX = 96C7h
  8669. Return: AX = AAAAh if installed
  8670. Program: stretch.exe is a TSR for Toshiba Laptops with WD90C24 video chip
  8671.       to avoid blank screen areas in VGA text modes by increasing
  8672.       inter-line spacing
  8673. --------V-2F9800-----------------------------
  8674. INT 2F U - S3RMDRV.SYS - INSTALLATION CHECK / VERSION CHECK
  8675.     AX = 9800h
  8676.     BX = function
  8677.         0000h installation check
  8678.         Return: AX = 524Dh ('RM') if installed
  8679.         0001h get driver version
  8680.         Return: AX = driver version (AH=major, AL=BCD minor)
  8681. Program: S3RMDRV.SYS provides support for the S3 MPEG driver FMPDRV
  8682. SeeAlso: AX=9803h
  8683. --------V-2F9803-----------------------------
  8684. INT 2F U - S3RMDRV.SYS - COPY ??? INTO USER BUFFER
  8685.     AX = 9803h
  8686.     DX:BX -> 116-byte buffer for ASCIZ ???
  8687. Return: AX = 0000h
  8688.     DX:BX buffer filled with string stored in driver from its parameter
  8689.       list when it was loaded
  8690. Note:    the examined version of the driver returns CF set for any AL other
  8691.       than 00h or 03h
  8692. SeeAlso: AX=9800h
  8693. --------l-2F9900-----------------------------
  8694. INT 2F U - DOS Navigator II - INSTALLATION CHECK
  8695.     AX = 9900h
  8696. Return: BX = 4E44h ('ND') if installed
  8697.         AX = number of DOS Navigator executions
  8698.         CL = child process exit code
  8699.         DX = version number (2141h for version II 1.41)
  8700. Notes:    old versions of DOS Navigator II always returned AH=1, while newer
  8701.       ones return AH=0 and store AL in the DN.FLG file
  8702. Program: DOS Navigator is a multi-window shell for MS-DOS by RIT S.R.L.
  8703.       DOS Navigator(TM) is a registered trademark of RIT S.R.L.
  8704. SeeAlso: AX=9901h,AX=9902h,AX=9903h,AX=9904h,AX=9905h,AX=9906h
  8705. --------l-2F9901-----------------------------
  8706. INT 2F U - DOS Navigator II - RETURN POINTER TO COMMAND LINE
  8707.     AX = 9901h
  8708. Return: ES:BX -> command line (terminated with 0Dh)
  8709.     AX = ES
  8710. SeeAlso: AX=9900h,AX=9902h,AX=9903h
  8711. --------l-2F9902-----------------------------
  8712. INT 2F U - DOS Navigator II - SET 'TRUE' EXIT CODE OF DN.PRG
  8713.     AX = 9902h
  8714.     CL = exit code
  8715. Return: AX destroyed
  8716. SeeAlso: AX=9900h,AX=9901h,AX=9903h
  8717. --------l-2F9903-----------------------------
  8718. INT 2F U - DOS Navigator II - SPECIFY HOW TO EXECUTE COMMANDS
  8719.     AX = 9903h
  8720.     CL = 1 to use INT 2E
  8721.     CL <> 1 to use INT 21/AH=4Bh
  8722. SeeAlso: AX=9900h,AX=9901h,AX=9902h
  8723. --------l-2F9904-----------------------------
  8724. INT 2F U - DOS Navigator II v1.49 - SET ???
  8725.     AX = 9904h
  8726.     CX:DX = new value for ???
  8727. SeeAlso: AX=9900h,AX=9905h,AX=9906h
  8728. --------l-2F9905-----------------------------
  8729. INT 2F U - DOS Navigator II v1.49 - GET ???
  8730.     AX = 9905h
  8731. Return: CX:DX = current value of ??? (set by AX=9904h)
  8732. SeeAlso: AX=9900h,AX=9904h,AX=9906h
  8733. --------l-2F9906-----------------------------
  8734. INT 2F U - DOS Navigator II v1.49 - GET ???
  8735.     AX = 9906h
  8736.     DX = new value for ??? (bit 15 must be set, otherwise not changed)
  8737. Return: CX = previous value for ???
  8738. SeeAlso: AX=9900h,AX=9904h,AX=9905h
  8739. --------e-2F9C-------------------------------
  8740. INT 2F - Network Courier E-Mail OPERATOR.EXE - API
  8741.     AH = 9Ch
  8742.     AL = subfunction
  8743.         01h uninstall
  8744. Return: ???
  8745. Program: The Network Courier is an electronic mail package by Consumers
  8746.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  8747.       renamed Microsoft Mail v3.0.
  8748. SeeAlso: AH=92h
  8749. Index:    uninstall;Network Courier E-Mail OPERATOR.EXE
  8750. --------G-2F9E00-----------------------------
  8751. INT 2F U - INTMON v2.1 - INSTALLATION CHECK
  8752.     AX = 9E00h
  8753. Return: AX = FFFFh if installed
  8754.         BX = segment of resident code
  8755. Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
  8756.       and higher machines by Celso Minnitti, Jr.
  8757. SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
  8758. --------G-2F9E01-----------------------------
  8759. INT 2F U - INTMON v2.1 - RESET
  8760.     AX = 9E01h
  8761. Return: ???
  8762. Desc:    this function specifies that INTMON should assume that any interrupts
  8763.       on which it is currently awaiting a return have completed (i.e.
  8764.       interrupts which never return such as INT 20 and INT 27)
  8765. SeeAlso: AX=9E00h,AX=9E03h
  8766. --------G-2F9E02-----------------------------
  8767. INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
  8768.     AX = 9E02h
  8769. Return: ???
  8770. SeeAlso: AX=9E00h
  8771. --------G-2F9E03-----------------------------
  8772. INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
  8773.     AX = 9E03h
  8774.     BH = interrupt number???
  8775. Return: ???
  8776. Note:    if AL > 03h on entry, INTMON 2.1 returns immediately
  8777. SeeAlso: AX=9E00h,AX=9E01h
  8778. --------G-2F9F00-----------------------------
  8779. INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
  8780.     AX = 9F00h
  8781. Return: AX = FFFFh if installed
  8782. Program: INTCFG is an optionally-resident control program for INTMON by Celso
  8783.       Minnitti, Jr.
  8784. SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
  8785. --------G-2F9F01-----------------------------
  8786. INT 2F U - INTCFG v2.1 - ???
  8787.     AX = 9F01h
  8788.     ???
  8789. Return: ???
  8790. SeeAlso: AX=9F00h
  8791. --------G-2F9F30-----------------------------
  8792. INT 2F U - INTCFG v2.1 - GET ???
  8793.     AX = 9F30h
  8794. Return: AX = ??? (0002h)
  8795. SeeAlso: AX=9F00h
  8796. --------G-2F9F49-----------------------------
  8797. INT 2F U - INTCFG v2.1 - UNINSTALL
  8798.     AX = 9F49h
  8799. Return: AX,DX,DS,ES destroyed
  8800. SeeAlso: AX=9F00h
  8801. --------E-2FA1--BX0081-----------------------
  8802. INT 2F - Ergo DOS extenders - INSTALLATION CHECK
  8803.     AH = A1h
  8804.     BX = 0081h
  8805.     AL = which
  8806.         FEh OS/286,OS/386
  8807.         FFh HummingBoard DOS extender
  8808.     ES:DI -> 16-byte buffer
  8809. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  8810. Note:    since TKERNEL is a licensed version, it is likely that subfunctions
  8811.       BX=0082h and BX=0084h are present and function identically to the
  8812.       AX=FBA1h/BX=008xh calls
  8813. SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  8814. --------m-2FA189-----------------------------
  8815. INT 2F U - Biologic HRAMDEV.SYS - API
  8816.     AX = A189h
  8817.     BX = subfunction
  8818.         0000h set ???
  8819.         0001h remove ???
  8820.         0002h get status ???
  8821.         0003h enable ???
  8822.         0004h disable ???
  8823.         0005h set ??? flag
  8824.         0006h clear ??? flag
  8825.         0007h set ??? flag
  8826.         0008h clear ??? flag
  8827.         0009h set ???
  8828.     ES:DI -> function-specific arguments
  8829.         if func 0000h: 20-byte buffer containing ???
  8830.         if func 0001h: 20-byte buffer for returned ???
  8831.         if func 0002h: 16-byte buffer for returned ???
  8832.         if func 0009h: WORD containing ???
  8833. Return: BX = A189h if installed
  8834.     AH = status
  8835.         00h successful
  8836.         FFh failed or invalid function number
  8837. Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
  8838.       provides improved high memory access under MS-DOS 5.0
  8839. Note:    functions 00h and 01h use a stack of four entries; function 01h always
  8840.       removes the values stored with the most recent function 00h call
  8841.       which has not yet been matched with a function 01h call.
  8842. --------U-2FA4E0-----------------------------
  8843. INT 2F - Futurus Team - INSTALLATION CHECK
  8844.     AX = A4E0h
  8845. Return: AL = 52h ("R") if installed
  8846.         AH = major version plus 30h ("0")
  8847.         ES:BX -> ??? (INT A4 handler???)
  8848. Note:    older versions of Right Hand Man (from which Team evolved) store the
  8849.       signature "RH" at offset 103h in the INT 2F handler's segment
  8850. SeeAlso: INT A4"Right Hand Man"
  8851. --------U-2FA900-----------------------------
  8852. INT 2F - METZTSR.COM - INSTALLATION CHECK
  8853.     AX = A900h
  8854.     CF set
  8855. Return: CF clear if resident
  8856.         AX = 97FFh
  8857.     CF set if not present
  8858. Notes:    METZTSR.COM prevents METZ applications (such as the MAGIC screen
  8859.       saver) inactivity timeout while running a DOSapp under MS Windows.
  8860.     the default multiplex number is A9h, but may be set to any value from
  8861.       80h to FFh with a commandline switch
  8862. SeeAlso: AX=A901h,AX=A902h
  8863. --------U-2FA901-----------------------------
  8864. INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
  8865.     AX = A901h
  8866.     CF set
  8867. Return: CF clear if successful
  8868.         AX:DX = BIOS time at which INT 09 was last invoked
  8869.     CF set if not present
  8870. SeeAlso: INT 09,INT 1A/AH=00h
  8871. --------U-2FA902-----------------------------
  8872. INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
  8873.     AX = A902h
  8874.     BL = new value
  8875.         00h Ctrl-Alt-Del not allowed
  8876.         else Ctrl-Alt-Del allowed (startup default is 01h)
  8877.     CF set
  8878. Return: CF clear if successful
  8879.         AX = 97FFh
  8880.     CF set if not resident
  8881. SeeAlso: AX=A903h
  8882. --------U-2FA903-----------------------------
  8883. INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
  8884.     AX = A903h
  8885.     CF set
  8886. Return: CF clear if successful
  8887.         AX = 97FFh if Ctrl-Alt-Del allowed
  8888.         AX = 0000h if Ctrl-Alt-Del not allowed
  8889.     CF set if not resident
  8890. SeeAlso: AX=A902h
  8891. --------U-2FAA-------------------------------
  8892. INT 2F - Player's Tool 3.996b+ - UNINSTALL
  8893.     AH = AAh
  8894. Return: AL = status
  8895.         00h unloaded successfully
  8896.         01h unable to unload: in DOS shell
  8897. Program: Player's Tool is a game cheater by Dima Yakunin & Andy Robinson
  8898. SeeAlso: AH=ABh"Player's Tool",AH=ACh"Player's Tool",INT 10/AH=AAh
  8899. --------U-2FAA00-----------------------------
  8900. INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
  8901.     AX = AA00h
  8902. Return: AL = 00h not installed
  8903.          FFh installed
  8904. Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
  8905. --------U-2FAB-------------------------------
  8906. INT 2F - Player's Tool 3.996b+ - INSTALLATION CHECK
  8907.     AH = ABh
  8908. Return: BH = FFh if installed
  8909.         BL = DOS shell state
  8910.         01h in DOS shell
  8911.         00h not in DOS shell
  8912. SeeAlso: AH=AAh"Player's Tool",AH=ACh"Player's Tool",INT 10/AH=ABh
  8913. --------f-2FAB00-----------------------------
  8914. INT 2F - Btrieve Multi-User - INSTALLATION CHECK
  8915.     AX = AB00h
  8916. Return: AL = 4Dh if installed
  8917. SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
  8918. ----------2FAB00-----------------------------
  8919. INT 2F - SRSoft MODAL PC v2+ - INSTALLATION CHECK / GET VERSION
  8920.     AX = AB00h
  8921. Return: AX = 5253h ('SR' byte-swapped) if installed
  8922.         BX = MODAL PC version (BL = major, BH = minor)
  8923. Program: MODAL PC is an algorithm/real-system simulation package by SR Soft
  8924.       using Petri-nets to describe simulated objects
  8925. SeeAlso: AX=AB01h"MODAL",AX=AB02h"MODAL",AX=AB06h"MODAL"
  8926. --------f-2FAB01-----------------------------
  8927. INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
  8928.     AX = AB01h
  8929.     BX = process ID
  8930.     DS:DX -> 38-byte parameter record (see #3089 at INT 7B"Btrieve")
  8931. Return: AL = status
  8932.         00h OK
  8933.         other retry after calling INT 7F/AX=0200h
  8934. SeeAlso: AX=AB00h"Btrieve",AX=AB02h"Btrieve",INT 7B"Btrieve",INT 7F/AX=0200h
  8935. ----------2FAB01-----------------------------
  8936. INT 2F - SRSoft MODAL PC v2+ - GET PROCESS RUN PARAMETER
  8937.     AX = AB01h
  8938. Return: AX = 5253h ('SR' byte-swapped) if installed
  8939.     BL = run parameter
  8940.         00h normal process
  8941.         01h run with tracing enabled
  8942.         02h run initialization process (first thread of main task)
  8943. SeeAlso: AX=AB00h"MODAL",AX=AB02h"MODAL"
  8944. --------f-2FAB02-----------------------------
  8945. INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
  8946.     AX = AB02h
  8947. Return: AL = 00h successful
  8948.         BX = process ID
  8949.     AL > 00h failed, retry after calling INT 7F/AX=0200h
  8950. SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
  8951. ----------2FAB02-----------------------------
  8952. INT 2F - SRSoft MODAL PC v2+ - SET PROCESS EXIT CODE
  8953.     AX = AB02h
  8954.     BL = exit code
  8955. Return: AX = 5253h ('SR' byte-swapped) if installed
  8956. SeeAlso: AX=AB00h"MODAL",AX=AB01h"MODAL",AX=AB03h"MODAL"
  8957. ----------2FAB03-----------------------------
  8958. INT 2F - SRSoft MODAL PC v2+ - ALLOCATE COMMON MEMORY
  8959.     AX = AB03h
  8960.     BX = required size of common memory for variables/semaphores in bytes
  8961. Return: AX = 5253h ('SR' byte-swapped) if installed
  8962. SeeAlso: AX=AB00h"MODAL",AX=AB02h"MODAL",AX=AB04h"MODAL"
  8963. ----------2FAB04-----------------------------
  8964. INT 2F - SRSoft MODAL PC v2+ - GET ALL COMMON VARIABLES AND SEMAPHORES
  8965.     AX = AB04h
  8966.     DS:DX -> buffer for common data
  8967. Return: AX = 5253h ('SR' byte-swapped) if installed
  8968.     CF clear if successful
  8969.     CF set on error
  8970. SeeAlso: AX=AB00h"MODAL",AX=AB03h"MODAL",AX=AB05h"MODAL",AX=AB06h,AX=AB07h
  8971. ----------2FAB05-----------------------------
  8972. INT 2F - SRSoft MODAL PC v2+ - SET ALL COMMON VARIABLES AND SEMAPHORES
  8973.     AX = AB05h
  8974.     DS:DX -> buffer containing common data
  8975. Return: AX = 5253h ('SR' byte-swapped) if installed
  8976.     CF clear if successful
  8977.     CF set on error
  8978. SeeAlso: AX=AB00h"MODAL",AX=AB03h"MODAL",AX=AB04h"MODAL",AX=AB06h,AX=AB07h
  8979. ----------2FAB06-----------------------------
  8980. INT 2F - SRSoft MODAL PC v2+ - GET A COMMON VARIABLE OR SEMAPHORE
  8981.     AX = AB06h
  8982.     BX = offset of variable or semaphore in common memory
  8983.     CX = variable/semaphore size in bytes
  8984.     DS:DX -> buffer for variable or semaphore
  8985. Return: AX = 5253h ('SR' byte-swapped) if installed
  8986.     CF clear if successful
  8987.     CF set on error
  8988. SeeAlso: AX=AB00h"MODAL",AX=AB04h,AX=AB05h,AX=AB07h
  8989. ----------2FAB07-----------------------------
  8990. INT 2F - SRSoft MODAL PC v2+ - SET A COMMON VARIABLE OR SEMAPHORE
  8991.     AX = AB07h
  8992.     BX = offset of variable or semaphore in common memory
  8993.     CX = variable/semaphore size in bytes
  8994.     DS:DX -> buffer containing variable or semaphore
  8995. Return: AX = 5253h ('SR' byte-swapped) if installed
  8996.     CF clear if successful
  8997.     CF set on error
  8998. SeeAlso: AX=AB00h"MODAL",AX=AB04h,AX=AB05h,AX=AB06h
  8999. --------U-2FAC-------------------------------
  9000. INT 2F u - Player's Tool 3.996b+ - POP UP
  9001.     AH = ACh
  9002. Return: AX = 1001h
  9003. SeeAlso: AH=AAh"Player's Tool",AH=ABh"Player's Tool"
  9004. --------V-2FAC00-----------------------------
  9005. INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
  9006.     AX = AC00h
  9007. Return: AX = FFFFh
  9008.     ES:DI -> ??? (graphics data?) (not documented)
  9009. Note:    this installation check was moved here to avoid the conflict with the
  9010.       CD-ROM extensions that occurred in DOS 4.00
  9011. SeeAlso: AX=1500h"GRAPHICS"
  9012. --------V-2FAC00DI1092-----------------------
  9013. INT 2F - QRIP/TSR - GIVE CPU TO QRIP
  9014.     AX = AC00h
  9015.     DI = 1092h
  9016. Return: nothing
  9017. Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
  9018.       Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
  9019.       provide a graphical user interface
  9020. Desc:    give QRIP some CPU time to update music and flashing timers
  9021. Notes:    if DI <> 1092h on entry, QRIP chains the call
  9022.     this function should be called regularly whenever the terminal program
  9023.       is otherwise idle; the updates are automatically performed on any
  9024.       other QRIP call
  9025. SeeAlso: AX=AC01h,AX=ACF0h
  9026. --------V-2FAC01DI1092-----------------------
  9027. INT 2F - QRIP/TSR - CHANGE INTERNAL FLAGS
  9028.     AX = AC01h
  9029.     DI = 1092h
  9030.     BX = flags to be turned on (see #2238)
  9031.     CX = flags to be turned off (see #2238)
  9032. Return: AX = 9142h if installed
  9033.         DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
  9034.         ---if DX nonzero---
  9035.         BX = QRIP version number in hex (BH = major, BL = minor)
  9036.         CX = new flags (see #2238)
  9037. Note:    if DI <> 1092h on entry, QRIP chains the call
  9038. SeeAlso: AX=AC00h/DI=1092h,AX=ACF0h
  9039.  
  9040. Bitfields for QRIP internal flags:
  9041. Bit(s)    Description    (Table 2238)
  9042.  0    ANSI emulation enabled (default on)
  9043.  1    RIP emulation enabled (default on)
  9044.  2    graphical commands allowed (default on)
  9045.  3    TTY text allowed (default on)
  9046.  4    disable @ variables (default off in TSR mode)
  9047.  5    wait for key on RIP "end scene" command (default off)
  9048.  6    anti-stripping (default off in TSR mode)
  9049.  7    sound enabled (default on)
  9050.  8    automatic message filter (default off in TSR mode)
  9051.  9    display-only mode (no user prompts)
  9052.  10    TTY text suppression (default off in TSR mode)
  9053.  11-15    reserved
  9054. --------V-2FAC02DI1092-----------------------
  9055. INT 2F - QRIP/TSR - TURN OFF GRAPHICS SCREEN
  9056.     AX = AC02h
  9057.     DI = 1092h
  9058. Return: nothing
  9059. Note:    if DI <> 1092h on entry, QRIP chains the call
  9060. SeeAlso: AX=AC03h,AX=ACF0h
  9061. --------V-2FAC03DI1092-----------------------
  9062. INT 2F - QRIP/TSR - TURN ON GRAPHICS SCREEN
  9063.     AX = AC03h
  9064.     DI = 1092h
  9065. Return: nothing
  9066. Notes:    if DI <> 1092h on entry, QRIP chains the call
  9067.     this function does not restore the contents of the screen (see AX=AC15h)
  9068. SeeAlso: AX=AC02h,AX=AC14h,AX=AC15h
  9069. --------V-2FAC04DI1092-----------------------
  9070. INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
  9071.     AX = AC04h
  9072.     DI = 1092h
  9073.     DX:BX -> string
  9074.     CX = length of string
  9075. Return: nothing
  9076. Note:    if DI <> 1092h on entry, QRIP chains the call
  9077. SeeAlso: AX=AC05h,AX=AC09h,AX=AC0Ah,AX=ACF0h
  9078. --------V-2FAC05DI1092-----------------------
  9079. INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
  9080.     AX = AC05h
  9081.     DI = 1092h
  9082.     DX:BX -> ASCIZ string
  9083. Return: nothing
  9084. Note:    if DI <> 1092h on entry, QRIP chains the call
  9085. SeeAlso: AX=AC04h,AX=AC06h,AX=AC09h,AX=AC0Ah,AX=ACF0h
  9086. --------V-2FAC06DI1092-----------------------
  9087. INT 2F - QRIP/TSR - RECEIVE CHARACTERS FROM QRIP
  9088.     AX = AC06h
  9089.     DI = 1092h
  9090. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #2239)
  9091.     BX = string-waiting flag
  9092.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  9093.     CX = DX = AX
  9094. Note:    if DI <> 1092h on entry, QRIP chains the call
  9095. SeeAlso: AX=AC04h,AX=AC05h,AX=AC0Ch,AX=AC16h,AX=AC18h,AX=AC1Ah
  9096.  
  9097. (Table 2239)
  9098. Values for QRIP special codes:
  9099.  0000h    if none
  9100.  0100h    wait for user keypress (must call AX=AC16h/BL=00h or AX=AC18h)
  9101.  0101h    both/middle mouse button pressed
  9102.  0102h    entering block mode (up/download) (call AX=AC1Ah)
  9103.  0103h    right mouse button pressed
  9104.  0104h    BBS requested status bar on
  9105.  0105h    BBS requested status bar off
  9106.  0106h    BBS requested VT-102 terminal emulation
  9107.     (keypad keys should send VT-102 escape codes)
  9108.  0107h    BBS requested VT-102 mode off
  9109.  0108h    BBS requested doorway mode (raw IBM keyboard ASCII/scan code pairs)
  9110.  0109h    BBS requested doorway mode off
  9111.  010Ah    hotkey mode on
  9112.  010Bh    hotkey mode off
  9113.  010Ch    BBS requested Tab-key button changing on
  9114.  010Dh    BBS requested Tab-key mode off
  9115.  010Eh    XOFF (use flow control to stop incoming characters)
  9116.  010Fh    XON (use flow control to resume incoming characters)
  9117.  0110h-0119h BBS requested application (0-9) be run
  9118.     application 0 should be a standard text editor
  9119.  01FFh    send ASCII 00h to BBS
  9120. Note:    for special codes 0104h to 010Dh, the terminal program should report
  9121.       any mode changes it make in response by calling AX=AC16h
  9122. --------V-2FAC07DI1092-----------------------
  9123. INT 2F - QRIP/TSR - GET FONT DIRECTORY
  9124.     AX = AC07h
  9125.     DI = 1092h
  9126. Return: DX:BX -> 80-byte internal buffer containing ASCIZ font directory name
  9127. Notes:    if DI <> 1092h on entry, QRIP chains the call
  9128.     the application may change the font directory by overwriting the
  9129.       returned buffer, ensuring that it does not exceed 80 bytes incl. NUL
  9130.     if changed, the new path will not become effective until the graphics
  9131.       screen is reinitialized
  9132. SeeAlso: AX=AC08h,AX=ACF0h
  9133. --------V-2FAC08DI1092-----------------------
  9134. INT 2F - QRIP/TSR - GET ICON DIRECTORY
  9135.     AX = AC08h
  9136.     DI = 1092h
  9137. Return: DX:BX -> 80-byte internal buffer containing ASCIZ icon directory name
  9138. Notes:    if DI <> 1092h on entry, QRIP chains the call
  9139.     the application may change the icon directory by overwriting the
  9140.       returned buffer, ensuring that it does not exceed 80 bytes incl. NUL,
  9141.       and includes a trailing backslash
  9142.     if changed, the new path becomes effective immediately
  9143. SeeAlso: AX=AC07h,AX=ACF0h
  9144. --------V-2FAC09DI1092-----------------------
  9145. INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
  9146.     AX = AC09h
  9147.     DI = 1092h
  9148.     DX:BX -> string
  9149.     CX = length of string
  9150. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #2239)
  9151.     BX = string-waiting flag
  9152.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  9153.     CX = DX = AX
  9154. Note:    if DI <> 1092h on entry, QRIP chains the call
  9155. SeeAlso: AX=AC04h,AX=AC06h,AX=AC0Ah,AX=ACF0h
  9156. --------V-2FAC0ADI1092-----------------------
  9157. INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
  9158.     AX = AC0Ah
  9159.     DI = 1092h
  9160.     DX:BX -> ASCIZ string
  9161. Return: AX = character to send to BBS (0001h-00FFh) or special code (see #2239)
  9162.     BX = string-waiting flag
  9163.         0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
  9164.     CX = DX = AX
  9165. Note:    if DI <> 1092h on entry, QRIP chains the call
  9166. SeeAlso: AX=AC05h,AX=AC06h,AX=AC09h,AX=ACF0h
  9167. --------V-2FAC0BDI1092-----------------------
  9168. INT 2F - QRIP/TSR - EXECUTE RIP "END SCENE" COMMAND
  9169.     AX = AC0Bh
  9170.     DI = 1092h
  9171. Return: nothing
  9172. Notes:    if DI <> 1092h on entry, QRIP chains the call
  9173.     enables all mouse buttons and cancels the RIP timeout
  9174. SeeAlso: AX=AC01h,AX=AC04h,AX=ACF0h
  9175. --------V-2FAC0CDI1092-----------------------
  9176. INT 2F - QRIP/TSR - GET STRING TO BE SENT TO BBS
  9177.     AX = AC0Ch
  9178.     DI = 1092h
  9179. Return: AX = status
  9180.         0000h nothing to be sent
  9181.         0001h a string is waiting to be sent
  9182.         DX:BX -> string to be sent (may contain NULs)
  9183.         CX = length of string
  9184.         0002h special code waiting (call AX=AC06h)
  9185. Note:    if DI <> 1092h on entry, QRIP chains the call
  9186. SeeAlso: AX=AC06h,AX=ACF0h
  9187. --------V-2FAC0DDI1092-----------------------
  9188. INT 2F - QRIP/TSR - SET PROTECTED SCREEN AREA
  9189.     AX = AC0Dh
  9190.     DI = 1092h
  9191.     CL = number of text lines at bottom of screen to protect (00h = off)
  9192.     BL = attribute with which to fill area (bit 7 = high-int. background)
  9193. Return: nothing
  9194. Note:    if DI <> 1092h on entry, QRIP chains the call
  9195. SeeAlso: AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=ACF0h
  9196. --------V-2FAC0EDI1092-----------------------
  9197. INT 2F - QRIP/TSR - WRITE ASCIZ STRING IN PROTECTED AREA
  9198.     AX = AC0Eh
  9199.     DI = 1092h
  9200.     DX:BX -> ASCIZ string to be written
  9201.     CL = column at which to begin writing
  9202.     CH = row number within protected area (00h = first line)
  9203. Return: nothing
  9204. Note:    if DI <> 1092h on entry, QRIP chains the call
  9205. SeeAlso: AX=AC0Dh,AX=AC0Fh,AX=AC10h,AX=ACF0h
  9206. --------V-2FAC0FDI1092-----------------------
  9207. INT 2F - QRIP/TSR - SCROLL PROTECTED AREA
  9208.     AX = AC0Fh
  9209.     DI = 1092h
  9210.     BH,BL = row,column of upper-left corner in protected area
  9211.     DH,DL = row,column of lower-right corner
  9212.     CL = number of lines to scroll up
  9213. Return: nothing
  9214. Note:    if DI <> 1092h on entry, QRIP chains the call
  9215. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC10h,AX=ACF0h
  9216. --------V-2FAC10DI1092-----------------------
  9217. INT 2F - QRIP/TSR - SET OUTPUT COLOR FOR PROTECTED AREA
  9218.     AX = AC10h
  9219.     DI = 1092h
  9220.     BL = new attribute (bit 7 set for high-intensity background)
  9221. Return: nothing
  9222. Note:    if DI <> 1092h on entry, QRIP chains the call
  9223. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC11h,AX=ACF0h
  9224. --------V-2FAC11DI1092-----------------------
  9225. INT 2F - QRIP/TSR - CONVERT PROTECTED AREA TO ENTIRE SCREEN
  9226.     AX = AC11h
  9227.     DI = 1092h
  9228.     BX = mode (0000h = normal protect, 0001h = allow full-screen access)
  9229. Note:    if DI <> 1092h on entry, QRIP chains the call
  9230. SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=AC12h,AX=ACF0h
  9231. --------V-2FAC12DI1092-----------------------
  9232. INT 2F - QRIP/TSR - BEGIN POPUP-WINDOW MODE
  9233.     AX = AC12h
  9234.     DI = 1092h
  9235. Return: nothing
  9236. Notes:    if DI <> 1092h on entry, QRIP chains the call
  9237.     while popup-mode is in effect, the terminal program can write to the
  9238.       screen (and easily restore it) by outputting a RIP file with AX=AC04h
  9239.       or AX=AC05h
  9240.     QRIP will automatically drop out of popup-window mode if the terminal
  9241.       program invokes RIP pick-lists
  9242.     any changes to the protected area will be restored when popup-window
  9243.       mode is cancelled
  9244. SeeAlso: AX=AC04h,AX=AC11h,AX=AC13h,AX=ACF0h
  9245. --------V-2FAC13DI1092-----------------------
  9246. INT 2F - QRIP/TSR - END POPUP-WINDOW MODE
  9247.     AX = AC13h
  9248.     DI = 1092h
  9249. Return: nothing
  9250. Notes:    if DI <> 1092h on entry, QRIP chains the call
  9251.     restores screen
  9252. SeeAlso: AX=AC12h,AX=ACF0h
  9253. --------V-2FAC14DI1092-----------------------
  9254. INT 2F - QRIP/TSR - SAVE GRAPHICS SCREEN AND SWITCH TO TEXT MODE
  9255.     AX = AC14h
  9256.     DI = 1092h
  9257. Return: nothing
  9258. Note:    if DI <> 1092h on entry, QRIP chains the call
  9259. SeeAlso: AX=AC03h,AX=AC15h
  9260. --------V-2FAC15DI1092-----------------------
  9261. INT 2F - QRIP/TSR - RESTORE GRAPHICS SCREEN
  9262.     AX = AC15h
  9263.     DI = 1092h
  9264. Return: nothing
  9265. Desc:    restores the graphics screen saved by the last call to AX=AC14h
  9266. Note:    if DI <> 1092h on entry, QRIP chains the call
  9267. SeeAlso: AX=AC03h,AX=AC14h
  9268. --------V-2FAC16DI1092-----------------------
  9269. INT 2F - QRIP/TSR - REPORT MODE CHANGE TO QRIP
  9270.     AX = AC16h
  9271.     DI = 1092h
  9272.     BL = new mode
  9273.         00h terminate key wait
  9274.         01h status bar on
  9275.         02h status bar off
  9276.         03h VT-102 mode on
  9277.         04h VT-102 mode off
  9278.         05h doorway mode on
  9279.         06h doorway mode off
  9280.         07h hotkeys mode on
  9281.         08h hotkeys mode off
  9282.         09h tabkey mode on
  9283.         0Ah tabkey mode off
  9284. Return: nothing
  9285. Notes:    if DI <> 1092h on entry, QRIP chains the call
  9286.     all modes default to OFF when QRIP is first installed
  9287. --------V-2FAC17DI1092-----------------------
  9288. INT 2F - QRIP/TSR - CALL (EXECUTE) A RIP FILE
  9289.     AX = AC17h
  9290.     DI = 1092h
  9291.     DX:BX -> ASCIZ filename for RIP file to be executed
  9292. Return: nothing
  9293. Notes:    if DI <> 1092h on entry, QRIP chains the call
  9294.     the specified file may be in the current icon directory, the QRIP
  9295.       startup directory, or the current directory; any pathnames specified
  9296.       with the filename are ignored
  9297. --------V-2FAC18DI1092-----------------------
  9298. INT 2F - QRIP/TSR - SEND USER KEY TO QRIP
  9299.     AX = AC18h
  9300.     DI = 1092h
  9301.     BX = key (00xxh is normal ASCII, xx00h is an extended key)
  9302. Return: nothing
  9303. Note:    if DI <> 1092h on entry, QRIP chains the call
  9304. SeeAlso: AX=AC06h,AX=ACF0h
  9305. --------V-2FAC19DI1092-----------------------
  9306. INT 2F - QRIP/TSR - HANGUP
  9307.     AX = AC19h
  9308.     DI = 1092h
  9309. Return: nothing
  9310. Desc:    inform QRIP that carrier has been lost
  9311. Note:    if DI <> 1092h on entry, QRIP chains the call
  9312. SeeAlso: AX=ACF0h
  9313. --------V-2FAC1ADI1092-----------------------
  9314. INT 2F - QRIP/TSR - GET RIP_ENTER_BLOCK_MODE INFORMATION
  9315.     AX = AC1Ah
  9316.     DI = 1092h
  9317. Return: AH = requested protocol (see #2240)
  9318.     AL = file type (see #2241)
  9319.     DX:BX -> ASCIZ filename or 0000h:0000h
  9320.     CX = length of filename
  9321. Note:    if DI <> 1092h on entry, QRIP chains the call
  9322. SeeAlso: AX=ACF0h
  9323.  
  9324. (Table 2240)
  9325. Values for QRIP protocol identifier:
  9326.  00h    Xmodem (checksum)
  9327.  01h    Xmodem-CRC
  9328.  02h    Xmodem-1K
  9329.  03h    Xmodem-1K-G
  9330.  04h    Kermit
  9331.  05h    Ymodem
  9332.  06h    Ymodem-G
  9333.  07h    Zmodem with crash recovery
  9334.  08h-0Fh same as 00h-07h, but for uploading instead of downloading
  9335. SeeAlso: #2241
  9336.  
  9337. (Table 2241)
  9338. Values for QRIP file type:
  9339.  00h    RIP file sequence to be displayed
  9340.  01h    RIP file sequence to be stored in icon directory
  9341.  02h    ICN file sequence to be stored in icon directory
  9342.  03h    HLP file sequence to be stored, then auto-loaded if needed
  9343.  04h    COMPOSITE DYNAMIC file sequence (batch protocols only)
  9344.  05h    ACTIVE DYNAMIC file sequence (batch protocols only)
  9345. Note:    for file types 04h and 05h, any .RIP or .ICN files are stored in
  9346.       the icon directory; in mode 05h, any .RIP files are also played
  9347.       back as they are received
  9348. SeeAlso: #2240
  9349. --------V-2FAC1BDI1092-----------------------
  9350. INT 2F - QRIP/TSR - SET SYSTEM FONT SIZE
  9351.     AX = AC1Bh
  9352.     DI = 1092h
  9353.     BX = font size (see #2242)
  9354. Return: nothing
  9355. Note:    if DI <> 1092h on entry, QRIP chains the call
  9356. SeeAlso: AX=AC04h,AX=ACF0h
  9357.  
  9358. (Table 2242)
  9359. Values for QRIP font size specifier:
  9360.  00h    8x8 font, 80x43 screen
  9361.  01h    7x8 font, 90x43 screen
  9362.  02h    8x14 font, 80x25 screen
  9363.  03h    7x14 font, 90x25 screen
  9364.  04h    16x14 font, 40x25 screen
  9365. --------V-2FACF0DI1092-----------------------
  9366. INT 2F - QRIP/TSR - INSTALLATION CHECK
  9367.     AX = ACF0h
  9368.     DI = 1092h
  9369. Return: AX = 9142h if installed
  9370.         DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
  9371.         ---if DX nonzero---
  9372.         BX = QRIP version number in hex (BH = major, BL = minor)
  9373.         CX = current flags (see AX=AC01h)
  9374. Note:    if DI <> 1092h on entry, QRIP chains the call
  9375. SeeAlso: AX=AC00h/DI=1092h,AX=AC01h,AX=AC04h,AX=AC06h,AX=AC1Ah,AX=ACFFh
  9376. --------V-2FACFFDI1092-----------------------
  9377. INT 2F - QRIP/TSR - UNINSTALL
  9378.     AX = ACFFh
  9379.     DI = 1092h
  9380. Return: AX = status
  9381.         0000h unable to remove (interrupt vector hooked by another prog)
  9382.         0001h successful
  9383.         0002h unable to take over DOS at this time (retry uninstall)
  9384. Note:    if DI <> 1092h on entry, QRIP chains the call
  9385. SeeAlso: AX=ACF0h
  9386. --------V-2FAD00-----------------------------
  9387. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  9388.     AX = AD00h
  9389. Return: AL = FFh if installed
  9390.         BX = ??? (0100h for MS-DOS 3.3+)
  9391. Note:    DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
  9392.       subfunctions listed here
  9393. SeeAlso: AX=AD01h"DISPLAY",AX=AD02h"DISPLAY"
  9394. --------O-2FAD00-----------------------------
  9395. INT 2F U - DR DOS 3.41-5.0, Novell DOS 7 KEYB - INSTALLATION CHECK
  9396.     AX = AD00h
  9397. Return: AX = FFFFh if installed
  9398.     flags destroyed
  9399. SeeAlso: AX=AD80h"Novell"
  9400. --------V-2FAD01-----------------------------
  9401. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
  9402.     AX = AD01h
  9403.     BX = new code page (see #1099 at INT 21/AX=6602h)
  9404. Return: CF clear if successful
  9405.         AX = 0001h
  9406.     CF set on error (unsupported code page)
  9407.         AX = 0000h
  9408. SeeAlso: AX=AD02h"DISPLAY"
  9409. --------O-2FAD01-----------------------------
  9410. INT 2F U - DR DOS 3.41,5.0 KEYB - GET CONFIGURATION
  9411.     AX = AD01h
  9412. Return: BX = current code page (see #1099 at INT 21/AX=6602h)
  9413.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  9414.     ES = resident code segment
  9415. SeeAlso: AX=AD00h"KEYB",AX=AD02h"KEYB",AX=AD83h"KEYB"
  9416. --------V-2FAD02-----------------------------
  9417. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
  9418.     AX = AD02h
  9419. Return: CF set if code page never set
  9420.         AX = 0001h
  9421.         BX = FFFFh (assume first hardware code page)
  9422.     CF clear if successful
  9423.         BX = current code page (see #1099 at INT 21/AX=6602h)
  9424. SeeAlso: AX=AD01h"DISPLAY",AX=AD03h
  9425. --------O-2FAD02-----------------------------
  9426. INT 2F U - Novell DOS 7 KEYB - ???
  9427.     AX = AD02h
  9428.     DX = ??? (0000h)
  9429. Return: AX = FFFFh if installed
  9430.     flags destroyed
  9431. SeeAlso: AX=AD01h"KEYB"
  9432. --------V-2FAD03-----------------------------
  9433. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
  9434.     AX = AD03h
  9435.     ES:DI -> buffer for code page information (see #2243)
  9436.     CX = size of buffer in bytes
  9437. Return: CF set if buffer too small
  9438.     CF clear if successful
  9439.         ES:DI buffer filled
  9440. SeeAlso: AX=AD01h,AX=AD02h
  9441.  
  9442. Format of DOS 5.0-6.0 DISPLAY.SYS code page information:
  9443. Offset    Size    Description    (Table 2243)
  9444.  00h    WORD    number of software code pages
  9445.  02h    WORD    ??? (0003h)
  9446.  04h    WORD    number of hardware code pages
  9447.  06h  N WORDs    hardware code page numbers (see #1099 at INT 21/AX=6602h)
  9448.       N WORDs    software (prepared) code pages (FFFFh if not yet prepared)
  9449. --------V-2FAD04-----------------------------
  9450. INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
  9451.     AX = AD04h
  9452.     ???
  9453. Return: ???
  9454. --------V-2FAD10-----------------------------
  9455. INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
  9456.     AX = AD10h
  9457.     ???
  9458. Return: AX = FFFFh
  9459.     BX = ??? (0100h in PC-DOS 4.01)
  9460. --------V-2FAD10-----------------------------
  9461. INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
  9462.     AX = AD10h
  9463.     ???
  9464. Return: CF clear if successful
  9465.     CF set on error
  9466. Note:    this function is a NOP if the active code page has never been set
  9467.       (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
  9468. --------V-2FAD40-----------------------------
  9469. INT 2F - DOS 4.0+ - ???
  9470.     AX = AD40h
  9471.     DX = ???
  9472.     ???
  9473. Return: ???
  9474. Note:    called by PC-DOS 4.01 PRINT.COM
  9475. --------K-2FAD80-----------------------------
  9476. INT 2F u - MS-DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  9477.     AX = AD80h
  9478. Return: AL = FFh if installed
  9479.         BX = version number (BH = major, BL = minor)
  9480.         ES:DI -> internal data (see #2244)
  9481.         AH destroyed (set to FFh by some implementations/versions)
  9482. Notes:    MS-DOS 3.30, PC-DOS 4.01, and MS-DOS 5.00 all report version 1.00.
  9483.     this function was undocumented prior to the release of DOS 5.0
  9484. SeeAlso: AX=AD80h"Novell",AX=AD81h,AX=AD82h,AX=AD83h
  9485.  
  9486. Format of KEYB internal data:
  9487. Offset    Size    Description    (Table 2244)
  9488.  00h    DWORD    original INT 09
  9489.  04h    DWORD    original INT 2F
  9490.  08h  6 BYTEs    ???
  9491.  0Eh    WORD    flags (see #2245)
  9492.  10h    BYTE    ???
  9493.  11h    BYTE    ???
  9494.  12h  4 BYTEs    ???
  9495.  16h  2 BYTEs    country ID letters
  9496.  18h    WORD    current code page (see #1099 at INT 21/AX=6602h)
  9497. ---DOS 3.3---
  9498.  1Ah    WORD    pointer to first item in list of code page tables???
  9499.  1Ch    WORD    pointer to ??? item in list of code page tables
  9500.  1Eh  2 BYTEs    ???
  9501.  20h    WORD    pointer to key translation data (see #2247)
  9502.  22h    WORD    pointer to last item in code page table list (see #2246)
  9503.  24h  9 BYTEs    ???
  9504. ---DOS 4.01---
  9505.  1Ah  2 BYTEs    ???
  9506.  1Ch    WORD    pointer to first item in list of code page tables???
  9507.  1Eh    WORD    pointer to ??? item in list of code page tables
  9508.  20h  2 BYTEs    ???
  9509.  22h    WORD    pointer to key translation data (see #2247)
  9510.  24h    WORD    pointer to last item in code page table list (see #2246)
  9511.  26h  9 BYTEs    ???
  9512. Note:    at least in MS-DOS v6.22, the signature "SHARED DATA" immediately
  9513.       precedes this structure
  9514.  
  9515. Bitfields for MS-DOS v6.22 KEYB flags:
  9516. Bit(s)    Description    (Table 2245)
  9517.  15    INT 16/AH=1xh supported (INT 16h/AH=92h call returns AH<=80h)
  9518.  14    INT 16/AH=2xh supported (INT 16h/AH=A2h call returns AH<=80h)
  9519.  13    unused (0)
  9520.  12    network installed (INT 2F/AX=B800h)
  9521.  11    original IBM PC (BIOS date 1981)
  9522.  10    PC or PC/XT (BIOS machine type byte of FBh or FEh)
  9523.  9    PC Convertible (BIOS machine type byte of F9h); use INT 15/AX=4104h
  9524.  8    unused (0)
  9525.  7    IBM PS/2 model 30 (BIOS machine type byte of FAh)
  9526.  6    IBM AT (BIOS machine type FCh)
  9527.  5    IBM PS/2 (BIOS machine type F8h)
  9528.  4    PS/2 and unknown only:
  9529.     non-standard 8042 or no AT->PC scancode translation???
  9530.  3    temporary flag???
  9531.  2-0    ???
  9532. SeeAlso: #2244
  9533.  
  9534. Format of code page table list entries:
  9535. Offset    Size    Description    (Table 2246)
  9536.  00h    WORD    pointer to next item, FFFFh = last
  9537.  02h    WORD    code page (see #1099 at INT 21/AX=6602h)
  9538.  04h  2 BYTEs    ???
  9539.  
  9540. Format of KEYB translation data:
  9541. Offset    Size    Description    (Table 2247)
  9542.  00h    WORD    size of data in bytes, including this word
  9543.  02h N-2 BYTEs    ???
  9544. --------K-2FAD80-----------------------------
  9545. INT 2F u - Novell DOS 7 KEYB.COM - INSTALLATION CHECK
  9546.     AX = AD80h
  9547. Return: AX = FFFFh if installed
  9548.         CX = Novell DOS KEYB version number (CL = major, CH = minor)
  9549.         DX = current keyboard codepage
  9550.         ES:DI -> internal data and tables (ES=FFFEh if KEYB in HMA)
  9551.     flags destroyed
  9552. Note:    versions: v2.08 (original ship 4/94), v2.09 (Update 10, 11/18/94),
  9553.       v2.10 (Update 12, 2/22/95), v2.11 (Update 13, 5/8/95),
  9554.       v2.12 (Update 14, 7/31/95)
  9555. SeeAlso: AX=AD80h"MS-DOS"
  9556. --------K-2FAD81-----------------------------
  9557. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  9558.     AX = AD81h
  9559.     BX = code page (see #1099 at INT 21/AX=6601h)
  9560. Return: CF set on error
  9561.         AX = 0001h (code page not available)
  9562.     CF clear if successful
  9563. Notes:    called by DISPLAY.SYS
  9564.     this function was undocumented prior to the release of DOS 5.0
  9565. SeeAlso: AX=AD80h,AX=AD82h
  9566. --------K-2FAD82-----------------------------
  9567. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  9568.     AX = AD82h
  9569.     BL = new state
  9570.         00h US keyboard (Control-Alt-F1)
  9571.         FFh foreign keyboard (Control-Alt-F2)
  9572. Return: CF set on error (BL not 00h or FFh)
  9573.     CF clear if successful
  9574. Note:    this function was undocumented prior to the release of DOS 5.0
  9575. SeeAlso: AX=AD80h,AX=AD81h,AX=AD83h
  9576. --------K-2FAD83-----------------------------
  9577. INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
  9578.     AX = AD83h
  9579. Return: BL = current state
  9580.         00h US keyboard
  9581.         FFh foreign keyboard
  9582. SeeAlso: AX=AD82h
  9583. --------l-2FAE00-----------------------------
  9584. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  9585.     AX = AE00h
  9586.     DX = magic value FFFFh
  9587.     CH = FFh
  9588.     CL = length of command line tail (4DOS v4.0)
  9589.     DS:BX -> command line buffer (see #2248)
  9590.     DS:SI -> command name buffer (see #2249)
  9591.     DI = 0000h (4DOS v4.0)
  9592. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  9593.     AL = 00h if the command should be executed as usual
  9594. Notes:    This call provides a mechanism for TSRs to install permanent
  9595.       extensions to the command repertoire of COMMAND.COM.    It appears
  9596.       that COMMAND.COM makes this call before executing the current
  9597.       command line, and does not execute it itself if the return is FFh.
  9598.     APPEND hooks this call, to allow subsequent APPEND commands to
  9599.       execute without re-running APPEND
  9600. SeeAlso: AX=AE01h
  9601.  
  9602. Format of COMMAND.COM command line buffer:
  9603. Offset    Size    Description    (Table 2248)
  9604.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  9605.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  9606.       N BYTEs    command line text, terminated by 0Dh
  9607.  
  9608. Format of command name buffer:
  9609. Offset    Size    Description    (Table 2249)
  9610.  00h    BYTE    length of command name
  9611.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  9612. --------l-2FAE01-----------------------------
  9613. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  9614.     AX = AE01h
  9615.     DX = magic value FFFFh
  9616.     CH = 00h
  9617.     CL = length of command name (4DOS v4.0)
  9618.     DS:BX -> command line buffer (see #2248)
  9619.     DS:SI -> command name buffer (see #2249)
  9620. Return: DS:SI buffer updated
  9621.       if length byte is nonzero, the following bytes contain the uppercase
  9622.       internal command to execute and the command line buffer contains the
  9623.       command's parameters (the first DS:[SI] bytes are ignored)
  9624. Notes:    this call requests execution of the command which a previous call to
  9625.       AX=AE00h indicated was resident
  9626.     APPEND hooks this call
  9627. BUG:    Novell DOS 7.0's COMMAND.COM (prior to Update 12) will attempt to run
  9628.       a disk program with the indicated name even if the returned length
  9629.       byte is zero, because the register used to flag this case is
  9630.       clobbered without first checking it.    The workaround is to set the
  9631.       command name buffer to "REM" followed by enough blanks to pad out
  9632.       the original command's length, which will also work with MS-DOS 6.
  9633.       (from padgett@tccslr.dnet.mmc.com)
  9634. SeeAlso: AX=AE00h
  9635. --------O-2FAF00-----------------------------
  9636. INT 2F - WinDOS v2.11 - INSTALLATION CHECK
  9637.     AX = AF00h
  9638. Return: AL = FFh if installed
  9639. Program: WinDOS is a DOS clone (claimed to be mostly MS-DOS 5.0 API compatible)
  9640.       written by Heiko Goemann
  9641. SeeAlso: AX=AF01h"WinDOS",INT 21/AH=30h
  9642. ----------2FAF00-----------------------------
  9643. INT 2F U - ???
  9644.     AX = AF00h
  9645.     ???
  9646. Return: AX = 0000h if interface supported
  9647. SeeAlso: AX=AF02h,AX=AF03h,AX=AF04h,AX=AF13h,AX=AF30h
  9648. --------O-2FAF01-----------------------------
  9649. INT 2F - WinDOS v2.11 - TURN ON ONLINE MODE
  9650.     AX = AF01h
  9651. Return: nothing
  9652. Desc:    indicate that the user will not exchange floppy disks, allowing WinDOS
  9653.       to cache disk sectors in memory and avoid writing modified sectors
  9654.       back out to the floppy disk
  9655. SeeAlso: AX=AF00h"WinDOS",AX=AF02h"WinDOS"
  9656. --------O-2FAF02-----------------------------
  9657. INT 2F - WinDOS v2.11 - TURN OFF ONLINE MODE
  9658.     AX = AF02h
  9659. Return: nothing
  9660. Desc:    indicate that the floppy disk may be removed, and that WinDOS should
  9661.       write all buffered sectors out to the floppy disk
  9662. SeeAlso: AX=AF00h"WinDOS",AX=AF01h"WinDOS"
  9663. ----------2FAF02-----------------------------
  9664. INT 2F U - ???
  9665.     AX = AF02h
  9666.     ???
  9667. Return: ES = ???
  9668. SeeAlso: AX=AF00h
  9669. --------O-2FAF03-----------------------------
  9670. INT 2F - WinDOS v2.11 - TURN VIDMEM ON
  9671.     AX = AF03h
  9672. Return: AX = status
  9673.         0000h successful
  9674.         0001h CPU not in mode set by DOS386=On
  9675.         0002h video adapter in graphics mode
  9676.         0003h memory chain corrupted
  9677. SeeAlso: AX=AF00h"WinDOS",AX=AF04h"WinDOS",AX=AF05h"WinDOS"
  9678. ----------2FAF03-----------------------------
  9679. INT 2F U - ???
  9680.     AX = AF03h
  9681.     ???
  9682. Return: DX = ???
  9683. SeeAlso: AX=AF00h
  9684. --------O-2FAF04-----------------------------
  9685. INT 2F - WinDOS v2.11 - TURN VIDMEM OFF
  9686.     AX = AF04h
  9687. Return: AX = status
  9688.         0000h successful
  9689.         0001h video memory is in use
  9690. SeeAlso: AX=AF00h"WinDOS",AX=AF03h"WinDOS",AX=AF05h"WinDOS"
  9691. ----------2FAF04-----------------------------
  9692. INT 2F U - ???
  9693.     AX = AF04h
  9694.     ???
  9695. Return: ???
  9696. SeeAlso: AX=AF00h
  9697. --------O-2FAF05-----------------------------
  9698. INT 2F - WinDOS v2.11 - GET VIDMEM STATE
  9699.     AX = AF05h
  9700. Return: AX = status (0000h off, 0001h on)
  9701. SeeAlso: AX=AF00h"WinDOS",AX=AF03h"WinDOS",AX=AF04h"WinDOS"
  9702. ----------2FAF05-----------------------------
  9703. INT 2F U - ???
  9704.     AX = AF05h
  9705.     ???
  9706. Return: ???
  9707. SeeAlso: AX=AF00h
  9708. --------O-2FAF06-----------------------------
  9709. INT 2F - WinDOS v2.11 - MAKE PROGRAM UNBREAKABLE
  9710.     AX = AF06h
  9711.     DS:DX -> break handler
  9712.     DI:BX = stack to use for break handler
  9713. Return: nothing
  9714. Desc:    set a handler which should be invoked when Ctrl-C is pressed instead of
  9715.       aborting the program
  9716. SeeAlso: AX=AF00h"WinDOS",AX=AF0Ah"WinDOS",AX=AF0Ch"WinDOS"
  9717. --------O-2FAF07-----------------------------
  9718. INT 2F - WinDOS v2.11 - SIGNAL FATAL OVERLAY FAULT
  9719.     AX = AF07h
  9720. Return: never -- system reset
  9721. Desc:    pop up a window indicating that the system overlay file can not be
  9722.       loaded
  9723. SeeAlso: AX=AF00h"WinDOS",AX=AF08h"WinDOS"
  9724. --------O-2FAF08-----------------------------
  9725. INT 2F - WinDOS v2.11 - SIGNAL RECOVERABLE OVERLAY FAULT
  9726.     AX = AF08h
  9727. Return: nothing
  9728. Desc:    pop up a window requesting that a disk containing SH.OVL be inserted
  9729. SeeAlso: AX=AF00h"WinDOS",AX=AF07h"WinDOS",AX=AF0Bh
  9730. --------O-2FAF09-----------------------------
  9731. INT 2F - WinDOS v2.11 - GET TERMINATED PSP
  9732.     AX = AF09h
  9733. Return: DS = PSP segment of most recently ended TSR
  9734. SeeAlso: AX=AF00h"WinDOS",AX=AF0Ah
  9735. --------O-2FAF0A-----------------------------
  9736. INT 2F - WinDOS v2.11 - GET MAIN SHELL PSP
  9737.     AX = AF0Ah
  9738. Return: AX = shell's PSP (same as DS on last call to AX=AF06h)
  9739. Desc:    get the PSP address of the last program to call AX=AF06h (normally
  9740.       the main command interpreter)
  9741. SeeAlso: AX=AF00h"WinDOS",AX=AF06h"WinDOS",AX=AF09h
  9742. --------O-2FAF0B-----------------------------
  9743. INT 2F - WinDOS v2.11 - SIGNAL FATAL ERROR
  9744.     AX = AF0Bh
  9745. Return: never -- system reset
  9746. Desc:    pop up a window indicating a terminal system error
  9747. SeeAlso: AX=AF00h"WinDOS",AX=AF07h,AX=AF08h,AX=AF15h"WinDOS"
  9748. --------O-2FAF0C-----------------------------
  9749. INT 2F - WinDOS v2.11 - GET OTHER MAIN SHELL PARAMETERS
  9750.     AX = AF0Ch
  9751. Return: DI:AX = stack
  9752.     SI = offset of break handler
  9753. Desc:    retrieve the parameters last set by AX=AF06h (normally by the main
  9754.       command interpreter)
  9755. SeeAlso: AX=AF00h"WinDOS",AX=AF06h"WinDOS"
  9756. --------O-2FAF0D-----------------------------
  9757. INT 2F - WinDOS v2.11 - GET CURRENT PARAMETER
  9758.     AX = AF0Dh
  9759.     BX = offset of desired parameter in global data area
  9760. Return: AX = current value of parameter (AH undefined if byte value)
  9761. SeeAlso: AX=AF00h"WinDOS",AX=AF0Eh
  9762. --------O-2FAF0E-----------------------------
  9763. INT 2F - WinDOS v2.11 - SET CURRENT PARAMETER BYTE VALUE
  9764.     AX = AF0Eh
  9765.     BX = offset of desired parameter in global data area
  9766.     DL = new value of parameter
  9767. Return: nothing
  9768. SeeAlso: AX=AF00h"WinDOS",AX=AF0Dh
  9769. --------O-2FAF0F-----------------------------
  9770. INT 2F - WinDOS v2.11 - GET HISTORY SEGMENT
  9771.     AX = AF0Fh
  9772. Return: AX = segment of buffer for input history, or 0000h if none
  9773. SeeAlso: AX=AF00h"WinDOS",AX=AF10h"WinDOS"
  9774. --------O-2FAF10-----------------------------
  9775. INT 2F - WinDOS v2.11 - SET HISTORY SEGMENT
  9776.     AX = AF10h
  9777.     BX = segment of new buffer for input history
  9778. Return: nothing
  9779. Note:    the buffer must have been allocated with INT 21/AH=48h
  9780. SeeAlso: AX=AF00h"WinDOS",AX=AF0Fh"WinDOS"
  9781. --------O-2FAF11-----------------------------
  9782. INT 2F - WinDOS v2.11 - FREE XMS BLOCKS
  9783.     AX = AF11h
  9784. Return: nothing
  9785. Desc:    free all XMS blocks whose XMS identification value (see AX=AF12h)
  9786.       equals the current PSP
  9787. SeeAlso: AX=AF00h"WinDOS",AX=AF12h"WinDOS",INT 21/AH=50h
  9788. --------O-2FAF12-----------------------------
  9789. INT 2F - WinDOS v2.11 - SET XMS IDENTIFICATION VALUE
  9790.     AX = AF12h
  9791.     DS = new XMS identification value (normally caller's PSP segment)
  9792. Return: nothing
  9793. SeeAlso: AX=AF00h"WinDOS",AX=AF11h"WinDOS"
  9794. ----------2FAF12-----------------------------
  9795. INT 2F U - ???
  9796.     AX = AF12h
  9797.     ???
  9798. Return: ES = ???
  9799. SeeAlso: AX=AF00h
  9800. --------O-2FAF13-----------------------------
  9801. INT 2F - WinDOS v2.11 - SET ASSIGN VALUE
  9802.     AX = AF13h
  9803.     BL = number of drive to remap (00h = A:)
  9804.     DL = number of drive to be accessed via drive number BL
  9805. Return: nothing
  9806. Desc:    remap a drive letter
  9807. Note:    the remapping can be canceled by specifying DL=BL
  9808. SeeAlso: AX=AF00h"WinDOS",AX=AF14h"WinDOS",AX=0601h
  9809. ----------2FAF13-----------------------------
  9810. INT 2F U - ???
  9811.     AX = AF13h
  9812.     ???
  9813. Return: ???
  9814. SeeAlso: AX=AF00h
  9815. --------O-2FAF14-----------------------------
  9816. INT 2F - WinDOS v2.11 - GET ASSIGN VALUE
  9817.     AX = AF14h
  9818.     BL = drive number (00h = A:)
  9819. Return: DL = drive number which is actually accessed by drive number BL
  9820. Desc:    determine the current mapping for a drive
  9821. SeeAlso: AX=AF00h"WinDOS",AX=AF13h"WinDOS",AX=0601h
  9822. --------O-2FAF15-----------------------------
  9823. INT 2F - WinDOS v2.11 - SIGNAL STACK ERROR
  9824.     AX = AF15h
  9825. Return: never -- system reset
  9826. Desc:    pop up a window indicating a stack overflow
  9827. SeeAlso: AX=AF00h"WinDOS",AX=AF0Bh"WinDOS"
  9828. --------O-2FAF16-----------------------------
  9829. INT 2F - WinDOS v2.11 - GET SIMPLE TRUENAME
  9830.     AX = AF16h
  9831.     DS:SI -> path to be canonicalized
  9832.     ES:DI -> buffer for canonicalized filename/pathname
  9833. Return: CF clear if successful
  9834.         AX = 0000h
  9835.     CF set on error
  9836.         AX = DOS error code (see #1020 at INT 21/AH=59h/BX=0000h)
  9837. Desc:    partially canonicalize a path, omitting SUBST, JOIN, ASSIGN, and
  9838.       network redirections
  9839. SeeAlso: AX=AF00h"WinDOS",INT 21/AH=60h
  9840. --------O-2FAF17-----------------------------
  9841. INT 2F - WinDOS v2.11 - QUERY FOR NEW CURRENT DRIVE
  9842.     AX = AF17h
  9843. Return: nothing
  9844. Desc:    pop up a dialog allowing the user to select a new default drive
  9845. SeeAlso: AX=AF00h"WinDOS"
  9846. --------O-2FAF18-----------------------------
  9847. INT 2F - WinDOS v2.11 - SET CTRL-C/CTRL-BREAK DISABLE FLAG
  9848.     AX = AF18h
  9849.     DL = new break-checking state (00h enabled, 01h disabled)
  9850. Return: nothing
  9851. SeeAlso: AX=AF00h"WinDOS"
  9852. --------O-2FAF19-----------------------------
  9853. INT 2F - WinDOS v2.11 - SET HEAD SETTLE FLAG
  9854.     AX = AF19h
  9855.     DL = new state
  9856.         00h diskette head settling time reset to 15ms before each access
  9857.         01h no additional head settling time used between accesses
  9858. Return: nothing
  9859. SeeAlso: AX=AF00h"WinDOS"
  9860. --------O-2FAF1A-----------------------------
  9861. INT 2F - WinDOS v2.11 - SEARCH FOR NON-FRAGMENTED DISK AREA
  9862.     AX = AF1Ah
  9863.     BL = drive (00h = current, 01h = A:, etc.)
  9864.     CX = number of clusters desired
  9865. Return: CF clear if successful
  9866.         DI = first free cluster on logical drive
  9867.         BP = first cluster of contiguous free area
  9868.         AX destroyed
  9869.     CF set on error
  9870.         AX = DOS error code (see #1020 at INT 21/AH=59h/BX=0000h)
  9871. Desc:    attempt to find an area of the disk containing the specified number
  9872.       of contiguous unallocated clusters
  9873. SeeAlso: AX=AF00h"WinDOS"
  9874. ----------2FAF30-----------------------------
  9875. INT 2F U - ???
  9876.     AX = AF30h
  9877.     ???
  9878. Return: ???
  9879. SeeAlso: AX=AF00h
  9880. --------d-2FAFDE-----------------------------
  9881. INT 2F - Disk-Emu - INSTALLATION CHECK / GET VERSION
  9882.     AX = AFDEh
  9883.     ES:DI -> 14-byte buffer for data (see #2250)
  9884. Return: AX = CFDEh (Carlos Fernandez Disk-Emu) if installed
  9885.         BX = version (BH = major, BL = minor)
  9886.  
  9887. Format of Disk-Emu information data:
  9888. Offset    Size    Description    (Table 2250)
  9889.  00h    BYTE    number of tracks
  9890.  01h    BYTE    sectors per track
  9891.  02h    WORD    bytes per sector
  9892.  04h    BYTE    number of heads
  9893.  05h    BYTE    flag: 00h inactive, 01h active
  9894.  06h    BYTE    write protection (00h none, 01h full, 02h pseudo)
  9895.  07h    BYTE    saved (00h some unsaved data, 01h all data saved)
  9896.  08h    BYTE    disk in memory (00h no, 01h yes)
  9897.  09h    WORD    EMS handle
  9898.  0Bh    WORD    XMS handle
  9899.  0Dh    BYTE    memory type used for disk (00h XMS, 01h EMS)
  9900. --------V-2FB000-----------------------------
  9901. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  9902.     AX = B000h
  9903. Return: AL = status
  9904.         00h not installed, OK to install
  9905.         01h not installed, not OK to install
  9906.         FFh installed
  9907. Notes:    called by DISPLAY.SYS
  9908.     documented for DOS 5.0, but undocumented in prior versions
  9909. SeeAlso: AX=2300h,AX=2E00h,AX=B001h
  9910. --------V-2FB001-----------------------------
  9911. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  9912.     AX = B001h
  9913.     DS:BX -> DWORD buffer for address of 8x8 font table
  9914. Return: buffer filled
  9915.     AL = FFh
  9916. Note:    PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
  9917.       MS-DOS 3.30 sets it to 0030h
  9918. SeeAlso: AH=2Eh"GRAFTABL",AX=B000h
  9919. --------I-2FB400-----------------------------
  9920. INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
  9921.     AX = B400h
  9922. Return: AL = FFh if installed
  9923. --------I-2FB401-----------------------------
  9924. INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
  9925.     AX = B401h
  9926. Return: ES -> host screen buffer (PC ASCII format)
  9927.     ES unchanged if communications not started
  9928. --------I-2FB402-----------------------------
  9929. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  9930.     AX = B402h
  9931.     BX = ???
  9932. Return: ???
  9933. --------I-2FB403-----------------------------
  9934. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  9935.     AX = B403h
  9936.     ???
  9937. Return: ???
  9938. --------I-2FB404-----------------------------
  9939. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  9940.     AX = B404h
  9941.     ???
  9942. Return: ???
  9943. --------I-2FB405-----------------------------
  9944. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  9945.     AX = B405h
  9946.     ???
  9947. Return: ???
  9948. --------f-2FB700-----------------------------
  9949. INT 2F - APPEND - INSTALLATION CHECK
  9950.     AX = B700h
  9951. Return: AL = status
  9952.         00h not installed
  9953.         FFh installed
  9954. Note:    MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
  9955.       a TopView-compatible environment
  9956. SeeAlso: AX=B702h
  9957. --------f-2FB701-----------------------------
  9958. INT 2F U - APPEND v3.21 only - GET APPEND PATH
  9959.     AX = B701h
  9960. Return: ES:DI -> active APPEND path
  9961. Notes:    the only version of APPEND known to support this call is the APPEND
  9962.       shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
  9963.       "Incorrect APPEND Version" and aborts the caller
  9964.     use AX=B704h first, and only call this function if that one is not
  9965.       supported
  9966. SeeAlso: AX=B700h,AX=B704h
  9967. --------f-2FB702-----------------------------
  9968. INT 2F - APPEND - GET VERSION
  9969.     AX = B702h
  9970. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  9971.     AL = major version number
  9972.     AH = minor version number, otherwise
  9973. SeeAlso: AX=B700h,AX=B710h
  9974. --------f-2FB703-----------------------------
  9975. INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  9976.     AX = B703h
  9977.     ES:DI -> INT 21 handler APPEND should chain to
  9978. Return: ES:DI -> APPEND's INT 21 handler
  9979. Note:    each invocation of this function toggles a flag which APPEND uses to
  9980.       determine whether to chain to the user handler or the original
  9981.       INT 21
  9982. SeeAlso: AX=B700h,AX=B706h
  9983. --------f-2FB704-----------------------------
  9984. INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
  9985.     AX = B704h
  9986. Return: ES:DI -> active APPEND path (128 bytes max)
  9987. Note:    some versions of append do not support this call, and return ES
  9988.       unchanged; in this case, you should call AX=B701h to get the APPEND
  9989.       path
  9990. SeeAlso: AX=B701h
  9991. --------f-2FB706-----------------------------
  9992. INT 2F - DOS 4.0+ APPEND - GET APPEND FUNCTION STATE
  9993.     AX = B706h
  9994. Return: BX = APPEND state (see #2251)
  9995. SeeAlso: AX=B700h,AX=B707h
  9996.  
  9997. Bitfields for APPEND state:
  9998. Bit(s)    Description    (Table 2251)
  9999.  0    set if APPEND enabled
  10000.  1-11    reserved
  10001.  12    (DOS 5.0) set if APPEND applies directory search even if a drive has
  10002.       been specified
  10003.  13    set if /PATH flag active
  10004.  14    set if /E flag active (environment var APPEND exists)
  10005.  15    set if /X flag active
  10006. --------f-2FB707-----------------------------
  10007. INT 2F - DOS 4.0+ APPEND - SET APPEND FUNCTION STATE
  10008.     AX = B707h
  10009.     BX = APPEND state bits (see #2251)
  10010. SeeAlso: AX=B700h,AX=B706h
  10011. --------f-2FB710-----------------------------
  10012. INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
  10013.     AX = B710h
  10014. Return: AX = current APPEND state (see #2251)
  10015.     BX = ??? (0000h in MS-DOS 3.30 and 5.00)
  10016.     CX = ??? (0000h in MS-DOS 3.30 and 5.00)
  10017.     DL = major version
  10018.     DH = minor version
  10019. SeeAlso: AX=B700h,AX=B702h
  10020. --------f-2FB711-----------------------------
  10021. INT 2F - DOS 4.0+ APPEND - SET RETURN FOUND NAME STATE
  10022.     AX = B711h
  10023. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  10024.       6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename
  10025.       is written over top of the filename passed to the INT 21h call.  The
  10026.       application must provide a sufficiently large buffer.     This state is
  10027.       reset after the next INT 21h call processed by APPEND.
  10028.     APPEND uses the byte at offset 3Dh in the PSP
  10029.       (see #0725 at INT 21/AH=26h) to store the flag telling it to
  10030.       overwrite the filename
  10031. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  10032.       INT 21/AH=6Ch
  10033. SeeAlso: INT 21/AH=26h,INT 21/AH=4Eh
  10034. --------!---Section--------------------------
  10035.