home *** CD-ROM | disk | FTP | other *** search
/ Current Shareware 1994 January / SHAR194.ISO / sys_util / inter37b.zip / INTERRUP.G < prev    next >
Text File  |  1993-10-03  |  249KB  |  6,997 lines

  1. Interrupt List, part 7 of 10
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. --------N-2F8000-----------------------------
  4. INT 2F - EASY-NET - INSTALLATION CHECK
  5.     AX = 8000h
  6. Return: AL = 00h not installed
  7.          FFh installed
  8. Program: EASY-NET is a shareware two-machine serial-port network
  9. --------N-2F8000-----------------------------
  10. INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
  11.     AX = 8000h
  12. Return: AL = FFh if installed
  13.         BX = CS of resident code
  14.         CX = ??? (03FCh)
  15. Program: TurboNET is a NetBIOS-based file redirector and server; a
  16.       demonstration version may be downloaded from Nanosoft's BBS
  17. SeeAlso: AX=8100h
  18. ----------2F8000-----------------------------
  19. INT 2F - ASCII v2.00 - INSTALLATION CHECK
  20.     AX = 8000h
  21.     DS:SI -> 4-byte signature (11h 43h 53h 10h)
  22. Return: AL = status
  23.         01h installed, but signature did not match
  24.         FFh installed, signature matches
  25.         ES:DI -> resident copy of signature (may be followed by data)
  26. Program: ASCII is a popup ASCII table by Nick Zaikin, Jr.
  27. Note:    the interface used by this program appears to be a general-purpose
  28.       interface which may be shared by multiple programs, so other programs
  29.       may also support this call with differing signatures
  30. SeeAlso: AX=8001h"ASCII",AX=8002h"ASCII"
  31. --------F-2F8000DX0000-----------------------
  32. INT 2F - FaxBIOS interface - INSTALLATION CHECK
  33.     AX = 8000h
  34.     DX = 0000h
  35.     DI = 0000h
  36. Return: AL = FFh if installed
  37.     DX:DI -> signature "FaxBiosjpc"
  38. Note:    FaxBIOS may use any multiplex number from 80h through FFh; to determine
  39.       whether it is installed, it is necessary to poll all multiplex
  40.       numbers for one which returns the above signature
  41. SeeAlso: AH=2Ah,AX=80FBh
  42. --------N-2F8001-----------------------------
  43. INT 2F - Nanosoft, Inc. TurboNET server - ???
  44.     AX = 8001h
  45.     DS:SI -> 16-byte buffer for ???
  46. Return: AH = status
  47.         00h successful
  48.         01h error (TurboNET busy)
  49. Note:    makes NetBIOS calls
  50. ----------2F8001-----------------------------
  51. INT 2F - ASCII v2.00 - INSTALLATION VERIFICATION
  52.     AX = 8001h
  53.     DS:SI -> ASCIZ signature string "ASCII 2.00 by Nick Zaikin Jr."
  54. Return: BX = 0000h if signature did not match
  55.        = instance number??? if signature matched
  56.            ES:DI -> ??? (same as returned by AX=8000h)
  57. Note:    the interface used by this program appears to be a general-purpose
  58.       interface which may be shared by multiple programs, so other programs
  59.       may also support this call with differing signatures
  60. SeeAlso: AX=8000h"ASCII",AX=8002h"ASCII"
  61. ----------2F8002-----------------------------
  62. INT 2F - ASCII v2.00 - ???
  63.     AX = 8002h
  64.     BX = instance number??? (value returned by AX=8001h)
  65. Return: ES:DI -> ??? (same as returned by AX=8000h) if instance number matches
  66.     call chained if instance number did not match
  67. SeeAlso: AX=8000h"ASCII",AX=8001h"ASCII"
  68. --------F-2F80FB-----------------------------
  69. INT 2F - FaxBIOS interface - COMMAND SUBMISSION
  70.     AX = 80FBh
  71.     BX = function number (see below)
  72.     DX:DI -> command buffer (see below)
  73. Return: AL = FFh if submitted OK
  74.     CX = result code (see below)
  75. Note:    FaxBIOS may use any multiplex number from 80h through FFh
  76. SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
  77.  
  78. Values for function number:
  79.  0001h    SYS_LOGIN
  80.  0002h    SYS_LOGOUT
  81.  0003h    SYS_GET_FAXAPP_INFO
  82.  0004h    STAT_IO_GET
  83.  0005h    STAT_FAXBIOS_GET
  84.  0006h    PDIR_OPEN
  85.  0007h    PDIR_CLOSE
  86.  0008h    PDIR_READ_PERSON
  87.  0009h    PDIR_PARTIAL_READ
  88.  000Ah    PDIR_READ_GROUP
  89.  000Bh    PDIR_READ_MEMBER_LIST
  90.  000Ch    PDIR_WRITE_PERSON
  91.  000Dh    PDIR_WRITE_GROUP
  92.  000Eh    PDIR_DELETE_PERSON
  93.  000Fh    PDIR_DELETE_GROUP
  94.  0010h    PDIR_READ_GROUP_LIST
  95.  0011h    PDIR_IN_GROUP
  96.  0012h    PDIR_OUT_GROUP
  97.  0013h    SCHED_OPEN
  98.  0014h    SCHED_ADD_DEST
  99.  0015h    SCHED_ADD_FILE
  100.  0016h    SCHED_SET_PARAMS
  101.  0017h    SCHED_CANCEL
  102.  0018h    SCHED_CLOSE
  103.  0019h    SLOG_OPEN
  104.  001Ah    SLOG_CLOSE
  105.  001Bh    SLOG_SHORT_ENV_STAT
  106.  001Ch    SLOG_LONG_ENV_STAT
  107.  001Dh    SLOG_DEST_STAT
  108.  001Eh    SLOG_FILE_STAT
  109.  001Fh    SLOG_CANCEL_ENV
  110.  0020h    RLOG_OPEN
  111.  0021h    RLOG_CLOSE
  112.  0022h    RLOG_READ
  113.  0023h    GRAPH_GET_FILE_TYPE
  114.  0024h    GRAPH_EXPORT_FILE
  115.  0025h    GRAPH_GET_LAYOUT_INFO
  116.  0026h    GRAPH_CREATE_FILE
  117.  0027h    GRAPH_CLOSE_FILE
  118.  0028h    GRAPH_CREATE_PAGE
  119.  0029h    GRAPH_WRITE
  120.  002Ah    GRAPH_END_PAGE
  121.  002Bh    GRAPH_OPEN_FILE
  122.  002Ch    GRAPH_GOTO_PAGE
  123.  002Dh    GRAPH_READ
  124.  002Eh    IOCTL_GET
  125.  002Fh    IOCTL_SET
  126.  0030h    IOCTL_ANSWER_FAX
  127.  0031h    IOCTL_DIAL
  128.  
  129. Values for result code:
  130.  0000h    successful
  131.  0001h    not prepared or servicing another client (busy)
  132.  0002h    call failed due to sharing (LOCKED)
  133.  0003h    logged-in client limit reached (FULL)
  134.  0004h    transport denied (TRANSPORT_DENIED)
  135.  0005h    not implemented (NOT_IMPLEMENTED)
  136.  0006h    aborted while in progress (ABORTED)
  137.  0007h    permissions denied (PERMISSION_DENIED)
  138.  0008h    requested data is no longer valid (NO_LONGER_VALID)
  139.  0080h    unspecified system error occurred
  140.  0081h    an internal file was not found
  141.  0082h    an internal file could not be created
  142.  0083h    an internal file could not be opened
  143.  0084h    an internal file could not be closed
  144.  0085h    error occurred writing to an internal file
  145.  0086h    error occurred reading from an internal file
  146.  0087h    bad or corrupted file encountered
  147.  0088h    an access violation occurred
  148.  0089h    an internal file is empty
  149.  008Ah    insufficient memory to process request
  150.  008Bh    FaxBIOS was unable to issue a handle
  151.  008Ch    an error internal to FaxBIOS occurred
  152.  008Dh    no room on disk
  153.  0100h    unspecified error accessing client file
  154.  0101h    file not found
  155.  0102h    creation fault
  156.  0103h    open fault
  157.  0104h    close fault
  158.  0105h    write fault
  159.  0106h    read fault
  160.  0107h    file corrupted
  161.  0108h    access violation
  162.  0109h    empty file
  163.  0200h    unspecified argument error
  164.  0201h    bad function
  165.  0202h    bad option
  166.  0203h    bad structure size
  167.  0204h    bad buffer size
  168.  0205h    bad client ID
  169.  0300h    unspecified error with token
  170.  0301h    cover sheet token was invalid
  171.  0302h    logo token was invalid
  172.  0303h    signature token was invalid
  173.  0304h    font token was invalid
  174.  0305h    phone directory token was invalid
  175.  0306h    outbound route token was invalid
  176.  0307h    priority token was invalid
  177.  0308h    sort token was invalid
  178.  0309h    billing token was invalid
  179.  0400h    unspecified handle error
  180.  0401h    bad Phone Directory handle
  181.  0402h    bad scheduling handle
  182.  0403h    bad read send log handle
  183.  0404h    bad read receive log handle
  184.  0405h    bad graphics handle
  185.  0500h    data passed in structure was invalid
  186.  0501h    name field given is invalid
  187.  0502h    phone number given is invalid
  188.  0503h    poll code submitted is invalid
  189.  0504h    file type constant was invalid
  190.  0505h    BFT constant not defined or supported
  191.  0506h    resolution not defined or supported
  192.  0507h    page length not defined or supported
  193.  0508h    page width not defined or supported
  194.  0509h    date & time requested are ridiculous
  195.  050Ah    Subject text was not an ASCIZ string
  196.  050Bh    From text was not an ASCIZ string
  197.  050Ch    requested envelope ID was not found
  198.  050Dh    requested envelope ID is not valid
  199.  050Eh    envelope requested was not found
  200.  050Fh    destination index is out of range
  201.  0510h    file index is out of range
  202.  0511h    index into receive log is out of range
  203.  0512h    file name specified was incomplete or invalid
  204.  0513h    page selected was out of range
  205.  0514h    bit width more than byte width
  206.  0515h    mode for open is not defined
  207.  0516h    person index is out of range
  208.  0517h    person ID is out of range
  209.  0518h    group index out of range or invalid
  210.  0519h    group ID out of range or invalid
  211.  051Ah    range of indices to read is invalid
  212.  051Bh    group name given is invalid
  213.  051Ch    field_to_use is badly specified
  214.  051Dh    predicate invalid for field specified
  215.  0600h    unspecified client procedure error
  216.  0601h    device of interest is not present
  217.  0602h    device of interest has been removed
  218.  0603h    device of interest is not responding
  219.  0604h    device of interest is disabled
  220.  0605h    could not dial because device was in use
  221.  0606h    maximum destination limit exceeded
  222.  0607h    maximum file limit exceeded
  223.  0608h    scheduling closed with no destination
  224.  0609h    scheduling closed with no files or poll
  225.  060Ah    scheduling closed with no parameters specified
  226.  060Bh    file type specified does not match file
  227.  060Ch    file type specified is not supported
  228.  060Dh    file submitted is not exportable
  229.  060Eh    file type specified is not imageable
  230.  060Fh    error converting file
  231.  0610h    envelope could not be cancelled
  232.  0611h    Phone Directory is full
  233.  0612h    record is already in the Phone Directory
  234.  0613h    selected group in Phone Directory is full
  235.  0614h    person is already in the group
  236.  0615h    person is not in the group & cannot be removed
  237.  0616h    a graphics file to be created already exists
  238.  0617h    a grphics file to be read is empty
  239.  0618h    GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
  240.  0619h    graph read or write attempted without goto or create
  241.  061Ah    graph page contains no data
  242.  061Bh    Phone Directory is already open for this client
  243.  061Ch    schedule log is already open for this client
  244.  061Dh    receive log is aready open for this client
  245.  061Eh    Phone Directory function requires write mode
  246.  0800h    denied exclusive use of the API
  247.  
  248. Format of SYS_LOGIN command buffer:
  249. Offset    Size    Description
  250.  00h    WORD    structure size
  251.  02h    WORD    function number
  252.  04h    WORD    return code
  253.  06h    WORD    client ID
  254.  08h    WORD    API Major Version
  255.  0Ah    WORD    API Minor Version
  256.  0Ch    DWORD    reserved for manufacturer's use
  257.  10h 22 BYTEs    manufacturer's ID
  258.  26h    WORD    highest possible device number
  259.  28h    WORD    maximum destinations per envelope
  260.  2Ah    WORD    maximum files per envelope
  261.  2Ch    WORD    FaxBIOS capabilities (see below)
  262.  2Eh    DWORD    T.30 capabilities (see below)
  263.  32h    WORD    IPC handle
  264.  34h    DWORD    amount of memory needed to load
  265.  38h    WORD    scope (00h for public, nonzero for private)
  266.  3Ah  6 BYTEs    future expansion
  267.  40h    WORD    structure size
  268.  
  269. Bitfields for FaxBIOS capabilities:
  270.  bit 0    transmit supported
  271.  bit 1    receive supported
  272.  bit 2    IOCTL supported
  273.  bit 3    IOCTL_DIAL supported
  274.  bit 4    IOCTL_ANSWER_FAX supported
  275.  bit 5    manual transmit supported
  276.  bit 6    optional phone services supported
  277.  bit 7    canonical phone objects
  278.  bit 8    seam with next supported
  279.  
  280. Bitfields for T.30 capabilities:
  281.  bit 0    low vertical resolution (minimum)
  282.  bit 1    high vertical resolution
  283.  bit 2    page width 107mm (4.21 in)
  284.  bit 3    page width 151mm (5.91 in)
  285.  bit 4    page width 215mm (8.46 in) (minimum)
  286.  bit 5    page width 255mm (10.04 in)
  287.  bit 6    page width 303mm (11.93 in)
  288.  bit 7    unused
  289.  bit 8    page length 297mm (11.69 in) (minimum)
  290.  bit 9    page length 364mm (14.33 in)
  291.  bit 10 page length 279mm (11 in)
  292.  bit 11 page length unlimited
  293.  bit 12 Group 4 resolution 300x300
  294.  bit 13 Group 4 resolution 400x400
  295.  bit 14 able to respond to poll from remote
  296.  bit 15 able to poll remote
  297.  bit 16 binary file transfer supported
  298.  
  299. Format of SYS_LOGOUT command buffer:
  300. Offset    Size    Description
  301.  00h    WORD    structure size
  302.  02h    WORD    function number
  303.  04h    WORD    return code
  304.  06h    WORD    client ID
  305.  08h    DWORD    client tag (for client's internal use)
  306.  0Ch  6 BYTEs    future expansion
  307.  12h    WORD    structure size
  308.  
  309. Format of SYS_GET_FAXAPP_INFO command buffer:
  310. Offset    Size    Description
  311.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  312.  0Ch 80 BYTEs    FaxBIOS data
  313.  5Ch 80 BYTEs    default cover
  314.  ACh 80 BYTEs    default logo
  315.  FCh 80 BYTEs    default signature
  316. 14Ch 80 BYTEs    default font 10
  317. 19Ch 80 BYTEs    default font 165
  318. 1ECh 80 BYTEs    default user font
  319. 23Ch 80 BYTEs    default Pdir
  320. 28Ch 80 BYTEs    default sort
  321. 2DCh 10 BYTEs    default bill
  322. 2E6h 10 BYTEs    default route
  323. 2F0h 40 BYTEs    default cover sheet form
  324. 318h 34 BYTEs    valid dial characters
  325. 33Ah  6 BYTEs    local country code
  326. 340h  6 BYTEs    local city or area code
  327. 346h  6 BYTEs    future expansion
  328. 34Ch    WORD    structure size
  329.  
  330. Format of STAT_IO_GET command buffer:
  331. Offset    Size    Description
  332.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  333.  0Ch    WORD    device number
  334.  0Eh    WORD    current activity
  335.  10h    WORD    number of rings (if ringing)
  336.  12h    WORD    number of fascimiles transmitted
  337.  14h    WORD    number of fascimiles received
  338.  16h    WORD    status of last transmission
  339.  18h    WORD    envelope number of last transmission
  340.  1Ah    WORD    index of last destination in envelope
  341.  1Ch    WORD    status of last reception
  342.  1Eh    WORD    current page (if session in progress)
  343.  20h 80 BYTEs    current file
  344.  70h104 BYTEs    remote number
  345.  D8h 20 BYTEs    last name
  346.  ECh 20 BYTEs    first name
  347. 100h 32 BYTEs    company name
  348. 120h 32 BYTEs    notes
  349. 140h    WORD    current envelope ID (if sending)
  350. 142h    WORD    total pages in transmission (if sending)
  351. 144h  6 BYTEs    future expansion
  352. 14h    WORD    structure size
  353.  
  354. Format of STAT_FAXBIOS_GET command buffer:
  355. Offset    Size    Description
  356.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  357.  0Ch    WORD    status ID
  358.  0Eh    WORD    currenty FaxBIOS function number
  359.  10h    WORD    current Client ID being serviced
  360.  12h    WORD    number of things to do
  361.  14h    WORD    number of them done
  362.  16h    WORD    number of pages to do (if any)
  363.  18h    WORD    number of them done
  364.  1Ah    WORD    number of files to do
  365.  1Ch    WORD    number of them done
  366.  1Eh 80 BYTEs    current File
  367.  6Eh    WORD    0 if all devices are idle
  368.  70h    WORD    number of fascimiles transmitted
  369.  72h    WORD    number of fascimiles received
  370.  74h    WORD    status of last transmission in system
  371.  76h    WORD    envelope ID of last transmission
  372.  78h    WORD    index of last destination in envelope
  373.  7Ah    WORD    status of last reception in system
  374.  7Ch    DWORD    time of next transmission
  375.  80h  6 BYTEs    future expansion
  376.  86h    WORD    structure size
  377.  
  378. Format of PDIR_OPEN command buffer:
  379. Offset    Size    Description
  380.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  381.  0Ch 80 BYTEs    Phone Directory token
  382.  5Ch 80 BYTEs    sort order token
  383.  ACh    WORD    open Mode (0 = read, 1 = write)
  384.  AEh    WORD    Phone Directory handle
  385.  B0h    WORD    number of people
  386.  B2h    WORD    number of groups
  387.  B4h    WORD    bitmap of fields supported by partial read
  388.  B6h  6 BYTEs    future expansion
  389.  BCh    WORD    structure size
  390.  
  391. Format of PDIR_CLOSE command buffer:
  392. Offset    Size    Description
  393.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  394.  0Ch    WORD    Phone Directory handle
  395.  0Eh  6 BYTEs    future expansion
  396.  14h    WORD    structure size
  397.  
  398. Format of PDIR_READ_PERSON command buffer:
  399. Offset    Size    Description
  400.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  401.  0Ch    WORD    Phone Directory handle
  402.  0Eh    WORD    retrieve by index
  403.  10h    WORD    person ID or index
  404.  12h    WORD    how many groups person is in
  405.  14h    WORD    person ID
  406.  16h 20 BYTEs    last name
  407.  2Ah 20 BYTEs    first name
  408.  3Eh 32 BYTEs    company
  409.  5Eh 32 BYTEs    notes
  410.  7Eh  6 BYTEs    FAX country code
  411.  84h  6 BYTEs    FAX city/area code
  412.  8Ah 14 BYTEs    FAX local number
  413.  98h 14 BYTEs    FAX extension
  414.  A6h 24 BYTEs    reserved
  415.  BEh  6 BYTEs    voice country code
  416.  C4h  6 BYTEs    voice city/area code
  417.  CAh 14 BYTEs    voice local number
  418.  D8h 14 BYTEs    voice extension
  419.  E6h 24 BYTEs    reserved
  420.  FEh 10 BYTEs    outbound routing information
  421. 108h 10 BYTEs    billing information, credit card etc
  422. 112h    DWORD    remote FAX capabilities
  423. 116h 21 BYTEs    T.30 poll code of FAX number
  424. 12Bh 15 BYTEs    reserved
  425. 13Ah  6 BYTEs    future expansion
  426. 140h    WORD    structure size
  427.  
  428. Format of SCHED_OPEN, SCHED_CANCEL command buffer:
  429. Offset    Size    Description
  430.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  431.  0Ch    WORD    scheduler handle
  432.  0Eh  6 BYTEs    future expansion
  433.  14h    WORD    structure size
  434.  
  435. Format of SCHED_ADD_DEST command buffer:
  436. Offset    Size    Description
  437.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  438.  0Ch    WORD    schedule handle
  439.  0Eh    WORD    device number if manual send wanted
  440.  10h    WORD    non-zero if poll desired
  441.  12h    WORD    person ID
  442.  14h 20 BYTEs    last name
  443.  28h 20 BYTEs    first name
  444.  3Ch 32 BYTEs    company
  445.  5Ch 32 BYTEs    notes
  446.  7Ch  6 BYTEs    FAX country code
  447.  82h  6 BYTEs    FAX city/area code
  448.  88h 14 BYTEs    FAX local number
  449.  96h 14 BYTEs    FAX extension
  450.  A4h 24 BYTEs    reserved
  451.  BCh  6 BYTEs    voice country code
  452.  C2h  6 BYTEs    voice city/area code
  453.  C8h 14 BYTEs    voice local number
  454.  D6h 14 BYTEs    voice extension
  455.  E4h 24 BYTEs    reserved
  456.  FCh 10 BYTEs    outbound routing information
  457. 106h 10 BYTEs    billing information, credit card etc
  458. 110h    DWORD    remote FAX capabilities
  459. 114h 21 BYTEs    T.30 poll code of FAX number
  460. 129h 15 BYTEs    reserved
  461. 138h  6 BYTEs    future expansion
  462. 13Eh    WORD    structure size
  463.  
  464. Format of SCHED_ADD_FILE command buffer:
  465. Offset    Size    Description
  466.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  467.  0Ch    WORD    schedule handle
  468.  0Eh    WORD    file type
  469.         0000h unidentified
  470.         0001h native file format
  471.         0002h ASCII
  472.         0003h FaxBIOS Tiff Class F
  473.  10h 80 BYTEs    file name
  474.  60h 80 BYTEs    font token
  475.  B0h    WORD    conversion options bitmap
  476.  B2h    WORD    resolution
  477.         0000h standard 98 lines per inch, 204 dpi
  478.         0001h fine 196 lines per inch, 204 dpi
  479.         0002h Group4 300 dpi
  480.         0003h Group4 400 dpi
  481.  B4h    WORD    page length
  482.         0000h 279 mm (11 in)
  483.         0001h 297 mm (11.69 in)
  484.         0002h 364 mm (14.33 in)
  485.         0003h unlimited
  486.  B6h    WORD    page width
  487.         0000h 215 mm (8.46 in)
  488.         0001h 255 mm (10.04 in)
  489.         0002h 303 mm (11.93 in)
  490.         0003h 151 mm (5.91 in)
  491.         0004h 107 mm (4.21 in)
  492.  B8h    WORD    binary file transfer specification
  493.         0000h only as FAX
  494.         0001h only as file (for non-faxable files)
  495.         0002h as file when possible else FAX
  496.  BAh    WORD    seam flag (nonzero for seam with next)
  497.  BCh    WORD    delete flag (nonzero to delete when done)
  498.  BEh  6 BYTEs    future expansion
  499.  C4h    WORD    structure size
  500.  
  501. Format of SCHED_SET_PARAMS command buffer:
  502. Offset    Size    Description
  503.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  504.  0Ch    WORD    scheduler handle
  505.  0Eh    DWORD    time to send
  506.  10h 10 BYTEs    priority token
  507.  1Ch 80 BYTEs    logo file token
  508.  6Ch 80 BYTEs    signature file token
  509.  BCh 80 BYTEs    cover page token
  510. 10Ch 40 BYTEs    Subject text
  511. 134h 40 BYTEs    From text
  512. 15Ch    WORD    user ID
  513. 15Eh  6 BYTEs    future expansion
  514. 164h    WORD    structure size
  515.  
  516. Format of SCHED_CLOSE command buffer:
  517. Offset    Size    Description
  518.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  519.  0Ch    WORD    scheduler handle
  520.  0Eh    WORD    envelope ID generated
  521.  10h  6 BYTEs    future expansion
  522.  16h    WORD    structure size
  523.  
  524. Format of SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
  525. Offset    Size    Description
  526.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  527.  0Ch    WORD    log handle
  528.  0Eh    WORD    number of entries
  529.  10h  6 BYTEs    future expansion
  530.  16h    WORD    structure size
  531.  
  532. Format of GRAPH_GET_FILE_TYPE command buffer:
  533. Offset    Size    Description
  534.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  535.  0Ch 80 BYTEs    filename
  536.  5Ch    WORD    file type
  537.         0000h unidentified
  538.         0001h native file format
  539.         0002h ASCII
  540.         0003h FaxBIOS Tiff Class F
  541.  5Eh    WORD    bitmap of supported capabilities
  542.  60h  6 BYTEs    future expansion
  543.  66h    WORD    structure size
  544.  
  545. Format of GRAPH_CREATE_FILE command buffer:
  546. Offset    Size    Description
  547.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  548.  0Ch 80 BYTEs    filename
  549.  5Ch    WORD    graph handle
  550.  5Eh  6 BYTEs    future expansion
  551.  64h    WORD    structure size
  552.  
  553. Format of GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
  554. Offset    Size    Description
  555.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  556.  0Ch    WORD    graph handle
  557.  0Eh  6 BYTEs    future expansion
  558.  14h    WORD    structure size
  559.  
  560. Format of GRAPH_CREATE_PAGE command buffer:
  561. Offset    Size    Description
  562.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  563.  0Ch    WORD    graph handle
  564.  0Eh    WORD    resolution
  565.  10h    WORD    page width
  566.  12h  6 BYTEs    future expansion
  567.  18h    WORD    structure size
  568.  
  569. Format of GRAPH_WRITE_PAGE command buffer:
  570. Offset    Size    Description
  571.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  572.  0Ch    WORD    graph handle
  573.  0Eh    DWORD    pointer to storage for image
  574.  12h    WORD    band height in lines
  575.  14h    WORD    width of page image in bytes
  576.  16h    WORD    facsimile page width constant
  577.  18h    WORD    width of page image in bits
  578.  1Ah    WORD    number of bytes actually processed
  579.  1Ch  6 BYTEs    future expansion
  580.  22h    WORD    structure size
  581.  
  582. Format of GRAPH_OPEN_FILE command buffer:
  583. Offset    Size    Description
  584.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  585.  0Ch 80 BYTEs    filename
  586.  5Ch    WORD    file type
  587.  5Eh    WORD    graph handle
  588.  60h    WORD    number of pages
  589.  62h  6 BYTEs    future expansion
  590.  68h    WORD    structure size
  591.  
  592. Format of GRAPH_GOTO_PAGE command buffer:
  593. Offset    Size    Description
  594.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  595.  0Ch    WORD    graph handle
  596.  0Eh    WORD    page number
  597.  10h    WORD    vertical resolution
  598.  12h    WORD    page width
  599.  14h    DWORD    page length
  600.  18h  6 BYTEs    future expansion
  601.  1Eh    WORD    structure size
  602.  
  603. Format of GRAPH_READ_PAGE command buffer:
  604. Offset    Size    Description
  605.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  606.  0Ch    WORD    graph handle
  607.  0Eh    DWORD    pointer to storage for image
  608.  12h    WORD    band height in lines
  609.  14h    WORD    width of page image in bytes
  610.  16h    WORD    facsimile page width constant
  611.  18h    WORD    width of page image in bits
  612.  1Ah    WORD    number of bytes actually processed
  613.  1Ch  6 BYTEs    future expansion
  614.  22h    WORD    structure size
  615.  
  616. Format of IOCTL_ANSWER_FAX command buffer:
  617. Offset    Size    Description
  618.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  619.  0Ch    WORD    device number
  620.  0Eh  6 BYTEs    future expansion
  621.  14h    WORD    structure size
  622.  
  623. Format of IOCTL_DIAL command buffer:
  624. Offset    Size    Description
  625.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  626.  0Ch    WORD    device number
  627.  0Eh  6 BYTEs    country code
  628.  14h  6 BYTEs    city or area code
  629.  1Ah 14 BYTEs    local number
  630.  28h 14 BYTEs    extension
  631.  36h 14 BYTEs    reserved
  632.  4Eh  6 BYTEs    future expansion
  633.  54h    WORD    structure size
  634. --------N-2F8100-----------------------------
  635. INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
  636.     AX = 8100h
  637. Return: AL = FFh if installed
  638. Program: TurboNET is a NetBIOS-based file redirector and server; a
  639.       demonstration version may be downloaded from Nanosoft's BBS
  640. SeeAlso: AX=8000h"TurboNET"
  641. --------N-2F8101-----------------------------
  642. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  643.     AX = 8101h
  644. Return: AL = ???
  645.     DL = ???
  646. --------N-2F8102-----------------------------
  647. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  648.     AX = 8102h
  649. Return: AL = ???
  650.     DL = ???
  651. --------N-2F8103-----------------------------
  652. INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
  653.     AX = 8103h
  654.     ES:DI -> 17-byte buffer
  655. Return: buffer filled
  656. --------N-2F8104-----------------------------
  657. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  658.     AX = 8104h
  659.     BL = ???
  660.     BH = ???
  661.     CX = ???
  662.     DX = ???
  663.     DS:SI -> 16-byte buffer containing ???
  664. Return: AL = 00h ???
  665. --------N-2F8105-----------------------------
  666. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  667.     AX = 8105h
  668.     CX = ??? (don't change current value if 0000h)
  669.     DX = ??? (don't change current value if 0000h)
  670. Return: AL = 00h successful
  671. --------s-2F8200-----------------------------
  672. INT 2F - RESPLAY - SAMPLE/PLAYBACK
  673.     AX = 8200h
  674.     DX:DI -> start of sample space
  675.     CX:BX = length in bytes
  676. Return: AX = status
  677.         1000h successful
  678.         2000h not initialized (see AX=8210h)
  679.         other RESPLAY not installed
  680. Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  681. SeeAlso: AX=8201h,AX=8210h
  682. --------G-2F8200-----------------------------
  683. INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
  684.     AX = 8200h
  685. Return: AL = FFh if installed
  686. Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
  687.       captured and recorded for later analysis
  688. SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
  689. SeeAlso: AX=8204h"CAPDOS"
  690. --------s-2F8201-----------------------------
  691. INT 2F - RESPLAY - INSTALLATION CHECK
  692.     AX = 8201h
  693. Return: AX = 7746h if installed
  694. SeeAlso: AX=8202h
  695. --------G-2F8201-----------------------------
  696. INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
  697.     AX = 8201h
  698. Note:    resets queue of captured INT 21 calls
  699. SeeAlso: AX=8200h"CAPDOS"
  700. --------s-2F8202-----------------------------
  701. INT 2F - RESPLAY - UNINSTALL
  702.     AX = 8202h
  703. Return: AX = status
  704.         1000h successful
  705. SeeAlso: AX=8201h
  706. --------G-2F8202-----------------------------
  707. INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
  708.     AX = 8202h
  709. SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
  710. --------G-2F8203-----------------------------
  711. INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
  712.     AX = 8203h
  713. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
  714. --------G-2F8204-----------------------------
  715. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
  716.     AX = 8204h
  717. Return: AH = flag: queue wrapped if nonzero
  718.     BX = index of current start of queue
  719.     CX = size of queue in entries
  720. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
  721. --------G-2F8205-----------------------------
  722. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
  723.     AX = 8205h
  724.     BX = queue item number
  725. Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
  726. SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
  727. --------s-2F8210-----------------------------
  728. INT 2F - RESPLAY - INITIALIZE
  729.     AX = 8210h
  730.     BL = sound device
  731.         00h printer port LPT1
  732.         01h printer port LPT2
  733.         02h prototype board at I/O address 0300h
  734.         03h printer port (alternative LPT1)
  735.         04h internal speaker
  736.     BH = sample rate in multiples of 250 Hz (14h to A0h)
  737.     CL = direction
  738.         00h playback
  739.         01h sample
  740. Return: AX = status
  741.         1000h successful
  742.         2000h parameter out of range
  743.         other RESPLAY not installed
  744. SeeAlso: AX=8200h
  745. ----------2F86-------------------------------
  746. INT 2F U - ???
  747.     AH = 86h
  748.     AL = function (at least 06h and 07h)
  749.     ???
  750. Return: ???
  751. Note:    called by Codeview for Windows
  752. SeeAlso: AH=44h
  753. --------U-2F8900-----------------------------
  754. INT 2F - WHOA!.COM - INSTALLATION CHECK
  755.     AX = 8900h
  756. Return: AL = 00h not installed
  757.        = FFh installed
  758. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  759. SeeAlso: AX=8901h,AX=8902h
  760. --------U-2F8901-----------------------------
  761. INT 2F - WHOA!.COM - UNINSTALL
  762.     AX = 8901h
  763. Return: AL = FDh successful
  764.        = FEh error
  765. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  766. SeeAlso: AX=8900h
  767. --------U-2F8902-----------------------------
  768. INT 2F - WHOA!.COM - SET DELAY COUNT
  769.     AX = 8902h
  770.     BX = delay count (larger values slow system down more)
  771. Return: AL = FDh successful
  772.        = FEh error
  773. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  774. SeeAlso: AX=8900h
  775. --------U-2F9000-----------------------------
  776. INT 2F U - RAID - INSTALLATION CHECK
  777.     AX = 9000h
  778. Return: AL = FFh if installed
  779. Program: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
  780.       that resides mostly in EMS
  781. --------U-2F9001-----------------------------
  782. INT 2F U - RAID - GET ???
  783.     AX = 9001h
  784. Return: DX:AX -> ???
  785. SeeAlso: AX=9000h
  786. --------U-2F9002-----------------------------
  787. INT 2F U - RAID - GET RESIDENT SEGMENT
  788.     AX = 9002h
  789. Return: AX = segment of resident (conventional memory) portion
  790. SeeAlso: AX=9000h
  791. --------U-2F9003-----------------------------
  792. INT 2F U - RAID - UNINSTALL
  793.     AX = 9003h
  794. Return: ???
  795. SeeAlso: AX=9000h
  796. --------U-2F9004-----------------------------
  797. INT 2F U - RAID - GET ???
  798.     AX = 9004h
  799. Return: AX = first available paragraph past end of resident portion???
  800.     CX destroyed
  801. SeeAlso: AX=9000h
  802. --------e-2F92-------------------------------
  803. INT 2F - Couriers LAN E-Mail - API
  804.     AH = 92h
  805.     AL = function
  806.         00h installation check
  807.         01h uninstall
  808.         02h pop down MICRO.EXE notification window
  809.         03h ???
  810.         04h ???
  811.         05h ???
  812. Return: ???
  813. SeeAlso: AH=9Ch
  814. Index:    installation check;Couriers LAN E-Mail|uninstall;Couriers LAN E-Mail
  815. --------R-2F9200-----------------------------
  816. INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
  817.     AX = 9200h
  818. Program: DRIVEMAP is a redirector which allows drives on computers connected
  819.       over the parallel or serial ports to appear as local drives
  820. BUG:    jumps to data because jump table entry is 0000h
  821. Note:    DRIVEMAP returns AX=FFFFh if not a valid function number in AL
  822. --------R-2F9201-----------------------------
  823. INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
  824.     AX = 9201h
  825.     DL = drive number (01h = A:, etc.)
  826. Return: AL = 92h if mapped drive
  827.     AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
  828. SeeAlso: AX=9204h,AX=920Bh
  829. --------R-2F9202-----------------------------
  830. INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
  831.     AX = 9202h
  832.     BX = caller's CS
  833. Return: AX = status
  834.         0000h failed
  835.         nonzero successful
  836. SeeAlso: AX=9204h
  837. --------R-2F9203-----------------------------
  838. INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
  839.     AX = 9203h
  840. Return: AH = major version
  841.     AL = minor version
  842.     CX = segment of resident code
  843. Note:    the DRIVEMAP included with PC Tools v8.0 is version 1.00
  844. SeeAlso: AX=9204h,INT 16/AX=FF70h
  845. --------R-2F9204-----------------------------
  846. INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
  847.     AX = 9204h
  848. Return: AX = 9200h if installed
  849.        BL = ???
  850.        CX = segment of resident code
  851. Program: DRIVEMAP is a redirector which allows drives on computers connected
  852.       over the parallel or serial ports to appear as local drives
  853. SeeAlso: AX=9201h,AX=9202h,AX=9203h
  854. --------R-2F9205-----------------------------
  855. INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
  856.     AX = 9205h
  857.     BX = ??? to set
  858. Return: CX = new value of ???
  859. --------R-2F9206-----------------------------
  860. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  861.     AX = 9206h
  862.     ???
  863. Return: ???
  864. --------R-2F9207-----------------------------
  865. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  866.     AX = 9207h
  867.     ???
  868. Return: AX = ???
  869. --------R-2F9208-----------------------------
  870. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  871.     AX = 9208h
  872.     ???
  873. Return: ???
  874. --------R-2F9209-----------------------------
  875. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  876.     AX = 9209h
  877.     ???
  878. Return: AX = ???
  879.     BX = ???
  880.     CX = ???
  881.     DX = ???
  882. --------R-2F920A-----------------------------
  883. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  884.     AX = 920Ah
  885.     BX = ???
  886. Return: AX = ??? or FFFBh on error
  887. --------R-2F920B-----------------------------
  888. INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
  889.     AX = 920Bh
  890.     BL = drive letter (41h ['A'] = A:, etc)
  891.     CX = ??? (0000h removes mapping)
  892. Return: AX = ??? or FFF8h on error
  893. SeeAlso: AX=9201h,AX=920Dh
  894. --------R-2F920C-----------------------------
  895. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  896.     AX = 920Ch
  897.     ???
  898. Return: AX = ??? (0002h)
  899.     CX = ??? (0000h)
  900. --------R-2F920D-----------------------------
  901. INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
  902.     AX = 920Dh
  903.     BL = drive letter (41h ['A'] = A:, etc)
  904. Return: AX = type flags
  905.         bit 0: ???
  906.         bit 1: available
  907.         bit 5: local
  908.     BX = ???
  909.     CX = segment of resident code (apparently an unintended side effect)
  910. Program: DRIVEMAP is a redirector which allows drives on computers connected
  911.       over the parallel or serial ports to appear as local drives
  912. SeeAlso: AX=9218h,INT 16/AX=FF70h
  913. --------R-2F920E-----------------------------
  914. INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
  915.     AX = 920Eh
  916.     BX = port number (0-2)
  917.     CX = ??? (0000h to unmap)
  918. Return: ???
  919. --------R-2F920F-----------------------------
  920. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  921.     AX = 920Fh
  922.     ES:DI -> 3-byte buffer for ???
  923. Return: CX = 0000h
  924.     ES:DI buffer filled
  925. --------R-2F9210-----------------------------
  926. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  927.     AX = 9210h
  928.     ???
  929. Return: ???
  930. --------R-2F9211-----------------------------
  931. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  932.     AX = 9211h
  933.     ES:DI -> 8-word buffer for ???
  934. Return: CX = 0000h
  935.     ES:DI buffer filled
  936. --------R-2F9212-----------------------------
  937. INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
  938.     AX = 9212h
  939.     BX = phase
  940.         0000h leave critical section???
  941.         nonzero enter critical section???
  942. --------R-2F9213-----------------------------
  943. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  944.     AX = 9213h
  945.     BX = function number (0000h-000Bh)
  946.     ???
  947. Return: ???
  948. --------R-2F9214-----------------------------
  949. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  950.     AX = 9214h
  951.     ES:DI -> 6-word buffer for ???
  952. Return: CX = 0000h
  953.     AX = ???
  954.     ES:DI buffer filled
  955. --------R-2F9215-----------------------------
  956. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  957.     AX = 9215h
  958.     ES:DI -> 100-word buffer for ???
  959. Return: CX = 0000h
  960.     ES:DI buffer filled
  961. --------R-2F9216-----------------------------
  962. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  963.     AX = 9216h
  964.     ES:DI -> ???
  965. Return: ???
  966. --------R-2F9217-----------------------------
  967. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  968.     AX = 9217h
  969.     DS:SI -> 25-word buffer containing ???
  970. Return: ???
  971. --------R-2F9218-----------------------------
  972. INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
  973.     AX = 9218h
  974.     BX = port number???
  975. Return: AX = ???
  976.     BX = ??? (0000h)
  977.     CX = ??? (0000h)
  978. Program: DRIVEMAP is a redirector which allows drives on computers connected
  979.       over the parallel or serial ports to appear as local drives
  980. --------R-2F9219-----------------------------
  981. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  982.     AX = 9219h
  983.     ???
  984. Return: ???
  985. --------R-2F921A-----------------------------
  986. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  987.     AX = 921Ah
  988.     ???
  989. Return: AH = ???
  990.     AL = ???
  991.     BX = ???
  992. --------R-2F921B-----------------------------
  993. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  994.     AX = 921Bh
  995.     ???
  996. Return: AX = ???
  997.     CX = segment of resident code (apparently an unintended side effect)
  998. --------R-2F921C-----------------------------
  999. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1000.     AX = 921Ch
  1001.     ???
  1002. Return: ???
  1003. --------R-2F921D-----------------------------
  1004. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  1005.     AX = 921Dh
  1006. Return: AX = ???
  1007. --------R-2F921E-----------------------------
  1008. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1009.     AX = 921Eh
  1010.     ???
  1011. Return: ???
  1012. Program: DRIVEMAP is a redirector which allows drives on computers connected
  1013.       over the parallel or serial ports to appear as local drives
  1014. Note:    this function sets two variables to 24h each
  1015. SeeAlso: INT 16/AX=FF70h
  1016. --------V-2F93-------------------------------
  1017. INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
  1018.     AH = 93h
  1019.     BX = CX = AX
  1020. Return: AL = FFh if installed and BX=CX=AX on entry
  1021.         BX = segment of resident code
  1022.        = 01h if installed but BX or CX differ from AX
  1023. Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
  1024. Index:    screen saver;InnerMission
  1025. --------e-2F9400-----------------------------
  1026. INT 2F - MICRO.EXE - INSTALLATION CHECK
  1027.     AX = 9400h
  1028. Return: AL = 07h or 08h if installed
  1029. Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection,
  1030.       bundled with MS-DOS 6.0
  1031. SeeAlso: AX=9401h,AX=9402h,AX=9403h,AX=9404h,INT 21/AH=3Fh"WORKGRP.SYS"
  1032. --------e-2F9401-----------------------------
  1033. INT 2F - MICRO.EXE - SET ??? FLAG
  1034.     AX = 9401h
  1035. SeeAlso: AX=9400h,AX=9403h
  1036. --------e-2F9402-----------------------------
  1037. INT 2F - MICRO.EXE - ???
  1038.     AX = 9402h
  1039.     ???
  1040. Return: ???
  1041. SeeAlso: AX=9400h
  1042. --------e-2F9403-----------------------------
  1043. INT 2F - MICRO.EXE - SET ??? FLAG
  1044.     AX = 9403h
  1045. SeeAlso: AX=9400h,AX=9404h
  1046. --------e-2F9404-----------------------------
  1047. INT 2F - MICRO.EXE - CLEAR ??? FLAG
  1048.     AX = 9404h
  1049.     ES:DI -> name of executable from which MICRO.EXE was started
  1050. Note:    if the specified name is identical to the name of the program file
  1051.       from which MICRO was started, the ??? flag is cleared; otherwise,
  1052.       it is left unchanged
  1053. SeeAlso: AX=9400h,AX=9403h
  1054. --------e-2F9C-------------------------------
  1055. INT 2F - Couriers LAN E-Mail OPERATOR.EXE - API
  1056.     AH = 9Ch
  1057.     AL = subfunction
  1058.         01h uninstall
  1059. Return: ???
  1060. SeeAlso: AH=92h
  1061. Index:    uninstall;Couriers LAN E-Mail OPERATOR.EXE
  1062. --------G-2F9E00-----------------------------
  1063. INT 2F U - INTMON v2.1 - INSTALLATION CHECK
  1064.     AX = 9E00h
  1065. Return: AX = FFFFh if installed
  1066.         BX = segment of resident code
  1067. Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
  1068.       and higher machines by Celso Minnitti, Jr.
  1069. SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
  1070. --------G-2F9E01-----------------------------
  1071. INT 2F U - INTMON v2.1 - RESET
  1072.     AX = 9E01h
  1073. Return: ???
  1074. Desc:    this function specifies that INTMON should assume that any interrupts
  1075.       on which it is currently awaiting a return have completed (i.e.
  1076.       interrupts which never return such as INT 20 and INT 27)
  1077. SeeAlso: AX=9E00h,AX=9E03h
  1078. --------G-2F9E02-----------------------------
  1079. INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
  1080.     AX = 9E02h
  1081. Return: ???
  1082. SeeAlso: AX=9E00h
  1083. --------G-2F9E03-----------------------------
  1084. INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
  1085.     AX = 9E03h
  1086.     BH = interrupt number???
  1087. Return: ???
  1088. Note:    if AH > 03h on entry, INTMON 2.1 returns immediately
  1089. SeeAlso: AX=9E00h,AX=9E01h
  1090. --------G-2F9F00-----------------------------
  1091. INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
  1092.     AX = 9F00h
  1093. Return: AX = FFFFh if installed
  1094. Program: INTCFG is an optionally-resident control program for INTMON by Celso
  1095.       Minnitti, Jr.
  1096. SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
  1097. --------G-2F9F01-----------------------------
  1098. INT 2F U - INTCFG v2.1 - ???
  1099.     AX = 9F01h
  1100.     ???
  1101. Return: ???
  1102. SeeAlso: AX=9F00h
  1103. --------G-2F9F30-----------------------------
  1104. INT 2F U - INTCFG v2.1 - GET ???
  1105.     AX = 9F30h
  1106. Return: AX = ??? (0002h)
  1107. SeeAlso: AX=9F00h
  1108. --------G-2F9F49-----------------------------
  1109. INT 2F U - INTCFG v2.1 - UNINSTALL
  1110.     AX = 9F49h
  1111. Return: AX,DX,DS,ES destroyed
  1112. SeeAlso: AX=9F00h
  1113. --------E-2FA1--BX0081-----------------------
  1114. INT 2F - Ergo DOS extenders - INSTALLATION CHECK
  1115.     AH = A1h
  1116.     BX = 0081h
  1117.     AL = which
  1118.         FEh OS/286,OS/386
  1119.         FFh HummingBoard DOS extender
  1120.     ES:DI -> 16-byte buffer
  1121. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  1122. Note:    since TKERNEL is a licensed version, it is likely that subfunctions
  1123.       BX=0082h and BX=0084h are present and function identically to the
  1124.       AX=FBA1h/BX=008xh calls
  1125. SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  1126. --------m-2FA189-----------------------------
  1127. INT 2F U - Biologic HRAMDEV.SYS - API
  1128.     AX = A189h
  1129.     BX = subfunction
  1130.         0000h set ???
  1131.         0001h remove ???
  1132.         0002h get status ???
  1133.         0003h enable ???
  1134.         0004h disable ???
  1135.         0005h set ??? flag
  1136.         0006h clear ??? flag
  1137.         0007h set ??? flag
  1138.         0008h clear ??? flag
  1139.         0009h set ???
  1140.     ES:DI -> function-specific arguments
  1141.         if func 0000h: 20-byte buffer containing ???
  1142.         if func 0001h: 20-byte buffer for returned ???
  1143.         if func 0002h: 16-byte buffer for returned ???
  1144.         if func 0009h: WORD containing ???
  1145. Return: BX = A189h if installed
  1146.     AH = status
  1147.         00h successful
  1148.         FFh failed or invalid function number
  1149. Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
  1150.       provides improved high memory access under MS-DOS 5.0
  1151. Note:    functions 00h and 01h use a stack of four entries; function 01h always
  1152.       removes the values stored with the most recent function 00h call
  1153.       which has not yet been matched with a function 01h call.
  1154. --------U-2FA4E0-----------------------------
  1155. INT 2F - Futurus Team - INSTALLATION CHECK
  1156.     AX = A4E0h
  1157. Return: AL = 52h ("R") if installed
  1158.         AH = major version plus 30h ("0")
  1159.         ES:BX -> ??? (INT A4 handler???)
  1160. Note:    older versions of Right Hand Man (from which Team evolved) store the
  1161.       signature "RH" at offset 103h in the INT 2F handler's segment
  1162. SeeAlso: INT A4"Right Hand Man"
  1163. ----------2FA900-----------------------------
  1164. INT 2F - METZTSR.COM - INSTALLATION CHECK
  1165.     AX = A900h
  1166.     CF set
  1167. Return: CF clear if resident
  1168.         AX = 97FFh
  1169.     CF set if not present
  1170. Notes:    METZTSR.COM prevents METZ applications (such as the MAGIC screen
  1171.       saver) inactivity timeout while running a DOSapp under MS Windows.
  1172.     the default multiplex number is A9h, but may be set to any value from
  1173.       80h to FFh with a commandline switch
  1174. SeeAlso: AX=A901h,AX=A902h
  1175. ----------2FA901-----------------------------
  1176. INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
  1177.     AX = A901h
  1178.     CF set
  1179. Return: CF clear if successful
  1180.         AX:DX = BIOS time at which INT 09 was last invoked
  1181.     CF set if not present
  1182. SeeAlso: INT 09,INT 1A/AH=00h
  1183. ----------2FA902-----------------------------
  1184. INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
  1185.     AX = A902h
  1186.     BL = new value
  1187.         00h Ctrl-Alt-Del not allowed
  1188.         else Ctrl-Alt-Del allowed (startup default is 01h)
  1189.     CF set
  1190. Return: CF clear if successful
  1191.         AX = 97FFh
  1192.     CF set if not resident
  1193. SeeAlso: AX=A903h
  1194. ----------2FA903-----------------------------
  1195. INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
  1196.     AX = A903h
  1197.     CF set
  1198. Return: CF clear if successful
  1199.         AX = 97FFh if Ctrl-Alt-Del allowed
  1200.         AX = 0000h if Ctrl-Alt-Del not allowed
  1201.     CF set if not resident
  1202. SeeAlso: AX=A902h
  1203. --------U-2FAA00-----------------------------
  1204. INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
  1205.     AX = AA00h
  1206. Return: AL = 00h not installed
  1207.          FFh installed
  1208. Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
  1209. --------f-2FAB00-----------------------------
  1210. INT 2F - Btrieve Multi-User - INSTALLATION CHECK
  1211.     AX = AB00h
  1212. Return: AL = 4Dh if installed
  1213. SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
  1214. --------f-2FAB01-----------------------------
  1215. INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
  1216.     AX = AB01h
  1217.     BX = process ID
  1218.     DS:DX -> 38-byte parameter record (see INT 7B"Btrieve")
  1219. Return: AL = 00h OK
  1220.        = other retry after calling INT 7F/AX=0200h
  1221. SeeAlso: AX=AB00h,AX=AB02h,INT 7B"Btrieve",INT 7F/AX=0200h
  1222. --------f-2FAB02-----------------------------
  1223. INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
  1224.     AX = AB02h
  1225. Return: AL = 00h successful
  1226.         BX = process ID
  1227.     AL > 00h failed, retry after calling INT 7F/AX=0200h
  1228. SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
  1229. --------V-2FAC00-----------------------------
  1230. INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
  1231.     AX = AC00h
  1232. Return: AX = FFFFh
  1233.     ES:DI -> ??? (graphics data?) (not documented)
  1234. Note:    this installation check was moved here to avoid the conflict with the
  1235.       CD-ROM extensions that occurred in DOS 4.00
  1236. SeeAlso: AX=1500h"GRAPHICS"
  1237. --------V-2FAD00-----------------------------
  1238. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  1239.     AX = AD00h
  1240. Return: AL = FFh if installed
  1241.         BX = ??? (0100h for MS-DOS 3.3+)
  1242. Note:    DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
  1243.       subfunctions listed here
  1244. --------O-2FAD00-----------------------------
  1245. INT 2F U - DR-DOS 3.41,5.0 KEYB - INSTALLATION CHECK
  1246.     AX = AD00h
  1247. Return: AX = FFFFh if installed
  1248. SeeAlso: AX=AD80h
  1249. --------V-2FAD01-----------------------------
  1250. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
  1251.     AX = AD01h
  1252.     BX = new code page
  1253. Return: CF clear if successful
  1254.         AX = 0001h
  1255.     CF set on error (unsupported code page)
  1256.         AX = 0000h
  1257. SeeAlso: AX=AD02h
  1258. ----------2FAD01-----------------------------
  1259. INT 2F U - DR-DOS 3.41,5.0 KEYB - GET CONFIGURATION
  1260.     AX = AD01h
  1261. Return: BX = current code page
  1262.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  1263.     ES = resident code segment
  1264. SeeAlso: AX=AD83h
  1265. --------V-2FAD02-----------------------------
  1266. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
  1267.     AX = AD02h
  1268. Return: CF set if code page never set
  1269.         AX = 0001h
  1270.         BX = FFFFh (assume first hardware code page)
  1271.     CF clear if successful
  1272.         BX = current code page
  1273. SeeAlso: AX=AD01h,AX=AD03h
  1274. --------V-2FAD03-----------------------------
  1275. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
  1276.     AX = AD03h
  1277.     ES:DI -> buffer for code page information (see below)
  1278.     CX = size of buffer in bytes
  1279. Return: CF set if buffer too small
  1280.     CF clear if successful
  1281.         ES:DI buffer filled
  1282. SeeAlso: AX=AD01h,AX=AD02h
  1283.  
  1284. Format of DOS 5.0-6.0 code page information:
  1285. Offset    Size    Description
  1286.  00h    WORD    number of software code pages
  1287.  02h    WORD    ??? (0003h)
  1288.  04h    WORD    number of hardware code pages
  1289.  06h  N WORDs    hardware code page numbers
  1290.       N WORDs    software (prepared) code pages (FFFFh if not yet prepared)
  1291. --------V-2FAD04-----------------------------
  1292. INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
  1293.     AX = AD04h
  1294.     ???
  1295. Return: ???
  1296. --------V-2FAD10-----------------------------
  1297. INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
  1298.     AX = AD10h
  1299.     ???
  1300. Return: AX = FFFFh
  1301.     BX = ??? (0100h in PC-DOS 4.01)
  1302. --------V-2FAD10-----------------------------
  1303. INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
  1304.     AX = AD10h
  1305.     ???
  1306. Return: CF clear if successful
  1307.     CF set on error
  1308. Note:    this function is a NOP if the active code page has never been set
  1309.       (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
  1310. --------V-2FAD40-----------------------------
  1311. INT 2F - DOS 4+ - ???
  1312.     AX = AD40h
  1313.     DX = ???
  1314.     ???
  1315. Return: ???
  1316. Note:    called by PC-DOS 4.01 PRINT.COM
  1317. --------K-2FAD80-----------------------------
  1318. INT 2F u - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  1319.     AX = AD80h
  1320. Return: AL = FFh if installed
  1321.         BX = version number (BH = major, BL = minor)
  1322.         ES:DI -> internal data (see below)
  1323. Notes:    MS-DOS 3.30, PC-DOS 4.01, and MS-DOS 5.00 all report version 1.00.
  1324.     undocumented prior to the release of DOS 5.0
  1325.  
  1326. Format of KEYB internal data:
  1327. Offset    Size    Description
  1328.  00h    DWORD    original INT 09
  1329.  04h    DWORD    original INT 2F
  1330.  08h  6 BYTEs    ???
  1331.  0Eh    WORD    flags
  1332.  10h    BYTE    ???
  1333.  11h    BYTE    ???
  1334.  12h  4 BYTEs    ???
  1335.  16h  2 BYTEs    country ID letters
  1336.  18h    WORD    current code page
  1337. ---DOS 3.3---
  1338.  1Ah    WORD    pointer to first item in list of code page tables???
  1339.  1Ch    WORD    pointer to ??? item in list of code page tables
  1340.  1Eh  2 BYTEs    ???
  1341.  20h    WORD    pointer to key translation data
  1342.  22h    WORD    pointer to last item in code page table list (see below)
  1343.  24h  9 BYTEs    ???
  1344. ---DOS 4.01---
  1345.  1Ah  2 BYTEs    ???
  1346.  1Ch    WORD    pointer to first item in list of code page tables???
  1347.  1Eh    WORD    pointer to ??? item in list of code page tables
  1348.  20h  2 BYTEs    ???
  1349.  22h    WORD    pointer to key translation data
  1350.  24h    WORD    pointer to last item in code page table list (see below)
  1351.  26h  9 BYTEs    ???
  1352.  
  1353. Format of code page table list entries:
  1354. Offset    Size    Description
  1355.  00h    WORD    pointer to next item, FFFFh = last
  1356.  02h    WORD    code page
  1357.  04h  2 BYTEs    ???
  1358.  
  1359. Format of translation data:
  1360. Offset    Size    Description
  1361.  00h    WORD    size of data in bytes, including this word
  1362.  02h N-2 BYTEs    ???
  1363. --------K-2FAD81-----------------------------
  1364. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  1365.     AX = AD81h
  1366.     BX = code page (see INT 21/AX=6601h)
  1367. Return: CF set on error
  1368.         AX = 0001h (code page not available)
  1369.     CF clear if successful
  1370. Notes:    called by DISPLAY.SYS
  1371.     undocumented prior to the release of DOS 5.0
  1372. SeeAlso: AX=AD82h
  1373. --------K-2FAD82-----------------------------
  1374. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  1375.     AX = AD82h
  1376.     BL = new state
  1377.         00h US keyboard (Control-Alt-F1)
  1378.         FFh foreign keyboard (Control-Alt-F2)
  1379. Return: CF set on error (BL not 00h or FFh)
  1380.     CF clear if successful
  1381. Note:    undocumented prior to the release of DOS 5.0
  1382. SeeAlso: AX=AD81h,AX=AD83h
  1383. --------K-2FAD83-----------------------------
  1384. INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
  1385.     AX = AD83h
  1386. Return: BL = current state
  1387.         00h US keyboard
  1388.         FFh foreign keyboard
  1389. SeeAlso: AX=AD82h
  1390. --------l-2FAE00DXFFFF-----------------------
  1391. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  1392.     AX = AE00h
  1393.     DX = FFFFh
  1394.     CH = FFh
  1395.     CL = length of command line tail (4DOS v4.0)
  1396.     DS:BX -> command line buffer (see below)
  1397.     DS:SI -> command name buffer (see below)
  1398.     DI = 0000h (4DOS v4.0)
  1399. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  1400.     AL = 00h if the command should be executed as usual
  1401. Notes:    This call provides a mechanism for TSRs to install permanent
  1402.       extensions to the command repertoire of COMMAND.COM.    It appears
  1403.       that COMMAND.COM makes this call before executing the current
  1404.       command line, and does not execute it itself if the return is FFh.
  1405.     APPEND hooks this call, to allow subsequent APPEND commands to
  1406.       execute without re-running APPEND
  1407.  
  1408. Format of command line buffer:
  1409. Offset    Size    Description
  1410.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  1411.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  1412.       N BYTEs    command line text, terminated by 0Dh
  1413.  
  1414. Format of command name buffer:
  1415. Offset    Size    Description
  1416.  00h    BYTE    length of command name
  1417.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  1418. --------l-2FAE01DXFFFF-----------------------
  1419. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  1420.     AX = AE01h
  1421.     DX = FFFFh
  1422.     CH = 00h
  1423.     CL = length of command name (4DOS v4.0)
  1424.     DS:SI -> command name buffer (see AX=AE00h)
  1425.     DS:BX -> command line buffer (see AX=AE00h)
  1426. Return: DS:SI buffer updated
  1427.       if length byte is nonzero, the following bytes contain the uppercase
  1428.       internal command to execute and the command line buffer contains the
  1429.       command's parameters (the first DS:[SI] bytes are ignored)
  1430. Notes:    this call requests execution of the command which a previous call to
  1431.       AX=AE00h indicated was resident
  1432.     APPEND hooks this call
  1433. ----------2FAF-------------------------------
  1434. INT 2F U - ???
  1435.     AH = AFh
  1436.     ???
  1437. Return: ???
  1438. --------V-2FB000-----------------------------
  1439. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  1440.     AX = B000h
  1441. Return: AL = status
  1442.         00h not installed, OK to install
  1443.         01h not installed, not OK to install
  1444.         FFh installed
  1445. Notes:    called by DISPLAY.SYS
  1446.     documented for DOS 5.0, but undocumented in prior versions
  1447. SeeAlso: AX=B001h
  1448. --------V-2FB001-----------------------------
  1449. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  1450.     AX = B001h
  1451.     DS:BX -> DWORD buffer for address of 8x8 font table
  1452. Return: buffer filled
  1453.     AL = FFh
  1454. Note:    PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
  1455.       MS-DOS 3.30 sets it to 0030h
  1456. SeeAlso: AX=B000h
  1457. --------I-2FB400-----------------------------
  1458. INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
  1459.     AX = B400h
  1460. Return: AL = FFh if installed
  1461. --------I-2FB401-----------------------------
  1462. INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
  1463.     AX = B401h
  1464. Return: ES -> host screen buffer (PC ASCII format)
  1465.     ES unchanged if communications not started
  1466. --------I-2FB402-----------------------------
  1467. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1468.     AX = B402h
  1469.     BX = ???
  1470. Return: ???
  1471. --------I-2FB403-----------------------------
  1472. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1473.     AX = B403h
  1474.     ???
  1475. Return: ???
  1476. --------I-2FB404-----------------------------
  1477. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1478.     AX = B404h
  1479.     ???
  1480. Return: ???
  1481. --------I-2FB405-----------------------------
  1482. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1483.     AX = B405h
  1484.     ???
  1485. Return: ???
  1486. ----------2FB700-----------------------------
  1487. INT 2F - APPEND - INSTALLATION CHECK
  1488.     AX = B700h
  1489. Return: AL = status
  1490.         00h not installed
  1491.         FFh installed
  1492. Note:    MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
  1493.       a TopView-compatible environment
  1494. ----------2FB701-----------------------------
  1495. INT 2F U - APPEND v3.21 only - GET APPEND PATH
  1496.     AX = B701h
  1497. Return: ES:DI -> active APPEND path
  1498. Notes:    the only version of APPEND known to support this call is the APPEND
  1499.       shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
  1500.       "Incorrect APPEND Version" and aborts the caller
  1501.     use AX=B704h first, and only call this function if that one is not
  1502.       supported
  1503. SeeAlso: AX=B704h
  1504. ----------2FB702-----------------------------
  1505. INT 2F - APPEND - VERSION CHECK
  1506.     AX = B702h
  1507. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  1508.     AL = major version number
  1509.     AH = minor version number, otherwise
  1510. SeeAlso: AX=B710h
  1511. ----------2FB703-----------------------------
  1512. INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  1513.     AX = B703h
  1514.     ES:DI -> INT 21 handler APPEND should chain to
  1515. Return: ES:DI -> APPEND's INT 21 handler
  1516. Note:    each invocation of this function toggles a flag which APPEND uses to
  1517.       determine whether to chain to the user handler or the original
  1518.       INT 21
  1519. ----------2FB704-----------------------------
  1520. INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
  1521.     AX = B704h
  1522. Return: ES:DI -> active APPEND path (128 bytes max)
  1523. Note:    some versions of append do not support this call, and return ES
  1524.       unchanged; in this case, you should call AX=B701h to get the APPEND
  1525.       path
  1526. SeeAlso: AX=B701h
  1527. ----------2FB706-----------------------------
  1528. INT 2F - DOS 4+ APPEND - GET APPEND FUNCTION STATE
  1529.     AX = B706h
  1530. Return: BX = APPEND state
  1531.         bit 0: set if APPEND enabled
  1532.         bits 1-11 reserved
  1533.         bit 12: (DOS 5.0) set if APPEND applies directory search even if a
  1534.             drive has been specified
  1535.         bit 13: set if /PATH flag active
  1536.         bit 14: set if /E flag active (environment var APPEND exists)
  1537.         bit 15: set if /X flag active
  1538. ----------2FB707-----------------------------
  1539. INT 2F - DOS 4+ APPEND - SET APPEND FUNCTION STATE
  1540.     AX = B707h
  1541.     BX = APPEND state bits (see AX=B706h)
  1542. ----------2FB710-----------------------------
  1543. INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
  1544.     AX = B710h
  1545. Return: AX = current APPEND state (see AX=B706h)
  1546.     BX = ??? (0000h in MS-DOS 3.30 and 5.00)
  1547.     CX = ??? (0000h in MS-DOS 3.30 and 5.00)
  1548.     DL = major version
  1549.     DH = minor version
  1550. SeeAlso: AX=B702h
  1551. ----------2FB711-----------------------------
  1552. INT 2F - DOS 4+ APPEND - SET RETURN FOUND NAME STATE
  1553.     AX = B711h
  1554. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  1555.     6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename is
  1556.     written over top of the filename passed to the INT 21h call.  The
  1557.     application must provide a sufficiently large buffer.  This state is
  1558.     reset after the next INT 21h call processed by APPEND.
  1559. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  1560.       INT 21/AH=6Ch
  1561. SeeAlso: INT 21/AH=4Eh
  1562. --------N-2FB800-----------------------------
  1563. INT 2F - network - INSTALLATION CHECK
  1564.     AX = B800h
  1565. Return: AL = status
  1566.         00h        not installed
  1567.         nonzero installed
  1568.           BX = installed component flags (test in this order!)
  1569.            bit 6   server
  1570.            bit 2   messenger
  1571.            bit 7   receiver
  1572.            bit 3   redirector
  1573.            bit 1   LANPUP (LANtastic 4.0)
  1574. Notes:    this function is supported by LAN Manager, LANtastic, NetWare Lite,
  1575.       SilverNET, 10NET, etc.
  1576.     LANtastic and NetWare Lite use only BL for the return value, preserving
  1577.       BH; LAN Manager and DOS LAN Requester return BH=00h.    This permits
  1578.       differentiation between those two groups by setting BH to a nonzero
  1579.       value before the call and checking its value on return.
  1580. SeeAlso: AX=4E53h,AX=B809h
  1581. --------N-2FB800CXF041-----------------------
  1582. INT 2F - 10NET - INSTALLATION CHECK
  1583.     AX = B800h
  1584.     CX = F041h
  1585. Return: AL = status
  1586.         00h        not installed
  1587.         nonzero installed
  1588.         BX = installed component flags (test in this order!)
  1589.            bit 6   server
  1590.            bit 2   messenger
  1591.            bit 7   receiver
  1592.            bit 3   redirector
  1593.            bit 1   LANPUP (LANtastic 4.0)
  1594.         CX = 10Net data segment
  1595.         CX:DX -> 10Net Configuration Table (see AX=5E01h"10NET")
  1596. Note:    if CX <> F041h on entry, neither CX nor DX will be changed, and this
  1597.       call becomes identical to the standard installation check above
  1598. SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
  1599. --------N-2FB803-----------------------------
  1600. INT 2F - network - GET NETWORK EVENT POST HANDLER
  1601.     AX = B803h
  1602. Return: ES:BX -> current event post handler (see AX=B804h)
  1603. Note:    this function is supported by 10NET v5.0
  1604. SeeAlso: AX=B804h,AX=B903h
  1605. --------N-2FB804-----------------------------
  1606. INT 2F - network - SET NETWORK EVENT POST HANDLER
  1607.     AX = B804h
  1608.     CX = (10NET) 0370h if 10Windows is hooking post handler
  1609.     ES:BX -> new event post handler
  1610. Notes:    used in conjunction with AX=B803h to hook into the network event post
  1611.       routine
  1612.     this function is supported by 10NET v5.0
  1613.     The specified handler is called on any network event.  Two events are
  1614.       defined: message received and critical network error.
  1615. SeeAlso: AX=B803h,AX=B904h
  1616.  
  1617. Values post routine is called with:
  1618.     AX = 0000h single block message
  1619.         DS:SI -> ASCIZ originator name
  1620.         DS:DI -> ASCIZ destination name
  1621.         ES:BX -> text header (see below)
  1622.     AX = 0001h start multiple message block
  1623.         CX = block group ID
  1624.         DS:SI -> ASCIZ originator name
  1625.         DS:DI -> ASCIZ destination name
  1626.     AX = 0002h multiple block text
  1627.         CX = block group ID
  1628.         ES:BX -> text header (see below)
  1629.     AX = 0003h end multiple block message
  1630.         CX = block group ID
  1631.     AX = 0004h message aborted due to error
  1632.         CX = block group ID
  1633.     AX = 0101h server received badly formatted network request
  1634.         Return: AX = FFFFh (PC LAN will process error)
  1635.     AX = 0102h unexpected network error
  1636.         ES:BX -> NCB (see INT 5C)
  1637.     AX = 0103h server received INT 24 error
  1638.         other registers as for INT 24, except AH is in BH
  1639.         Return: as below, but only 0000h and FFFFh allowed
  1640. Return: AX = response code
  1641.         0000h user post routine processed message
  1642.         0001h PC LAN will process message, but message window not displayed
  1643.         FFFFh PC LAN will process message
  1644.  
  1645. Format of text header:
  1646. Offset    Size    Description
  1647.  00h    WORD    length of text (maximum 512 bytes)
  1648.  02h  N BYTEs    text of message
  1649. Note:    all CRLF sequences in message text are replaced by 14h
  1650. --------N-2FB807-----------------------------
  1651. INT 2F - network - GET NetBIOS NAME NUMBER OF MACHINE NAME
  1652.     AX = B807h
  1653. Return: CH = NetBIOS name number of the machine name
  1654. SeeAlso: INT 21/AX=5E00h
  1655. --------N-2FB808-----------------------------
  1656. INT 2F U - network - RELINK KEYBOARD HANDLER
  1657.     AX = B808h
  1658.     ES:BX -> INT 09 handler network should call after it finishes INT 09
  1659. Notes:    this call replaces the address to which the network software chains on
  1660.       an INT 09 without preserving the original value.  This allows a prior
  1661.       handler to unlink, but does not allow a new handler to be added
  1662.       such that the network gets the INT 09 first unless the new handler
  1663.       completely takes over INT 09 and never chains.
  1664.     called by DOS 3.2 KEYBxx.COM
  1665. SeeAlso: AX=B908h
  1666. --------N-2FB809-----------------------------
  1667. INT 2F - LANtastic Network, NetWare Lite - VERSION CHECK
  1668.     AX = B809h
  1669. Return: AH = major version
  1670.     AL = minor version (decimal)
  1671. Notes:    this function is also supported by SilverNET
  1672.     NetWare Lite returns its own version number rather than a PC LAN
  1673.       compatibility version
  1674. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LAN Manager"
  1675. --------N-2FB809-----------------------------
  1676. INT 2F - PC LAN Program - VERSION CHECK
  1677.     AX = B809h
  1678. Return: AH = minor version (decimal)
  1679.     AL = major version
  1680. Notes:    this function is also supported in this form by LAN Manager, the DOS
  1681.       LAN Requester, and 10NET v5.0
  1682.     10NET returns version 1.10 (AX=0A01h) for compatibility
  1683. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
  1684. --------N-2FB80A-----------------------------
  1685. INT 2F - PC Network 1.00 - ???
  1686.     AX = B80Ah
  1687.     ???
  1688. Return: ???
  1689. Program: PC Network is an early networking package which was renamed the
  1690.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  1691. Note:    called by RECEIVER (equivalent to NetWare Lite SERVER)
  1692. --------N-2FB80F-----------------------------
  1693. INT 2F - DOS LAN Requester - GET START PARAMETERS
  1694.     AX = B80Fh
  1695.     CX = size of return data buffer
  1696.     ES:DI -> return data buffer
  1697. Return: AX = status
  1698.          00h     network started
  1699.          nonzero network not started
  1700.     CX = number of bytes returned in buffer
  1701.     ES:DI buffer filled
  1702.  
  1703. Format of return data buffer:
  1704. Offset    Size    Description
  1705.  00h    BYTE    major version
  1706.  01h    BYTE    minor version
  1707.  02h    WORD    configuration flags given when network was started (see below)
  1708.  04h 15 BYTEs    NET START machine name (space padded)
  1709.  13h    BYTE    00h
  1710.  14h 9    BYTEs    NET START domain name (NULL padded)
  1711.  1Dh    BYTE    00h
  1712.  1Eh 32 BYTEs    /WRK heuristics string (space padded, not terminated)
  1713.  3Eh    WORD    /SRV value
  1714.  40h    WORD    /ASG value
  1715.  42h    WORD    /NBC value
  1716.  44h    WORD    /NBS value
  1717.  46h    WORD    /BBC value
  1718.  48h    WORD    /BBS value
  1719.  4Ah    WORD    /PBC value
  1720.  4Ch    WORD    /PBS value
  1721.  4Eh    WORD    /PFS value
  1722.  50h    WORD    /PFT value
  1723.  52h    WORD    /PWT value
  1724.  54h    WORD    /KUC value
  1725.  56h    WORD    /KST value
  1726.  58h    WORD    /NVS value
  1727.  5Ah    WORD    /NMS value
  1728.  5Ch    WORD    /NDB value
  1729.  5Eh    WORD    /MBI value
  1730.  60h    BYTE    NetBIOS name number for machine name
  1731.  61h    BYTE    NetBIOS name number for domain name
  1732.  62h    WORD    NetBIOS sessions required for configuration
  1733.  64h    WORD    NetBIOS commands required for configuration
  1734.  66h    WORD    NetBIOS names required for configuration
  1735.  68h 128 BYTEs    NET START path (LANROOT)
  1736.  E8h    BYTE    00h
  1737.  
  1738. Bitfields for configuration flags:
  1739.  bit 0    /NVS nonzero
  1740.  bit 1    /NMS nonzero
  1741.  bit 2    /API
  1742.  bit 3    /HIM
  1743.  bit 4    /LIM
  1744.  bit 5    /ENC
  1745.  bit 6    /POP
  1746.  bit 7    /EMS
  1747.  bit 8    /RPL
  1748.  bits 9-12 reserved
  1749.  bit 13 RDR started
  1750.  bit 14 RCV started
  1751.  bit 15 User is currently logged on
  1752. --------N-2FB900-----------------------------
  1753. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  1754.     AX = B900h
  1755. Return: AL = 00h if not installed
  1756.          FFh if installed
  1757. --------N-2FB901-----------------------------
  1758. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  1759.     AX = B901h
  1760. Return: AL = ???
  1761.     ES:BX -> RECEIVER.COM INT 2F handler
  1762. Note:    allows more efficient execution by letting the caller bypass any other
  1763.       INT 2F handlers which have been added since RECEIVER.COM was
  1764.       installed
  1765. --------N-2FB903-----------------------------
  1766. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  1767.     AX = B903h
  1768. Return: ES:BX -> POST handler
  1769. SeeAlso: AX=B803h,AX=B904h
  1770. --------N-2FB904-----------------------------
  1771. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  1772.     AX = B904h
  1773.     ES:BX -> new POST handler
  1774. SeeAlso: AX=B804h,AX=B903h
  1775. --------N-2FB905-----------------------------
  1776. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  1777.     AX = B905h
  1778.     DS:BX -> 128-byte buffer for filename 1
  1779.     DS:DX -> 128-byte buffer for filename 2
  1780. Return: buffers filled from RECEIVER.COM internal buffers
  1781. Note:    use of filenames is unknown, but one appears to be for storing messages
  1782. SeeAlso: AX=B906h
  1783. --------N-2FB906-----------------------------
  1784. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  1785.     AX = B906h
  1786.     DS:BX -> 128-byte buffer for filename 1
  1787.     DS:DX -> 128-byte buffer for filename 2
  1788. Return: RECEIVER.COM internal buffers filled from user buffers
  1789. Note:    use of filenames is unknown, but one appears to be for storing messages
  1790. SeeAlso: AX=B905h
  1791. --------N-2FB908-----------------------------
  1792. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  1793.     AX = B908h
  1794.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  1795. Note:    this call replaces the address to which RECEIVER.COM chains on an
  1796.       INT 09 without preserving the original value.     This allows a prior
  1797.       handler to unlink, but does not allow a new handler to be added
  1798.       such that RECEIVER gets the INT 09 first.
  1799. SeeAlso: AX=B808h
  1800. --------V-2FBC00-----------------------------
  1801. INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
  1802.     AX = BC00h
  1803. Return: AL = 00h not installed, OK to install
  1804.        = 01h not installed, not OK to install
  1805.        = FFh installed
  1806.         BX = 5456h ("TV")
  1807. Note:    AH=BCh is the default value, which may be changed by a command line
  1808.       parameter to any value between 80h and FFh
  1809. SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
  1810. --------s-2FBC00BX3F3F-----------------------
  1811. INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
  1812.     AX = BC00h
  1813.     BX = 3F3Fh ('??')
  1814.     CX = 0000h
  1815.     DX = 0000h
  1816. Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
  1817. Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
  1818.       of sound boards; its primary programmer was Bryan Crane
  1819. SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
  1820. --------s-2FBC01BX6D20-----------------------
  1821. INT 2F - MediaVision MVSOUND.SYS - GET VERSION
  1822.     AX = BC01h
  1823.     BX = 6D20h ('m ')
  1824.     CX = 2076h (' v')
  1825.     DX = 2020h ('  ')
  1826. Return: BX = ASCII major version (leading zeros significant)
  1827.     CX = ASCII minor version (leading zeros significant)
  1828. --------s-2FBC02-----------------------------
  1829. INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
  1830.     AX = BC02h
  1831. Return: BX:DX -> state table
  1832. SeeAlso: AX=BC00h"MVSOUND",AX=BC03h
  1833. --------s-2FBC03-----------------------------
  1834. INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
  1835.     AX = BC03h
  1836. Return: BX:DX -> function table
  1837. SeeAlso: AX=BC00h"MVSOUND",AX=BC02h
  1838. --------s-2FBC04-----------------------------
  1839. INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
  1840.     AX = BC04h
  1841. Return: AX = 4D56h ('MV')
  1842.     BL = DMA channel
  1843.     CL = IRQ number
  1844. SeeAlso: AX=BC00h"MVSOUND",AX=BC01h"MVSOUND"
  1845. --------V-2FBC06-----------------------------
  1846. INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
  1847.     AX = BC06h
  1848. Return: BX = 5456h ("TV")
  1849.     CH = major version
  1850.     CL = minor version
  1851.     DL = revision
  1852. SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
  1853. --------s-2FBC06-----------------------------
  1854. INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
  1855.     AX = BC06h
  1856. Return: AX = 4D56h ('MV')
  1857.     DX:BX -> status string (first byte 0Ch if no status message to display)
  1858. SeeAlso: AX=BC00h"MVSOUND",AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
  1859. --------s-2FBC0B-----------------------------
  1860. INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
  1861.     AX = BC0Bh
  1862. Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
  1863. SeeAlso: AX=BC00h"MVSOUND"
  1864. --------U-2FBE00-----------------------------
  1865. INT 2F - REDVIEW - INSTALLATION CHECK
  1866.     AX = BE00h
  1867. Return: AL = FFh if installed
  1868. Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
  1869.       copies data sent to standard output to standard error when the
  1870.       former has been redirected to a file, thus allowing the data to
  1871.       be seen on the screen at the same time it is captured in a file
  1872. --------N-2FBF00-----------------------------
  1873. INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  1874.     AX = BF00h
  1875. Return: AL = FFh if installed
  1876. --------N-2FBF01-----------------------------
  1877. INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  1878.     AX = BF01h
  1879.     ???
  1880. Return: ???
  1881. --------N-2FBF80-----------------------------
  1882. INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  1883.     AX = BF80h
  1884.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  1885. Return: AL = FFh if installed
  1886.         ES:DI -> internal workspace
  1887. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  1888. --------F-2FC0-------------------------------
  1889. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
  1890.     AH = C0h
  1891.     AL = function code (01h to 15h)
  1892. Return: ???
  1893. SeeAlso: AX=C000h"MTEZ",AX=CB00h"MTEZ"
  1894. --------N-2FC000-----------------------------
  1895. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  1896.     AX = C000h
  1897. Return: AL = FFh if installed
  1898.         DX:BX -> FAR entry point (see below)
  1899.         ES:SI -> signature string "LINKSUP$"
  1900. Notes:    LSL.COM may use any multiplex number between C0h and FFh; it searches
  1901.       for itself in that range, and installs using the first free multiplex
  1902.       number in the range if not already loaded.
  1903.     on return, ES = DX for LSL v1.10; LSL makes use of this in its search
  1904.       for a previous installation
  1905.  
  1906. Call LSL entry point with:
  1907.     BX = 0001h "Request MLID Registration"
  1908.         ES:SI -> ???
  1909.         ???
  1910.         Return: AX = completion code (see below)
  1911.             DS:DI -> LSL information block
  1912.     BX = 0002h get support entry points
  1913.         ES:SI -> buffer for entry point record (see below)
  1914.         Return: ES:SI buffer filled
  1915.     BX = 0003h "Request MLID API entry point"
  1916.         Return: ES:SI -> MLID API entry point
  1917.                  (call with BX=function 00h-10h, not range-checked)
  1918. Notes:    LSL v1.10 executes BX=0003h for all other values of BX
  1919.     see "Novell LAN Driver Developer's Guide, Volume III" for details of
  1920.       function 0001h
  1921.  
  1922. Values for completion code:
  1923.  0000h    successful
  1924.  8001h    out of resources
  1925.  8002h    bad parameter
  1926.  8003h    no more items
  1927.  8004h    item not present
  1928.  8005h    failed
  1929.  8006h    receive overflow
  1930.  8007h    canceled
  1931.  8008h    bad command
  1932.  8009h    duplicate entry
  1933.  800Ah    no such handler
  1934.  800Bh    no such driver
  1935.  
  1936. Format of entry point record:
  1937. Offset    Size    Description
  1938.  00h    DWORD    pointer to protocol support entry point in LSL (see below)
  1939.  04h    DWORD    pointer to general support entry point in LSL (see below)
  1940.  
  1941. Call protocol support entry point with:
  1942.     BX = function number
  1943.         0000h ???
  1944.         0001h ???
  1945.         0002h ???
  1946.         0003h "ScheduleAESEvent"
  1947.         ES:SI -> AES ECB to be scheduled (see below for format)
  1948.         Return: ES,SI preserved
  1949.         0004h "CancelAESEvent"
  1950.         ES:SI -> ECB to be cancelled (see below for format)
  1951.         Return: ES,SI preserved
  1952.         0005h "GetIntervalMarker"
  1953.         Return: DX:AX = current interval marker in milliseconds
  1954.             all other registers preserved
  1955.         0006h "RegisterStack"
  1956.         AX = logical board number
  1957.         ES:SI -> bound stack info structure (see below)
  1958.         Return: BX = assigned Stack ID if AX=0000h
  1959.         0007h "DeRegisterStack"
  1960.         AX = protocol stack's assigned Stack ID
  1961.         0008h "RegisterDefaultStack"
  1962.         AX = logical board number
  1963.         ES:SI -> stack info structure (see below)
  1964.         0009h "DeRegisterDefaultStack"
  1965.         AX = logical board number
  1966.         000Ah "RegisterPrescanStack"
  1967.         AX = logical board number
  1968.         ES:SI -> stack info structure (see below)
  1969.         000Bh "DeRegisterPrescanStack"
  1970.         AX = logical board number
  1971.         000Ch "SendPacket"
  1972.         ES:SI -> send ECB
  1973.         Return: interrupts disabled
  1974.         000Dh ???
  1975.         000Eh ???
  1976.         000Fh ???
  1977.         0010h "GetStackIDFromName"
  1978.         ES:SI -> counted NUL-terminated protocol name (max 15 chars)
  1979.         Return: BX = Stack ID if AX=0000h
  1980.         0011h "GetPIDFromStackIDBoard"
  1981.         AX = Stack ID for protocol
  1982.         CX = logical board number
  1983.         ES:SI -> 6-byte buffer for protocol ID
  1984.         0012h "GetMLIDControlEntry"
  1985.         AX = logical board number
  1986.         Return: ES:SI -> MLID control handler (see below) if AX=0000h
  1987.         0013h "GetProtocolControlEntry"
  1988.         AX = Stack ID or
  1989.             FFFEh Prescan stack
  1990.                 CX = logical board number
  1991.             FFFFh default protocol
  1992.                 CX = logical board number
  1993.         Return: ES:SI -> protocol stack control entry point if AX=0000h
  1994.                 (see below)
  1995.         0014h "GetLSLStatistics"
  1996.         Return: AX = 0000h (successful)
  1997.             ZF set
  1998.             ES:SI -> LSL statistics table (see below)
  1999.         0015h "BindStack"
  2000.         AX = protocol stack's assigned Stack ID
  2001.         CX = logical board number
  2002.         0016h "UnbindStack"
  2003.         AX = protocol stack's assigned Stack ID
  2004.         CX = logical board number
  2005.         0017h "AddProtocolID"
  2006.         AX = frame type ID code
  2007.         ES:SI -> 6-byte protocol ID
  2008.         CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
  2009.         0018h "RelinquishControl"
  2010.         Return: after LSL performs any necessary background processing
  2011.         0019h "GetLSLConfiguration"
  2012.         Return: AX = 0000h (successful)
  2013.             ZF set
  2014.             ES:SI -> LSL configuration table (see below)
  2015.         001Ah "GetTickMarker"
  2016.         Return: AX = number of 55ms ticks since LSL loaded
  2017.             BX destroyed
  2018. Return: AX = completion code (see above)
  2019.     ZF set if successful
  2020.     SS:SP, DS, BP preserved; most other registers may be destroyed
  2021.  
  2022. Call general support entry point with:
  2023.     BX = function number
  2024.         0000h "Allocate Memory" (obsolete)
  2025.          always returns AX=8008h (BAD_COMMAND)
  2026.         0001h "Free Memory" (obsolete)
  2027.          always returns AX=8008h (BAD_COMMAND)
  2028.         0002h "Realloc Memory" (obsolete)
  2029.          always returns AX=8008h (BAD_COMMAND)
  2030.         0003h "Memory Statistics" (obsolete)
  2031.          always returns AX=8008h (BAD_COMMAND)
  2032.         0004h "Add Memory To Pool" (obsolete)
  2033.          always returns AX=8008h (BAD_COMMAND)
  2034.         0005h "AddGeneralService"
  2035.         ES:SI -> General Service Control Block (see below)
  2036.         0006h "RemoveGeneralService"
  2037.         ES:SI -> General Service Control Block (see below)
  2038.         0007h "GetNETcfgPath"
  2039.         Return: AX = 0000h (successful)
  2040.             DS:DX -> ASCIZ pathname for NET.CFG
  2041.         0008h U ???     (in LSL 1.10)
  2042.         Return: AX = 0000h
  2043.             ES:SI -> ??? (a 22-byte data area)
  2044.         000Ah "GetCriticalSectionStatus"
  2045.         Return: BX = total outstanding calls to "StartCriticalSection"
  2046.         000Bh "ServiceEvents"
  2047.         interrupts disabled
  2048.         Return: interrupts disabled
  2049.         0010h "GetStackECB"
  2050.         DS:DI -> Lookahead structure (see below)
  2051.         interrupts disabled
  2052.         Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
  2053.             interrupts disabled
  2054.         8000h-FFFFh reserved for user general service providers
  2055. Return: AX = completion code (see above)
  2056.     ZF set if successful
  2057.     SS:SP, DS, BP preserved
  2058.  
  2059. Call MLID control handler with:
  2060.     AX = logical board number
  2061.     BX = function number
  2062.         0000h "GetMLIDConfiguration"
  2063.         Return: ES:SI -> MLID's configuration table if successful
  2064.                 (see below for format)
  2065.         0001h "GetMLIDStatistics"
  2066.         Return: ES:SI -> MLID's statistics table if successful
  2067.                 (see below for format)
  2068.         0002h "AddMulticastAddress"
  2069.         ES:SI -> 6-byte multicast address to add
  2070.         0003h "DeleteMulticastAddress"
  2071.         ES:SI -> 6-byte multicast address to delete
  2072.         0005h "MLIDShutdown"
  2073.         CX = type
  2074.             0000h permanent (also deregisters from LSL)
  2075.             other temporary (shutdown hardware only)
  2076.         0006h "MLIDReset" reinitialize board / restart from temp shutdown
  2077.         0007h "Create Connection" (obsolete?)
  2078.         ???
  2079.         0008h "Delete Connection" (obsolete?)
  2080.         ???
  2081.         0009h "SetLookAheadSize"
  2082.         CX = requested lookahead size (00h-80h)
  2083.         0010h "PromiscuousChange"
  2084.         CX = what to receive promiscuously
  2085.             bit 0: MAC frames
  2086.             bit 1: non-MAC frames
  2087.         0011h "RegisterReceiveMonitor"
  2088.         CX = subfunction
  2089.             0000h disable receive monitoring
  2090.             else  enable receive monitoring
  2091.         ES:SI -> monitor receive routine
  2092.         ES:DI -> monitor transmit routine
  2093.         0012h "Driver Poll" (obsolete?)
  2094.         ???
  2095. Return: AX = completion code (see above)
  2096.     ZF set if successful
  2097. Note:    not all boards/MLIDs support function 0010h; see bit 13 in the MLID
  2098.       mode flags field of the MLID's configuration table
  2099.  
  2100. Call protocol stack control entry point with:
  2101.     BX = function number
  2102.         0000h "GetProtocolStackConfiguration"
  2103.         Return: ES:SI -> protocol stack's configuration table
  2104.                 (see below)
  2105.         0001h "GetProtocolStackStatistics"
  2106.         Return: ES:SI -> protocol stack's statistics table (see below)
  2107.         0002h "BindToMLID"
  2108.         CX = board number to bind to
  2109.         ES:SI -> implementation-dependant parameter string
  2110.         0003h "UnBindFromMLID"
  2111.         CX = board number from which protocol should unbind
  2112.         ES:SI -> optional implementation-dependant parameter string
  2113.         0004h "MLIDDeRegistered"
  2114.         CX = board number that has de-registered from LSL
  2115. Return: AX = status
  2116.         0000h successful
  2117.         else implementation-dependant error codes
  2118.     ZF set if successful
  2119.     SS:SP, DS, BP preserved
  2120.  
  2121. Format of AES ECB:
  2122. Offset    Size    Description
  2123.  00h    DWORD    "AESLink" pointer used by LSL for list management
  2124.  04h    DWORD    number of milliseconds to wait
  2125.  08h    DWORD    "AESStatus" (is set to 00000000h when AES ESR is invoked)
  2126.  0Ch    DWORD    -> function to be invoked when time expires
  2127.         ES:SI will point to this structure on entry,
  2128.         DS, BP, and SS:SP must be preserved.
  2129.  
  2130. Format of LSL Configuration Table:
  2131. Offset    Size    Description
  2132.  00h    BYTE    major version of configuration table
  2133.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  2134.  02h  8 BYTEs    reserved
  2135.  0Ah    BYTE    LSL major version (decimal)
  2136.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  2137. ---LSL 1.0x ---
  2138.  0Ch 14 BYTEs    reserved
  2139. ---LSL 1.10+ ---
  2140.  0Ch    WORD    maximum number of boards which LSL can handle
  2141.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  2142.  10h 12 BYTEs    reserved
  2143.  
  2144. Format of LSL Statistics Table:
  2145. Offset    Size    Description
  2146.  00h    BYTE    major version of statistics table format
  2147.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  2148.  02h    WORD    "GenericCounters" number of counters in static portion of
  2149.         table
  2150.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  2151.         counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  2152.         is the next field, etc.
  2153.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  2154.  0Ch    DWORD    reserved
  2155.  10h    DWORD    reserved
  2156.  14h    DWORD    "AESEventsCount" number of completed AES events
  2157.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  2158.         sections inside the MLIDs
  2159.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  2160.  20h    DWORD    reserved
  2161.  24h    DWORD    reserved
  2162.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  2163.  2ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  2164.         protocol stack
  2165.  30h    WORD    "NumberCustom" number of custom variables that follow
  2166.  32h  N DWORDs    custom counters
  2167.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2168.     var    length-prepended and NULL terminated string for Counter 0
  2169.     ...
  2170.     var    length-prepended and NULL terminated string for Counter N-1
  2171.  
  2172. Format of Protocol Stack Statistics Table:
  2173. Offset    Size    Description
  2174.  00h    BYTE    statistics table major version
  2175.  01h    BYTE    statistics table minor version (decimal, 0-99)
  2176.  02h    WORD    number of generic counters following
  2177.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  2178.  08h    DWORD    TotalTxPackets
  2179.  0ch    DWORD    TotalRxPackets
  2180.  10h    DWORD    IgnoredRxPackets
  2181.  14h    WORD    number of custom counters
  2182.  16h  N DWORDs    custom counters
  2183.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2184.     var    length-prepended and NULL terminated string for Counter 0
  2185.     ...
  2186.     var    length-prepended and NULL terminated string for Counter N-1
  2187.  
  2188. Format of Protocol Stack Configuration Table:
  2189. Offset    Size    Description
  2190.  00h    BYTE    configuration table major version
  2191.  01h    BYTE    configuration table minor version (decimal, 0-99)
  2192.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  2193.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  2194.  0Ah    BYTE    protocol stack major version
  2195.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  2196.  0Ch 16 BYTEs    reserved for future use
  2197.  
  2198. Format of MLID Configuration Table:
  2199. Offset    Size    Description
  2200.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  2201.  1ah    BYTE    configuration table major version
  2202.  1bh    BYTE    configuration table minor version (decimal, 0-99)
  2203.  1ch  6 BYTEs    node address
  2204.  22h    WORD    MLID mode flags (see below)
  2205.  24h    WORD    board number
  2206.  26h    WORD    board instance (if more than one of same board installed)
  2207.  28h    WORD    maximum packet size
  2208.  2Ah    WORD    BestDataSize
  2209.  2Ch    WORD    WorstDataSize
  2210.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  2211.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  2212.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  2213.  3Ah    WORD    reserved (0000h)
  2214.  3Ch    WORD    frame type ID
  2215.  3Eh    WORD    TransportTime (milliseconds)
  2216.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  2217.  44h    WORD    lookahead size
  2218.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  2219.  48h    WORD    QueueDepth
  2220.  4Ch  6 BYTEs    reserved (0)
  2221.  54h    BYTE    driver major version
  2222.  55h    BYTE    driver minor version (decimal, 0-99)
  2223.  56h    WORD    flags
  2224.         bits 10-9: specialized multicast support
  2225.             00 = Group addressing is default for medium
  2226.             01 = Invalid
  2227.             10 = Filter group address in MLID.
  2228.             11 = Adapter filters group address.
  2229.         bit 2: supports Micro Channel cards
  2230.         bit 1: supports ISA cards
  2231.         bit 0: supports EISA cards
  2232.  58h    WORD    send retries
  2233.  5Ah    DWORD    ConfigTableLink
  2234.  5Eh    WORD    MLID sharing flags (see below)
  2235.  60h    WORD    slot number
  2236.  62h    WORD    I/O address 1
  2237.  64h    WORD    I/O range 1
  2238.  66h    WORD    I/O address 2
  2239.  68h    WORD    I/O range 2
  2240.  6Ah    DWORD    memory address 1
  2241.  6Eh    WORD    memory size 1
  2242.  70h    DWORD    memory address 2
  2243.  74h    WORD    memory size 2
  2244.  76h    BYTE    interrupt line 1
  2245.  77h    BYTE    interrupt line 2
  2246.  78h    BYTE    DMA line 1
  2247.  79h    BYTE    DMA line 2
  2248.  
  2249. Bitfields for MLID mode flags:
  2250.  bit 15 MLID supports Octet Bit Reversal
  2251.  bit 14 node address is non-canonical
  2252.  bit 13 promiscuous mode is supported
  2253.  bit 12-8 reserved
  2254.  bit 7    LDataSize field in LookAhead structure supported
  2255.  bit 6    raw send supported
  2256.  bit 5    MLID needs to be polled by LSL
  2257.  bit 4    reserved (0)
  2258.  bit 3    multicasting is supported
  2259.  bit 2    not currently used by DOS ODI, set to 0.
  2260.  bit 1    network card uses DMA.
  2261.  bit 0    RealDriverBit, always set to 1.
  2262.  
  2263. Bitfields for MLID sharing flags:
  2264.  bit 8    NIC can share DMA2
  2265.  bit 7    NIC can share DMA1
  2266.  bit 6    NIC can share IRQ2
  2267.  bit 5    NIC can share IRQ1
  2268.  bit 4    NIC can share Memory2
  2269.  bit 3    NIC can share Memory1
  2270.  bit 2    NIC can share IO2
  2271.  bit 1    NIC can share IO1
  2272.  bit 0    MLID is currently shut down
  2273.  
  2274. Format of MLID Statistics Table:
  2275. Offset    Size    Description
  2276.  00h    BYTE    driver statistics table major version
  2277.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  2278.  02h    WORD    number of generic counters (typically 13)
  2279.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  2280.  08h    DWORD    TotalTxCount
  2281.  0Ch    DWORD    TotalRxCount
  2282.  10h    DWORD    NoECBAvailableCount
  2283.  14h    DWORD    TxTooBigCount
  2284.  18h    DWORD    TxTooSmallCount
  2285.  1ch    DWORD    RxOverflowCount
  2286.  20h    DWORD    RxTooBigCount
  2287.  24h    DWORD    RxTooSmallCount
  2288.  28h    DWORD    TxMiscCount
  2289.  2ch    DWORD    RxMiscCount
  2290.  30h    DWORD    TxRetryCount
  2291.  34h    DWORD    RxChecksumErrorCount
  2292.  38h    DWORD    RxMismatchCount
  2293.  3Ch    WORD    number of custom counters
  2294.  3Eh  N DWORDs    custom counters
  2295.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2296.     var    length-prepended and NULL terminated string for Counter 0
  2297.     ...
  2298.     var    length-prepended and NULL terminated string for Counter N-1
  2299.  
  2300. Format of bound stack info structure:
  2301. Offset    Size    Description
  2302.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  2303.  04h    DWORD    -> receive handler
  2304.  08h    DWORD    -> control handler
  2305.  
  2306. Format of stack info structure:
  2307. Offset    Size    Description
  2308.  00h    DWORD    -> receive handler
  2309.  04h    DWORD    -> control handler
  2310.  
  2311. Format of General Service Control Block:
  2312. Offset    Size    Description
  2313.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  2314.  04h    DWORD    -> entry point for general service handler
  2315.  08h    WORD    command code for this general service (8000h-FFFFh)
  2316. Note:    the control block must not be altered or deallocated until the general
  2317.       service is removed
  2318.  
  2319. Format of Lookahead structure:
  2320. Offset    Size    Description
  2321.  00h    DWORD    -> Media header
  2322.  04h    DWORD    -> lookahead buffer
  2323.  08h    WORD    length of lookahead buffer
  2324.  0Ah  6 BYTEs    protocol ID
  2325.  10h    WORD    logical board number
  2326.  12h    WORD    lookahead size
  2327. --------f-2FC000-----------------------------
  2328. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  2329.     AX = C000h
  2330. Return: AL = FFh if installed
  2331.        ES:DI -> signature string "FN32 32CHAR TSR"
  2332. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  2333. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  2334.       managing dictionary files in each directory which contains long
  2335.       filenames
  2336. --------M-2FC000-----------------------------
  2337. INT 2F - QMR - INSTALLATION CHECK
  2338.     AX = C000h
  2339. Return: AL = FFh if installed
  2340.         ES:DI -> signature string "QMR1!"
  2341. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  2342.       service interrupt (int 33h) and substitutes a fast software
  2343.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  2344. Note:    QMR may use any multiplex number between C0h and FFh; it searches
  2345.      for itself in that range, and installs using the first free multiplex
  2346.      number in the range if not already loaded.
  2347. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  2348. --------V-2FC000-----------------------------
  2349. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  2350.     AX = C000h
  2351. Return: AL = FFh if installed
  2352.         BX = segment of resident code
  2353. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  2354.       Javurek
  2355. Note:    VGAsave may use any AH value from C0h through FFh; the transient
  2356.       portion of VGAsave compares the first 38 bytes of the resident code
  2357.       (addressed through BX) against its own copy of the resident code to
  2358.       complete the installation check
  2359. Index:    screen saver;VGAsave
  2360. --------F-2FC000BX444B-----------------------
  2361. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  2362.     AX = C000h
  2363.     BX = 444Bh
  2364.     CX = 4A4Eh
  2365. Return: AL = status
  2366.         00h not installed, OK to install
  2367.         FFh installed
  2368.         BX = 646Bh
  2369.         CX = 6A6Eh
  2370. Note:    this TSR will use any free multiplex number from C0h to FFh
  2371. SeeAlso: AH=C0h"MTEZ"
  2372. --------V-2FC000-----------------------------
  2373. INT 2F - AD-DOS - INSTALLATION CHECK
  2374.     AX = C000h
  2375. Return: AL = FFh if installed
  2376.         BX = 4144h ('AD')
  2377.         CX = 2D44h ('-D')
  2378.         DX = 4F53h ('OS')
  2379. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2380.       MS Windows
  2381. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2382.       After Dark will try successive values up to AH=FFh
  2383. SeeAlso: AX=C001h,AX=C003h,AX=C005h,AX=C007h,AX=C009h,AX=C020h
  2384. Index:    screen saver;AD-DOS
  2385. ----------2FC000-----------------------------
  2386. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  2387.     AX = C000h
  2388. Return: AL = FFh if installed
  2389.         ES = segment of resident code
  2390. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  2391.       with 3-mode floppy drives to read Wang document diskettes
  2392. Note:    AH=C0h is the default; WANG_ER scans all multiplex numbers from C0h to
  2393.       FFh for a free spot on installation.    The installation check is
  2394.       completed by comparing the resident code with the copy in the
  2395.       transient program
  2396. ----------2FC000-----------------------------
  2397. INT 2F - ASPIHOOK.SYS - INSTALLATION CHECK
  2398.     AX = C000h
  2399. Return: AL = FFh if multiplex number in use
  2400.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  2401. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  2402.       ASPI host manager; it is part of the Personal Measure system
  2403.       activity monitor from Spirit of Performance, Inc.
  2404. Note:    AH=C0h is the default; ASPIHOOK searches for a free multiplex number
  2405.       between C0h and FFh on which to install itself
  2406. --------M-2FC001-----------------------------
  2407. INT 2F - QMR - REQUEST HARDWARE RESET
  2408.     AX = C001h
  2409. Return: ES = QMR code segment
  2410.     AL destroyed
  2411. Desc:    this function is used to force a full mouse reset when QMR is installed
  2412. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2413. --------V-2FC001ES0000-----------------------
  2414. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  2415.     AX = C001h
  2416.     ES = 0000h
  2417. Return: AL = 00h if successful
  2418.         ES = AD-DOS TSR Code Segment
  2419. SeeAlso: AX=C000h"AD-DOS"
  2420. Index:    screen saver;AD-DOS
  2421. --------V-2FC002-----------------------------
  2422. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  2423.     AX = C002h
  2424. Return: AL = 00h if successful
  2425.         BX = status
  2426.         0000h no input since last check
  2427.         0001h new input available
  2428. Note:    this call also resets the new-input flag
  2429. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2430. Index:    screen saver;AD-DOS
  2431. --------M-2FC002-----------------------------
  2432. INT 2F - QMR - DISABLE QMR
  2433.     AX = C002h
  2434. Return: ES = QMR code segment
  2435.     AL destroyed
  2436. Desc:    this call temporarily disables QMR
  2437. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  2438. --------V-2FC003-----------------------------
  2439. INT 2F - AD-DOS - SET MINUTES TO WAIT
  2440.     AX = C003h
  2441.     BX = minutes to wait before blanking screen
  2442. Return: AL = 00h if successful
  2443. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2444.       MS Windows
  2445. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2446.       After Dark will try successive values up to AH=FFh
  2447.     this call also resets the delay timer
  2448. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2449. Index:    screen saver;AD-DOS
  2450. --------M-2FC003-----------------------------
  2451. INT 2F - QMR - ENABLE QMR
  2452.     AX = C003h
  2453. Return: ES = QMR code segment
  2454.     AL destroyed
  2455. Desc:    this call enables QMR after it has been disabled
  2456. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2457. --------V-2FC004-----------------------------
  2458. INT 2F - AD-DOS - GET MINUTES TO WAIT
  2459.     AX = C004h
  2460. Return: AL = 00h if successful
  2461.         BX = minutes to wait before blanking screen
  2462. SeeAlso: AX=C000h"AD-DOS",AX=C003h
  2463. Index:    screen saver;AD-DOS
  2464. --------V-2FC005-----------------------------
  2465. INT 2F - AD-DOS - SET BLANKER STATUS
  2466.     AX = C005h
  2467.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  2468. Return: AL = 00h if successful
  2469. SeeAlso: AX=C006h
  2470. Index:    screen saver;AD-DOS
  2471. --------V-2FC006-----------------------------
  2472. INT 2F - AD-DOS - GET BLANKER STATUS
  2473.     AX = C006h
  2474. Return: AL = 00h if successful
  2475.         BX = current state of screen blanker (0000h inactive, 0001h active)
  2476. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2477.       MS Windows
  2478. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2479.       After Dark will try successive values up to AH=FFh
  2480. SeeAlso: AX=C000h"AD-DOS",AX=C005h
  2481. Index:    screen saver;AD-DOS
  2482. --------V-2FC007-----------------------------
  2483. INT 2F - AD-DOS - SET HOT KEY
  2484.     AX = C007h
  2485.     BX = hot key
  2486.     CL = hot key shift status
  2487. Return: AL = 00h if successful
  2488. SeeAlso: AX=C008h
  2489. Index:    screen saver;AD-DOS
  2490. --------V-2FC008-----------------------------
  2491. INT 2F - AD-DOS - GET CURRENT HOT KEY
  2492.     AX = C008h
  2493. Return: AX = status
  2494.         0000h successful
  2495.         BX = Hot Key
  2496.         CL = Hot Key Shift Status
  2497.         0008h otherwise
  2498. SeeAlso: AX=C000h"AD-DOS",AX=C007h
  2499. Index:    screen saver;AD-DOS
  2500. --------V-2FC009-----------------------------
  2501. INT 2F - AD-DOS - UNBLANK MONITOR
  2502.     AX = C009h
  2503. Return: AL = 00h if successful
  2504. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2505.       MS Windows
  2506. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2507.       After Dark will try successive values up to AH=FFh
  2508.     this function works by simulating keyboard activity
  2509. Index:    screen saver;AD-DOS
  2510. --------V-2FC00A-----------------------------
  2511. INT 2F - AD-DOS - ???
  2512.     AX = C00Ah
  2513. Return: AX = status
  2514.         0000h successful
  2515.         BH = ??
  2516.         BL = ??
  2517.         000Ah failed
  2518. Index:    screen saver;AD-DOS
  2519. --------V-2FC00B-----------------------------
  2520. INT 2F - AD-DOS - ???
  2521.     AX = C00Bh
  2522. Return: AX = status
  2523.         0000h successful
  2524.         000Bh failed
  2525. Index:    screen saver;AD-DOS
  2526. --------V-2FC00C-----------------------------
  2527. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  2528.     AX = C00Ch
  2529. Return: AX = status
  2530.         0000h successful
  2531.         000Ch failed
  2532. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2533.       MS Windows
  2534. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2535.       After Dark will try successive values up to AH=FFh
  2536. Index:    screen saver;AD-DOS
  2537. --------V-2FC00E-----------------------------
  2538. INT 2F - AD-DOS - SET PASSWORD STATUS
  2539.     AX = C00Eh
  2540.     BX = new state (0000h disabled, 0001h enabled)
  2541. Return: ???
  2542. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh
  2543. Index:    screen saver;AD-DOS
  2544. --------V-2FC00F-----------------------------
  2545. INT 2F - AD-DOS - GET PASSWORD STATUS
  2546.     AX = C00Fh
  2547. Return: BX = current state (0000h disabled, 0001h enabled)
  2548. SeeAlso: AX=C00Eh
  2549. Index:    screen saver;AD-DOS
  2550. --------V-2FC020-----------------------------
  2551. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  2552.     AX = C020h
  2553. Return: AL = 00h if successful
  2554.         BX = VxD API Status
  2555.         0000h no error
  2556.         0001h error
  2557.         0100h neither Windows 3.X enhanced mode nor
  2558.             Windows/386 2.x is running
  2559.         0200h VM API entry point not found (VxD not installed)
  2560. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2561.       After Dark will try successive values up to AH=FFh
  2562.     this call resets the VxD API Status to zero
  2563. SeeAlso: AX=1602h,AX=1607h
  2564. Index:    screen saver;AD-DOS
  2565. --------V-2FC050-----------------------------
  2566. INT 2F U - Explosiv 2.00 - INSTALLATION CHECK
  2567.     AX = C050h
  2568. Return: AL = 51h if installed
  2569. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  2570.       by Reidar Gresseth and Chris Hook
  2571. Note:    AH=C0h is the default multiplex number, but may be reconfigured to
  2572.       any value from C0h to C9h
  2573. SeeAlso: AX=C052h
  2574. Index:    screen saver;Explosiv
  2575. --------V-2FC052-----------------------------
  2576. INT 2F U - Explosiv 2.00 - UNINSTALL
  2577.     AX = C052h
  2578.     DX:BX = address to return to on successful uninstall
  2579. Return: at specified address if successful
  2580.     AL = 53h on error
  2581. Note:    specified return address must have the segment of the caller's PSP
  2582. SeeAlso: AX=C050h
  2583. Index:    screen saver;Explosiv
  2584. --------V-2FC054-----------------------------
  2585. INT 2F U - Explosiv 2.00 - GET ???
  2586.     AX = C054h
  2587. Return: AL = ???
  2588. Note:    returns value set by AX=C057h
  2589. SeeAlso: AX=C057h
  2590. Index:    screen saver;Explosiv
  2591. --------V-2FC055-----------------------------
  2592. INT 2F U - Explosiv 2.00 - SET BLANKING INTERVAL
  2593.     AX = C055h
  2594.     BX = new interval in clock ticks
  2595. Index:    screen saver;Explosiv
  2596. --------V-2FC056-----------------------------
  2597. INT 2F U - Explosiv 2.00 - SET ???
  2598.     AX = C056h
  2599.     BL = ???
  2600. Index:    screen saver;Explosiv
  2601. --------V-2FC057-----------------------------
  2602. INT 2F U - Explosiv 2.00 - SET ???
  2603.     AX = C057h
  2604.     BL = ???
  2605. SeeAlso: AX=C054h
  2606. Index:    screen saver;Explosiv
  2607. --------V-2FC058-----------------------------
  2608. INT 2F U - Explosiv 2.00 - SET ???
  2609.     AX = C058h
  2610.     BL = ???
  2611. Index:    screen saver;Explosiv
  2612. --------V-2FC059-----------------------------
  2613. INT 2F U - Explosiv 2.00 - CLEAR ???
  2614.     AX = C059h
  2615. Note:    clears flag set by AX=C05Ah
  2616. SeeAlso: AX=C05Ah
  2617. Index:    screen saver;Explosiv
  2618. --------V-2FC05A-----------------------------
  2619. INT 2F U - Explosiv 2.00 - SET ???
  2620.     AX = C05Ah
  2621.     BL = ???
  2622. Note:    sets flag cleared by AX=C059h then stores BL
  2623. SeeAlso: AX=C059h,AX=C05Bh
  2624. Index:    screen saver;Explosiv
  2625. --------V-2FC05B-----------------------------
  2626. INT 2F U - Explosiv 2.00 - SET ???
  2627.     AX = C05Bh
  2628.     BL = ???
  2629. SeeAlso: AX=C05Ah,AX=C05Ch
  2630. Index:    screen saver;Explosiv
  2631. --------V-2FC05C-----------------------------
  2632. INT 2F U - Explosiv 2.00 - SET ???
  2633.     AX = C05Ch
  2634.     BL = ???
  2635. SeeAlso: AX=C05Bh
  2636. Index:    screen saver;Explosiv
  2637. --------d-2FC300DX0000-----------------------
  2638. INT 2F U - SpaceManager - INSTALLATION CHECK
  2639.     AX = C300h
  2640.     DX = 0000h
  2641. Return: AL = FFh if any SpaceManager programs installed
  2642.         BX = 6F73h
  2643.         CX = 6F68h
  2644. Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
  2645.       Systems, Inc.
  2646. Note:    AH=C3h is the default; SpaceManager programs scan from C3h to FFh for
  2647.       a free multiplex number
  2648. SeeAlso: AX=C300h/DX=0666h
  2649. --------d-2FC300DX0666-----------------------
  2650. INT 2F U - SpaceManager - INSTALLATION VERIFICATION
  2651.     AX = C300h
  2652.     DX = 0666h for any SpaceManager prog or program identifier (see below)
  2653.     BX = 4F53h
  2654.     CX = 4F48h
  2655. Return: AL = FFh if BX/CX as specified and specified program installed
  2656.         BX = 6F73h
  2657.         CX = 6F68h
  2658. Notes:    AH=C3h is the default; SpaceManager programs scan from C3h to FFh for
  2659.       a free multiplex number
  2660.     this call is chained if BX,CX, or DX are not as specified above
  2661. SeeAlso: AX=C300h/DX=0000h
  2662.  
  2663. Values for SpaceManager program identifier:
  2664.  9000h    SMOUNT (SuperMount)
  2665.  9001h    SELECTC (SelectCompress)
  2666.  9002h    SUPERX (SuperExchange)
  2667.  9003h    FORTUNE (FortuneTeller)
  2668. --------d-2FC301DX9003-----------------------
  2669. INT 2F U - SpaceManager - ???
  2670.     AX = C301h
  2671.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  2672.     ???
  2673. Return: ???
  2674. --------d-2FC302DX9003-----------------------
  2675. INT 2F U - SpaceManager - ENABLE PROGRAM
  2676.     AX = C302h
  2677.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  2678. Return: AX destroyed
  2679. SeeAlso: AX=C303h,AX=C306h
  2680. --------d-2FC303DX9003-----------------------
  2681. INT 2F U - SpaceManager - DISABLE PROGRAM
  2682.     AX = C303h
  2683.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  2684. Return: AX destroyed
  2685. SeeAlso: AX=C302h,AX=C306h
  2686. --------d-2FC304DX9003-----------------------
  2687. INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
  2688.     AX = C304h
  2689.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  2690. Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
  2691.     AX destroyed
  2692. --------d-2FC305DX9003-----------------------
  2693. INT 2F U - SpaceManager - FORTUNE.EXE - NOP
  2694.     AX = C305h
  2695.     DX = 9003h
  2696. Return: AX destroyed
  2697. --------d-2FC305-----------------------------
  2698. INT 2F U - SpaceManager - ???
  2699.     AX = C305h
  2700.     DX = program identifier (9000h,9001h) (see AX=C300h)
  2701.     ???
  2702. Return: ???
  2703. --------d-2FC306DX9003-----------------------
  2704. INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
  2705.     AX = C306h
  2706.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  2707. Return: AL = current state (00h disabled, FAh enabled)
  2708.     AH destroyed
  2709. SeeAlso: AX=C302h,AX=C303h
  2710. --------d-2FC307DX9001-----------------------
  2711. INT 2F U - SpaceManager - SELECTC - ???
  2712.     AX = C307h
  2713.     DX = 9001h
  2714.     BX = ???
  2715.     CX = ???
  2716.     ???
  2717. Return: ???
  2718. --------d-2FC308DX9001-----------------------
  2719. INT 2F U - SpaceManager - SELECTC - ???
  2720.     AX = C308h
  2721.     DX = 9001h
  2722.     ???
  2723. Return: ???
  2724. --------d-2FC64CBX5553-----------------------
  2725. INT 2F U - Smart Prompt - INSTALLATION CHECK
  2726.     AX = C64Ch
  2727.     BX = 5553h
  2728. Return: AX = 4CC6h if installed
  2729.     BX = 5355h if installed
  2730. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which forces
  2731.       an immediate flush of SmartDrive's (and compatible caches') buffers
  2732.       on returning to the DOS prompt
  2733. --------v-2FC900BP0000-----------------------
  2734. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  2735.     AX = C900h
  2736.     BP = 0000h
  2737. Return: AL = FFh if installed
  2738.         BP >= 0014h
  2739. Note:    called by TBSCANX
  2740. SeeAlso: AX=C987h,AX=CA00h
  2741. --------v-2FC987-----------------------------
  2742. INT 2F U - ThunderByte??? - DISINFECT FILE???
  2743.     AX = C987h
  2744.     BX:DX -> filename
  2745.     BX:CX -> virus name
  2746. Return: AX = status
  2747.         0000h successful???
  2748. Note:    called by TBSCANX
  2749. SeeAlso: AX=CA00h
  2750. ----------2FC9FF-----------------------------
  2751. INT 2F C - StackMan - INSTALLATION BROADCAST
  2752.     AX = C9FFh
  2753.     BL = BCD version number
  2754.     CX = number of stacks
  2755.     DX = stack size in bytes
  2756. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  2757.       which functions as a replacement for the DOS STACK= command as well
  2758.       as permitting multiple TSRs to share a pool of stack space
  2759. Notes:    called by StackMan when it goes resident to inform interested TSRs that
  2760.       its API is available
  2761.     the installation check consists of testing for the string "STACKXXX" at
  2762.       offset 0Ah from the INT B4 handler
  2763. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  2764. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  2765. ----------2FCA-------------------------------
  2766. INT 2F - FAXPLUS - FAX TSR
  2767.     AH = CAh
  2768.     ???
  2769. Return: ???
  2770. Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
  2771.       Veldman
  2772. SeeAlso: AH=2Ah"Gammafax"
  2773. --------v-2FCA00BX5442-----------------------
  2774. INT 2F - TBSCANX - INSTALLATION CHECK
  2775.     AX = CA00h
  2776.     BX = 5442h ('TB')
  2777. Return: AL = 00h not installed
  2778.        = FFh installed
  2779.         BX = 7462h ('tb') if BX was 5442h on entry
  2780. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  2781. Note:    programs may perform virus checks on themselves, other program files,
  2782.       or their data files by invoking the TBSCANX API.
  2783. SeeAlso: AX=4653h,AX=C900h
  2784. --------v-2FCA01-----------------------------
  2785. INT 2F - TBSCANX - GET STATUS
  2786.     AX = CA01h
  2787. Return: AH = BCD version number (v2.2+)
  2788.        = CAh for versions before 2.2
  2789.     AL = state (00h = disabled, 01h = enabled)
  2790.     CX = number of signatures which will be searched
  2791. ---v2.0---
  2792.     BX = EMS handle, 0000h if not using EMS
  2793. ---v2.3+---
  2794.     BX = segment of swap area, 0000h if not swapped
  2795.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  2796. SeeAlso: AX=CA02h
  2797. --------v-2FCA02-----------------------------
  2798. INT 2F - TBSCANX - SET STATE
  2799.     AX = CA02h
  2800.     BL = new state (00h = disabled, 01h = enabled)
  2801. SeeAlso: AX=CA01h
  2802. --------v-2FCA03-----------------------------
  2803. INT 2F - TBSCANX - SCAN BUFFER
  2804.     AX = CA03h
  2805.     CX = size of buffer
  2806.     DS:DX -> buffer containing data to scan
  2807. Return: CF clear if no virus signatures found
  2808.         BX,ES destroyed
  2809.     CF set if signature found
  2810.         ES:BX -> ASCIZ virus name (v2.3+)
  2811.         DS:DX -> ASCIZ virus name (v2.0)
  2812.     AX,CX,DX destroyed (v2.3+)
  2813.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  2814. SeeAlso: AX=CA04h
  2815. --------v-2FCA04-----------------------------
  2816. INT 2F - TBSCANX - SCAN FILE
  2817.     AX = CA04h
  2818.     DS:DX -> filename
  2819. Return: CF clear if no virus signatures found
  2820.         BX,ES destroyed
  2821.     CF set if signature found
  2822.         ES:BX -> ASCIZ virus name
  2823.     AX,CX,DX destroyed
  2824. Note:    this function requires at least 4K free memory
  2825. SeeAlso: AX=CA03h
  2826. --------U-2FCAFEBX0000-----------------------
  2827. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  2828.     AX = CAFEh
  2829.     BX = 0000h
  2830. Return: BX = segment of resident code if installed
  2831.        = 0000h if not installed
  2832. SeeAlso: AX=5453h,INT 2D"AMIS"
  2833. --------F-2FCB00-----------------------------
  2834. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  2835.     AX = CB00h
  2836. Return: AL = status
  2837.         00h not installed, OK to install
  2838.         01h not installed, not OK to install
  2839.         FFh installed
  2840. Note:    AH = CBh is the default identifier, but may be reconfigured
  2841. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
  2842. --------F-2FCB00BX4D53-----------------------
  2843. INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
  2844.     AX = CB00h
  2845.     BX = 4D53h
  2846.     CX = 4949h
  2847. Return: AL = status
  2848.         00h not installed, OK to install
  2849.         01h not installed, not OK to install
  2850.         FFh installed
  2851.         BX = 6D73h
  2852.         CX = 6969h
  2853. Note:    this function is equivalent to the standard CASMGR installation check,
  2854.       but uses the additional magic values to identify which CAS is
  2855.       installed
  2856. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h"MTEZ",AX=CB0Eh,AX=CB16h
  2857. --------F-2FCB01-----------------------------
  2858. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  2859.     AX = CB01h
  2860.     DS:DX -> ASCIZ name of task control file
  2861. Return: AX >= 0: event handle
  2862.        < 0: error code
  2863. Note:    files needed for an event must be kept until task is complete or error
  2864. SeeAlso: AX=CB0Bh,AX=CB15h
  2865.  
  2866. Error codes (AH = class, AL = subcode, value passed back is 2's complement):
  2867.   Class 00h    --- FAX warnings
  2868.     Subcode 00h    no error
  2869.         02h    bad scanline count
  2870.         03h    page sent with errors, could not retransmit
  2871.         04h    received data lost
  2872.         05h    invalid or missing logo file
  2873.         06h    filename does not match nonstandard format (NSF) header
  2874.         07h    file size does not match NSF header
  2875.   Class 01h    --- DOS warnings (data was sent)
  2876.     Subcode 01h    invalid function
  2877.         05h    access denied
  2878.         06h    invalid handle
  2879.         others    see INT 21/AH=59h
  2880.   Class 02h    --- fatal errors (data not sent)
  2881.     Subcode 00h    multiplex handler failed
  2882.         01h    unknown command
  2883.         02h    bad event handle
  2884.         03h    FIND NEXT attempted before FIND FIRST
  2885.         04h    no more events
  2886.         07h    invalid queue type
  2887.         08h    bad control file
  2888.         09h    communication board busy
  2889.         0Ah    invalid command parameter
  2890.         0Bh    can't uninstall resident code
  2891.         0Ch    file exists
  2892.         80h    unknown task type
  2893.         81h    bad phone number
  2894.         82h    bad .PCX file header
  2895.         83h    unexpected EOF
  2896.         84h    unexpected disconnect
  2897.         85h    too many dialing retries
  2898.         86h    no file specified for send
  2899.         87h    communication board timeout
  2900.         88h    received too many pages (>1023) of data
  2901.         89h    manual connect initiated too long ago
  2902.         8Ah    hardware command set error
  2903.         8Bh    bad NonStandard Format (NSF) header file
  2904.   Class 03h    --- fatal DOS errors
  2905.     Subcode 02h    file not found
  2906.         03h    path not found
  2907.         others    see INT 21/AH=59h
  2908.   Class 04h    --- FAX errors
  2909.     Subcode 01h    remote unit not Group 3 compatible
  2910.         02h    remote unit did not send capabilities
  2911.         03h    other FAX machine incompatible
  2912.         04h    other FAX incapable of file transfers
  2913.         05h    exceeded retrain or FAX resend limit
  2914.         06h    line noise or failure to agree on bit rate
  2915.         07h    remote disconnected after receiving data
  2916.         08h    no response from remote after sending data
  2917.         09h    remote's capabilities incompatible
  2918.         0Ah    no dial tone (v1.2+)
  2919.         0Bh    invalid response from remote unit after sending data
  2920.         0Dh    phone line dead or remote unit disconnected
  2921.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  2922.         11h    invalid command from remote after receiving data
  2923.         15h    tried to receive from incompatible hardware
  2924.         5Ch    received data overflowed input buffer
  2925.         5Dh    remote unexpectedly stopped sending data
  2926.         5Eh    other FAX machine jammed (no data sent)
  2927.         5Fh    remote took too long to send fax scan line
  2928.         63h    can't get through to remote unit
  2929.         64h    user canceled event
  2930.   Class 05h    --- application-specific (v1.2+)
  2931.   ---Intel FAXPOP.EXE
  2932.     Subcode 00h    tried to send while in graphics mode
  2933.         01h    insufficient disk space
  2934.         02h    internal buffer overflow
  2935.   Class 06h    --- CAS implementation-specific (v1.2+)
  2936. --------F-2FCB02-----------------------------
  2937. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  2938.     AX = CB02h
  2939. Return: AX >= 0: event handle of aborted event
  2940.        < 0: error code (see AX=CB01h)
  2941. Note:    termination could take up to 30 seconds
  2942. SeeAlso: AX=CB08h,AX=CB10h
  2943. --------F-2FCB05-----------------------------
  2944. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  2945.     AX = CB05h
  2946.     CX = status of events to find
  2947.         0000h successful completion
  2948.         0001h waiting to be processed
  2949.         0002h number has been dialed
  2950.         0003h connection established, sending
  2951.         0004h connection established, receiving
  2952.         0005h event aborted
  2953.         FFFFh find any event, regardless of status
  2954.         other negative values, match error code
  2955.     DH = direction
  2956.         00h chronological order, earliest to latest
  2957.         01h reverse chronological order, latest to earliest
  2958.     DL = queue to search
  2959.         00h task queue
  2960.         01h receive queue
  2961.         02h log queue
  2962. Return: AX = 0000h successful
  2963.         BX = event handle for found event
  2964.        < 0       error code (see AX=CB01h)
  2965. SeeAlso: AX=CB06h,AX=CB07h
  2966. --------F-2FCB06-----------------------------
  2967. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  2968.     AX = CB06h
  2969.     DL = queue to search
  2970.         00h task queue
  2971.         01h receive queue
  2972.         02h log queue
  2973. Return: AX = 0000h successful
  2974.         BX = event handle for found event
  2975.        < 0       error code (see AX=CB01h)
  2976. Note:    direction of search is same as preceding FIND FIRST call
  2977. SeeAlso: AX=CB05h
  2978. --------F-2FCB07-----------------------------
  2979. INT 2F - Communicating Applications Specification - OPEN FILE
  2980.     AX = CB07h
  2981.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  2982.     CX = receive file number (ignored for task queue and log queue)
  2983.         0000h  open receive control file
  2984.         N       open Nth received data file
  2985.     DL = queue
  2986.         00h task queue
  2987.         01h receive queue control file or received file, as given by CX
  2988.         02h log queue
  2989.         03h group file in task queue (v1.2+)
  2990.         04h group file in log queue (v1.2+)
  2991. Return: AX = 0000h successful
  2992.         BX = DOS file handle for requested file
  2993.        < 0       error code (see AX=CB01h)
  2994. Note:    the returned file handle has been opened in read-only mode and should
  2995.       be closed with INT 21/AH=3Eh after use
  2996. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  2997. --------F-2FCB08-----------------------------
  2998. INT 2F - Communicating Applications Specification - DELETE FILE
  2999.     AX = CB08h
  3000.     BX = event handle
  3001.     CX = receive file number
  3002.         0000h delete ALL received files and receive control file
  3003.         N      delete Nth received file
  3004.     DL = queue
  3005.         00h delete control file in task queue and corresponding group file
  3006.         if it exists
  3007.         01h delete file in receive queue, as given by CX
  3008.         02h delete control file in log queue (individual deletions not
  3009.         recommended, to maintain integrity of log) and corresponding
  3010.         group file if it exists
  3011. Return: AX = 0000h successful
  3012.        < 0       error code (see AX=CB01h)\
  3013. SeeAlso: AX=CB02h,AX=CB09h
  3014. --------F-2FCB09-----------------------------
  3015. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  3016.     AX = CB09h
  3017.     DL = queue
  3018.         00h delete all control files in task queue, including all group
  3019.         files
  3020.         01h delete all files in receive queue
  3021.         02h delete all control files in log queue, including all group
  3022.         files
  3023. Return: AX = 0000h successful
  3024.        < 0       error code (see AX=CB01h)
  3025. SeeAlso: AX=CB08h
  3026. --------F-2FCB0A-----------------------------
  3027. INT 2F - Communicating Applications Specification - GET EVENT DATE
  3028.     AX = CB0Ah
  3029.     BX = event handle
  3030.     DL = queue
  3031.         00h task queue
  3032.         01h receive queue
  3033.         02h log queue
  3034. Return: AX = 0000h successful
  3035.         CX = year
  3036.         DH = month
  3037.         DL = day
  3038.        < 0       error code (see AX=CB01h)
  3039. SeeAlso: AX=CB0Bh,AX=CB0Ch
  3040. --------F-2FCB0B-----------------------------
  3041. INT 2F - Communicating Applications Specification - SET TASK DATE
  3042.     AX = CB0Bh
  3043.     BX = event handle (task event only)
  3044.     CX = year
  3045.     DH = month
  3046.     DL = day
  3047. Return: AX = 0000h successful
  3048.        < 0       error code (see AX=CB01h)
  3049. Note:    setting a task's date and time to before the current date and time
  3050.       causes it to execute immediately
  3051. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  3052. --------F-2FCB0C-----------------------------
  3053. INT 2F - Communicating Applications Specification - GET EVENT TIME
  3054.     AX = CB0Ch
  3055.     BX = event handle
  3056.     DL = queue
  3057.         00h task queue
  3058.         01h receive queue
  3059.         02h log queue
  3060. Return: AX = 0000h successful
  3061.         CH = hour
  3062.         CL = minute
  3063.         DH = second
  3064.         DL = 00h
  3065.        < 0       error code (see AX=CB01h)
  3066. SeeAlso: AX=CB0Ah,AX=CB0Dh
  3067. --------F-2FCB0D-----------------------------
  3068. INT 2F - Communicating Applications Specification - SET TASK TIME
  3069.     AX = CB0Dh
  3070.     BX = event handle (task events only)
  3071.     CH = hour
  3072.     CL = minute
  3073.     DH = second
  3074.     DL unused
  3075. Return: AX = 0000h successful
  3076.        < 0       error code (see AX=CB01h)
  3077. Note:    setting a task's date and time to before the current date and time
  3078.       causes it to execute immediately
  3079. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  3080. --------F-2FCB0E-----------------------------
  3081. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  3082.     AX = CB0Eh
  3083.     DS:DX -> 256-byte buffer
  3084. Return: AX = 0000h successful
  3085.         buffer filled
  3086.        < 0       error code (see AX=CB01h)
  3087.  
  3088. Format of external data block:
  3089. Offset    Size    Description
  3090.  00h    BYTE    CAS major version
  3091.  01h    BYTE    CAS minor version
  3092.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  3093.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  3094.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  3095.  60h 32 BYTEs    ASCIZ default sender name
  3096.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  3097.  95h 107 BYTEs    reserved
  3098. --------F-2FCB0F-----------------------------
  3099. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  3100.     AX = CB0Fh
  3101.     DL = subfunction
  3102.         00h get current autoreceive state
  3103.         01h set autoreceive state
  3104.         DH = number of rings before answer, 00h = never
  3105. Return: AX = 0000h autoreceive disabled
  3106.        = N       number of rings before answer
  3107.        < 0       error code (see AX=CB01h)
  3108. --------F-2FCB10-----------------------------
  3109. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  3110.     AX = CB10h
  3111.     DS:DX -> 512-byte buffer
  3112. Return: AX = 0000h successful
  3113.         BX = event handle of current event or negative error code if
  3114.             no current event
  3115.         buffer filled
  3116.        < 0       error code (see AX=CB01h)
  3117. SeeAlso: AX=CB02h,AX=CB0Dh
  3118.  
  3119. Format of status area:
  3120. Offset    Size    Description
  3121.  00h    BYTE    event type
  3122.         00h send
  3123.         01h receive
  3124.         02h polled send
  3125.         03h polled receive
  3126.         04h to 7Fh reserved
  3127.         FFh serious hardware error
  3128.  01h    BYTE    transfer type
  3129.         00h 200x200 dpi, FAX mode
  3130.         01h 100x200 dpi, FAX mode
  3131.         02h file transfer mode
  3132.         03h to 7Fh reserved
  3133.  02h    WORD    event status
  3134.         0000h completed successfully
  3135.         0001h waiting
  3136.         0002h number dialed
  3137.         0003h connected, sending
  3138.         0004h connected, receiving
  3139.         0005h aborted
  3140.         0006h to 007Fh reserved
  3141.         0080h to 7FFFh application-specific events
  3142.         8000h to FFFFh error codes
  3143.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  3144.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  3145.  08h    WORD    number of files to transfer, max 7FFFh
  3146.  0Ah    WORD    offset of file transfer record
  3147.  0Ch 47 BYTEs    ASCIZ phone number to call
  3148.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  3149.  7Bh    BYTE    reserved (00h)
  3150.  7Ch    BYTE    connect time, seconds
  3151.  7Dh    BYTE    connect time, minutes
  3152.  7Eh    BYTE    connect time, hours
  3153.  7Fh    DWORD    total number of pages in all files
  3154.  83h    DWORD    pages already transmitted
  3155.  87h    WORD    number of files already transmitted
  3156.  89h    BYTE    cover page flag
  3157.         00h don't transmit cover page
  3158.         01h transmit cover page
  3159.         02h to 7Fh reserved
  3160.  8Ah    WORD    total number of transmission errors
  3161.  8Ch 78 BYTEs    reserved (zeros)
  3162.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  3163.  EFH 32 BYTEs    ASCIZ destination name
  3164. 10Fh 32 BYTEs    ASCIZ sender name
  3165. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  3166. 17Fh 128 BYTEs    file transfer record for current event (see below)
  3167.  
  3168. Format of file transfer record:
  3169. Offset    Size    Description
  3170.  00h    BYTE    file type (ignored unless FAX)
  3171.         00h ASCII
  3172.         01h PCX
  3173.         02h DCX
  3174.         03h to 7Fh reserved
  3175.  01h    BYTE    text size for ASCII FAX file
  3176.         00h = 80 columns by 66 lines (11 inches)
  3177.         01h = 132 columns by 88 lines (11 inches)
  3178.         02h to 7Fh reserved
  3179.  02h    BYTE    status of file
  3180.         00h untouched
  3181.         01h opened
  3182.         02h moved
  3183.         03h deleted
  3184.         04h not yet received
  3185.         05h to 7Fh reserved
  3186.  03h    DWORD    bytes already transmitted
  3187.  07h    DWORD    file size in bytes
  3188.  0Bh    WORD    pages alread transmitted
  3189.  0Dh    WORD    number of pages in file
  3190.  0Fh 80 BYTEs    ASCIZ filename
  3191.  5Fh    BYTE    1/8 inch page length
  3192.         if page length below set to 01h through 7Fh, this value
  3193.         specifies additional 1/8 inch increments to page length
  3194.  60h    BYTE    page length
  3195.         00h = 11 inches
  3196.         01h to 7Fh = page length is this number of inches plus value of
  3197.             1/8 inch field above
  3198.         80h to FEh reserved
  3199.         FFh = ASCII pages ending with formfeed
  3200.  61h 31 BYTEs    reserved (zeros)
  3201. --------F-2FCB11-----------------------------
  3202. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  3203.     AX = CB11h
  3204.     DL = queue to get status of
  3205.         00h task queue
  3206.         01h receive queue
  3207.         02h log queue
  3208.         03h send events (v1.2+)
  3209.         04h receive events (v1.2+)
  3210. Return: AX >= 0     total number of changes made to queue, modulo 32768
  3211.         BX = number of control files currently in queue
  3212.         CX = number of received files (zero for task and log queues)
  3213.     AX < 0    error code (see AX=CB01h)
  3214. SeeAlso: AX=CB12h
  3215. --------F-2FCB11DL03-------------------------
  3216. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  3217.     AX = CB11h
  3218.     DL = 03h
  3219. Return: AX = number of successful sends since resident manager started
  3220.     BX = number of unsuccessful sends, including warnings
  3221. SeeAlso: AX=CB11h/DL=04h
  3222. --------F-2FCB11DL04-------------------------
  3223. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  3224.     AX = CB11h
  3225.     DL = 04h
  3226. Return: AX = number of received file events since resident manager started
  3227.     BX = number of received FAX events
  3228. SeeAlso: AX=CB11h/DL=03h
  3229. --------F-2FCB12-----------------------------
  3230. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  3231.     AX = CB12h
  3232.     DS:DX -> 128-byte status buffer (see below)
  3233. Return: AX = 0000h successful
  3234.         buffer filled with hardware-dependent status information
  3235.        < 0       error code (see AX=CB01h)
  3236. SeeAlso: AX=CB10h,AX=CB11h
  3237.  
  3238. Format of status buffer for Intel Connection CoProcessor:
  3239. Offset    Size    Description
  3240.  00h    BYTE    Connection CoProcessor connection status flags (see below)
  3241.  01h    BYTE    number of kilobytes of free buffer space
  3242.  02h    BYTE    page buffer status
  3243.         bit 7: Connection CoProcessor has documents to send
  3244.         bits 6-0: number of pages in buffer
  3245.  03h    BYTE    number of retries left for dialing number
  3246.  04h    BYTE    page number to retransmit
  3247.  05h    BYTE    communications status (see below)
  3248.  06h    BYTE    baud rate
  3249.         bit 7: reserved
  3250.         bits 6-4: baud rate
  3251.             000 = 300 baud    (V.21 SDLC or HDLC mode)
  3252.             100 = 2400 baud (V.27 ter)
  3253.             101 = 4800 baud (V.27 ter)
  3254.             110 = 7200 baud (V.29)
  3255.             111 = 9600 baud (V.29)
  3256.         bits 3-0: reserved, should be 0110
  3257.  07h  3 BYTEs    reserved
  3258.  0Ah    BYTE    Connection CoProcessor hardware status (see below)
  3259.  0Bh    BYTE    Connection CoProcessor switch states (see below)
  3260.  0Ch    BYTE    communications flags (see below)
  3261.  0Dh    BYTE    reserved
  3262.  0Eh    WORD    error count (only valid while busy, reset when idle)
  3263.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  3264.  14h    BYTE    'A' if Connection CoProcessor board present
  3265.  15h  9 BYTEs    reserved
  3266.  1Eh 21 BYTEs    ASCIZ CCITT identification
  3267.  33h 77 BYTEs    reserved
  3268. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3269.       by examining the byte at offset 14h
  3270.  
  3271. Format of status buffer for Intel SatisFAXtion board:
  3272. Offset    Size    Description
  3273.  00h    BYTE    SatisFAXtion connection status flags (see below)
  3274.  01h    BYTE    SatisFAXtion board state (see below)
  3275.  02h    BYTE    number of KB free in buffer
  3276.  03h    BYTE    number of pages or files in buffer
  3277.  04h    BYTE    number of redials remaining on current number
  3278.  05h    BYTE    FAX page number to retransmit
  3279.  06h    BYTE    current page/file in block transfer
  3280.  07h    BYTE    number of rings received (only if auto-answer enabled)
  3281.  08h    WORD    error count
  3282.  0Ah    DWORD    length of file being transferred
  3283.  0Eh  6 BYTEs    reserved
  3284.  14h    BYTE    'B' if SatisFAXtion board present
  3285.  15h 13 BYTEs    ASCIZ transfer agent name
  3286.  22h  5 BYTEs    ASCIZ transfer agent version number
  3287.  27h 13 BYTEs    ASCIZ resident loader name
  3288.  34h  5 BYTEs    ASCIZ resident loader version number
  3289.  39h 21 BYTEs    ASCIZ remote CSID
  3290.  4Eh 13 BYTEs    ASCIZ resident manager name
  3291.  5Bh  5 BYTEs    ASCIZ resident manager version number
  3292.  60h 32 BYTEs    reserved
  3293. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3294.       by examining the byte at offset 14h
  3295.  
  3296. Bitfields for Connection CoProcessor connection status flags:
  3297.  bit 7    hardware busy sending or receiving
  3298.  bit 6    last page of data
  3299.  bit 5    no data on current page
  3300.  bit 4    retransmit request for current page being transmitted
  3301.  bit 3    NSF (nonstandard file) mode active
  3302.  bits 2-0 reserved
  3303.  
  3304. Bitfields for communications status:
  3305.  bit 7    originating call
  3306.  bit 6    FAX message to be sent
  3307.  bit 5    on line
  3308.  bit 4    ring detected and receive enabled
  3309.  bit 3    buffer dumped on receive
  3310.  bits 2-0    hardware sequence state
  3311.         000 idle
  3312.         001 dial
  3313.         010 answer
  3314.         011 transmit
  3315.         100 receive
  3316.         101 pre-message
  3317.         110 post-message
  3318.         111 disconnect
  3319.  
  3320. Bitfields for Connection CoProcessor hardware status:
  3321.  bit 7    modem option installed
  3322.  bit 6    Connection CoProcessor has control of DAA (not latched)
  3323.  bit 5    on line (not latched)
  3324.  bit 4    ring detected (not latched)
  3325.  bit 3    data in command buffer (not latched)
  3326.  bit 2    set if using DMA channel 1, clear if using DMA channel 3
  3327.  bit 1    line length compensation bit 1 set (not latched)
  3328.  bit 0    line length compensation bit 0 set (not latched)
  3329.  
  3330. Bitfields for Connection CoProcessor switch states:
  3331.  bit 7: reserved
  3332.  bit 6: unused
  3333.  bit 5: spare switch open
  3334.  bit 4: FAX ADR1 switch open
  3335.  bit 3: FAX ADR0 switch open
  3336.  bit 2: alternate interrupt switch open
  3337.  bit 1: COM SEL 1 switch open
  3338.  bit 0: COM SEL 0 switch open
  3339. Note: valid combinations of bits 0-2 are
  3340.     000  COM2 IRQ3 IObase 2F8h
  3341.     001  COM1 IRQ4 IObase 3F8h
  3342.     010  COM4 IRQ3 IObase 2E8h
  3343.     011  COM3 IRQ4 IObase 3E8h
  3344.     110  COM4 IRQ2 IObase 2E8h
  3345.     111  COM3 IRQ5 IObase 3E8h
  3346.  
  3347. Bitfields for communications flags:
  3348.  bit 7    reserved
  3349.  bit 6    auxiliary relay forced ON
  3350.  bit 5    modem select relay forced ON
  3351.  bit 4    offhook relay forced ON
  3352.  bit 3    9600 bps enabled
  3353.  bit 2    7200 bps enabled
  3354.  bit 1    4800 bps enabled
  3355.  bit 0    2400 bps enabled
  3356.  
  3357. Bitfields for SatisFAXtion connection status flags:
  3358.  bit 7    busy in T.30 CCITT fax protocol
  3359.  bit 6    data on current page/file (only used for block xfers)
  3360.  bit 5    retransmission of last page requested
  3361.  bit 4    in file transfer mode
  3362.  bit 3    data in buffer
  3363.  bit 2    data buffer dumped on receive
  3364.  bit 1    200x100 dpi resolution instead of 200x200 dpi
  3365.  bit 0    data modem in use, FAX image modem not available
  3366.  
  3367. Bitfields for SatisFAXtion board state:
  3368.  bit 7    reserved
  3369.  bit 6    handset jack active, data and FAX modems not available
  3370.  bits 5-3  current bit rate
  3371.         000     300 bps (V.21 HDLC)
  3372.         100 2400 bps (V.27 ter)
  3373.         101 4800 bps (V.27 ter)
  3374.         110 7200 bps (V.29)
  3375.         111 9600 bps (V.29)
  3376.  bits 2-0  T.30 CCITT protocol state
  3377.         000 idle
  3378.         001 dialing
  3379.         010 answering
  3380.         011 transmitting
  3381.         100 receiving
  3382.         101 pre-message
  3383.         110 post-message
  3384.         111 disconnect
  3385. --------F-2FCB13DL00-------------------------
  3386. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  3387.     AX = CB13h
  3388.     DL = 00h
  3389. Return: AX = 0040h in progress
  3390.        >= 0       passed
  3391.        < 0       hardware-dependent failure code (see below)
  3392. SeeAlso: AX=CB13h/DL=01h
  3393.  
  3394. Intel Connection CoProcessor failure codes:
  3395.  bit 3    9600 bps FAX modem module failed
  3396.  bit 2    SDLC chip failed
  3397.  bit 1    RAM failed
  3398.  bit 0    ROM checksum failed
  3399.  
  3400. Intel SatisFAXtion failure codes:
  3401.  bit 1    2400 bps data modem failed
  3402.  bit 0    9600 bps FAX modem failed
  3403. --------F-2FCB13DL01-------------------------
  3404. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  3405.     AX = CB13h
  3406.     DL = 01h
  3407. Return: AX = 0000h successfully started
  3408.        < 0       error code (see AX=CB01h)
  3409. SeeAlso: AX=CB13h/DL=00h
  3410. --------F-2FCB14-----------------------------
  3411. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  3412.     AX = CB14h
  3413.     BX = event handle
  3414.     CX = receive file number
  3415.          0001h first received file
  3416.          N       Nth received file
  3417.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  3418. Return: AX = 0000h successful
  3419.        < 0       error code (see AX=CB01h)
  3420. --------F-2FCB15-----------------------------
  3421. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  3422.     AX = CB15h
  3423.     DS:DX -> variable-length data area (see below)
  3424. Return: AX >= 0 event handle
  3425.        < 0    error code (see AX=CB01h)
  3426. SeeAlso: AX=CB01h
  3427.  
  3428. Format of data area:
  3429. Offset    Size    Description
  3430.  00h    BYTE    transfer type
  3431.         00h = 200x200 dpi, fax mode
  3432.         01h = 100x200 dpi, fax mode
  3433.         02h = file transfer mode
  3434.         03h to 7Fh reserved
  3435.  01h    BYTE    text size
  3436.         00h = 80 columns
  3437.         01h = 132 columns
  3438.         02h to 7Fh reserved
  3439.  02h    WORD    time to send (DOS packed time format, see INT 21/AX=5700h)
  3440.  04h    WORD    date to send (DOS packed date format, see INT 21/AX=5700h)
  3441.  06h 32 BYTEs    ASCIZ destination name
  3442.  26h 80 BYTEs    ASCIZ name of file to send
  3443.  76h 47 BYTEs    ASCIZ phone number to dial
  3444.  A5h 64 BYTEs    ASCIZ application-specific tag string
  3445.  E5h    BYTE    reserved (00h)
  3446.  E6h    BYTE    cover page
  3447.         00h don't send cover page
  3448.         01h send cover page
  3449.         02h to 7Fh reserved
  3450.  E7h 23 BYTEs    reserved (zeros)
  3451.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  3452.         set to 01h)
  3453. --------F-2FCB16BX1234-----------------------
  3454. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  3455.     AX = CB16h
  3456.     BX = 1234h
  3457.     CX = 5678h
  3458.     DX = 9ABCh
  3459. Return: AX = 0000h successful
  3460.        < 0       error code
  3461. Note:    the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
  3462. SeeAlso: AX=C000h"MTEZ",AX=CB00h
  3463. Index:    uninstall;CAS Manager
  3464. --------F-2FCB17-----------------------------
  3465. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  3466.     AX = CB17h
  3467.     BX = event handle
  3468.     CL = cover page status
  3469.         00h not read
  3470.         01h read by user
  3471. Return: AX = 0000h successful
  3472.        < 0       error code
  3473. --------F-2FCB80-----------------------------
  3474. INT 2F - Intel SatisFAXtion CASMGR - ???
  3475.     AX = CB80h
  3476.     ???
  3477. Return: ???
  3478. --------F-2FCB81-----------------------------
  3479. INT 2F - Intel SatisFAXtion CASMGR - ???
  3480.     AX = CB81h
  3481.     ???
  3482. Return: ???
  3483. --------F-2FCB82-----------------------------
  3484. INT 2F - Intel SatisFAXtion CASMGR - ???
  3485.     AX = CB82h
  3486.     ???
  3487. Return: ???
  3488. --------F-2FCBDCBL56-------------------------
  3489. INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
  3490.     AX = CBDCh
  3491.     BL = 56h
  3492.     BH = line number (starts with 1)
  3493.     CX:DX -> 32-byte status buffer or 80 character string
  3494. Return: AX = number of cards installed, or FFFFh on error
  3495. Program: Comwave manufacturers the Microfax line of fax cards which are a high-
  3496.       performance multi-card FAX solution for OEMs.
  3497. Note:    defaults to AH=CBh but can be changed
  3498. SeeAlso: AX=CBDDh,AX=DA00h
  3499. --------F-2FCBDDBL56-------------------------
  3500. INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
  3501.     AX = CBDDh
  3502.     BL = 56h
  3503.     BH = ?
  3504.     CX:DX -> command to execute
  3505. Return: AX = status
  3506.         0000h success
  3507.         FFFFh on error
  3508. SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
  3509. --------c-2FCC--SI5453-----------------------
  3510. INT 2F U - PC-Kwik Programs - API
  3511.     AH = CCh
  3512.     SI = 5453h or 7473h
  3513.     AL = function number (at least 00h,01h,04h,05h,07h,80h)
  3514.     DL = program identifier
  3515.         00h all installed PowerPak programs
  3516.         01h SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
  3517.         02h PCKSPL (print spooler)
  3518.         04h PCKSCRN (screen accelerator)
  3519.         05h PCKKEY (keyboard enhancer)
  3520.         06h PCKRAMD (RAM disk)
  3521.         08h PCKWIK.SYS
  3522.         10h PCKCDROM (CD-ROM support for SUPERPCK)
  3523. Return: SI = 7473h
  3524.     other registers vary by function
  3525. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  3526.       thus supports this call
  3527. SeeAlso: INT 21/AH=2Bh/CX=4358h
  3528. ----------2FCD00-----------------------------
  3529. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  3530.     AX = CD00h
  3531. Return: AL = 00h not installed, OK to install
  3532.          01h not installed, not OK to install
  3533.          FFh installed
  3534. SeeAlso: AX=CD02h"Image"
  3535. --------P-2FCD00-----------------------------
  3536. INT 2F - LaserPort Interface - INSTALLATION CHECK
  3537.     AX = CD00h
  3538. Return: AL = status
  3539.         FFh installed
  3540. SeeAlso: AX=CD0Fh"LaserPort"
  3541. --------U-2FCD00-----------------------------
  3542. INT 2F - SWELL.EXE - INSTALLATION CHECK
  3543.     AX = CD00h
  3544. Return: AX = 00FFh installed
  3545.         BH = major version
  3546.         BL = minor version
  3547. Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
  3548.       process with INT 21/AH=4Bh
  3549. ----------2FCD01-----------------------------
  3550. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  3551.     AX = CD01h
  3552.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  3553. Return: AL = 00h successful
  3554.         CX:BX -> internal character device name
  3555.        = 80h error
  3556. --------U-2FCD01-----------------------------
  3557. INT 2F - SWELL.EXE - SUSPEND ONCE
  3558.     AX = CD01h
  3559. Return: AX = 0000h
  3560. SeeAlso: AX=CD02h"SWELL"
  3561. ----------2FCD02-----------------------------
  3562. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  3563.     AX = CD02h
  3564. Return: AL = 00h/01h successful
  3565.         BH = major version number (BCD)
  3566.         BL = minor version number (BCD)
  3567.        = 80h error
  3568. Note:    if return AL = 01h, the IPI supports network redirection
  3569. SeeAlso: AX=CD00h"Image"
  3570. --------U-2FCD02-----------------------------
  3571. INT 2F - SWELL.EXE - SUSPEND
  3572.     AX = CD02h
  3573. Return: AX = 0000h
  3574. SeeAlso: AX=CD03h"SWELL"
  3575. ----------2FCD03-----------------------------
  3576. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  3577.     AX = CD03h
  3578.     BX = scan line
  3579.     CX = requested density in dots per inch (300, 600, or 1200)
  3580. Return: AL = 00h successful
  3581.         CX = density at which scan line was mapped
  3582.         ES:DI -> start of scan line
  3583.     AL = 80h unsuccessful
  3584.        = 81h scan line out of range
  3585.        = 82h unsupported scan line density
  3586.        = 83h out of memory
  3587. SeeAlso: AX=CD04h"Image"
  3588. --------U-2FCD03-----------------------------
  3589. INT 2F - SWELL.EXE - ACTIVATE
  3590.     AX = CD03h
  3591. Return: AX = 0000h
  3592. SeeAlso: AX=CD02h"SWELL"
  3593. ----------2FCD04-----------------------------
  3594. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  3595.     AX = CD04h
  3596.     CX:BX -> structure (see below)
  3597. Return: AL = 00h successful
  3598.        = 80h unsuccessful
  3599.        = 81h scan line out of range
  3600.        = 82h unsupported scan line density
  3601.        = 83h out of memory
  3602.        = 84h unrecognized source
  3603.        = 85h initialization error
  3604. SeeAlso: AX=CD03h"Image"
  3605.  
  3606. Format of structure:
  3607. Offset    Size    Description
  3608.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  3609.  02h    DWORD    pointer to image data
  3610.  06h    WORD    scan line on which to place
  3611.  08h    WORD    bit offset from start of scan line at which to place
  3612.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  3613.  0Ch    WORD    width in bits of data
  3614.  0Eh    WORD    source logical page number
  3615.  10h    WORD    source handle (only if source in expanded memory)
  3616.  12h    WORD    source offset (only if source in expanded memory)
  3617. --------U-2FCD04-----------------------------
  3618. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  3619.     AX = CD04h
  3620. Return: AX = 0000h
  3621. SeeAlso: AX=CD05h"SWELL"
  3622. ----------2FCD05-----------------------------
  3623. INT 2F - Intel Image Processing Interface - PRINT PAGE
  3624.     AX = CD05h
  3625. Return: AL = 00h successful
  3626.        = 80h unsuccessful
  3627. Note:    page image is retained, so multiple calls will print multiple copies of
  3628.       the page
  3629. SeeAlso: AX=CD06h"Image"
  3630. --------U-2FCD05-----------------------------
  3631. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  3632.     AX = CD05h
  3633. Return: AX = 0000h
  3634. SeeAlso: AX=CD04h"SWELL"
  3635. ----------2FCD06-----------------------------
  3636. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  3637.     AX = CD06h
  3638. Return: AL = 00h successful
  3639.        = 80h unsuccessful
  3640. Note:    palette is reset to default
  3641. SeeAlso: AX=CD09h"Image"
  3642. --------U-2FCD06-----------------------------
  3643. INT 2F - SWELL.EXE - UNINSTALL
  3644.     AX = CD06h
  3645. Return: AX = 0000h uninstalled
  3646.        = 8002h programs still swapped, not uninstalled
  3647. ----------2FCD07-----------------------------
  3648. INT 2F - Intel Image Processing Interface - reserved
  3649.     AX = CD07h
  3650. --------U-2FCD07-----------------------------
  3651. INT 2F - SWELL.EXE - GET INFO
  3652.     AX = CD07h
  3653.     ES:BX -> 32-byte buffer for info
  3654. Return: AX = 0000h successful
  3655.         ES:BX buffer filled
  3656.        = 8001h buffer wrong size
  3657.  
  3658. Format of info buffer:
  3659. Offset    Size    Description
  3660.  00h    WORD    20h  (total size of buffer)
  3661.  02h    BYTE    suspend-once mode active if nonzero
  3662.  03h    BYTE    00h active, 01h suspended
  3663.  04h    BYTE    00h quiet, 01h verbose
  3664.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  3665.  06h 26 BYTEs    unused???
  3666. ----------2FCD08-----------------------------
  3667. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  3668.     AX = CD08h
  3669.     CX:BX -> structure (see below)
  3670. Return: AL = 00h successful
  3671.        = 80h unsuccessful
  3672.        = 81h scan line out of range
  3673.        = 82h unsupported scan line density
  3674.        = 83h out of memory
  3675.        = 84h unrecognized source
  3676.        = 85h initialization error
  3677. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  3678.  
  3679. Format of structure:
  3680. Offset    Size    Description
  3681.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  3682.  02h    DWORD    pointer to image data
  3683.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  3684.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  3685.  0Ah    WORD    left cropping (currently must be zero)
  3686.  0Ch    WORD    top cropping (currently must be zero)
  3687.  0Eh    WORD    width (currently must be 8000h)
  3688.  10h    WORD    height (currently must be 8000h)
  3689.  12h    WORD    horizontal size of image in 1200 dpi units
  3690.  14h    WORD    vertical size of image in 1200 dpi units
  3691.  16h    WORD    aspect ratio (currently reserved)
  3692.  18h    WORD    initialization flag (if 01h, initialization is performed)
  3693.  1Ah    WORD    pixels per line of source data
  3694.  1Ch    WORD    number of scan lines in source data
  3695.  1Eh    WORD    number of scan lines in packet
  3696.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  3697.  22h    WORD    pixels per byte (1,2,4, or 8)
  3698.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  3699.  26h    WORD    source page number (if in expanded memory)
  3700.  28h    WORD    source handle (if in expanded memory)
  3701.  2Ah    WORD    source offset (if in expanded memory)
  3702. --------U-2FCD08-----------------------------
  3703. INT 2F - SWELL.EXE - UNUSED
  3704.     AX = CD08h
  3705. Return: AX = FFFFh (error)
  3706. ----------2FCD09-----------------------------
  3707. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  3708.     AX = CD09h
  3709.     CX:BX -> structure (see below)
  3710. Return: AL = 00h successful
  3711.        = 80h unsuccessful
  3712. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  3713.  
  3714. Format of structure:
  3715. Offset    Size    Description
  3716.  00h    BYTE    style
  3717.         44h ('D') diamond style
  3718.         4Ch ('L') line style
  3719.  01h    BYTE    reserved (00h)
  3720.  02h    WORD    frequency in lines per inch [sic]
  3721.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  3722.  04h    WORD    screen angle in degrees (-360 to 360)
  3723.         currently coerced to nearest of -45, 0, 45, or 90
  3724. --------U-2FCD09-----------------------------
  3725. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  3726.     AX = CD09h
  3727. Return: AX = 0000h
  3728. SeeAlso: AX=CD0Ah"SWELL"
  3729. ----------2FCD0A-----------------------------
  3730. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  3731.     AX = CD0Ah
  3732.     CX:BX -> palette structure (see below)
  3733. Return: AL = 00h successful
  3734.        = 80h unsuccessful
  3735. SeeAlso: AX=CD09h"Image Processing"
  3736.  
  3737. Format of palette structure:
  3738. Offset    Size    Description
  3739.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  3740.  01h    2**N    palette translation values, one per possible pixel value
  3741. --------U-2FCD0A-----------------------------
  3742. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  3743.     AX = CD0Ah
  3744. Return: AX = 0000h
  3745. SeeAlso: AX=CD09h"SWELL"
  3746. --------P-2FCD0F-----------------------------
  3747. INT 2F - LaserPort Interface - EXECUTE FUNCTION
  3748.     AX = CD0Fh
  3749.     BL = function
  3750.         01h enable
  3751.         02h disable
  3752.         03h ???
  3753. Return: AL = status
  3754.         00h success
  3755. SeeAlso: AX=CD00h"LaserPort"
  3756. --------K-2FCF00-----------------------------
  3757. INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
  3758.     AX = CF00h
  3759. Return: AL = FFh if installed
  3760. Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
  3761. Note:    values in AL other than 00h cause an immediate return without modifying
  3762.       any registers
  3763. --------G-2FD000-----------------------------
  3764. INT 2F C - MDEBUG display driver - GET DRIVER STATUS
  3765.     AX = D000h
  3766. Return: CF set on error
  3767.         all other registers must be unchanged)
  3768.     CF clear if successful
  3769.         AL = FFh
  3770.         AH = driver semaphor
  3771.         00h driver is not active
  3772.         01h driver is active
  3773.         BX = CS of the driver
  3774.         CX = driver version (CH = major, CL = minor, must be >= 013Ch)
  3775.         DL = buffer semaphor
  3776.         00h driver is not pending
  3777.         01h driver is pending between functions 02h and 03h
  3778.         DH = show semaphor
  3779.         00h driver is not pending
  3780.         01h driver is pending between functions 04h and 05h
  3781. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  3782.       Schemmer, including a memory monitor, an interpreter and a
  3783.       disassembler
  3784. Notes:    MDEBUG can use any two consecutive multiplex numbers between C0h and
  3785.       FFh; the default is D0h for the display driver and D1h for the
  3786.       command driver (see INT 60/AH=00h"MDEBUG" for the actual multiplex
  3787.       numbers used)
  3788.     this function MUST be reentrant, as MDEBUG calls it after every popup
  3789.       before any other actions.  The handler should not change any
  3790.       registers if the display is in an unsupported mode or in a mode
  3791.       MDEBUG supports itself, e.g. a normal text mode with at least 80x25
  3792.       characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
  3793.       not call any of the other functions for this popup session.
  3794.     MDEBUG will not call the other functions if the returned version is
  3795.       less than the actual version of MDEBUG.
  3796.     if the driver is reentrant, DL and DH should be 00h
  3797. SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
  3798. --------M-2FD000-----------------------------
  3799. INT 2F - ZWmous - INSTALLATION CHECK
  3800.     AX = D000h
  3801. Return: AX = 5A57h ("ZW") if installed
  3802.         BX = segment of resident code
  3803. Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
  3804.       with many non-mouse applications by entering the letter under the
  3805.       mouse cursor on button presses
  3806. SeeAlso: INT 33/AX=0003h
  3807. --------N-2FD000-----------------------------
  3808. INT 2F - Lotus CD/Networker - INSTALLATION CHECK
  3809.     AX = D000h
  3810. Return: AL = FFh if CD/Networker TSR is loaded
  3811.     BX = 4D44h ("MD") signature
  3812.     CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
  3813.     DX = bitmap identifying all loaded CD/Networker TSRs.
  3814. Notes:    INT 2F/AH=D0h is used by CD/Networker to communicate between a
  3815.       resident redirector TSR and a transient program that controls the
  3816.       TSR's CD-ROM drive emulation (volume attachments, caching, etc).
  3817.     At present there is only one CD/Networker TSR; the bitmap always = 4.
  3818. SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
  3819. --------G-2FD001-----------------------------
  3820. INT 2F C - MDEBUG display driver - INITIALIZE DRIVER
  3821.     AX = D001h
  3822. Return: CF set on error
  3823.     AL = driver semaphor
  3824.     AH = buffer semaphor
  3825. Notes:    MDEBUG calls this function after every successful call of the function
  3826.       00h. The function should reset all internal data and the status of
  3827.       the driver. If this function returns an error, MDEBUG will not call
  3828.       the other functions in this popup session.
  3829.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  3830.       FFh; the default is D0h for the display driver and D1h for the
  3831.       command driver
  3832. SeeAlso: AX=D000h
  3833. --------G-2FD002-----------------------------
  3834. INT 2F C - MDEBUG display driver - SAVE GRAPHIC DATA
  3835.     AX = D002h
  3836. Return: CF set on error
  3837.     CF clear if successful
  3838.         display memory saved and display switched to one of the text modes
  3839.           02h, 03h or 07h.
  3840. Note:    MDEBUG calls this function only once every popup session before
  3841.       displaying its windows.
  3842. SeeAlso: AX=D000h,AX=D003h
  3843. --------N-2FD002BX4D44-----------------------
  3844. INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
  3845.     AX = D002h
  3846.     BX = 4D44h
  3847.     DX = bitmap identifying one loaded CD/Networker TSR
  3848. Return: ES:DI -> data area owned by TSR
  3849. Note:    the format of the data area changes with each minor revision, so it
  3850.       cannot be counted on
  3851. SeeAlso: AX=D000h"Lotus"
  3852. --------G-2FD003-----------------------------
  3853. INT 2F C - MDEBUG display driver - RESTORE GRAPHIC DATA
  3854.     AX = D003h
  3855. Return: CF set on error
  3856.     CF clear if successful
  3857.         display restored to the mode it was in before calling AX=D002h and
  3858.           the display memory is restored
  3859. Note:    MDEBUG calls this function only once every popup session just before
  3860.      it exits to normal DOS.
  3861. SeeAlso: AX=D000h,AX=D002h
  3862. --------G-2FD004-----------------------------
  3863. INT 2F - MDEBUG display driver - SHOW SAVED DATA
  3864.     AX = D004h
  3865. Return: CF set on error
  3866.     CF clear if successful
  3867.         display switched to mode it was in before calling AX=D002h and the
  3868.           display memory is restored
  3869. Note:    This function needn't save the display memory before changing it.
  3870. SeeAlso: AX=D000h,AX=D005h
  3871. --------G-2FD005-----------------------------
  3872. INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
  3873.     AX = D005h
  3874. Return: CF set on error
  3875.     CF clear if successful
  3876.         display restored to mode it was in before calling AX=D004h
  3877. Note:    This function needn't save or change the display memory
  3878. SeeAlso: AX=D000h,AX=D004h
  3879. --------G-2FD0-------------------------------
  3880. INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
  3881.     AH = D0h
  3882.     AL = 06h-7Fh
  3883. Note:    these functions are reserved for future use
  3884. --------G-2FD0-------------------------------
  3885. INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
  3886.     AH = D0h
  3887.     AL = 80h-FFh
  3888. Note:    these functions numbers are reserved for user defined features (e.g.
  3889.       communication between the transient und resident parts of the driver)
  3890. --------G-2FD100-----------------------------
  3891. INT 2F C - MDEBUG command driver - GET STATUS
  3892.     AX = D100h
  3893.     BX = version of MDEBUG (BH = major, BL = minor)
  3894.     CX = command driver counter
  3895. ---v1.60+---
  3896.     DS:SI -> MDEBUG identification table (see below)
  3897.     ES = segment of display memory used by MDEBUG
  3898.     DI = size of video mode used by MDEBUG
  3899.         (high byte = lines, low byte = columns)
  3900. Return: DL = FFh
  3901.     BX = version number of the driver if it is less than the version in BX,
  3902.          else unchanged
  3903.     CX incremented
  3904. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  3905.       Schemmer, including a memory monitor, an interpreter, and a
  3906.       disassembler
  3907. Notes:    called by MDEBUG at start of popup session; if the version number
  3908.       returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
  3909.       not call any of the other functions during this popup session
  3910.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  3911.       FFh; the default is D0h for the display driver and D1h for the
  3912.       command driver (see INT 60/AH=00h"MDEBUG" for the multiplex numbers
  3913.       actually used)
  3914.     this function must end with a far call to the old INT 2F handler after
  3915.       changing the registers
  3916.     this function MUST be reentrant
  3917.     command drivers must also declare the following data at the given
  3918.       offsets in the code segment
  3919.         100h  3 BYTEs    JMP-command in .COM-files
  3920.         103h    BYTE    NOP-command (90h)
  3921.         104h 26 BYTEs    signature "Kommandotreiber für MDEBUG"
  3922.         11Eh 12 BYTEs    name of driver, e.g. "MDHISDRV.COM"
  3923.                 each driver must have a unique name
  3924.     MDEBUG will pass every key and command to the command driver(s) before
  3925.       checking for a valid internal command
  3926. SeeAlso: AX=D000h,AX=D101h
  3927.  
  3928. Format of MDEBUG identification table:
  3929. Offset    Size    Description
  3930.  -2    WORD    entry offset
  3931.  00h    WORD    CS of MDEBUG
  3932.  02h    DWORD    old INT 08h vector
  3933.  06h    DWORD    old INT 09h vector
  3934.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  3935.  0Eh    BYTE    length of version string
  3936.  0Fh  N BYTEs    version string
  3937. --------G-2FD101-----------------------------
  3938. INT 2F - MDEBUG command driver - INITIALIZE DRIVER
  3939.     AX = D101h
  3940.     CX = command driver counter
  3941. Return: DL = FFh if successful
  3942.         CX incremented
  3943.          else error: all registers unchanged
  3944. Note:    this function must end with a  far call to the old INT 2F handler after
  3945.       changing the registers
  3946.     this function must be reentrant
  3947. --------G-2FD102-----------------------------
  3948. INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
  3949.     AX = D102h
  3950.     BL = first character of the interpreter command
  3951.     BH = last character of the interpreter command (or blank)
  3952.     DS:SI -> parameter for the interpreter command as ASCIZ string
  3953.     DS:DI -> MDEBUG data structure (see below)
  3954. Return: AL = FFh
  3955.     CF set on error
  3956.         AH = error number
  3957.         01h syntax error
  3958.         02h first shell of the command.com is activ
  3959.         03h esc pressed
  3960.         04h break pressed
  3961.         05h DOS is busy
  3962.         06h command ended
  3963.         07h division by zero
  3964.         08h invalid display driver
  3965.         09h invalid command driver
  3966.         0Ah error 8 and 9
  3967.         0Bh unknown error
  3968.         0Ch new error
  3969.             DS:SI -> ASCIZ error message (max 30 characters)
  3970.            else unknown error
  3971.     CF clear if successful
  3972.         AH = return code
  3973.         00h continue processing the command line
  3974.         01h leave MDEBUG popup session
  3975.         02h leave MDEBUG popup session and automatically popup again
  3976.             if the InDOS flag is zero
  3977.         03h not used (same as 00h)
  3978.         04h not used (same as 00h)
  3979.         05h put new command line into the input buffer,
  3980.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  3981.         06h process new command line
  3982.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  3983.            else unknown status, but continue processing commmand line
  3984. Note:    this function must end with a far call to the old INT 2F handler (with
  3985.       registers unchanged) if the driver does not support the interpreter
  3986.       command in BX.  Otherwise, the driver must not chain to the old
  3987.       INT 2F.
  3988.  
  3989. Format of MDEBUG data structure:
  3990. Offset    Size    Description
  3991.  00h    WORD    register SE
  3992.  02h    WORD    register OF
  3993.  04h    WORD    register FS
  3994.  06h    WORD    register FO
  3995.  08h    WORD    register AX
  3996.  0Ah    WORD    register BX
  3997.  0Ch    WORD    register CX
  3998.  0Eh    WORD    register DX
  3999.  10h    WORD    register SI
  4000.  12h    WORD    register DI
  4001.  14h    WORD    register DS
  4002.  16h    WORD    register ES
  4003.  18h    WORD    register BP
  4004.  1Ah    WORD    register SS
  4005.  1Ch    WORD    register SP
  4006.  1Eh    WORD    register FL (flags)
  4007.  20h    WORD    register R0
  4008.  22h    WORD    register R1
  4009.  24h    WORD    register R2
  4010.  26h    WORD    register R3
  4011.  28h    WORD    register R4
  4012.  2Ah    WORD    register R5
  4013.  2Ch    WORD    register R6
  4014.  2Eh    WORD    register R7
  4015.  30h    WORD    register R8
  4016.  32h    WORD    register CS, return-address
  4017.  34h    WORD    register IP, return-address
  4018.  36h    DWORD    saved pointer to data for key <F6> (v1.60)
  4019.         saved monitor address (v1.70)
  4020.  3Ah 12 WORDs    saved register values on last popup entry (for <F8> key)
  4021.         (original register values at popup entry of MDEBUG)
  4022.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4023.  52h 12 WORDs    saved register values on last popup exit (for <SHIFT-F8> key)
  4024.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4025.  6Ah    DWORD    address of the DOS-invars-table
  4026.  6Eh    DWORD    address of the InDOS flag
  4027.  72h    WORD    offset of the register which is used for the segment of the
  4028.         first monitor window
  4029.  74h    WORD    offset of the register which is used for the offset of the
  4030.         first monitor window
  4031.  76h    WORD    name of the register which is used for the segment of the
  4032.         first monitor segment
  4033.  78h    WORD    name of the register which is used for the offset of the first
  4034.         monitor window
  4035.  7Ah    WORD    pseudo register 1
  4036.  7Ch    WORD    pseudo register 2
  4037. --------G-2FD103-----------------------------
  4038. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
  4039.     AX = D103h
  4040.     BX = key code (like result of an interrupt 16h call)
  4041.     CX = 0 -> the cursor is in the ASCII column of the monitor
  4042.     CX = 1 -> the cursor is in one of the hex fields of the monitor
  4043.     DS:SI -> MDEBUG data structure (see AX=D102h)
  4044.     ES:DI -> actual byte in the monitor
  4045. Return: AL = FFh
  4046.     AH = return code
  4047.         00h key processed, read next key
  4048.         01h leave MDEBUG popup session
  4049.         02h leave MDEBUG popup session and automatically popup again if DOS
  4050.         is not busy
  4051.         03h signal an error (beep)
  4052.         04h driver has redefined the key, proceed with the new key
  4053.         BX = new key code
  4054.         MDEBUG will not pass the new key to the command driver(s)
  4055.        else treat like code 00h
  4056. Note:    this function must end with a far call to the old INT 2F handler (with
  4057.       registers unchanged) if the driver does not support the key in BX.
  4058.       Otherwise, the driver must not chain to the old INT 2F.
  4059. SeeAlso: AX=D104h
  4060. --------G-2FD104-----------------------------
  4061. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
  4062.     AX = D104h
  4063.     DS:SI -> MDEBUG data structure (see AX=D102h)
  4064. Return: AL = FFh
  4065.     AH = return code
  4066.         00h key processed, read next key
  4067.         01h leave MDEBUG popup session
  4068.         02h leave MDEBUG popup session and automactically popup again if
  4069.         DOS is not busy
  4070.         03h signal an error (beep)
  4071.         04h driver has redefined the key, proceed with the new key
  4072.         BX = new key code
  4073.         MDEBUG won't pass the new key to the command driver(s)
  4074.         05h put new command line into the input buffer
  4075.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4076.         06h process new command line
  4077.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4078.        else treat like code 00h
  4079. Note:    this function must end with a far call to the old INT 2F handler if the
  4080.       driver does not support the key in BX.  Otherwise, the driver must
  4081.       not chain to the old INT 2F.
  4082. SeeAlso: AX=D103h
  4083. --------G-2FD1-------------------------------
  4084. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4085.     AH = D1h
  4086.     AL = 05h-0Ah
  4087. Note:    these functions are reserved for future use
  4088. --------G-2FD110-----------------------------
  4089. INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
  4090.     AX = D110h
  4091. Return: DL = FFh
  4092.     ES:BX -> next program in the chain for INT 2F
  4093.     CX = code segment of this driver
  4094.     DI = offset of driver identification table (see below) (v1.60+)
  4095. Notes:    only called by the transient part of the driver
  4096.     must be reentrant and the driver must not chain this function to the
  4097.       old INT 2F
  4098.  
  4099. Format of the driver identification table:
  4100. Offset    Size    Description
  4101.  00h  26 BYTEs     signature "Kommandotreiber für MDEBUG"
  4102.                          ^- Note: ASCII 129,German U-umlaut
  4103.  27h  12 BYTEs     name of driver, e.g. "MDHISDRV.COM"
  4104.          each driver must have a unique name
  4105. --------G-2FD111-----------------------------
  4106. INT 2F - MDEBUG command driver - START DRIVER
  4107.     AX = D111h
  4108. Return: DL = FFh
  4109. Notes:    only called by the transient part of the driver to inform the resident
  4110.       part that it is installed
  4111.     the function must be reentrant and the driver mustn't chain this
  4112.       function to the old INT 2F
  4113. SeeAlso: AX=D101h,AX=D112h
  4114. --------G-2FD112-----------------------------
  4115. INT 2F - MDEBUG command driver - END DRIVER
  4116.     AX = D112h
  4117. Return: DL = FFh
  4118. Notes:    only called by the transient part of the driver to inform the resident
  4119.       part that it will be released after this function
  4120.     the function must be reentrant and the driver mustn't chain this
  4121.       function to the old INT 2F
  4122. SeeAlso: AX=D101h,AX=D111h
  4123. --------G-2FD1-------------------------------
  4124. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4125.     AH = D1h
  4126.     AL = 13h-7Fh
  4127. Note:    these functions are reserved for future use
  4128. --------G-2FD1-------------------------------
  4129. INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
  4130.     AH = D1h
  4131.     AL = 80h-FFh
  4132. Note:    these functions are reserved for user defined features (e.g.
  4133.       communication between the transient und resident parts of the driver)
  4134. ----------2FD200-----------------------------
  4135. INT 2F - PCL-838.EXE - INSTALLATION CHECK
  4136.     AX = D200h
  4137. Return: AL = FFh if installed??? (documented as AX = return value)
  4138. Program: PCL-838 is a resident utility for controlling a stepmotor adapter
  4139.       board by Advantec
  4140. SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
  4141. --------Q-2FD200BX5144-----------------------
  4142. INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
  4143.     AX = D200h
  4144.     BX = 5144h ("QD")
  4145.     CX = 4D45h ("ME")
  4146.     DX = 4D30h ("M0")
  4147. Return: AL = FFh installed
  4148.     if BX,CX,DX registers were as specified on entry:
  4149.         BX = 4D45h ("ME")
  4150.         CX = 4D44h ("MD")
  4151.         DX = 5652h ("VR")
  4152. Notes:    AH=D2h is the default multiplex number for the Quarterdeck RPCI
  4153.       (Resident Program Communication Interface), but it may use the first
  4154.       available multiplex number in the range D2h through FFh, then C0h
  4155.       through D1h
  4156.     the RPCI is supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
  4157.     for AL <> 0, if the BX/CX/DX values don't match the identifier of a
  4158.       Quarterdeck product, it just chains to the previous INT 2F handler
  4159. SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
  4160. SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
  4161. ----------2FD201-----------------------------
  4162. INT 2F - PCL-838.EXE - UNINSTALL
  4163.     AX = D201h
  4164. Return: AX = return value
  4165. SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
  4166. --------m-2FD201BX4849-----------------------
  4167. INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
  4168.     AX = D201h
  4169.     BX = 4849h ("HI")
  4170.     CX = 4D45h ("ME")
  4171.     DX = 4D51h ("MQ")
  4172. Return: BX = 4F4Bh ("OK")
  4173.     ES:DI -> HIMEM entry point
  4174. Note:    AH=D2h is the default multiplex number, but any value in the range
  4175.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4176. SeeAlso: AX=D200h,AX=D201h/BX=5145h
  4177. --------m-2FD201BX4849-----------------------
  4178. INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
  4179.     AX = D201h
  4180.     BX = 4849h ("HI")
  4181.     CX = 5241h ("RA")
  4182.     DX = 4D30h ("M0")
  4183. Return: BX = 4F4Bh ("OK")
  4184.     CX = segment of start of HIRAM chain
  4185.     DX = reserved block owner (QEMM/QRAM code segment)
  4186. Notes:    AH=D2h is the default multiplex number, but any value in the range
  4187.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4188.     the HIRAM memory chain has the same format as the regular DOS 4.0
  4189.       memory chain (see INT 21/AH=52h), except that XMS Upper Memory Blocks
  4190.       have the block header program name field set to "UMB"; blocks whose
  4191.       "owner" field is set to the reserved segment returned in DX are
  4192.       locked-out regions such as video memory and ROMs.
  4193. SeeAlso: AX=12FFh/BX=0006h,AX=D200h
  4194. --------G-2FD201BX4D41-----------------------
  4195. INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
  4196.     AX = D201h
  4197.     BX = 4D41h ("MA")
  4198.     CX = 4E49h ("NI")
  4199.     DX = 4645h ("FE")
  4200. Return: BX = 5354h ("ST")
  4201. Note:    AH=D2h is the default multiplex number, but any value in the range
  4202.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4203. SeeAlso: AX=D200h
  4204. --------E-2FD201BX4D45-----------------------
  4205. INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
  4206.     AX = D201h
  4207.     BX = 4D45h ("ME")
  4208.     CX = 5155h ("QU")
  4209.     DX = 5044h ("PD")
  4210. Return: AL = FFh
  4211.     BX = 4F4Bh ("OK")
  4212. Notes:    AH=D2h is the default; use the Quarterdeck installation check described
  4213.       under AX=D200h
  4214.     called by QEMM 6.03
  4215.     performs a variety of actions before setting return registers
  4216. SeeAlso: AX=D200h
  4217. --------m-2FD201BX5145-----------------------
  4218. INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
  4219.     AX = D201h
  4220.     BX = 5145h ("QE")
  4221.     CX = 4D4Dh ("MM")
  4222.     DX = 3432h ("42")
  4223. Return: BX = 4F4Bh ("OK")
  4224.     ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
  4225. Notes:    Quarterdeck programs (QEMM/QRAM/VIDRAM/MANIFEST/etc) will search for a
  4226.       free AH value from D2h through FFh, then C0h through D1h
  4227.     this call is not available under QEMM v6.00 unless Windows3 support
  4228.       has been disabled with the NW3 switch to QEMM386.SYS
  4229. SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
  4230. --------V-2FD201BX5649-----------------------
  4231. INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
  4232.     AX = D201h
  4233.     BX = 5649h ("VI")
  4234.     CX = 4452h ("DR")
  4235.     DX = 414dh ("AM")
  4236. Return: BX = 4F4Bh ("OK")
  4237.     ES:DI -> VIDRAM entry point
  4238. Note:    Quarterdeck programs (QEMM/QRAM/VIDRAM/MANIFEST/etc) will search for a
  4239.       free AH value from D2h through FFh, then C0h through D1h
  4240. SeeAlso: AX=D200h
  4241.  
  4242. Call VIDRAM entry point with:
  4243.     AH = 00h get status
  4244.         Return: AL = VIDRAM state (see below)
  4245.             BL = extra RAM status
  4246.                 00h VIDRAM does not use extra RAM
  4247.                 01h VIDRAM uses EMS as extra RAM
  4248.                 02h VIDRAM uses EGA as extra RAM
  4249.             BH = feature flags
  4250.                 bit 0: override enabled
  4251.                 bit 1: mapped memory detected in A000h-B000h range
  4252.                 bit 2: top of memory not at 640K
  4253.                 bit 3: MDA detected
  4254.                 bit 4: high RAM exists in video area
  4255.                 bit 5: mapped memory detected in video area
  4256.                 bits 6-7: reserved???
  4257.             CL = current monitor (01h = mono, 80h = color)
  4258.             SI = current top of memory (paragraph)
  4259.             DI = segment of start of HiRAM chain
  4260.     AH = 01h setup
  4261.         AL = VIDRAM state (00h off, 01h no EGA graphics, 02h no graph)
  4262.         BL = extra RAM status (see above)
  4263.         BH = feature flags (see above)
  4264.         CL = monitor (01h = monochrome, 80h = color)
  4265.         SI = new top of memory (paragraph)
  4266.         DI = segment of start of HiRAM chain
  4267.     AH = 02h get end address of VIDRAM code
  4268.         Return: ES:DI -> VIDRAM partial map context (see below)
  4269. Return: CF set on error
  4270.     CF clear if successful
  4271.  
  4272. Format of partial map context (EMS 3.2):
  4273. Offset    Size    Description
  4274.  00h    BYTE    EMS version ID (32h)
  4275.  01h    WORD    EMM handle for this entry
  4276.  03h    BYTE    number of frames
  4277.  04h    BYTE    first page frame
  4278.  05h    WORD    offset from ES to previously saved map
  4279.  
  4280. Format of partial map context (EMS 4.0):
  4281. Offset    Size    Description
  4282.  00h    BYTE    EMS version ID (40h)
  4283.  01h    WORD    mappable segment count
  4284.  03h  N WORD    mappable segments
  4285.     WORD    offset to previously saved map???
  4286. ----------2FD202-----------------------------
  4287. INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
  4288.     AX = D202h
  4289.     CX:BX -> parameter table
  4290. Return: AX = return value
  4291. SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
  4292. --------R-2FD300BX4562-----------------------
  4293. INT 2F U - TeleReplica - INSTALLATION CHECK
  4294.     AX = D300h
  4295.     BX = 4562h
  4296.     CX = 2745h
  4297.     DX = serial port I/O base address??? (03F8h for v3.9)
  4298. Return: SI = segment of resident code
  4299.     AX = 251Dh
  4300.     BX = DF21h
  4301.     CX = F321h
  4302.     DX = ???
  4303. --------R-2FD3CB-----------------------------
  4304. INT 2F U - LapLink Quick Connect v6 - API
  4305.     AX = D3CBh
  4306.     CX = function
  4307.         0002h get ???
  4308.         Return: BX:AX -> ???
  4309.             CL = ???
  4310.             CH = ???
  4311.             DX = ???
  4312.             DI = COM1 I/O port???
  4313.             SI = COM2 I/O port???
  4314.         0003h initialization???
  4315.         0004h ???
  4316.         0005h initialization???
  4317.         0006h reset/clear ???
  4318.         Return: AX = 0000h
  4319.             ES:DI -> next byte after ??? cleared by this call
  4320.         0007h initialization???
  4321.         0008h uninstall
  4322.         Return: BX = status
  4323.                 0000h successful
  4324.                 FFFFh incomplete, stub remains in memory
  4325. Return: CX = 534Bh (except function 0002h)
  4326. Index:    uninstall;LapLink Quick Connect
  4327. --------l-2FD44D-----------------------------
  4328. INT 2F - 4DOS.COM v2.1+ - API
  4329.     AX = D44Dh
  4330.     BH = function
  4331.         00h installation check
  4332.         Return: AX = 44DDh
  4333.             BL = major version number
  4334.             BH = minor version number
  4335.             CX = PSP segment address for current invocation
  4336.             DL = 4DOS shell number (0 for the first (root) shell,
  4337.                  updated each time a new copy is loaded)
  4338.         01h (internal, v2.1-3.03) terminate current copy of 4DOS
  4339.         Return: nothing
  4340.         (internal, v4.0) ???
  4341.         Return: ES:BX -> data area (see below)
  4342.         02h ???
  4343.         DX = ???
  4344.     ---v2.1-3.03 only---
  4345.         03h EXEC program
  4346.         CX:DX -> EXEC record
  4347.         FEh deallocate shell number (passed through to root shell)
  4348.         ???
  4349.         FFh allocate shell number (passed through to root shell)
  4350. Note:    bug in v3.00 will crash system if unrecognized value in BH
  4351. SeeAlso: AX=D44Eh,AX=E44Dh,INT 21/AX=4403h
  4352. Index:    installation check;4DOS|installation check;NDOS
  4353.  
  4354. Format of EXEC record:
  4355. Offset    Size    Description
  4356.  00h    WORD    offset of ASCIZ program name in same segment as EXEC record
  4357.  02h    WORD    offset of DOS commandline in same segment as EXEC record
  4358.  04h    WORD    segment of environment for child process (see INT 21/AH=26h)
  4359.  
  4360. Format of 4DOS v4.0 data area:
  4361. Offset    Size    Description
  4362.  00h  2 BYTEs    ???
  4363.  06h    WORD    XMS handle for swapping
  4364.     ???
  4365. --------l-2FD44E-----------------------------
  4366. INT 2F C - 4DOS v3.0+ - AWAITING USER INPUT
  4367.     AX = D44Eh
  4368. ---4DOS v3.01+---
  4369.     BX = 0000h 4DOS is ready to display prompt
  4370.        = 0001h 4DOS has displayed the prompt, about to accept user input
  4371. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  4372. Note:    v3.00 only makes the call corresponding to BX=0001h, does not set BX
  4373. SeeAlso: AX=D44Dh
  4374. --------K-2FD44FBX0000-----------------------
  4375. INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  4376.     AX = D44Fh
  4377.     BX = 0000h
  4378. Return: AX = 44DDh if installed
  4379. SeeAlso: AX=D44Fh/BX=0001h
  4380. --------K-2FD44FBX0001-----------------------
  4381. INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  4382.     AX = D44Fh
  4383.     BX = 0001h
  4384.     CX = number of keystrokes (01h-FFh)
  4385.     DS:DX -> keystroke list (one word per keystroke)
  4386. Return: AX = status
  4387.         0000h successful
  4388.         nonzero failed
  4389.     BX,CX,DX destroyed
  4390. Notes:    the keystrokes are the exact values to return from subsequent calls to
  4391.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  4392.         0000h causes subfunctions 01h and 11h to indicate an empty
  4393.             keyboard buffer
  4394.         FFFFh is followed by a word indicating the number of clock
  4395.             ticks to delay before the next faked keystroke
  4396.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  4397.       invocation, and does not range-check CX; it will overwrite memory
  4398.       following the resident portion if CX is greater than 100h.
  4399. SeeAlso: AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
  4400. --------G-2FD600-----------------------------
  4401. INT 2F - HEART.COM - INSTALLATION CHECK
  4402.     AX = D600h
  4403. Return: AX = 0303h (two hearts) if installed
  4404.         ES:DI -> buffer (see below)
  4405. Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
  4406. Notes:    Once the host program has identified the address of the data area, it
  4407.       can change this to indicate safe/critical, alternate colours, etc.
  4408.     The entries for the color table are in char/attrib form.  Every two
  4409.       entries form a pair which is alternated between 68 times a minute.
  4410.       The first half of the table is for color videos, the second mono.
  4411.       Within each half, the first half is for the safe chars, and the
  4412.       second for the critical chars.
  4413.  
  4414. Format of buffer:
  4415. Offset    Size    Description
  4416.  00h  8 WORDs    table of colors/attributes (see notes above)
  4417.  10h    BYTE    flags
  4418.         bit 0: program is in critical section, so flash double
  4419.             exclamation mark
  4420.         bit 1: program is in safe code, so flash the heart character
  4421.  11h    WORD    position of heartbeat on screen, normally 009Eh (last column
  4422.         of second line)
  4423. ----------2FD600-----------------------------
  4424. INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
  4425.     AX = D600h
  4426. Return: AL = D6h if installed
  4427. Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
  4428.       is a programmer's text editor by Greenview Data.
  4429. SeeAlso: AX=D601h,AX=D602h
  4430. ----------2FD601-----------------------------
  4431. INT 2F U - VEDIT VSWAP - ???
  4432.     AX = D601h
  4433.     BL = subfunction number???
  4434. Return: BL = return code ???
  4435.     ES = resident portion's data??? segment
  4436.     DX = resident portion's code segment
  4437. SeeAlso: AX=D600h"VSWAP"
  4438. ----------2FD602-----------------------------
  4439. INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
  4440.     AX = D602h
  4441.     other registers set as for INT 21/AX=4B00h
  4442. Return: CF set on error
  4443.         AL = error code
  4444.         82h = failure due to ???
  4445.     CF clear on success
  4446. SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
  4447. --------N-2FD701BX0000-----------------------
  4448. INT 2F - Banyan VINES v4+ - GET BANV INTERRUPT NUMBER
  4449.     AX = D701h
  4450.     BX = 0000h
  4451. Return: AX = 0000h installed
  4452.         BX = interrupt number (60h to 66h)
  4453.        nonzero not present
  4454. Note:    if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
  4455.       necessary to examine the four bytes preceding the handlers for
  4456.       INT 60 through INT 66 for the string "BANV"
  4457. SeeAlso: AX=D702h,AX=D703h,AX=D704h
  4458. --------N-2FD702-----------------------------
  4459. INT 2F U - Banyan VINES v4+ - PCPRINT interface
  4460.     AX = D702h
  4461.     BX = function
  4462.     ???
  4463. Return: ???
  4464. SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
  4465. --------N-2FD703-----------------------------
  4466. INT 2F U - Banyan VINES v4+ - MAIL interface
  4467.     AX = D703h
  4468.     BX = function
  4469.     ???
  4470. Return: ???
  4471. SeeAlso: AX=D702h,AX=D704h
  4472. --------N-2FD704-----------------------------
  4473. INT 2F U - Banyan VINES v4+ - Streettalk Directory Assistance interface
  4474.     AX = D704h
  4475.     BX = function
  4476.     ???
  4477. Return: ???
  4478. SeeAlso: AX=D703h,INT 61/AX=0007h"Banyan"
  4479. --------N-2FD800-----------------------------
  4480. INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
  4481.     AX = D800h
  4482. Return: AL = FFh if installed
  4483.         DX = version number (0100h for v1.0, 0101h for v1.1)
  4484.         BX = data segment of resident copy
  4485.         ES:DI -> private API entry point (see below)
  4486.         SI = segment of resident code
  4487. SeeAlso: AX=7A00h,AX=D880h
  4488.  
  4489. Call CLIENT API entry point with:
  4490.     BX = function
  4491.         0000h get ???
  4492.         Return: DX = CLIENT version??? (0101h for v1.1)
  4493.             ES:BX -> ??? data
  4494.         0001h ???
  4495.         0002h ???
  4496.         0003h ???
  4497.         0004h ???
  4498.         0005h ???
  4499.         DL = ???
  4500.         ???
  4501.         Return: ???
  4502.         0006h get module name???
  4503.         ES:DI -> 16-byte buffer
  4504.         Return: CX = ???
  4505.             ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
  4506.         0007h ???
  4507.         DX:CX = ???
  4508.         ???
  4509.         Return: ???
  4510.         0008h ???
  4511.         0009h ???
  4512.         DL = ???
  4513.         ES:DI -> 16-byte buffer for ???
  4514.         Return: CF clear if successful
  4515.                 AX = 0000h
  4516.                 CX = 0000h
  4517.                 SI,DI destroyed
  4518.             CF set on error
  4519.                 AX = error code 4903h
  4520.         000Ah ???
  4521.         AH = subfunction
  4522.             00h get ???
  4523.             01h clear/set ??? flag
  4524.             AL = new state (00h cleared, 01h set)
  4525.             02h set ???
  4526.             DX = new value of ???
  4527.         Return: DX = old value of ???
  4528.         000Bh ???
  4529.         AX = ???
  4530.         ???
  4531.         Return: ???
  4532.         000Ch ???
  4533.         AX = ???
  4534.         ???
  4535.         Return: ???
  4536.         000Dh ???
  4537.         AX = ???
  4538.         ???
  4539.         Return: ???
  4540.         000Eh get original INT 17
  4541.         Return: CF clear
  4542.             ES:BX -> original INT 17
  4543.         000Fh ???
  4544.         0010h ???
  4545.         AX = ???
  4546.         ???
  4547.         Return: ???
  4548.         0011h get ???
  4549.         Return: CF clear
  4550.             DL = ???
  4551.         0012h get ???
  4552.         AL = index of ???
  4553.         ES:DI -> 10-byte buffer for ???
  4554.         Return: CF clear if successful
  4555.                 ES:DI buffer filled
  4556.                 AX,CX destroyed
  4557.             CF set on error
  4558.                 AX = error code (4907h if AL out of range)
  4559.         0013h get ???
  4560.         Return: CF clear
  4561.             DH = ???
  4562.             DL = ???
  4563.         0014h ???
  4564.         DL = ???
  4565.         ???
  4566.         Return: CF clear if successful
  4567.                 ???
  4568.             CF set on error
  4569.                 AX = error code 8056h
  4570.         0015h ???
  4571.         DX = ???
  4572.         Return: ES:DI -> ???
  4573.         other
  4574.         Return: CF set
  4575.             AX = 0001h (invalid function)
  4576. --------N-2FD856-----------------------------
  4577. INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
  4578.     AX = D856h
  4579. Return: AX = ??? (0001h for v1.1)
  4580.     BX = ??? (0004h for v1.1)
  4581.     CX = ??? (0F20h for v1.1)
  4582.     DS = segment of resident code
  4583.     ES = data segment of resident copy
  4584. --------N-2FD880-----------------------------
  4585. INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
  4586.     AX = D880h
  4587. Return: AL = FFh if installed
  4588.         DX = version number (0100h for v1.0, 0101h for v1.1)
  4589.         BX = data segment of resident copy
  4590.         CL = current state (00h SERVER is disabled, 01h SERVER is active)
  4591.         ES:DI -> private API entry point (see below)
  4592.         SI = ??? (offset of configuration info?)
  4593. SeeAlso: AX=7A00h,AX=D800h
  4594.  
  4595. Call SERVER API entry point with:
  4596.     BX = function
  4597.         0000h ???
  4598.         ???
  4599.         Return: ???
  4600.         Note: closes open files by calling INT 21/AH=3Eh
  4601.         0001h get connection information
  4602.         DX = connection number (0001h-max connections)
  4603.         ES:DI -> 28-byte buffer for connection information
  4604.         Return: CF clear if successful
  4605.                 ES:DI buffer filled
  4606.             CF set on error
  4607.                 AX = FFFFh
  4608.         other
  4609.         Return: CF set
  4610.             AX = 0001h (invalid function)
  4611. --------d-2FD8C0-----------------------------
  4612. INT 2F U - Novell NetWare Lite v1.1 - NLCACHE - INSTALLATION CHECK
  4613.     AX = D8C0h
  4614. Return: AL = FFh if installed
  4615.         CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
  4616.         DH = major version??? (01h for v1.1)
  4617.         DL = minor version??? (01h for v1.1)
  4618.         ES:DI -> private API entry point (see below)
  4619. Program: NLCACHE is a disk cache included with NetWare Lite
  4620. SeeAlso: AX=D800h,AX=D880h
  4621.  
  4622. Call NLCACHE API entry point with:
  4623.     BX = function
  4624.         0000h ???
  4625.         ???
  4626.         Return: CF clear if successful
  4627.                 AX = 0000h
  4628.                 ???
  4629.             CF set on error
  4630.                 AX = error code
  4631.         other
  4632.         Return: CF set
  4633.             AX = 0001h (invalid function)
  4634. --------F-2FDA00-----------------------------
  4635. INT 2F - ZyXEL ZFAX - INSTALLATION CHECK
  4636.     AX = DA00h
  4637. Return: AH = enabled state (00h = enabled, 01h = disabled)
  4638.     AL = 5Ah installed
  4639. Note:    ZFAX is the bundled FAX software which comes with the ZyXEL model
  4640.       fax modems.
  4641. SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h
  4642. --------F-2FDA01-----------------------------
  4643. INT 2F - ZyXEL ZFAX - UNINSTALL
  4644.     AX = DA01h
  4645. Return: AL = 00h Success
  4646.          01h Failure
  4647. SeeAlso: AX=DA00h
  4648. --------F-2FDA02-----------------------------
  4649. INT 2F - ZyXEL ZFAX - DISABLE
  4650.     AX = DA02h
  4651. Return: AL = 00h
  4652. SeeAlso: AX=DA03h
  4653. --------F-2FDA03-----------------------------
  4654. INT 2F - ZyXEL ZFAX - ENABLE
  4655.     AX = DA03h
  4656. Return: AL = 00h
  4657. SeeAlso: AX=DA02h
  4658. --------G-2FDA55-----------------------------
  4659. INT 2F U - TRAP.COM - INSTALLATION CHECK
  4660.     AX = DA55h
  4661.     DL = interrupt number
  4662.     DH = ???
  4663. Return: if installed
  4664.         AH = interrupt number
  4665.         AL = ???
  4666.         ES:BX -> ???
  4667. Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
  4668. Note:    a separate copy of TRAP is loaded for each interrupt to be traced; thus
  4669.       the interrupt number is part of the installation check
  4670. --------N-2FDAB2-----------------------------
  4671. INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
  4672.     AX = DAB2h
  4673. Return: AX = 00FFh if installed
  4674.         BX:CX -> MIB table
  4675. Program: BWSNMP is part of the BW-NFS package
  4676. SeeAlso: INT 62"BW-TCP"
  4677. --------K-2FDC00-----------------------------
  4678. INT 2F - GOLD.COM - INSTALLATION CHECK
  4679.     AX = DC00h
  4680. Return: AL = 00h not installed
  4681.        = FFh installed
  4682. Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the code
  4683.       for F1; the purpose is to improve Kermit's VTxxx emulation
  4684. --------K-2FDC01-----------------------------
  4685. INT 2F - GOLD.COM - GET STATE
  4686.     AX = DC01h
  4687. Return: AL = status
  4688.         00h off
  4689.         01h on
  4690. SeeAlso: AX=DC00h,AX=DC02h
  4691. --------K-2FDC02-----------------------------
  4692. INT 2F - GOLD.COM - SET STATE
  4693.     AX = DC02h
  4694.     DL = new state
  4695.         00h off
  4696.         01h on
  4697. Return: AL = 00h (OK)
  4698. SeeAlso: AX=DC01h
  4699. --------t-2FDD-------------------------------
  4700. INT 2F - CappaCom programs - API
  4701.     AH = DDh
  4702.     AL = 00h general installation check
  4703.         Return: AL = FFh if any CappaCom programs are resident
  4704.     AL = FEh get info
  4705.         Return: ES:BX -> TSR info list (see below)
  4706.     AL = program identifier
  4707.         BH = function
  4708.         FDh get version
  4709.             Return: BX = version
  4710.         FFh installation check
  4711.             Return: AL = FFh if installed
  4712.                 BX = version
  4713.                 ES = segment of resident code
  4714.         others vary by program
  4715. Return: AL = status
  4716.         bit 7 set on error
  4717.         AL = 81h unknown function
  4718. Note:    CappaCom was originally SoftCom but changed its name due to a trademark
  4719.       conflict
  4720. Index:    installation check;SoftCom programs
  4721. Index:    installation check;CappaCom programs
  4722.  
  4723. Format of TSR info list:
  4724. Offset    Size    Description
  4725.  00h  9 BYTEs    blank-padded ASCIZ program name
  4726.  09h    BYTE    program ID
  4727.  0Ah    WORD    program's PSP segment
  4728.  0Ch    WORD    program version (major in high byte)
  4729.  0Eh    DWORD    pointer to next item in info list or 0000h:0000h
  4730.  12h    BYTE    number of interrupts hooked
  4731.  13h  5 BYTEs    interrupt numbers hooked by program
  4732.  18h  8 BYTEs    reserved
  4733. --------d-2FDD--BX7844-----------------------
  4734. INT 2F - xDISK v3.32+ - INSTALLATION CHECK
  4735.     AH = DDh
  4736.     BX = 7844h ('xD')
  4737.     CX = 4953h ('IS')
  4738.     DX = 4B3Fh ('K?')
  4739.     AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
  4740.     ES:DI -> 25-byte data buffer (see below)
  4741. Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
  4742.        BX = 87BBh
  4743.        DX = B4C0h
  4744.        ES:DI buffer filled
  4745.     CX,CF destroyed
  4746. SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
  4747.  
  4748. Format of data buffer:
  4749. Offset    Size    Description
  4750.  00h    DWORD    pointer to ASCIZ driver signature "xDISK unit: X"
  4751.  04h    BYTE    flag: 01h if disk linked to DOS, 00h if unlinked
  4752.  05h    BYTE    flag: 01h if write protected, 00h if not
  4753.  06h    BYTE    flag: 01h if root directory full, 00h if not
  4754.  07h    BYTE    flag: 01h if free space uncompacted, 00h if compacted
  4755.  08h    BYTE    resizing state: 00h not resizable, 01h resized, 80h resizable
  4756.  09h    BYTE    flag: 01h inelastic resizable disk, 00h elastic
  4757.  0Ah  2 BYTEs    reserved
  4758.  0Ch    BYTE    flag: 01h collapsed disk, 00h not collapsed
  4759.  0Dh    BYTE    flag: 01h using all EMS, 00h some EMS free
  4760.  0Eh    BYTE    flag: 01h password enabled, 00h disabled
  4761.  0Fh    BYTE    flag: 01h password audio feedback, 00h no feedback
  4762.  10h    BYTE    flag: 01h password video feedback, 00h no feedback
  4763.  11h    BYTE    flag: 01h confirm changes, 00h no confirmation
  4764.  12h    BYTE    flag: 01h terse display, 00h verbose display
  4765.  13h    BYTE    flag: 01h click speaker on disk access, 00h no click
  4766.  14h    BYTE    flag: 01h flash icon on disk access, 00h no icon flash
  4767.  15h    BYTE    FAT entry size: 00h 12-bit, FFh 16-bit
  4768.  16h    WORD    count of open files in RAM disk
  4769.  18h    BYTE    unused
  4770. --------Q-2FDE00BX4445-----------------------
  4771. INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
  4772.     AX = DE00h
  4773.     BX = 4456h ("DV")
  4774.     CX = 5844h ("XD")
  4775.     DX = 4931h ("I1")
  4776. Return: AL = FFh if installed (even if other registers do not match)
  4777.     if BX,CX, and DX were as specified on entry,
  4778.         BX = 4845h ("HE")
  4779.         CX = 5245h ("RE")
  4780.         DX = 4456h ("DV")
  4781. Notes:    AH=DEh is the default XDI multiplex number, but may range from C0h-FFh
  4782.     programs should check for XDI starting at DEh to FFh, then C0h to DDh
  4783.     the XDI handler should not issue any DOS or BIOS calls, nor should it
  4784.       issue DESQview API calls other than those allowed from hardware ints
  4785. SeeAlso: AX=DE02h,INT 15/AX=5400h
  4786. --------Q-2FDE01-----------------------------
  4787. INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
  4788.     AX = DE01h
  4789.     BX = driver ID
  4790.     other registers as needed by driver
  4791. Notes:    XDI drivers should pass this call through to previous handler if ID
  4792.       does not match
  4793.     DESQview never calls this function
  4794. --------Q-2FDE01BX4450-----------------------
  4795. INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
  4796.     AX = DE01h
  4797.     BX = 4450h ("DP")
  4798.     CX = 4D49h ("MI")
  4799.     DX = 3039h ("09")
  4800. Return: AL = FFh if installed
  4801.         BX = 4D42h ("MB")
  4802.         CX = 4921h ("I!")
  4803.         DX = 8F4Fh
  4804.         ES:DI -> filename of DPMI host overlay
  4805. Note:    the installation check consists of testing for the existence of the
  4806.       character device QDPMI$$$
  4807. SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
  4808. Index:    installation check;QDPMI
  4809. --------U-2FDE01BX5242-----------------------
  4810. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
  4811.     AX = DE01h
  4812.     BX = 5242h ("RB")
  4813.     CX:DX = program identifier
  4814.         656F7000h ("eop",0) for DVeop
  4815. Return: AX = 5242h ("RB") if installed
  4816.         ES:BX -> data or entry point
  4817.         CX = version number (CH = major, CL = minor)
  4818.  
  4819. Call DVeop entry point with:
  4820.     ES:DI -> callback address or 0000h:0000h to remove callback
  4821. Return: AX = status
  4822.         0000h failed (callback table full or attempted to remove non-
  4823.             existent callback)
  4824.         0001h successful
  4825.         ES:DI -> chaining address
  4826.     BX,CX,DX destroyed
  4827. Notes:    the callback function is called with a simulated interrupt when the
  4828.       DESQview window containing it is closed; it should perform all
  4829.       necessary cleanup and then perform a FAR jump to the chaining address
  4830.       or an IRET if the chaining address is 0000h:0000h
  4831.     if the program wishes to remove itself before the window is closed, it
  4832.       should call the DVeop entry point with the previously returned
  4833.       chaining address and ignore the returned chaining address.
  4834. --------U-2FDE01BX7474-----------------------
  4835. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
  4836.     AX = DE01h
  4837.     BX = 7474h
  4838.     CL = function
  4839.         00h installation check
  4840.         Return: AL = FFh
  4841.         01h get process handle
  4842.         DX = keys on Open Window menu (DL = first, DH = second)
  4843.         Return: AX = process handle or 0000h if not running
  4844.         02h (v1.3+) set TMAN handle
  4845.         DX = TMAN process handle
  4846.         03h (v1.3+) set open keys to ignore on next CL=01h call
  4847.         DX = keys on Open Window menu (DL = first, DH = second)
  4848. Return: BX = 4F4Bh ("OK")
  4849.     DL destroyed
  4850. Note:    DVTXDI is distributed as part of the shareware products DVTree (DOS
  4851.      shell/DESQview process manager) and DVTMAN by Mike Weaver
  4852. Index:    installation check;DVTXDI
  4853. --------U-2FDE01BX7575-----------------------
  4854. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
  4855.     AX = DE01h
  4856.     BX = 7575h
  4857.     CX = function
  4858.         0000h installation check
  4859.         Return: AX = 00FFh if installed
  4860.         0001h turn on notification (currently unused)
  4861.         Return: AX = 0001h
  4862.         0002h turn off notification (currently unused)
  4863.         Return: AX = 0001h
  4864.         0003h get process information
  4865.         Return: AX = status
  4866.                 0000h failed
  4867.                 0001h successful
  4868.                 BX = last instantaneous time slice
  4869.                     in 1/100s (v1.10)
  4870.                     in 1/18s (v1.11+)
  4871.                 CX = number of processes
  4872.                 DX = number of "(starting)" records (v2.00+)
  4873.                 SI = number of records in process info array
  4874.                      (v2.00+) (always 15 for v1.x)
  4875.                 ES:DI -> process info array (see below)
  4876.         0004h get version
  4877.         Return: AH = major version
  4878.             AL = minor version
  4879.         0005h (v1.10+) get time since DESQview started
  4880.         Return: DX:AX = 1/100s since DV start (v1.10)
  4881.             DX:AX = 1/18s since DV start (v1.11+)
  4882.         0006h (v1.10+) get number of task switches
  4883.         Return: DX:AX = total task switches
  4884.             CX = task switches in last instantaneous interval
  4885. Notes:    DVSIXDI is part of the DVSI (DESQview System Information) package by
  4886.       Daniel J. Bodoh
  4887.     for v1.00, function 0003h allocates common memory, which the caller
  4888.       must deallocate after reading the process information; only the
  4889.       currently used records are placed in the buffer
  4890.     for v1.10+, function 0003h merely returns a pointer to the internal
  4891.       array of process information; the caller should make a copy of the
  4892.       array while inside a critical section (see INT 15/AX=101Bh).    Only
  4893.       those records with bit 7 of the first byte set are valid.
  4894. Index:    installation check;DVSIXDI
  4895.  
  4896. Format of information for one process (v1.00):
  4897. Offset    Size    Description
  4898.  00h    BYTE    flags
  4899.         bit 7: process slot is valid
  4900.  01h    WORD    offset into DESQVIEW.DVO of program's record if started from
  4901.         Open Windows menu, else undefined
  4902.  03h    WORD    Switch Windows window number
  4903.  05h    WORD    segment of process handle
  4904.  07h    WORD    number of tasks owned by process
  4905.  09h    WORD    mapping context of process (see INT 15/AX=1016h)
  4906.  0Bh    DWORD    hook for other programs
  4907.  
  4908. Format of information for one process (v1.10-v2.00):
  4909. Offset    Size    Description
  4910.  00h    BYTE    flags
  4911.         bit 7: valid record
  4912.         bit 6: (v2.00+) record is allocated; if bit 7 clear, process
  4913.             is "(starting)" and only offsets 01h and 09h are valid
  4914.         bit 5: (v2.00+) this app currently owns the CPU
  4915.         bit 4: reserved (0)
  4916.         bit 3: DESQview system task
  4917.         bit 2: reserved (0)
  4918.         bit 1: task has keyboard (currently unused)
  4919.         bit 0: task swapped out (currently unused)
  4920.  01h    WORD    Open Window keys
  4921.  03h    WORD    Switch Windows number
  4922.  05h    WORD    segment of process handle
  4923.  07h    WORD    number of tasks for process
  4924.  09h    WORD    process mapping context
  4925.  0Bh    DWORD    time process started (relative to start of DESQview)
  4926.  0Fh    DWORD    time process last got CPU (relative to start of DESQview)
  4927.  13h    DWORD    time process last gave up CPU (relative to start of DESQview)
  4928.  17h    DWORD    total CPU time since process started
  4929.  1Bh    DWORD    CPU time at start of current instantaneous interval
  4930.  1Fh    DWORD    CPU time in current instantaneous interval
  4931.  23h    DWORD    hook for other programs
  4932. Note:    all times are in 1/100s for v1.10, in 1/18s for v1.11+
  4933. --------Q-2FDE01BXFFFE-----------------------
  4934. INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
  4935.     AX = DE01h
  4936.     BX = FFFEh
  4937.     CX = 4D47h ("MG")
  4938.     DX = 0052h (0,"R")
  4939. Return: AL = FFh
  4940.     DX = 584Dh
  4941. --------Q-2FDE02-----------------------------
  4942. INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
  4943.     AX = DE02h
  4944.     BX = mapping context of DESQview
  4945.     DX = handle of DESQview system task
  4946. Note:    driver should pass this call to previous handler after doing its work
  4947. SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
  4948. --------Q-2FDE03-----------------------------
  4949. INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
  4950.     AX = DE03h
  4951.     BX = mapping context of DESQview
  4952.     DX = handle of DESQview system task
  4953. Notes:    driver should pass this call to previous handler before doing its work
  4954.     DESQview makes this call when it is exiting, but before unhooking any
  4955.       interrupt vectors
  4956. SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
  4957. --------Q-2FDE04-----------------------------
  4958. INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
  4959.     AX = DE04h
  4960.     BX = mapping context of new process (see INT 15/AX=1016h)
  4961.     DX = handle of process
  4962. Return: nothing
  4963. Notes:    XMS XDI handler (installed by default) allocates a 22-byte record
  4964.       (see below) from "common" memory to control access to XMS memory
  4965.     all DOS, BIOS, and DV API calls are valid in handler
  4966.     driver should pass this call to previous handler after processing it
  4967. SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
  4968.  
  4969. Format of XMS XDI structure:
  4970. Offset    Size    Description
  4971.  00h    DWORD    pointer to 10-byte record???
  4972.  04h    DWORD    pointer to next XMS XDI structure
  4973.  08h    WORD    mapping context
  4974.  0Ah    BYTE    ???
  4975.  0Bh  5 BYTEs    XMS entry point to return for INT 2F/AX=4310h
  4976.         (FAR jump to next field)
  4977.  10h  6 BYTEs    FAR handler for XMS driver entry point
  4978.         (consists of a FAR CALL followed by RETF)
  4979. --------Q-2FDE05-----------------------------
  4980. INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
  4981.     AX = DE05h
  4982.     BX = mapping context of process (see INT 15/AX=1016h)
  4983.     DX = handle of last task in process
  4984. Return: nothing
  4985. Notes:    XMS XDI handler releases the structure allocated by AX=DE04h
  4986.     driver should pass this call to previous handler before processing it
  4987.     all DOS, BIOS, and DV API calls except those generating a task switch
  4988.       are valid in handler
  4989. SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
  4990. --------Q-2FDE06-----------------------------
  4991. INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
  4992.     AX = DE06h
  4993.     BX = mapping context of process containing task
  4994.     DX = handle of new task
  4995. Notes:    driver should pass this call to previous handler after processing it
  4996.     all DOS, BIOS, and DV API calls are valid in handler
  4997. --------Q-2FDE07-----------------------------
  4998. INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
  4999.     AX = DE07h
  5000.     BX = mapping context of process containing task
  5001.     DX = handle of task
  5002. Notes:    driver should pass this call to previous handler before processing it
  5003.     all DOS, BIOS, and DV API calls except those generating a task switch
  5004.       are valid in handler
  5005. SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
  5006. --------Q-2FDE08-----------------------------
  5007. INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
  5008.     AX = DE08h
  5009.     BX = mapping context of task being switched from (see INT 15/AX=1016h)
  5010.     DX = handle of task being switched from
  5011. Notes:    invoked prior to task swap, interrupts, etc
  5012.     driver should pass this call to previous handler after processing it
  5013. SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
  5014. --------Q-2FDE09-----------------------------
  5015. INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
  5016.     AX = DE09h
  5017.     BX = mapping context of task being switched to (see INT 15/AX=1016h)
  5018.     DX = handle of task being switched to
  5019. Notes:    state is restored except for interrupts
  5020.     driver should pass this call to previous handler before processing it
  5021. SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
  5022. --------Q-2FDE0A-----------------------------
  5023. INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
  5024.     AX = DE0Ah
  5025.     BX = mapping context of task receiving focus
  5026.     DX = handle of running task
  5027. Notes:    driver should pass this call to previous handler before processing it
  5028.     this call often occurs inside a keyboard interrupt
  5029.     DV 2.42 does not provide this call to XDI handlers running inside a
  5030.       window; instead, it directly calls the INT 2F handler which was
  5031.       active at the time DV started
  5032. SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
  5033. --------Q-2FDE0B-----------------------------
  5034. INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
  5035.     AX = DE0Bh
  5036.     BX = mapping context of DESQview system task
  5037.     CX = number of system memory paragraphs required for the use of all
  5038.         XDI drivers (DV will add this to system memory in DVP buffer)
  5039.     DX = handle of DESQview system task
  5040.     SI = mapping context of new process if it starts
  5041.     ES:DI -> DVP buffer
  5042. Return: CX incremented as needed
  5043. Notes:    once DV invokes this function, the DVP buffer contents may be changed
  5044.     driver should pass this call to previous handler before processing it
  5045. --------Q-2FDE0C-----------------------------
  5046. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
  5047.     AX = DE0Ch
  5048.     BX = mapping context of task being swapped out (see INT 15/AX=1016h)
  5049.     DX = handle of DESQview system task
  5050. Note:    driver should pass this call to previous handler after processing it
  5051. --------Q-2FDE0D-----------------------------
  5052. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
  5053.     AX = DE0Dh
  5054.     BX = mapping context of process just swapped in (see INT 15/AX=1016h)
  5055.     DX = handle of DESQview system task
  5056. Note:    driver should pass this call to previous handler before processing it
  5057. --------Q-2FDE0E-----------------------------
  5058. INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
  5059.     AX = DE0Eh
  5060.     BX = mapping context of DESQview system task
  5061.     DX = handle of DESQview system task
  5062.     SI = mapping context of failed process (same as for call to AX=DE0Bh)
  5063. Note:    driver should pass this call to previous handler after processing it
  5064. --------Q-2FDE0F-----------------------------
  5065. INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
  5066.     AX = DE0Fh
  5067. Note:    DESQview 2.50+ calls this function just before it completes its
  5068.       initialization.  At the time of the call, DESQview has not yet
  5069.       changed any interrupt vectors
  5070. SeeAlso: AX=DE02h
  5071. --------Q-2FDE10-----------------------------
  5072. INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
  5073.     AX = DE10h
  5074.     BX = mapping context of process (see INT 15/AX=1016h)
  5075.     DX = task handle of process
  5076. Note:    DESQview 2.50+ calls this function before it frees the task; it is
  5077.       similar to AX=DE07h but allows the XDI handler to make calls which
  5078.       cause context switches
  5079. SeeAlso: AX=DE06h,AX=DE07h
  5080. --------c-2FDF00-----------------------------
  5081. INT 2F - HyperWare programs - INSTALLATION CHECK
  5082.     AX = DF00h
  5083.     BX = product code
  5084.         4248h ('BH') HyperStb
  5085.         4448h ('DH') HyperDisk v4.20+
  5086.         4B48h ('KH') HyperKey
  5087.         5348h ('SH') HyperScreen
  5088.     CX = 0000h
  5089.     DX = 0000h
  5090. Return: AL = status
  5091.         00h not installed
  5092.         FFh multiplex number in use
  5093.         CX = 5948h ('YH') if selected product installed
  5094.         ---HyperDisk---
  5095.         BX = code segment of resident portion
  5096.         DX = HyperDisk local data version
  5097. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5098. Note:    AH=DFh is the default; if it is already in use by some other program,
  5099.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5100. SeeAlso: INT 13/AX=8EEDh
  5101. Index:    installation check;HyperDisk|installation check;HyperStb
  5102. Index:    installation check;HyperKey|installation check;HyperScreen
  5103. Index:    HyperDisk;installation check|HyperStb;installation check
  5104. Index:    HyperKey;installation check|HyperScreen;installation check
  5105. --------c-2FDF01BX4448-----------------------
  5106. INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
  5107.     AX = DF01h
  5108.     BX = 4448h ('DH')
  5109. Return: AX = 0000h if function supported
  5110.         BX = number of cache buffers in use
  5111.         CX = number of cache buffers which have been modified
  5112.         DL = caching flags (see below)
  5113. Note:    AH=DFh is the default; if it is already in use by some other program,
  5114.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5115. SeeAlso: AX=DF00h,AX=DF02h
  5116.  
  5117. Bitfields for caching flags:
  5118.  bit 0    staged writes enabled for floppy disks
  5119.  bit 1    staged writes enabled for hard disks
  5120.  bit 2    writes verified on floppy disks
  5121.  bit 3    writes verified on hard disks
  5122.  bit 4    reserved (0)
  5123.  bit 5    reserved (0)
  5124.  bit 6    floppy caching enabled
  5125.  bit 7    all caching functions enabled
  5126. --------c-2FDF02BX4448-----------------------
  5127. INT 2F - HyperDisk v4.50+ - SET CACHE STATE
  5128.     AX = DF02h
  5129.     BX = 4448h ('DH')
  5130.     DL = new caching flags (see AX=DF01h)
  5131. Return: AX = 0000h if supported
  5132.         BX = number of cache buffers in use
  5133.         CX = number of cache buffers which have been modified
  5134.         DL = previous caching flags (see AX=DF01h)
  5135. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5136. Note:    AH=DFh is the default; if it is already in use by some other program,
  5137.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5138. SeeAlso: AX=DF00h,AX=DF01h
  5139. --------U-2FE000-----------------------------
  5140. INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
  5141.     AX = E000h
  5142. Return: AX = 4A52h ("JR") if present
  5143. Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
  5144.       apparent DOS version analogously to MS-DOS SETVER
  5145. Note:    this installation check differs from the usual one of returning AL=FFh
  5146. SeeAlso: AX=E001h,INT 21/AH=52h
  5147. --------K-2FE000DX5354-----------------------
  5148. INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
  5149.     AX = E000h
  5150.     DX = 5354h ("ST")
  5151. Return: AL = FFh if installed
  5152.         BX = version (BH = major, BL = BCD minor)
  5153.         DX = segment of resident code
  5154. Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
  5155. --------U-2FE001-----------------------------
  5156. INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
  5157.     AX = E001h
  5158. Return: AH = major version
  5159.     AL = minor version
  5160. SeeAlso: AX=E000h
  5161. --------U-2FE002-----------------------------
  5162. INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
  5163.     AX = E002h
  5164. Return: AL = FFh if successful
  5165.         BH = major DOS version
  5166.         BL = minor DOS version
  5167.         CH = DOS version flag
  5168.         CL = OEM number
  5169.         DH = major DR-DOS version number (FFh if unknown)
  5170.         DL = minor DR-DOS version number (FFh if unknown)
  5171. SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
  5172. --------U-2FE003-----------------------------
  5173. INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
  5174.     AX = E003h
  5175.     BH = new major DOS version
  5176.     BL = new minor DOS version
  5177.     CH = new DOS version flag
  5178.     CL = new DOS revision number
  5179.     DH = new OEM number
  5180. SeeAlso: AX=E002h
  5181. --------U-2FE004-----------------------------
  5182. INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
  5183.     AX = E004h
  5184. Return: AL = FFh if successful
  5185. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  5186. --------U-2FE005-----------------------------
  5187. INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
  5188.     AX = E005h
  5189. Return: AL = FFh if successful
  5190. SeeAlso: AX=E000h,AX=E004h,AX=E006h
  5191. --------U-2FE006-----------------------------
  5192. INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
  5193.     AX = E006h
  5194. Return: AL = FFh if successful
  5195.         BL = status
  5196.         01h resident and active
  5197.         02h resident and inactive
  5198. --------U-2FE007-----------------------------
  5199. INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
  5200.     AX = E007h
  5201. Return: AL = FFh if successful
  5202.         BL = status
  5203.         00h if TaskMAX not loaded before SETDRVER
  5204.         FFh if TaskMAX was loaded before SETDRVER
  5205. SeeAlso: AX=E003h
  5206. --------U-2FE0-------------------------------
  5207. INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
  5208.     AH = E0h
  5209.     AL = 08h-10h
  5210. --------K-2FE100-----------------------------
  5211. INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
  5212.     AX = E100h
  5213. Return: AX = 0001h if installed
  5214.         DS:SI -> ASCIZ hotkey name
  5215.         DS:DI -> ASCIZ recording filename
  5216. Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
  5217.       by P2 Enterprises
  5218. SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
  5219. Index:    hotkeys;Phantom2
  5220. --------K-2FE101-----------------------------
  5221. INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
  5222.     AX = E101h
  5223.     BX = function mask (see below)
  5224.     CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
  5225.     DS:DX -> ASCIZ filespec if BX bit 7 set
  5226. SeeAlso: AX=E100h
  5227. Index:    hotkeys;Phantom2
  5228.  
  5229. Bitfields for function mask
  5230.  bit 0    record
  5231.  bit 1    play
  5232.  bit 2    QuickPlay
  5233.  bit 3    loop
  5234.  bit 4    mode display toggle
  5235.  bit 5    sound toggle
  5236.  bit 6    set hotkey
  5237.  bit 7    set filespec
  5238. --------K-2FE102-----------------------------
  5239. INT 2F - Phantom2 v1.1+ - UNINSTALL
  5240.     AX = E102h
  5241. Return: AX = status
  5242.         0001h removal successful
  5243.         0002h not installed as TSR
  5244.         FFFFh disabled but not removed
  5245. SeeAlso: AX=E100h
  5246. --------K-2FE103-----------------------------
  5247. INT 2F - Phantom2 v2.8 - SET ??? FLAG
  5248.     AX = E103h
  5249. Return: AX = 0001h
  5250. SeeAlso: AX=E100h
  5251. --------K-2FE300-----------------------------
  5252. INT 2F - ANARKEY.COM - INSTALLATION CHECK
  5253.     AX = E300h
  5254. Return: AL = 00h not installed
  5255.          FEh if installed but suspended (v3.0+)
  5256.          FFh installed
  5257. Program: ANARKEY.COM is a commandline recall program by Steven Calwas
  5258. Note:    E3h is the default function number, but can be set to any value from
  5259.       C0h to FFh
  5260. SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
  5261. SeeAlso: AX=E307h,INT 66"Newkey"
  5262. --------K-2FE301-----------------------------
  5263. INT 2F U - ANARKEY.COM v2+ - GET ???
  5264.     AX = E301h
  5265. Return: DX:BX -> ???
  5266. SeeAlso: AX=E300h
  5267.  
  5268. Format of returned data structure for ANARKEY v2.0:
  5269. Offset    Size    Description
  5270.  -7   7 BYTEs    signature ('ANARKEY')
  5271.  00h    WORD    ??? (I see 0001h in v2.0)
  5272.  02h    WORD    ??? (I see 0001h in v2.0)
  5273.  04h    WORD    ??? (I see 0 in v2.0)
  5274.  06h    WORD    PSP segment of next program loaded
  5275.  
  5276. Format of returned data structure for ANARKEY v3+:
  5277. Offset    Size    Description
  5278.  -1    BYTE    multiplex number
  5279.  00h    WORD    ??? (I see 0001h in v3.0-4.0)
  5280.  02h    WORD    ??? (I see 0001h in v3.0-4.0)
  5281.  04h    BYTE    ??? (I see 0 in v3.0-4.0)
  5282.  05h    WORD    PSP segment of next program loaded
  5283. --------K-2FE302-----------------------------
  5284. INT 2F U - ANARKEY.COM v3+ - ???
  5285.     AX = E302h
  5286.     BL = ???
  5287. Return: ???
  5288. SeeAlso: AX=E300h
  5289. --------K-2FE303-----------------------------
  5290. INT 2F U - ANARKEY.COM v3+ - ANARKMD API
  5291.     AX = E303h
  5292.     BL = function
  5293.         01h toggle insert mode
  5294.         02h display contents of history buffer
  5295.         03h write history buffer to file
  5296.         ES:DX -> file name
  5297.         04h clear history buffer
  5298.         05h undefine all aliases
  5299.         06h show aliases
  5300.         07h list programs using Unix switchar
  5301.         08h jump to bottom of history buffer
  5302.         09h (v4.0) add string to history buffer
  5303.         ES:DX -> ASCIZ string
  5304.         0Ah (v4.0) ???
  5305.         ES:DX -> ???
  5306.         0Bh (v4.0) copy string to edit buffer for use as next input line
  5307.         ES:DX -> ASCIZ string
  5308.         0Ch (v4.0) ???
  5309.         0Dh (v4.0) copy ??? to ???
  5310.         0Eh (v4.0) ???
  5311.         0Fh (v4.0) ???
  5312.         10h (v4.0) set ??? flag
  5313.         11h (v4.0) display error message about running in EMS under Windows
  5314. Return: ???
  5315. SeeAlso: AX=E300h
  5316. --------K-2FE304-----------------------------
  5317. INT 2F U - ANARKEY.COM v2+ - ???
  5318.     AX = E304h
  5319.     BL = ???
  5320. Return: ???
  5321. SeeAlso: AX=E300h
  5322. --------K-2FE305-----------------------------
  5323. INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
  5324.     AX = E305h
  5325.     BL = new state
  5326.         01h suspended
  5327.         00h enabled
  5328. SeeAlso: AX=E300h
  5329. --------K-2FE306-----------------------------
  5330. INT 2F U - ANARKEY.COM v4.0 - GET ???
  5331.     AX = E306h
  5332. Return: AX = ???
  5333. SeeAlso: AX=E300h
  5334. --------K-2FE307-----------------------------
  5335. INT 2F U - ANARKEY.COM v4.0 - GET ???
  5336.     AX = E307h
  5337. Return: AX = ???
  5338.     BL = ???
  5339. SeeAlso: AX=E300h
  5340. --------l-2FE44D-----------------------------
  5341. INT 2F - NDOS - API
  5342.     AX = E44Dh
  5343. Note:    as NDOS is a licensed version of 4DOS v3.03, the API is identical to
  5344.       that for 4DOS, except that AH=E4h instead of D4h and the installation
  5345.       check returns AX=44EEh instead of AX=44DDh
  5346. SeeAlso: AX=D44Dh,AX=E44Eh
  5347. --------l-2FE44EBX0000-----------------------
  5348. INT 2F C - NDOS - AWAITING USER INPUT
  5349.     AX = E44Eh
  5350.     BX = 0000h NDOS is ready to display prompt
  5351.        = 0001h NDOS has displayed the prompt, about to accept user input
  5352. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  5353. SeeAlso: AX=E44Dh
  5354. --------E-2FED00-----------------------------
  5355. INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
  5356.     AX = ED00h
  5357.     BL = DOS extender
  5358.         01h 286dosx v1.3+ (Software Development Kit)
  5359.         02h 286dosx v1.3+ (Run-Time Kit)
  5360.         03h 386dosx v4.0+ (SDK)
  5361.         04h 386dosx v4.0+ (RTK)
  5362. Return: AL = status
  5363.         00h not installed
  5364.         FFh installed
  5365.         SI = 5048h ("PH")
  5366.         DI = 4152h ("AR")
  5367.         CH = major version number
  5368.         CL = minor version number
  5369.         DX = flags
  5370.             bit 0: running under DPMI
  5371.             bit 1: running under Phar Lap VMM
  5372.         if running under DPMI:
  5373.             BX = DPMI version (BH = major, BL = minor)
  5374. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
  5375. --------E-2FED03-----------------------------
  5376. INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
  5377.     AX = ED03h
  5378.     CX = real-mode code segment
  5379.     DX = real-mode data segment
  5380. Return: CF clear if successful
  5381.         CX = protected-mode code segment selector
  5382.         DX = protected-mode data segment selector
  5383.         ES:DI -> real-mode entry point for calling protected-mode functions
  5384.             (see INT 21/AX=250Dh)
  5385.     CF set on error
  5386.         AX = error code
  5387.         0008h unable to allocate LDT descriptors
  5388. --------E-2FED80-----------------------------
  5389. INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
  5390.     AX = ED80h
  5391.     BL = DOS extender ID (see AX=ED00h)
  5392.     SI = 5048h ("PH")
  5393.     DI = 4152h ("AR")
  5394.     ???
  5395. Return: ???
  5396. --------y-2FEE00-----------------------------
  5397. INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
  5398.     AX = EE00h
  5399. Return: AL = FFh if installed
  5400. Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
  5401. SeeAlso: INT 21/AH=40h"NB.SYS"
  5402. --------U-2FEE00-----------------------------
  5403. INT 2F - XVIEW - INSTALLATION CHECK
  5404.     AX = EE00h
  5405. Return: AX = 00FFh if installed
  5406. Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
  5407. --------N-2FEE00-----------------------------
  5408. INT 2F - WEB v4.02 - INSTALLATION CHECK
  5409.     AX = EE00h
  5410. Return: AL = status
  5411.         00h not installed
  5412.         FFh installed
  5413. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  5414. SeeAlso: AH=EEh"WEB",AX=EEF0h
  5415. --------U-2FEE01-----------------------------
  5416. INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
  5417.     AX = EE01h
  5418.     DS:DX -> ASCIZ string containing case-insensitive keyword to look up
  5419. Return: AX = status (see below)
  5420. Note:    the specified keyword should be a hyperlink in the _IndexPage of some
  5421.       database; the current database is searched first
  5422. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
  5423.  
  5424. Values for status:
  5425.  0000h    successful
  5426.  00F1h    unknown subfunction
  5427.  00F2h    unable to pop up
  5428. --------U-2FEE02-----------------------------
  5429. INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
  5430.     AX = EE02h
  5431.     DX = physical page number or anchor page number (see below)
  5432. Return: AX = status (see AX=EE01h)
  5433. Note:    physical page numbers are assigned by the hypertext compiler, and
  5434.       will change if a page is inserted in the middle
  5435. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
  5436.  
  5437. Values for anchor page number:
  5438.  FFEAh    _Credits
  5439.  FFECh    _SearchTopics
  5440.  FFEDh    _SearchText
  5441.  FFF0h    _ManualList
  5442.  FFF5h    _HelpOnHelp
  5443.  FFF8h    _HomePage
  5444.  FFF9h    _IndexPage
  5445. --------U-2FEE03-----------------------------
  5446. INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
  5447.     AX = EE03h
  5448.     DS:DX -> data packet (see below)
  5449. Return: AX = status (see AX=EE01h)
  5450. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
  5451.  
  5452. Format of data packet:
  5453. Offset    Size    Description
  5454.  00h    DWORD    -> ASCIZ database filespec (0000h:0000h for current database)
  5455.  04h    DWORD    -> ASCIZ text to look up or 0000h:0000h
  5456.  08h    WORD    page number (0000h if keyword used)
  5457.  0Ah  6 BYTEs    reserved
  5458. --------U-2FEE04-----------------------------
  5459. INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
  5460.     AX = EE04h
  5461. Return: AX = status (see AX=EE01h)
  5462. Note:    equivalent to the action taken when the user presses the Alt-L hotkey
  5463. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
  5464. --------U-2FEE05-----------------------------
  5465. INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
  5466.     AX = EE05h
  5467. Return: AX = status (see AX=EE01h)
  5468. Note:    equivalent to the action taken when the user presses the Alt-H hotkey
  5469. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
  5470. --------U-2FEE06-----------------------------
  5471. INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
  5472.     AX = EE06h
  5473. Return: AX = status (see also AX=EE01h)
  5474.         0001h specified filename is not an xText database
  5475.         0002h no databases found
  5476.         0003h bad data in file
  5477.         0004h memory shortage
  5478.         0005h unable to open the requested file
  5479.         0007h invalid page number for file
  5480. Note:    although this call is not required, the exit code can alert the
  5481.       caller to problems; if the call is not made, the program should
  5482.       enforce a delay of about 1/2 second to allow the viewer to pop up,
  5483.       and should not get keyboard input or attempt disk accesses during
  5484.       the delay
  5485. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
  5486. --------N-2FEE-------------------------------
  5487. INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
  5488.     AH = EEh
  5489.     AL = module ID (see below)
  5490. Return: AX = 0000h if installed
  5491.         ES:DI -> far entry point for module-specific API calls (see below)
  5492. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  5493. SeeAlso: AX=EE00h"WEB"
  5494.  
  5495. Values for module ID:
  5496.  10h    server module (SERVER.EXE)
  5497.  20h    client module (CLIENT.EXE)
  5498.  30h    mail module (MAIL.EXE)
  5499.  40h    spooler (PCSPOOL.EXE)
  5500.  50h    kernel module (KERNEL.EXE)
  5501.  60h    SAP module (KERNEL.EXE)
  5502.  70h    resident station manager (SM.EXE)
  5503.  90h    router module (ROUTER.EXE)
  5504.  
  5505. Call server module entry point with:
  5506.     BX = function
  5507.         0000h remove server module
  5508.         Return: AX = status (0000h if successful, else WEB error code)
  5509.         0001h create SYSINFO file
  5510.         Note:    the SYSINFO file is used by the station manager when
  5511.               displaying info for a particular station
  5512.         0002h get server object table
  5513.         Return: CX = number of server objects
  5514.             ES:DI -> server object table
  5515.         Note:    server objects include drives and devices that the
  5516.               server module controls
  5517.         0003h get server variables
  5518.         Return: ES:DI -> server variables
  5519.  
  5520. Call client module entry point with:
  5521.     BX = function
  5522.         0000h remove client module
  5523.         Return: AX = status (0000h if successful, else WEB error code)
  5524.         0001h decrement client-only flag
  5525.         0002h increment client-only flag
  5526.         0005h set device capture
  5527.         Note:    decrements DeviceOutput flag, telling the spooler that
  5528.               it may trap device output again
  5529.         0006h clear device capture
  5530.         Note:    increments DeviceOutput flag, telling the spooler that
  5531.               it should not trap device output (this is used
  5532.               internally by the spooler to prevent it from trapping
  5533.               its own output)
  5534.         0007h get client debug pointer
  5535.         Return: ES:DI -> client debug data structure (see below)
  5536.         0008h get root drive
  5537.         Return: AL = WEB startup drive
  5538.         0009h get maximum possible drive/device redirections
  5539.         Return: AL = maximum drive redirections
  5540.             CH = maximum LPTx redirections
  5541.             CL = maximum COMx redirections
  5542.         000Ah suspend client
  5543.         Return: AX = previous value of Suspend flag
  5544.         000Bh resume client
  5545.         Return: AX = previous value of Suspend flag
  5546.         000Ch get instance data
  5547.         CX = maximum number of structures in array
  5548.         ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
  5549.             (see below)
  5550.         Return: CX = number of structures actually returned
  5551.         Note:    used internally by WEB4WIN
  5552.  
  5553. Call mail module entry point with:
  5554.     BX = function
  5555.         0000h remove mail module
  5556.         Return: AX = status (0000h successful, else WEB error code)
  5557.         0001h set mail poll
  5558.         Note:    schedules the WEB mail module
  5559.         0002h set mail notify
  5560.         Note:    sets the Notify flag, which determines whether the
  5561.               user will be notified when mail is received
  5562.         0003h clear mail notify
  5563.         Note:    clears the Notify flag, which determines whether the
  5564.               user will be notified when mail is received
  5565.         0004h check whether new mail has arrived
  5566.         Return: AL = new mail status
  5567.                 00h no new mail since last call
  5568.                 else new mail has arrived
  5569.         Note:    also clears the new-mail flag after retrieving it
  5570.         0005h send notify
  5571.         ES:DI -> name of WEB user to be notified
  5572.         0006h get post office
  5573.         Return: ES:DI -> full network path of Post Office subdirectory
  5574.  
  5575. Call spooler entry point with:
  5576.     BX = function
  5577.         0000h remove PCSpool module
  5578.         Return: AX = status (0000h successful, else WEB error code)
  5579.         0001h set spooler poll
  5580.         Note:    schedules the WEB spooler
  5581.         0002h check spooler changed
  5582.         Return:    AX = 0000h
  5583.         Note:    this call is a NOP in current versions of WEB
  5584.  
  5585. Call kernel entry point with:
  5586.     BX = function
  5587.         0000h remove kernel module
  5588.         Return: AX = status (0000h successful, else WEB error code)
  5589.         0001h set kernel ^S filter
  5590.         DL = new state (00h don't filter ^S, nonzero do filter)
  5591.         0002h get kernel data area
  5592.         Return: ES:DI -> kernel data area
  5593.         0003h display dialog box
  5594.         CL = dialog box type
  5595.             00h password
  5596.             01h E-Note received notification
  5597.             02h Novell login
  5598.             03h general notification
  5599.         DL = number of rows to display
  5600.         ES:SI -> array of far pointers to rows to be displayed
  5601.         ES:DI -> Pascal-style input buffer
  5602.         Return: AX = status (0000h successful, else error code)
  5603.         0004h kernel service events
  5604.         0005h get kernel's in-critical-section flag
  5605.         Return: ES:DI -> kernel InCriticalSection flag
  5606.         0006h schedule DOS event
  5607.         AL = directive
  5608.             00h do not ignore WEB ExtraBusy flag
  5609.             01h ignore ExtraBusy flag
  5610.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  5611.         ES:SI -> WEB AES Event Control Block (ECB) (see below)
  5612.         Notes:    the WEB Asynchronous Event Scheduler is similar to the
  5613.               one used by IPX; this call schedules a special ECB
  5614.               to be executed at a later time.  Unlike IPX ECBs,
  5615.               the timeout must be set explicitly by the caller
  5616.             this function also calls function 0004h
  5617.         0007h check busy
  5618.         AL = directive
  5619.             00h do not ignore WEB ExtraBusy flag
  5620.             01h ignore ExtraBusy flag
  5621.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  5622.         Return: AX = status (0000h not busy, else busy)
  5623.         0008h set keyboard intercept
  5624.         Note:    currently a NOP which returns immediately
  5625.         0009h get keyboard intercept
  5626.         Note:    currently a NOP which returns immediately
  5627.         000Ah get dialog flags
  5628.         Return: ES:DI -> kernel dialog flags (see below)
  5629.         000Bh get network path
  5630.         Return: ES:DI -> fully-qualified network path of file where
  5631.                 the screen is stored on Dialog calls
  5632.         000Ch kernel alternate dialog
  5633.         CL = dialog box type
  5634.             00h password
  5635.             01h E-Note received notification
  5636.             02h Novell login
  5637.             03h general notification
  5638.         DL = number of rows to display
  5639.         ES:SI -> array of far pointers to rows to be displayed
  5640.         ES:DI -> Pascal-style input buffer
  5641.         Return: AX = status (0000h successful, else error code)
  5642.         Note:    this function is identical to function 0003h except
  5643.               that it does not notify WEB4WIN of the impending
  5644.               dialog request
  5645.         000Dh get machine/operating system type
  5646.         Return: AX = machine/operating system type
  5647.                 01h IBM PC, MS-DOS
  5648.                 02h IBM PC, DOSV (Japanese)
  5649.                 03h NEC PC-9800, JDOS (Japanese)
  5650.                 04h IBM PC, Korean DBC DOS
  5651.  
  5652. Format of client debug data structure:
  5653. Offset    Size    Description
  5654.  00h    WORD    total files
  5655.  02h    WORD    files free
  5656.  04h    WORD    no files
  5657.  06h    WORD    minimum files
  5658.  08h    WORD    total FCBs
  5659.  0Ah    WORD    total safe FCBs
  5660.  0Ch    WORD    FCBs in use
  5661.  0Eh    WORD    wrong FCB
  5662.  10h    WORD    compressed
  5663.  12h    WORD    retransmits
  5664.  
  5665. Format of WIN_INSTANCE_DATA structure:
  5666. Offset    Size    Description
  5667.  00h    DWORD    real-mode pointer to data to be instanced
  5668.  04h    WORD    size of data to be instanced
  5669.  
  5670. Format of WEB AES Event Control Block:
  5671. Offset    Size    Description
  5672.  00h    DWORD    link address
  5673.  04h    WORD    ESR address
  5674.  08h    BYTE    InUse flag
  5675.  09h    BYTE    completion code
  5676.  0Ah  3 BYTEs    reserved
  5677.  0Dh    WORD    timeout
  5678.  0Fh    BYTE    IgnoreExtra flag
  5679.  10h    WORD    PSP
  5680.  12h    DWORD    DTA
  5681.  16h    WORD    AX value for DOS critical information
  5682.  18h    WORD    BX value for DOS critical information
  5683.  1Ah    WORD    CX value for DOS critical information
  5684.  1Ch    WORD    DX value for DOS critical information
  5685.  
  5686. Values for kernel dialog flags:
  5687.  01h    dialog will timeout
  5688.  02h    display stars instead of entered keystrokes
  5689. --------N-2FEEF0-----------------------------
  5690. INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
  5691.     AX = EEF0h
  5692.     BX = notification function ID (see below)
  5693. Return: varies by notification function
  5694. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  5695. Note:    the notification functions are used internally by WEB modules to notify
  5696.       other modules and external programs of actions or event, and should
  5697.       never be called by an application
  5698. SeeAlso: AX=EE00h"WEB"
  5699.  
  5700. Values for Notification Function ID:
  5701.  00h    node added
  5702.  01h    node deleted
  5703.  02h    dial attempt
  5704.  03h    dial failed
  5705.  04h    file close
  5706.  05h    close connection
  5707.  07h    check Windows mode
  5708.  20h    link up
  5709.  21h    link down
  5710. --------K-2FF000-----------------------------
  5711. INT 2F U - 4MAP - INSTALLATION CHECK
  5712.     AX = F000h
  5713. Return: AX = 00FFh
  5714. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  5715. Note:    returns AX=00FFh for any value of AL not listed here
  5716. SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
  5717. --------K-2FF001-----------------------------
  5718. INT 2F U - 4MAP - GET KEY MAPPINGS
  5719.     AX = F001h
  5720. Return: ES:BX -> key mappings
  5721. SeeAlso: AX=F000h
  5722. --------K-2FF002-----------------------------
  5723. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  5724.     AX = F002h
  5725.     BL = character to insert
  5726. Return: AX = status
  5727.         0000h successful
  5728.         0001h buffer full
  5729. SeeAlso: AX=F000h,AX=F003h
  5730. --------K-2FF003-----------------------------
  5731. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  5732.     AX = F003h
  5733.     BL = character to insert
  5734. Return: AX = status
  5735.         0000h successful
  5736.         0001h buffer full
  5737. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  5738. SeeAlso: AX=F000h,AX=F002h
  5739. --------m-2FF1-------------------------------
  5740. INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
  5741.     AH = F1h
  5742.     AL <> F1h
  5743. Return: AL = F1h if installed
  5744. Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
  5745.       popup TSRs to be loaded but swapped out to disk, EMS, or XMS.     One
  5746.       TSR at a time is brought back into memory at the user's request.
  5747. --------E-2FF100-----------------------------
  5748. INT 2F - DOS EXTENDER INSTALLATION CHECK
  5749.     AX = F100h
  5750. Return: AL = FFh if DOS extender present
  5751.         SI = 444Fh ("DO")
  5752.         DI = 5358h ("SX")
  5753. Note:    supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
  5754. SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  5755. --------W-2FF200-----------------------------
  5756. INT 2F - WINX - INSTALLATION CHECK
  5757.     AX = F200h
  5758. Return: AX = 00FFh if installed
  5759. Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
  5760.       launch Windows applications from a DOS Box; it was published in
  5761.       "DOS and Windows Protected Mode-Programming with DOS Extenders"
  5762.       (Addison-Wesley) and should not be confused with the Windows driver
  5763.       of the same name which is part of the DESQview/X package
  5764. --------W-2FF201-----------------------------
  5765. INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
  5766.     AX = F201h
  5767. Return: AX = FFFFh if WINX is busy processing a different request
  5768.        = 0000h if successful
  5769.         BX:CX = address of server buffer
  5770.  
  5771. Format of server buffer
  5772. Offset    Size    Description
  5773.  00h    BYTE    command/status
  5774.         00h buffer available
  5775.         01h buffer contains result
  5776.         02h change directory
  5777.         03h execute program
  5778.         FFh terminate windows portion of WINX
  5779.  01h  ? BYTEs    command (03h) or directory (02h)
  5780.   or
  5781.  01h    DWORD    result (01h)
  5782. --------W-2FF202-----------------------------
  5783. INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
  5784.     AX = F202h
  5785.     BX:CX -> directory
  5786. Return: AX = FFFFh if WINX is busy processing a different request
  5787.        = 0000h if successful
  5788. SeeAlso: AX=F200h,AX=F203h
  5789. --------W-2FF203-----------------------------
  5790. INT 2F - WINX - EXECUTE COMMAND
  5791.     AX = F203h
  5792.     BX:CX -> command
  5793. Return: AX = FFFFh if WINX is busy processing a different request
  5794.        = 0000h if successful
  5795. SeeAlso: AX=F200h,AX=F202h
  5796. ----------2FF400-----------------------------
  5797. INT 2F - FINDIRQ.COM - INSTALLATION CHECK
  5798.     AX = F400h
  5799. Return: AL = 01h if installed
  5800. Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
  5801.       of PC Magazine; when run as a TSR it can determine which IRQs are
  5802.       used only when a device is active
  5803. SeeAlso: AX=F401h
  5804. ----------2FF401CX5121-----------------------
  5805. INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
  5806.     AX = F401h
  5807.     CX = 5121h ('Q!')
  5808. Return: AX:DX -> hooked interrupt table (see below)
  5809. SeeAlso: AX=F400h
  5810.  
  5811. Format of hooked interrupt table:
  5812. Offset    Size    Description
  5813.  00h    BYTE    1Ch
  5814.  01h    DWORD    FINDIRQ's INT 1C handler
  5815.  05h    DWORD    original INT 1C handler
  5816.  09h    BYTE    28h
  5817.  0Ah    DWORD    FINDIRQ's INT 28 handler
  5818.  0Eh    DWORD    original INT 28 handler
  5819.  12h    BYTE    2Fh
  5820.  13h    DWORD    FINDIRQ's INT 2F handler
  5821.  17h    DWORD    original INT 2F handler
  5822. --------d-2FF700-----------------------------
  5823. INT 2F - AUTOPARK.COM - INSTALLATION CHECK
  5824.     AX = F700h
  5825. Return: AL = 00h not installed
  5826.          FFh installed
  5827. Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
  5828. --------d-2FF701-----------------------------
  5829. INT 2F - AUTOPARK.COM - SET PARKING DELAY
  5830.     AX = F701h
  5831.     BX:CX = 32-bit count of 55ms timer ticks
  5832. --------d-2FF800CX4455-----------------------
  5833. INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
  5834.     AX = F800h
  5835.     CX = 4455h ("DU")
  5836.     DL = 45h ("E")
  5837. Return: AL = FFh if installed
  5838.         ES:BX -> ASCII signature "Universal Data Exchange"
  5839. Program: SuperStor is a disk-compression program by Addstor.
  5840. Note:    returns AX=0001h if AL is not 00h or 01h
  5841. SeeAlso: AX=1001h,AX=F801h
  5842. --------d-2FF801CX4455-----------------------
  5843. INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
  5844.     AX = F801h
  5845.     CX = 4455h ("DU")
  5846.     DL = 45h ("E")
  5847.     ES:BX = return address if successful
  5848. Return: at specified address if successfully removed from memory
  5849.     else
  5850.         AL = error code
  5851.         ???
  5852. Program: SuperStor is a disk-compression program by Addstor.
  5853. Note:    returns AX=0001h if AL is not 00h or 01h
  5854. SeeAlso: AX=1001h,AX=F800h
  5855. --------*-2FFB-------------------------------
  5856. INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
  5857.     AH = FBh
  5858. --------a-2FFB00-----------------------------
  5859. INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
  5860.     AX = FB00h
  5861. Return: AX = 00FFh if installed
  5862. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  5863. SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
  5864. --------U-2FFB00-----------------------------
  5865. INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
  5866.     AX = FB00h
  5867. Return: AX = FFFFh if installed
  5868.         BX = version (BCD, BH=major, BL=minor)
  5869. SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
  5870. --------a-2FFB01-----------------------------
  5871. INT 2F U - AutoBraille v1.1A - ???
  5872.     AX = FB01h
  5873.     ???
  5874. Return: ???
  5875. --------U-2FFB01-----------------------------
  5876. INT 2F U - Jot-It! v1.50 - GET USER NAME
  5877.     AX = FB01h
  5878. Return: DX:BX -> ASCIZ user name
  5879. SeeAlso: AX=FB02h"Jot-It"
  5880. --------a-2FFB02-----------------------------
  5881. INT 2F U - AutoBraille v1.1A - ???
  5882.     AX = FB02h
  5883. Return: AH = ???
  5884.     AL = ???
  5885. --------U-2FFB02-----------------------------
  5886. INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
  5887.     AX = FB02h
  5888. Return: DX:BX -> ASCIZ name of directory in which messages are stored
  5889. SeeAlso: AX=FB01h"Jot-It"
  5890. --------a-2FFB03-----------------------------
  5891. INT 2F U - AutoBraille v1.1A - GET NEXT ???
  5892.     AX = FB03h
  5893. Return: AX = ???
  5894. --------U-2FFB03-----------------------------
  5895. INT 2F U - Jot-It! v1.50 - UNINSTALL
  5896.     AX = FB03h
  5897. Return: resident code removed from memory
  5898. Note:    CAUTION: NO checks are performed to ensure that the interrupt vectors
  5899.       being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
  5900. SeeAlso: AX=FB00h"Jot-It"
  5901. --------a-2FFB-------------------------------
  5902. INT 2F U - AutoBraille v1.1A - SET ???
  5903.     AH = FBh
  5904.     AL = 04h-08h
  5905. Return: AX = 0000h
  5906. --------a-2FFB-------------------------------
  5907. INT 2F U - AutoBraille v1.1A - SET ???
  5908.     AH = FBh
  5909.     AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
  5910. Return: ???
  5911. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  5912. --------a-2FFB-------------------------------
  5913. INT 2F U - AutoBraille v1.1A - SET ???
  5914.     AH = FBh
  5915.     AL = 10h-1Fh
  5916.     ???
  5917. Return: ???
  5918. --------a-2FFB20-----------------------------
  5919. INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
  5920.     AX = FB20h
  5921.     BL = flags to set
  5922. SeeAlso: AX=FB21h"AutoBraille"
  5923. --------a-2FFB21-----------------------------
  5924. INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
  5925.     AX = FB21h
  5926.     BL = flags to clear
  5927. SeeAlso: AX=FB20h"AutoBraille"
  5928. --------a-2FFB22-----------------------------
  5929. INT 2F U - AutoBraille v1.1A - SET ???
  5930.     AX = FB22h
  5931.     BL = ???
  5932. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  5933. --------a-2FFB28-----------------------------
  5934. INT 2F U - AutoBraille v1.1A - ???
  5935.     AX = FB28h
  5936.     BX = ???
  5937.     ???
  5938. Return: ???
  5939. SeeAlso: AX=FB29h"AutoBraille"
  5940. --------a-2FFB29-----------------------------
  5941. INT 2F U - AutoBraille v1.1A - ???
  5942.     AX = FB29h
  5943.     BX = ???
  5944.     ???
  5945. Return: ???
  5946. SeeAlso: AX=FB28h"AutoBraille"
  5947. --------a-2FFB-------------------------------
  5948. INT 2F U - AutoBraille v1.1A - SET ???
  5949.     AH = FBh
  5950.     AL = 2Bh-34h
  5951.     BX = ???
  5952. --------a-2FFB35-----------------------------
  5953. INT 2F U - AutoBraille v1.1A - SET ???
  5954.     AX = FB35h
  5955.     BL = ???
  5956. --------a-2FFB36-----------------------------
  5957. INT 2F U - AutoBraille v1.1A - SET ???
  5958.     AX = FB36h
  5959.     BL = ???
  5960. --------a-2FFB37-----------------------------
  5961. INT 2F U - AutoBraille v1.1A - SET ???
  5962.     AX = FB37h
  5963.     BL = ???
  5964. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  5965. --------E-2FFB42BX0001-----------------------
  5966. INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
  5967.     AX = FB42h
  5968.     BX = 0001h
  5969. Return: AX = version number??? (AL=major, AH=minor)
  5970.     CX = next-selector increment
  5971. ---BC2.0---
  5972.     ES:BX -> 80-byte buffer for ???
  5973.     DX = DPMI version
  5974. ---BC3.0---
  5975.     BX = ??? (0000h)
  5976.     DX = ???
  5977.     ES:SI -> list of valid selectors ???
  5978. Notes:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  5979.       as version 1.000, while the version distributed with BC++ 3.0
  5980.       identifies itself as version 1.0; the former is 10864 bytes, the
  5981.       latter 22180 bytes.  The BC2.0 version is a DPMI loader, while
  5982.       the BC3.0 version also adds a DPMI host and DOS extender
  5983.     the BC++ 2.0 version displays an error message if called with BX
  5984.       values other than 0001h-0008h
  5985. SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
  5986. --------E-2FFB42BX0002-----------------------
  5987. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
  5988.     AX = FB42h
  5989.     BX = 0002h
  5990.     CX = size in bytes
  5991.     DX = bit flags
  5992.         bit 2: set to allocate DOS memory, clear for DPMI memory
  5993.     SI = selector of descriptor to be modified to access allocated memory
  5994.     DI = selector of a second descriptor to be modified
  5995. Return: AX = ??? or 0000h on error
  5996.     CX:DX = linear base address of DPMI memory block
  5997.     SI:DI = handle for DPMI memory block or FFFFh:FFFFh
  5998.     ???
  5999. Note:    two segment descriptors may be set if a code and an aliased data
  6000.       segment are required; if only one descriptor is needed, SI should
  6001.       equal DI on entry
  6002. BUG:    when allocating DOS memory, the code computes the linear address by
  6003.       multiplying the segment number by 4 rather than shifting by 4
  6004. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  6005. --------E-2FFB42BX0002-----------------------
  6006. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
  6007.     AX = FB42h
  6008.     BX = 0002h
  6009.     ES:SI -> memory block info (see below)
  6010. Return: ???
  6011. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6012.       as version 1.000, while the version distributed with BC++ 3.0
  6013.       identifies itself as version 1.0; the former is 10864 bytes, the
  6014.       latter 22180 bytes.
  6015. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  6016.  
  6017. Format of memory block info:
  6018. Offset    Size    Description
  6019.  00h    WORD    flags
  6020.         bit 0: set if data segment rather than code segment
  6021.         bit 1: information valid
  6022.         bit 2: set if DOS memory block rather than DPMI memory block
  6023.         bit 4: ???
  6024.         bit 15: set if no LDT selectors for memory block???
  6025.  02h    DWORD    block size in bytes
  6026. ---DPMI memory block---
  6027.  06h    DWORD    DPMI memory block handle
  6028. ---DOS memory block---
  6029.  06h    WORD    real-mode segment of memory block
  6030.  08h    WORD    selector of memory block
  6031. ---
  6032.  0Ah    DWORD    linear address of memory
  6033.  0Eh    WORD    memory operation error code
  6034.         0008h no more free LDT descriptors
  6035. ---if flags bit 0 clear---
  6036.  10h    WORD    code segment selector for memory block or 0000h or FFFFh
  6037.  12h    WORD    data alias selector for memory block or 0000h or FFFFh
  6038. ---if flags bit 0 set---
  6039.  10h    WORD    data segment selector for memory block or 0000h or FFFFh
  6040.  12h    WORD    unused???
  6041. --------E-2FFB42BX0003-----------------------
  6042. INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
  6043.     AX = FB42h
  6044.     BX = 0003h
  6045. Return: DX:AX = size of largest free block in paragraphs
  6046.         0000h:0000h on error (BC3.0 version only)
  6047. Note:    AX and DX are destroyed on error, but no other error indicator is
  6048.       returned, under the BC++ 2.0 version of DPMILOAD
  6049. SeeAlso: AX=FB42h/BX=0002h
  6050. --------E-2FFB42BX0004-----------------------
  6051. INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
  6052.     AX = FB42h
  6053.     BX = 0004h
  6054.     DS:DX -> ASCIZ filename of protected-mode executable
  6055. Return: CX = selector of ??? or 0000h
  6056. ---BC3.0---
  6057.     DX = status (0000h,FFF4h,others???) (see below)
  6058. Note:    the filename may also be terminated by a CR rather than a NUL under the
  6059.       BC++ 3.0 version of DPMILOAD
  6060.  
  6061. Values for status:
  6062.  0000h    successful
  6063.  0001h    ??? failure
  6064.  0002h    invalid selector
  6065.  0004h    unknown error
  6066.  0008h    no more LDT descriptors available???
  6067.  FFDEh    unable to set descriptor
  6068.  FFDFh    unable to get segment base address
  6069.  FFE0h    ???
  6070.  FFF2h    invalid parameter value
  6071.  FFF4h    component of filename too long (name not in 8.3 format)
  6072.  FFF5h    pathname too long (>79 chars)
  6073.  FFF6h    ???
  6074.  FFF8h    ???
  6075.  FFF9h    index out of range
  6076.  FFFAh    ???
  6077.  FFFCh    invalid access to code segment???
  6078.  FFFEh    ???
  6079.  FFFFh    general error
  6080. --------E-2FFB42BX0005-----------------------
  6081. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
  6082.     AX = FB42h
  6083.     BX = 0005h
  6084.     CX = selector of DPMILOAD data (see below)
  6085.     DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
  6086. Return: DX = status (see AX=FB42h/BX=0004h)
  6087.         0000h successful
  6088.         AX:BX -> ??? FAR function (called with two words on top of stk)
  6089.         else
  6090.         BX destroyed
  6091. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
  6092.  
  6093. Format of DPMILOAD data:
  6094. Offset    Size    Description
  6095.  00h 12 BYTEs    ???
  6096.  0Ch    WORD    ??? bit flags
  6097.  0Eh 14 BYTEs    ???
  6098.  1Ch    WORD    number of memory control records
  6099.  1Eh 25 BYTEs    ???
  6100.  37h    BYTE    ??? bit flags
  6101.         bit 4: data valid???
  6102.  38h  4 BYTEs    ???
  6103.  3Ch    WORD    ???
  6104.  3Eh 12 BYTEs    ???
  6105.  46h    BYTE    ??? counter
  6106.  47h    BYTE    ???
  6107.  48h    BYTE    ???
  6108.  49h    BYTE    ???
  6109.  4Ah    WORD    ???
  6110.  4Ch  2 BYTEs    ???
  6111.  4Eh    WORD    offset of array of 64-byte memory control records
  6112.  52h    WORD    offset of name list (see below)
  6113.  54h  4 BYTEs    ???
  6114.  58h    WORD    offset of array of 6-byte objects
  6115.  5Ah  8 BYTEs    ???
  6116.  62h  9 BYTEs    ASCIZ name for ???
  6117.  6Bh  9 BYTEs    ASCIZ name for ???
  6118.     ???
  6119.  
  6120. Format of name list entry [array]:
  6121. Offset    Size    Description
  6122.  00h    BYTE    length of name (00h if end of array)
  6123.  01h  N BYTEs    name
  6124.  N+1    WORD    1-based index into array of unknown 6-byte objects
  6125.  
  6126. Format of 6-byte objects:
  6127. Offset    Size    Description
  6128.  00h    BYTE    ???
  6129.  01h    BYTE    ???
  6130.  02h    BYTE    ???
  6131.  03h    BYTE    1-based index of memory control record
  6132.  04h    WORD    ???
  6133.  
  6134. Format of memory control record:
  6135. Offset    Size    Description
  6136.  00h 20 BYTEs    memory block info (see AX=FB42h/BX=0002h)
  6137.  14h  6 BYTEs    ???
  6138.  1Ah    BYTE    ???
  6139.  1Bh  2 BYTEs    ???
  6140.  1Dh    BYTE    ??? bit flags
  6141.  1Eh 14 BYTEs    ???
  6142.  2Ch    DWORD    pointer to ??? memory control record or 0000h:0000h
  6143.  30h    DWORD    pointer to ??? memory control record or 0000h:0000h
  6144.  34h    DWORD    pointer to next??? memory control record or 0000h:0000h
  6145.  38h    DWORD    pointer to prev??? memory control record or 0000h:0000h
  6146.  3Ch  4 BYTEs    ???
  6147. Note:    the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
  6148.       the pointers at offsets 34h and 38h
  6149. --------E-2FFB42BX0006-----------------------
  6150. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
  6151.     AX = FB42h
  6152.     BX = 0006h
  6153.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6154.     DX = 1-based index into array of ??? 6-byte objects
  6155. Return: DX = status (see AX=FB42h/BX=0004h)
  6156.         0000h successful
  6157.         AX:BX -> ??? FAR function (called with two words on top of stk)
  6158.         else
  6159.         BX destroyed
  6160. SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
  6161. --------E-2FFB42BX0007-----------------------
  6162. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
  6163.     AX = FB42h
  6164.     BX = 0007h
  6165.     CX = selector of ???
  6166. Return: ???
  6167. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6168.       as version 1.000, while the version distributed with BC++ 3.0
  6169.       identifies itself as version 1.0; the former is 10864 bytes, the
  6170.       latter 22180 bytes.
  6171. --------E-2FFB42BX0007-----------------------
  6172. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6173.     AX = FB42h
  6174.     BX = 0007h
  6175.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6176.     ???
  6177. Return: DX = status (see AX=FB42h/BX=0004h)
  6178.         0000h successful
  6179.         AX = ???
  6180. --------E-2FFB42BX0008-----------------------
  6181. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  6182.     AX = FB42h
  6183.     BX = 0008h
  6184.     CX = bit flags
  6185.         bit 2: set if DPMI memory, clear if DOS memory
  6186.     DX = selector of DOS memory block
  6187.     SI:DI = handle of DPMI memory block
  6188. Return: DX = 0000h on error, unchanged if succcessful
  6189. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6190.       as version 1.000, while the version distributed with BC++ 3.0
  6191.       identifies itself as version 1.0; the former is 10864 bytes, the
  6192.       latter 22180 bytes.
  6193. SeeAlso: AX=FB42h/BX=0002h
  6194. --------E-2FFB42BX0008-----------------------
  6195. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  6196.     AX = FB42h
  6197.     BX = 0008h
  6198.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  6199. Return: ???
  6200. SeeAlso: AX=FB42h/BX=0009h
  6201. --------E-2FFB42BX0009-----------------------
  6202. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
  6203.     AX = FB42h
  6204.     BX = 0009h
  6205.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  6206.     ???
  6207. Return: ???
  6208. SeeAlso: AX=FB42h/BX=0008h"3.0"
  6209. --------E-2FFB42BX000A-----------------------
  6210. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
  6211.     AX = FB42h
  6212.     BX = 000Ah
  6213.     CX = 0001h
  6214.     DX = ???
  6215.     SI = ???
  6216. Return: after user exits subshell
  6217. Notes:    this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
  6218.       function is not available in protected mode.
  6219.     the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
  6220.       version also adds a DPMI host and DOS extender.
  6221. SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
  6222. --------E-2FFB42BX000B-----------------------
  6223. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
  6224.     AX = FB42h
  6225.     BX = 000Bh
  6226. --------E-2FFB42BX000C-----------------------
  6227. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
  6228.     AX = FB42h
  6229.     BX = 000Ch ???
  6230.     ES:SI -> memory block info ??? (see AX=FB42h/BX=0002h"3.0")
  6231. Return: DX = status???
  6232. SeeAlso: AX=FB42h/BX=000Fh
  6233. --------E-2FFB42BX000D-----------------------
  6234. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
  6235.     AX = FB42h
  6236.     BX = 000Dh
  6237.     CX = number of words to copy from protected-mode to real mode stack
  6238.     DL = interrupt number
  6239.     DH = flags
  6240.         bit 0: reset the interrupt controller and A20 line
  6241.     ES:DI -> real-mode call structure (see INT 31/AX=0300h)
  6242. Return: CX = status
  6243.         0000h successful
  6244.         0001h failed
  6245. SeeAlso: INT 31/AX=0300h
  6246. --------E-2FFB42BX000E-----------------------
  6247. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  6248.     AX = FB42h
  6249.     BX = 000Eh
  6250.     DS:DX -> ASCIZ or CR-terminated name of ???
  6251. Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) corresponding to
  6252.         name, 0000h on error
  6253. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
  6254. --------E-2FFB42BX000F-----------------------
  6255. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
  6256.     AX = FB42h
  6257.     BX = 000Fh
  6258.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  6259. Return: ???
  6260. SeeAlso: AX=FB42h/BX=000Ch
  6261. --------E-2FFB42BX0010-----------------------
  6262. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
  6263.     AX = FB42h
  6264.     BX = 0010h
  6265.     DX = segment number
  6266. Return: CX = status (see also AX=FB42h/BX=0004h)
  6267.         0000h successful
  6268.         DX = selector number for descriptor
  6269.         0008h failed
  6270. SeeAlso: AX=FB42h/BX=0023h
  6271. --------E-2FFB42BX0011-----------------------
  6272. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6273.     AX = FB42h
  6274.     BX = 0011h
  6275.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6276.     ???
  6277. Return: DX = status (see also AX=FB42h/BX=0004h)
  6278.         0000h successful
  6279.         AX:BX -> ??? name
  6280.         0002h invalid selector
  6281.         FFFEh ??? error
  6282. --------E-2FFB42BX0012-----------------------
  6283. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6284.     AX = FB42h
  6285.     BX = 0012h
  6286.     CX = selector for ???
  6287. Return: CX = selector for ???
  6288. --------E-2FFB42BX0013-----------------------
  6289. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6290.     AX = FB42h
  6291.     BX = 0013h
  6292.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6293.     DX = 1-based index of ???
  6294. Return: CX = status (see also AX=FB42h/BX=0004h)
  6295.         0000h successful
  6296.         BX = ??? or 0000h
  6297.         0002h invalid selector
  6298.         FFF9h ??? error
  6299. --------E-2FFB42BX0014-----------------------
  6300. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
  6301.     AX = FB42h
  6302.     BX = 0014h
  6303.     CX = 0001h
  6304. Return: BX = 0000h if installed
  6305. Note:    unlike most of the DPMILOAD functions, this call is available only in
  6306.       real or V86 mode
  6307. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
  6308. --------E-2FFB42BX0015-----------------------
  6309. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
  6310.     AX = FB42h
  6311.     BX = 0015h
  6312.     CX = 0001h
  6313. Return: ???
  6314. Note:    unlike most of the DPMILOAD functions, this call is available only in
  6315.       real or V86 mode
  6316. SeeAlso: AX=FB42h/BX=000Ah
  6317. --------E-2FFB42BX0016-----------------------
  6318. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  6319.     AX = FB42h
  6320.     BX = 0016h
  6321.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6322. Return: DX = status (see also AX=FB42h/BX=0004h)
  6323.         0000h successful
  6324.         CX = ???
  6325. --------E-2FFB42BX0017-----------------------
  6326. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6327.     AX = FB42h
  6328.     BX = 0017h
  6329.     CX = ???
  6330.     DX = ???
  6331.     ???
  6332. Return: DX = status (0000h,0001h) (see below)
  6333. --------E-2FFB42BX0018-----------------------
  6334. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
  6335.     AX = FB42h
  6336.     BX = 0018h
  6337.     CX = ???
  6338. --------E-2FFB42BX0019-----------------------
  6339. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6340.     AX = FB42h
  6341.     BX = 0019h
  6342.     CX = selector for ???
  6343.     ???
  6344. Return: DX = status (see also AX=FB42h/BX=0004h)
  6345.         0000h successful
  6346.         CX = selector for ???
  6347. --------E-2FFB42BX001A-----------------------
  6348. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6349.     AX = FB42h
  6350.     BX = 001Ah
  6351.     CX = selector for ???
  6352.     ???
  6353. Return: DX = status (see also AX=FB42h/BX=0004h)
  6354.         0000h successful
  6355.         0004h failed
  6356.     CX:BX -> ???
  6357. --------E-2FFB42BX001B-----------------------
  6358. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6359.     AX = FB42h
  6360.     BX = 001Bh
  6361.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6362.     DX = offset of ???
  6363. Return: DX = status (see also AX=FB42h/BX=0004h)
  6364.         0000h successful
  6365.         BX = selector for ???
  6366.         CX = selector for ???
  6367.         0002h invalid selector
  6368. --------E-2FFB42BX001C-----------------------
  6369. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6370.     AX = FB42h
  6371.     BX = 001Ch
  6372.     ES = selector for DPMILOAD data (see AX=FB42h/BX=0005h)
  6373.     CX = 1-based index of ???
  6374.     DX = 1-based index of ???
  6375. Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
  6376. --------E-2FFB42BX001D-----------------------
  6377. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  6378.     AX = FB42h
  6379.     BX = 001Dh
  6380. Return: CX:DX = ???
  6381. --------E-2FFB42BX001E-----------------------
  6382. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6383.     AX = FB42h
  6384.     BX = 001Eh
  6385.     CX = ???
  6386.     ???
  6387. Return: DX = status (see also AX=FB42h/BX=0004h)
  6388.         0000h successful
  6389.         FFF7h ??? error
  6390.     CX:BX -> ???
  6391. --------E-2FFB42BX001F-----------------------
  6392. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  6393.     AX = FB42h
  6394.     BX = 001Fh
  6395.     DS:DX -> 8-character name of ???
  6396.     ???
  6397. Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) for ???
  6398.         0000h on error
  6399. SeeAlso: AX=FB42h/BX=000Eh
  6400. --------E-2FFB42BX0020-----------------------
  6401. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
  6402.     AX = FB42h
  6403.     BX = 0020h
  6404. Return: DX = ??? (always 0000h)
  6405. --------E-2FFB42BX0021-----------------------
  6406. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
  6407.     AX = FB42h
  6408.     BX = 0021h
  6409.     CL = exception number (00h-1Fh)
  6410. Return: DX = status (see also AX=FB42h/BX=0004h)
  6411.         0000h successful
  6412.         AX:BX = selector:offset of handler
  6413.         FFF2h unable to get exception handler vector
  6414. SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
  6415. --------E-2FFB42BX0022-----------------------
  6416. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
  6417.     AX = FB42h
  6418.     BX = 0022h
  6419.     CL = exception number (00h-1Fh)
  6420.     SI:DX = selector:offset of new handler
  6421. Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
  6422. SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
  6423. --------E-2FFB42BX0023-----------------------
  6424. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
  6425.     AX = FB42h
  6426.     BX = 0023h
  6427.     CX = selector
  6428. Return: DX = status (see also AX=FB42h/BX=0004h)
  6429.         0000h successful
  6430.         CX = real-mode segment number
  6431.         FFF2h descriptor has invalid base address for real-mode segment
  6432. SeeAlso: AX=FB42h/BX=0010h
  6433. --------E-2FFB42BX0024-----------------------
  6434. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
  6435.     AX = FB42h
  6436.     BX = 0024h
  6437.     CL = interrupt number
  6438. Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
  6439.     AX:BX = selector:offset of handler
  6440. SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
  6441. --------E-2FFB42BX0025-----------------------
  6442. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
  6443.     AX = FB42h
  6444.     BX = 0025h
  6445.     CL = interrupt number
  6446.     SI:DX = selector:offset of new handler
  6447. Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
  6448. SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
  6449. --------E-2FFB42BX0026-----------------------
  6450. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6451.     AX = FB42h
  6452.     BX = 0026h
  6453.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6454.     DX = 1-based index of ???
  6455.     ???
  6456. Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
  6457.         0000h successful
  6458.         BX = offset of ??? within data structure
  6459. --------E-2FFB42BX0027-----------------------
  6460. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  6461.     AX = FB42h
  6462.     BX = 0027h
  6463.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6464.     DX = offset of ???
  6465. Return: DX = status (see also AX=FB42h/BX=0004h)
  6466.         0000h successful
  6467.         BX = ???
  6468. --------E-2FFB42BX0080-----------------------
  6469. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  6470.     AX = FB42h
  6471.     BX = 0080h
  6472.     ???
  6473. Return: AX = ???
  6474.     ???
  6475. --------E-2FFB42BX0081-----------------------
  6476. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  6477.     AX = FB42h
  6478.     BX = 0081h
  6479.     ???
  6480. Return: AX = ???
  6481.     ???
  6482. --------E-2FFB42BX1001-----------------------
  6483. INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
  6484.     AX = FB42h
  6485.     BX = 1001h
  6486. Return: BX = 0000h
  6487. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
  6488. --------E-2FFB42BX1002-----------------------
  6489. INT 2F U - Borland RTM.EXE 1.0 - ???
  6490.     AX = FB42h
  6491.     BX = 1002h
  6492.     ???
  6493. Return: ???
  6494. SeeAlso: AX=FB42h/BX=1001h
  6495. --------E-2FFB42BX1003-----------------------
  6496. INT 2F U - Borland RTM.EXE 1.0 - ???
  6497.     AX = FB42h
  6498.     BX = 1003h
  6499.     ???
  6500. Return: ???
  6501. SeeAlso: AX=FB42h/BX=1001h
  6502. --------E-2FFB43-----------------------------
  6503. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
  6504.     AX = FB43h
  6505.     BX = subfunction (at least 0000h-000Eh)
  6506. Notes:    this function is only present in protected mode; it does nothing but
  6507.       an immediate IRET
  6508.     DPMILOAD.EXE itself calls various subfunctions:
  6509.         subfunction 0004h is called with CX=selector of ???, DI=selector
  6510.         of DPMILOAD data
  6511.         subfunction 0008h is called with CX=selector of DPMILOAD data
  6512. SeeAlso: AX=FB42h/BX=0001h
  6513. --------G-2FFB43BX0100-----------------------
  6514. INT 2F PU - Borland TDX - INSTALLATION CHECK
  6515.     AX = FB43h
  6516.     BX = 0100h
  6517. Return: BX = FB43h if loaded
  6518. Program: TDX is Borland's Turbo Debugger variant for DPMI programs
  6519. Note:    Borland Pascal 7 DPMI programs use this call to check whether they
  6520.       should install their own stack and general protection exception
  6521.       handlers, or allow TDX to handle those exceptions
  6522. --------a-2FFB64-----------------------------
  6523. INT 2F U - AutoBraille v1.1A - GET ???
  6524.     AX = FB64h
  6525. Return: AX = ??? (0006h seen)
  6526. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6527. --------E-2FFBA1BX0081-----------------------
  6528. INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
  6529.     AX = FBA1h
  6530.     BX = 0081h
  6531.     ES:DI -> 16-byte buffer
  6532. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  6533. Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
  6534. Note:    TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
  6535.       extender was moved into DPMILOAD.
  6536. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
  6537. SeeAlso: INT 21/AX=4403h"TKERNEL"
  6538. --------E-2FFBA1BX0082-----------------------
  6539. INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
  6540.     AX = FBA1h
  6541.     BX = 0082h
  6542.     ES:DI -> response buffer (see below)
  6543. Return: ES:DI buffer filled
  6544. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  6545.  
  6546. Format of response buffer:
  6547. Offset    Size    Description
  6548.  00h  4 BYTEs    signature "IABH"
  6549.  04h    DWORD    pointer to FAR extender entry point
  6550.  
  6551. Call entry point with:
  6552.     AX = function number
  6553.         0000h initialize???
  6554.         STACK:    WORD  ???
  6555.         Return: AX = status???
  6556.             STACK unchanged
  6557.         0001h get version???
  6558.         Return: AX = 0200h for v2.0.34
  6559.         0002h get ???
  6560.         Return: AX = ??? (011Eh or 0182h seen)
  6561.         0003h load protected-mode executable
  6562.         STACK:    DWORD -> ASCIZ filename of executable
  6563.             DWORD    ???
  6564.             DWORD -> program arguments (counted string plus CR)
  6565.             DWORD -> environment for protected-mode executable
  6566.                 (terminated with two consecutive NULs)
  6567.             DWORD -> WORD buffer for ???
  6568.         Return: AX = status???
  6569.             STACK unchanged
  6570.         0004h get descriptor
  6571.         STACK:    WORD    selector for which to get descriptor
  6572.             WORD    segment number (when running in real mode)
  6573.             DWORD -> buffer for descriptor
  6574.         Return: CF clear if successful
  6575.                 buffer filled
  6576.             CF set on error
  6577.                 AX destroyed???
  6578.             STACK unchanged
  6579.         0005h ???
  6580.         STACK:    WORD    selector for ???
  6581.             WORD    subfunction number???
  6582.                 0000h run previously-loaded program???
  6583.                 0001h ??? (similar to 0000h)
  6584.                 0002h
  6585.                 0003h
  6586.                 0005h ??? (similar to 0000h and 0001h)
  6587.         Return: AX = status???
  6588.             STACK unchanged
  6589.         0006h ???
  6590.         STACK:    WORD ???
  6591.             DWORD -> WORD (call) max iterations of ???
  6592.                       (return) remaining iterations
  6593.         Return: AX = ???
  6594.             STACK unchanged
  6595.         0007h unused
  6596.         Return: AX = 0001h
  6597.         0008h unused
  6598.         Return: AX = 0001h
  6599.         0009h copy protected-mode memory into conventional memory
  6600.         STACK:    WORD    selector for source segment
  6601.             WORD    segment of source if in real mode???
  6602.             DWORD    offset of source
  6603.             WORD    number of bytes to copy
  6604.             DWORD -> low-memory destination
  6605.         Return: AX = status
  6606.             STACK unchanged
  6607.         000Ah copy conventional memory into protected-mode memory
  6608.         STACK:    WORD    selector for destination segment
  6609.             WORD    segment of destination if in real mode???
  6610.             DWORD    offset of destination
  6611.             WORD    number of bytes to copy
  6612.             DWORD -> low-memory source
  6613.         Return: AX = status
  6614.             STACK unchanged
  6615.         000Bh get ??? pointers
  6616.         STACK:    WORD desired pointer
  6617.                 0000h get ???
  6618.                 0002h get protected-mode CR3
  6619.                 0003h get 4K page table buffer pointer
  6620.                 else Return: DX:AX = FFFFh:FFFFh
  6621.         Return: DX:AX = requested pointer
  6622.             STACK unchanged
  6623.         000Ch set ??? pointers
  6624.         STACK:    WORD desired pointer
  6625.                 0000h set ???
  6626.                 0002h set protected-mode CR3
  6627.                 0003h set 4K page table buffer pointer
  6628.                 else ignore
  6629.             DWORD new value for pointer
  6630.         Return: STACK unchanged
  6631.         000Dh get ??? pointers
  6632.         STACK:    WORD desired pointer
  6633.                 0000h get ???
  6634.                 0001h get ???
  6635.                 0002h get ???
  6636.                 0003h get ???
  6637.                 0004h get ???
  6638.                 0005h get ???
  6639.                 0006h get ???
  6640.                 0007h get ???
  6641.                 else Return: DX:AX = FFFFh:FFFFh
  6642.         Return: DX:AX = desired pointer
  6643.             STACK unchanged
  6644.         000Eh set ??? pointer
  6645.         STACK:    WORD desired pointer
  6646.                 0000h set ???
  6647.                 0001h set ???
  6648.                 0002h set ???
  6649.                 0003h set ???
  6650.                 0004h set ???
  6651.                 0005h set ???
  6652.                 0006h set ???
  6653.                 0007h set ???
  6654.                 else Return: DX:AX = FFFFh:FFFFh
  6655.         Return: STACK unchanged
  6656.         000Fh get ???
  6657.         Return: AX = ??? (seen 0008h)
  6658.         0010h get ???
  6659.         Return: AX = ???
  6660.         0011h determine whether selector is valid
  6661.         STACK:    WORD    possible selector
  6662.         Return: AX = selector or 0000h if invalid
  6663.             STACK unchanged
  6664.         0012h get physical address
  6665.         STACK:    WORD    selector for desired segment
  6666.             WORD    segment number if in real mode
  6667.             DWORD    offset within segment
  6668.         Return: DX:AX = 32-bit physical address or 00000000h on error
  6669.             BX destroyed
  6670.             STACK unchanged
  6671.         0013h ???
  6672.         Note:    normally jumps to code for function 0012h
  6673.         0014h copy protected-mode memory to conventional memory, with ???
  6674.         STACK:    WORD    selector for source segment
  6675.             WORD    segment of source if in real mode???
  6676.             DWORD    offset of source
  6677.             WORD    number of bytes to copy
  6678.             DWORD -> low-memory destination
  6679.         Return: AX = status???
  6680.             STACK unchanged
  6681.         0015h copy conventional memory to protected-mode memory, with ???
  6682.         STACK:    WORD    selector for destination segment
  6683.             WORD    segment of destination if in real mode???
  6684.             DWORD    offset of destination
  6685.             WORD    number of bytes to copy
  6686.             DWORD -> low-memory source
  6687.         Return: AX = status???
  6688.             STACK unchanged
  6689.         0016h set ??? pointer
  6690.         STACK:    WORD    unused
  6691.             DWORD -> ??? or 0000h:0000h
  6692.         Return: AX = 0000h
  6693.             STACK unchanged
  6694.         0017h allocate real-mode procedure???
  6695.         STACK:    DWORD    ASCIZ name of procedure
  6696.             DWORD ???
  6697.             DWORD    address of subroutine to invoke
  6698.         Return: AX = status
  6699.                 0032h procedure by that name exists
  6700.                 0033h no more real-mode procedures available
  6701.             DX destroyed
  6702.             STACK unchanged
  6703.         0018h unused
  6704.         Return: AX = 0001h
  6705.         0019h get parameter block
  6706.         Return: DX:AX -> parameter block (format unknown at this time,
  6707.                 but 92h bytes)
  6708.                 (preceded by signature "!!PARAM-BLOCK!!")
  6709.         001Ah get ???
  6710.         Return: AX = ??? (0148h seen)
  6711.         001Bh free real-mode procedure???
  6712.         STACK:    DWORD -> ASCIZ name of procedure
  6713.         Return: ???
  6714.             STACK unchanged
  6715.         001Ch check whether packets from protected mode task pending
  6716.         Return: AX = 0001h if packets pending, 0000h if not
  6717.         001Dh set ???
  6718.         STACK:    DWORD ??? or 0000h:0000h
  6719.         Return: AX,BX destroyed
  6720.             STACK unchanged
  6721.         001Eh ???
  6722.         STACK:    WORD ??? (high byte ignored)
  6723.             DWORD -> data structure (see below)
  6724.         Return: AX,BX,CX,DX destroyed
  6725.             data structure updated
  6726.             STACK unchanged
  6727.         Format of data structure
  6728.         Offset    Size    Description
  6729.          00h  2 BYTEs    unused
  6730.          02h    WORD    ???
  6731.          04h    WORD    ???
  6732.          06h    WORD    ???
  6733.          08h  2 BYTEs    unused
  6734.          0Ah    WORD    ???
  6735.          0Ch    WORD    (call) ???
  6736.                 (return) offset of this data structure (BUG?)
  6737.         001Fh set ???
  6738.         STACK:    WORD ??? (set to 0001h if zero)
  6739.         Return: AX destroyed
  6740.             STACK unchanged
  6741.         0020h ???
  6742.         STACK:    DWORD -> ??? (8 bytes of data)
  6743.         Return: AX = ???
  6744.             STACK unchanged
  6745.         0021h ???
  6746.         STACK:    DWORD -> ??? (8 bytes of data)
  6747.             WORD    ???
  6748.             WORD    ???
  6749.         Return: AX = ???
  6750.             STACK unchanged
  6751.         0022h ???
  6752.         STACK:    DWORD -> ??? (8 bytes of data)
  6753.             DWORD -> 4-byte buffer for results
  6754.         Return: AX = ???
  6755.             STACK unchanged
  6756.         0023h ???
  6757.         STACK:    DWORD -> ??? (8 bytes of data)
  6758.         Return: AX = ???
  6759.             STACK unchanged
  6760.         0024h set ???
  6761.         STACK:    WORD ???
  6762.         Return: AX destroyed
  6763.             STACK unchanged
  6764.         0025h get ???
  6765.         Return: AX = ??? (value set with func 0024h)
  6766.         0026h BUG: jumps to hyperspace due to fencepost error
  6767.         FFFFh set DOS memory management functions
  6768.         BX:SI -> FAR routine for allocating DOS memory
  6769.             (called with AH=48h,BX=number of paragraphs to alloc;
  6770.              returns CF clear, AX=segment of allocated memory, or
  6771.                  CF set on error)
  6772.         CX:DI -> FAR routine for freeing DOS memory
  6773.             (called with AH=49h,ES=segment of block to free;
  6774.              returns CF set on error,AX=error code)
  6775.         Note: each of these pointers normally points at INT 21/RETF
  6776.         other Return: AX = 0001h
  6777. Note:    BX may be destroyed by any of the API calls
  6778. --------E-2FFBA1BX0084-----------------------
  6779. INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
  6780.     AX = FBA1h
  6781.     BX = 0084h
  6782.     ES:DI -> response buffer (see below)
  6783. Return: ES:DI buffer filled
  6784. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  6785.  
  6786. Format of response buffer:
  6787. Offset    Size    Description
  6788.  00h  4 BYTEs    signature "IABH"
  6789.  04h    WORD    success indicator
  6790.         0001h failed (INT 2F hooked by another program)
  6791.         unchanged if successful
  6792.  06h    WORD    segment of ???
  6793.  08h    WORD    segment of ??? memory block to free if nonzero
  6794.  0Ah    WORD    segment of ??? memory block to free if nonzero
  6795. --------s-2FFBFBES0000-----------------------
  6796. INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
  6797.     AX = FBFBh
  6798.     ES = 0000h
  6799. Return: ES nonzero if installed
  6800.         ES:BX -> entry point data structure (see below)
  6801. SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
  6802.  
  6803. Format of entry point data structure:
  6804. Offset    Size    Description
  6805.  00h  3 BYTEs    signature "FB "
  6806.  03h    BYTE    driver major version number???
  6807.  04h    DWORD    speech driver entry point
  6808.  08h 24 BYTEs    ???
  6809.  20h  ? BYTEs    data buffer for calling speech driver
  6810.  
  6811. Call driver entry point with:
  6812.     AL = function
  6813.         07h speak a string
  6814.         data buffer (see above) contains:
  6815.             BYTE  length of string
  6816.               N BYTEs string to speak
  6817. --------N-2FFE00BX4454-----------------------
  6818. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  6819.     AX = FE00h
  6820.     BX = 4454h ("DT")
  6821.     CX = 4B52h ("KR")
  6822.     DX = 4E4Dh ("NM")
  6823. Return: AL = FFh if installed
  6824.        BX = 524Eh ("RM")
  6825.        CX = 4D44h ("MD")
  6826.        DX = 544Bh ("TK")
  6827. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  6828. SeeAlso: AX=FE08h
  6829. --------N-2FFE00BX4454-----------------------
  6830. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  6831.     AX = FE00h
  6832.     BX = 4454h ("DT")
  6833.     CX = 4B52h ("KR")
  6834.     DX = 544Dh ("TM")
  6835. Return: AL = FFh if installed
  6836.        BX = 5254h ("RT")
  6837.        CX = 4D44h ("MD")
  6838.        DX = 544Bh ("TK")
  6839. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  6840. SeeAlso: AX=FE08h
  6841. --------U-2FFE00DI4E55-----------------------
  6842. INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
  6843.     AX = FE00h
  6844.     DI = 4E55h ("NU")
  6845.     SI = TSR identifier
  6846.         4346h ("CF") NCACHE-F (v5) / NCACHE (v6.0+)
  6847.         4353h ("CS") NCACHE-S (v5 only)
  6848.         4443h ("DC") DISKREET
  6849.         444Dh ("DM") DISKMON
  6850.         4653h ("FS") FILESAVE (v5) / EP (v6.0+)
  6851. Return: SI = TSR reply
  6852.         lowercase version of SI on entry (i.e. SI OR 2020h)
  6853.     AH = status
  6854.         00h installed but disabled internally
  6855.         01h installed and enabled
  6856.     AL = status
  6857.         00h NCACHE-x or DISKREET installed
  6858.         01h FILESAVE / EP / DISKMON v6 installed
  6859.         45h DISKMON v5 installed
  6860.     BX = length of *.INI file (DISKMON and FILESAVE/EP only) (see below)
  6861.     CX = segment of resident portion
  6862.         FFFFh if completely loaded high (NCACHE)
  6863. ---FILESAVE/EP---
  6864.     DL = ??? (apparently always 00h)
  6865. ---DISKMON---
  6866.     DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6])
  6867. Note:    the value returned in CX is incorrect for NCACHE 6.00
  6868. SeeAlso: AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
  6869.  
  6870. Format of DISKMON.INI file:
  6871. Offset    Size    Description
  6872. -6Ch 108 BYTEs    (in memory copy only)
  6873.         list of filenames which are always protected:
  6874.           IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
  6875.           MIO.SYS/IO.BIN, COMMAND.COM
  6876.  00h    BYTE    ??? always 01h
  6877.  01h    BYTE    disk light (00h off, 01h on)
  6878.  02h    BYTE    disk protection (00h off, 01h on)
  6879.  03h    BYTE    protected areas
  6880.         01h system area
  6881.         02h files
  6882.         03h system area and files
  6883.         04h entire disk
  6884.  04h    BYTE    floppy access (00h not allowed, 01h allowed)
  6885.  05h 27 BYTEs    filename extension list (9 entries)
  6886.         (lowercase, blank padded or = 000000h)
  6887.  20h 240 BYTEs    filename list (20 entries)
  6888.         (lowercase, name and extension blank padded, with '.')
  6889. Note:    CX:0508h -> copy in installed TSR (v5)
  6890.     CX:052Fh -> copy in installed TSR (v6)
  6891.  
  6892. Format of FILESAVE.INI / EP.INI file:
  6893. Offset    Size    Description
  6894.  00h 26 BITs    drive list (bit set: file protection on, cleared: off):
  6895.  00h    BYTE    drives    A: - H:
  6896.  01h    BYTE    drives    I: - P:
  6897.  02h    BYTE    drives    Q: - X:
  6898.  03h    BYTE    drives    Y: - Z:
  6899.  04h    BYTE    which files to protect
  6900.         00h all files
  6901.         01h all files with extension in list
  6902.         02h all files except those with extension in list
  6903.  05h 27 BYTEs    filename extension list (9 entries, uppercase, ASCIZ)
  6904.  20h    BYTE    include files with archive bit clear (00h no, 01h yes)
  6905.  21h    WORD    number of days after which files are purged (0 = never)
  6906.  23h    WORD    max kilobytes of erased file space to hold (0 = all)
  6907. Note:    CX:03D2h -> copy in installed TSR (v5.0)
  6908.     CX:03F5h -> copy in installed TSR (v6.0)
  6909. --------U-2FFE01DI4E55-----------------------
  6910. INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
  6911.     AX = FE01h
  6912.     DI = 4E55h ("NU")
  6913.     SI = TSR identifier (see AX=FE00h)
  6914. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  6915.     AX = status
  6916.         0002h successful (DISKMON, FILESAVE, EP)
  6917.         FE00h successful (NCACHE-x, DISKREET)
  6918. Notes:    if the enable/disable calls are used on DISKMON or NCACHE-x, the status
  6919.       report generated by the programs still indicates the previous state,
  6920.       and DISKMON.INI is not updated
  6921.     apparently has no effect on DISKREET
  6922. SeeAlso: AX=FE00h,AX=FE02h
  6923. --------U-2FFE02DI4E55-----------------------
  6924. INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
  6925.     AX = FE02h
  6926.     DI = 4E55h ("NU")
  6927.     SI = TSR identifier (see AX=FE00h)
  6928. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  6929.     AX = status
  6930.         0004h successful (DISKMON, FILESAVE)
  6931.         FE00h successful (NCACHE-x, DISKREET)
  6932. Notes:    (see also AX=FE01h)
  6933.     this function appears to be unsafe, as the cache buffers are not
  6934.       flushed
  6935. SeeAlso: AX=FE00h,AX=FE01h
  6936. --------U-2FFE03DI4E55-----------------------
  6937. INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
  6938.     AX = FE03h
  6939.     DI = 4E55h ("NU")
  6940.     SI = TSR identifier (see AX=FE00h)
  6941. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  6942.     AX = status
  6943.         0006h successful???
  6944. Notes:    only supported by DISKMON, FILESAVE, and NCACHE-x
  6945.     useful for flushing NCACHE before rebooting
  6946. SeeAlso: AX=FE00h,AX=FE10h
  6947. --------U-2FFE04DI4E55-----------------------
  6948. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  6949.     AX = FE04h
  6950.     DI = 4E55h ("NU")
  6951.     SI = TSR identifier (see AX=FE00h)
  6952. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  6953.     AX = status
  6954.         0008h successful???
  6955. SeeAlso: AX=FE00h
  6956. --------U-2FFE05DI4E55-----------------------
  6957. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  6958.     AX = FE05h
  6959.     DI = 4E55h ("NU")
  6960.     SI = TSR identifier (see AX=FE00h)
  6961. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  6962.     AX = status
  6963.         000Ah successful???
  6964. Note:    reportedly dangerous
  6965. SeeAlso: AX=FE00h
  6966. --------N-2FFE08-----------------------------
  6967. INT 2F - PC-NFS ??? - GET ???
  6968.     AX = FE08h
  6969. Return: ES:BX -> ???
  6970. Notes:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  6971.     both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
  6972.       to AX=FE00h/DX=544Dh support this function
  6973. SeeAlso: AX=FE00h/BX=4454h
  6974. --------U-2FFE10DI4E55-----------------------
  6975. INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
  6976.     AX = FE10h
  6977.     DI = 4E55h ("NU")
  6978.     SI = TSR identifier (see AX=FE00h)
  6979. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  6980.     AX = status
  6981. Note:    probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
  6982.       detected
  6983. SeeAlso: AX=FE03h
  6984. --------N-2FFF00-----------------------------
  6985. INT 2F - Topware Network Operating System - INSTALLATION CHECK
  6986.     AX = FF00h
  6987. Return: AL = 00h not installed, OK to install
  6988.        = 01h not installed, not OK to install
  6989.        = FFh installed
  6990. SeeAlso: AX=FF01h,INT 21/AH=FFh"Topware",INT 7A"Topware"
  6991. --------N-2FFF01-----------------------------
  6992. INT 2F - Topware Network Operating System - GET VERSION
  6993.     AX = FF01h
  6994. Return: AX = version
  6995. SeeAlso: AX=FF00h
  6996. --------!------------------------------------
  6997.