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