home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / misc / inter41 / interrup.h < prev    next >
Text File  |  1994-06-05  |  286KB  |  8,039 lines

  1. Interrupt List, part 8 of 11
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 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 #1434) 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. Range:    AH=80h to AH=FFh
  33. SeeAlso: AX=8001h"CS_TSR",AX=8002h"CS_TSR",AX=8003h"CS_TSR"
  34.  
  35. Format of CS_TSR process block:
  36. Offset    Size    Description    (Table 1434)
  37.  00h  4 BYTEs    CS_TSR signature 11h 43h 53h 10h
  38.  04h    BYTE    INT 2F multiplex number
  39.  05h    WORD    virtual process handle (unique among loaded TSRs)
  40.  07h  2 BYTEs    version (binary minor version, then major version)
  41.  09h    WORD    PSP segment of TSR
  42.  0Bh    DWORD    pointer to ASCIZ program name
  43.  0Fh  3 BYTEs    program creation date (day, month, year)
  44.  12h  3 BYTEs    process start time (seconds, minutes, hours)
  45.  15h  3 BYTEs    process start date (day, month, year)
  46. --------F-2F8000DX0000-----------------------
  47. INT 2F - FaxBIOS interface - INSTALLATION CHECK
  48.     AX = 8000h
  49.     DX = 0000h
  50.     DI = 0000h
  51. Return: AL = FFh if installed
  52.     DX:DI -> signature "FaxBiosjpc"
  53. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  54. SeeAlso: AH=2Ah,AX=80FBh
  55. --------N-2F8001-----------------------------
  56. INT 2F - Nanosoft, Inc. TurboNET server - ???
  57.     AX = 8001h
  58.     DS:SI -> 16-byte buffer for ???
  59. Return: AH = status
  60.         00h successful
  61.         01h error (TurboNET busy)
  62. Note:    makes NetBIOS calls
  63. --------t-2F8001-----------------------------
  64. INT 2F - CS_TSR specification - GET HANDLE (TSR-SPECIFIC INSTALLATION CHECK)
  65.     AX = 8001h
  66.     DS:SI -> ASCIZ signature string for desired TSR (see #1435)
  67. Return: BX = process handle or 0000h if specified TSR not installed
  68.     ES:DI -> process block for TSR (see #1434) if BX<>0000h
  69. Note:    A widely-available copy of ASCII billing itself as "ASCII 2.OO by
  70.       Nick Zaikin Jr." is in fact a hacked copy of the Compact Soft
  71.       ASCII v4.23 which is identical except for the changed attribution
  72.       and version (in fact, some instances of "4.23" were missed); the
  73.       hacked copy requires the signature string
  74.       "ASCII 2.OO by Nick Zaikin Jr." instead of the unhacked version's
  75.       simple signature "ASCII"
  76. SeeAlso: AX=8000h"CS_TSR",AX=8002h"CS_TSR"
  77.  
  78. (Table 1435)
  79. Values for CS_TSR signature strings:
  80.  "ASCII"    ASCII, a popup ASCII table with character input
  81.  "Halculator"    HALC, a 32-bit RPN WYSIWIH calculator with undo and ptr support
  82.  "AntiTurbo"    AT!, an intelligent system slow-down utility
  83. --------t-2F8002-----------------------------
  84. INT 2F - CS_TSR specification - GET PROCESS BLOCK BY PROCESS HANDLE
  85.     AX = 8002h
  86.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  87. Return: ES:DI -> process block for specified TSR (see #1434)
  88.         unchanged if no match for process handle
  89. Note:    This function is used to allocate a process handle when the TSR
  90.       installs itself, by setting ES:DI to point at something other than
  91.       a CS_TSR process block's signature string and iterating through the
  92.       possible process handles (0001h to FFFFh) until ES:DI is returned
  93.       unchanged
  94. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8003h"CS_TSR"
  95. --------t-2F8003-----------------------------
  96. INT 2F - CS_TSR specification - CUSTOM SUBFUNCTION
  97.     AX = 8003h
  98.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  99.     other registers vary by TSR
  100. Return: vary by TSR, unchanged if not supported
  101. Program: the CS_TSR specification is a standardized TSR interface by Compact
  102.       Soft group in Kiev, Ukraine
  103. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8002h"CS_TSR"
  104. --------F-2F80FB-----------------------------
  105. INT 2F - FaxBIOS interface - COMMAND SUBMISSION
  106.     AX = 80FBh
  107.     BX = function number (see #1436)
  108.     DX:DI -> command buffer
  109.           (see #1438,#1441,#1442,#1443,#1444,#1445,#1450,#1456,#1463)
  110. Return: AL = FFh if submitted OK
  111.     CX = result code (see #1437)
  112. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  113. SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
  114.  
  115. (Table 1436)
  116. Values for FaxBIOS 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. (Table 1437)
  168. Values for FaxBIOS result code:
  169.  0000h    successful
  170.  0001h    not prepared or servicing another client (busy)
  171.  0002h    call failed due to sharing (LOCKED)
  172.  0003h    logged-in client limit reached (FULL)
  173.  0004h    transport denied (TRANSPORT_DENIED)
  174.  0005h    not implemented (NOT_IMPLEMENTED)
  175.  0006h    aborted while in progress (ABORTED)
  176.  0007h    permissions denied (PERMISSION_DENIED)
  177.  0008h    requested data is no longer valid (NO_LONGER_VALID)
  178.  0080h    unspecified system error occurred
  179.  0081h    an internal file was not found
  180.  0082h    an internal file could not be created
  181.  0083h    an internal file could not be opened
  182.  0084h    an internal file could not be closed
  183.  0085h    error occurred writing to an internal file
  184.  0086h    error occurred reading from an internal file
  185.  0087h    bad or corrupted file encountered
  186.  0088h    an access violation occurred
  187.  0089h    an internal file is empty
  188.  008Ah    insufficient memory to process request
  189.  008Bh    FaxBIOS was unable to issue a handle
  190.  008Ch    an error internal to FaxBIOS occurred
  191.  008Dh    no room on disk
  192.  0100h    unspecified error accessing client file
  193.  0101h    file not found
  194.  0102h    creation fault
  195.  0103h    open fault
  196.  0104h    close fault
  197.  0105h    write fault
  198.  0106h    read fault
  199.  0107h    file corrupted
  200.  0108h    access violation
  201.  0109h    empty file
  202.  0200h    unspecified argument error
  203.  0201h    bad function
  204.  0202h    bad option
  205.  0203h    bad structure size
  206.  0204h    bad buffer size
  207.  0205h    bad client ID
  208.  0300h    unspecified error with token
  209.  0301h    cover sheet token was invalid
  210.  0302h    logo token was invalid
  211.  0303h    signature token was invalid
  212.  0304h    font token was invalid
  213.  0305h    phone directory token was invalid
  214.  0306h    outbound route token was invalid
  215.  0307h    priority token was invalid
  216.  0308h    sort token was invalid
  217.  0309h    billing token was invalid
  218.  0400h    unspecified handle error
  219.  0401h    bad Phone Directory handle
  220.  0402h    bad scheduling handle
  221.  0403h    bad read send log handle
  222.  0404h    bad read receive log handle
  223.  0405h    bad graphics handle
  224.  0500h    data passed in structure was invalid
  225.  0501h    name field given is invalid
  226.  0502h    phone number given is invalid
  227.  0503h    poll code submitted is invalid
  228.  0504h    file type constant was invalid
  229.  0505h    BFT constant not defined or supported
  230.  0506h    resolution not defined or supported
  231.  0507h    page length not defined or supported
  232.  0508h    page width not defined or supported
  233.  0509h    date & time requested are ridiculous
  234.  050Ah    Subject text was not an ASCIZ string
  235.  050Bh    From text was not an ASCIZ string
  236.  050Ch    requested envelope ID was not found
  237.  050Dh    requested envelope ID is not valid
  238.  050Eh    envelope requested was not found
  239.  050Fh    destination index is out of range
  240.  0510h    file index is out of range
  241.  0511h    index into receive log is out of range
  242.  0512h    file name specified was incomplete or invalid
  243.  0513h    page selected was out of range
  244.  0514h    bit width more than byte width
  245.  0515h    mode for open is not defined
  246.  0516h    person index is out of range
  247.  0517h    person ID is out of range
  248.  0518h    group index out of range or invalid
  249.  0519h    group ID out of range or invalid
  250.  051Ah    range of indices to read is invalid
  251.  051Bh    group name given is invalid
  252.  051Ch    field_to_use is badly specified
  253.  051Dh    predicate invalid for field specified
  254.  0600h    unspecified client procedure error
  255.  0601h    device of interest is not present
  256.  0602h    device of interest has been removed
  257.  0603h    device of interest is not responding
  258.  0604h    device of interest is disabled
  259.  0605h    could not dial because device was in use
  260.  0606h    maximum destination limit exceeded
  261.  0607h    maximum file limit exceeded
  262.  0608h    scheduling closed with no destination
  263.  0609h    scheduling closed with no files or poll
  264.  060Ah    scheduling closed with no parameters specified
  265.  060Bh    file type specified does not match file
  266.  060Ch    file type specified is not supported
  267.  060Dh    file submitted is not exportable
  268.  060Eh    file type specified is not imageable
  269.  060Fh    error converting file
  270.  0610h    envelope could not be cancelled
  271.  0611h    Phone Directory is full
  272.  0612h    record is already in the Phone Directory
  273.  0613h    selected group in Phone Directory is full
  274.  0614h    person is already in the group
  275.  0615h    person is not in the group & cannot be removed
  276.  0616h    a graphics file to be created already exists
  277.  0617h    a graphics file to be read is empty
  278.  0618h    GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
  279.  0619h    graph read or write attempted without goto or create
  280.  061Ah    graph page contains no data
  281.  061Bh    Phone Directory is already open for this client
  282.  061Ch    schedule log is already open for this client
  283.  061Dh    receive log is aready open for this client
  284.  061Eh    Phone Directory function requires write mode
  285.  0800h    denied exclusive use of the API
  286.  
  287. Format of FaxBIOS SYS_LOGIN command buffer:
  288. Offset    Size    Description    (Table 1438)
  289.  00h    WORD    structure size
  290.  02h    WORD    function number
  291.  04h    WORD    return code
  292.  06h    WORD    client ID
  293.  08h    WORD    API Major Version
  294.  0Ah    WORD    API Minor Version
  295.  0Ch    DWORD    reserved for manufacturer's use
  296.  10h 22 BYTEs    manufacturer's ID
  297.  26h    WORD    highest possible device number
  298.  28h    WORD    maximum destinations per envelope
  299.  2Ah    WORD    maximum files per envelope
  300.  2Ch    WORD    FaxBIOS capabilities (see #1439)
  301.  2Eh    DWORD    T.30 capabilities (see #1440)
  302.  32h    WORD    IPC handle
  303.  34h    DWORD    amount of memory needed to load
  304.  38h    WORD    scope (00h for public, nonzero for private)
  305.  3Ah  6 BYTEs    future expansion
  306.  40h    WORD    structure size
  307.  
  308. Bitfields for FaxBIOS capabilities:
  309. Bit(s)    Description    (Table 1439)
  310.  0    transmit supported
  311.  1    receive supported
  312.  2    IOCTL supported
  313.  3    IOCTL_DIAL supported
  314.  4    IOCTL_ANSWER_FAX supported
  315.  5    manual transmit supported
  316.  6    optional phone services supported
  317.  7    canonical phone objects
  318.  8    seam with next supported
  319.  
  320. Bitfields for T.30 capabilities:
  321. Bit(s)    Description    (Table 1440)
  322.  0    low vertical resolution (minimum)
  323.  1    high vertical resolution
  324.  2    page width 107mm (4.21 in)
  325.  3    page width 151mm (5.91 in)
  326.  4    page width 215mm (8.46 in) (minimum)
  327.  5    page width 255mm (10.04 in)
  328.  6    page width 303mm (11.93 in)
  329.  7    unused
  330.  8    page length 297mm (11.69 in) (minimum)
  331.  9    page length 364mm (14.33 in)
  332.  10    page length 279mm (11 in)
  333.  11    page length unlimited
  334.  12    Group 4 resolution 300x300
  335.  13    Group 4 resolution 400x400
  336.  14    able to respond to poll from remote
  337.  15    able to poll remote
  338.  16    binary file transfer supported
  339.  
  340. Format of FaxBIOS SYS_LOGOUT command buffer:
  341. Offset    Size    Description    (Table 1441)
  342.  00h    WORD    structure size
  343.  02h    WORD    function number
  344.  04h    WORD    return code
  345.  06h    WORD    client ID
  346.  08h    DWORD    client tag (for client's internal use)
  347.  0Ch  6 BYTEs    future expansion
  348.  12h    WORD    structure size
  349.  
  350. Format of FaxBIOS SYS_GET_FAXAPP_INFO command buffer:
  351. Offset    Size    Description    (Table 1442)
  352.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  353.  0Ch 80 BYTEs    FaxBIOS data
  354.  5Ch 80 BYTEs    default cover
  355.  ACh 80 BYTEs    default logo
  356.  FCh 80 BYTEs    default signature
  357. 14Ch 80 BYTEs    default font 10
  358. 19Ch 80 BYTEs    default font 165
  359. 1ECh 80 BYTEs    default user font
  360. 23Ch 80 BYTEs    default Pdir
  361. 28Ch 80 BYTEs    default sort
  362. 2DCh 10 BYTEs    default bill
  363. 2E6h 10 BYTEs    default route
  364. 2F0h 40 BYTEs    default cover sheet form
  365. 318h 34 BYTEs    valid dial characters
  366. 33Ah  6 BYTEs    local country code
  367. 340h  6 BYTEs    local city or area code
  368. 346h  6 BYTEs    future expansion
  369. 34Ch    WORD    structure size
  370.  
  371. Format of FaxBIOS STAT_IO_GET command buffer:
  372. Offset    Size    Description    (Table 1443)
  373.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  374.  0Ch    WORD    device number
  375.  0Eh    WORD    current activity
  376.  10h    WORD    number of rings (if ringing)
  377.  12h    WORD    number of fascimiles transmitted
  378.  14h    WORD    number of fascimiles received
  379.  16h    WORD    status of last transmission
  380.  18h    WORD    envelope number of last transmission
  381.  1Ah    WORD    index of last destination in envelope
  382.  1Ch    WORD    status of last reception
  383.  1Eh    WORD    current page (if session in progress)
  384.  20h 80 BYTEs    current file
  385.  70h 104 BYTEs    remote number
  386.  D8h 20 BYTEs    last name
  387.  ECh 20 BYTEs    first name
  388. 100h 32 BYTEs    company name
  389. 120h 32 BYTEs    notes
  390. 140h    WORD    current envelope ID (if sending)
  391. 142h    WORD    total pages in transmission (if sending)
  392. 144h  6 BYTEs    future expansion
  393. 14h    WORD    structure size
  394.  
  395. Format of FaxBIOS STAT_FAXBIOS_GET command buffer:
  396. Offset    Size    Description    (Table 1444)
  397.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  398.  0Ch    WORD    status ID
  399.  0Eh    WORD    currenty FaxBIOS function number
  400.  10h    WORD    current Client ID being serviced
  401.  12h    WORD    number of things to do
  402.  14h    WORD    number of them done
  403.  16h    WORD    number of pages to do (if any)
  404.  18h    WORD    number of them done
  405.  1Ah    WORD    number of files to do
  406.  1Ch    WORD    number of them done
  407.  1Eh 80 BYTEs    current File
  408.  6Eh    WORD    0 if all devices are idle
  409.  70h    WORD    number of fascimiles transmitted
  410.  72h    WORD    number of fascimiles received
  411.  74h    WORD    status of last transmission in system
  412.  76h    WORD    envelope ID of last transmission
  413.  78h    WORD    index of last destination in envelope
  414.  7Ah    WORD    status of last reception in system
  415.  7Ch    DWORD    time of next transmission
  416.  80h  6 BYTEs    future expansion
  417.  86h    WORD    structure size
  418.  
  419. Format of FaxBIOS PDIR_OPEN command buffer:
  420. Offset    Size    Description    (Table 1445)
  421.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  422.  0Ch 80 BYTEs    Phone Directory token
  423.  5Ch 80 BYTEs    sort order token
  424.  ACh    WORD    open Mode (0 = read, 1 = write)
  425.  AEh    WORD    Phone Directory handle
  426.  B0h    WORD    number of people
  427.  B2h    WORD    number of groups
  428.  B4h    WORD    bitmap of fields supported by partial read
  429.  B6h  6 BYTEs    future expansion
  430.  BCh    WORD    structure size
  431.  
  432. Format of FaxBIOS PDIR_CLOSE command buffer:
  433. Offset    Size    Description    (Table 1446)
  434.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  435.  0Ch    WORD    Phone Directory handle
  436.  0Eh  6 BYTEs    future expansion
  437.  14h    WORD    structure size
  438.  
  439. Format of FaxBIOS PDIR_READ_PERSON command buffer:
  440. Offset    Size    Description    (Table 1447)
  441.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  442.  0Ch    WORD    Phone Directory handle
  443.  0Eh    WORD    retrieve by index
  444.  10h    WORD    person ID or index
  445.  12h    WORD    how many groups person is in
  446.  14h    WORD    person ID
  447.  16h 20 BYTEs    last name
  448.  2Ah 20 BYTEs    first name
  449.  3Eh 32 BYTEs    company
  450.  5Eh 32 BYTEs    notes
  451.  7Eh  6 BYTEs    FAX country code
  452.  84h  6 BYTEs    FAX city/area code
  453.  8Ah 14 BYTEs    FAX local number
  454.  98h 14 BYTEs    FAX extension
  455.  A6h 24 BYTEs    reserved
  456.  BEh  6 BYTEs    voice country code
  457.  C4h  6 BYTEs    voice city/area code
  458.  CAh 14 BYTEs    voice local number
  459.  D8h 14 BYTEs    voice extension
  460.  E6h 24 BYTEs    reserved
  461.  FEh 10 BYTEs    outbound routing information
  462. 108h 10 BYTEs    billing information, credit card etc
  463. 112h    DWORD    remote FAX capabilities
  464. 116h 21 BYTEs    T.30 poll code of FAX number
  465. 12Bh 15 BYTEs    reserved
  466. 13Ah  6 BYTEs    future expansion
  467. 140h    WORD    structure size
  468.  
  469. Format of FaxBIOS SCHED_OPEN, SCHED_CANCEL command buffer:
  470. Offset    Size    Description    (Table 1448)
  471.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  472.  0Ch    WORD    scheduler handle
  473.  0Eh  6 BYTEs    future expansion
  474.  14h    WORD    structure size
  475.  
  476. Format of FaxBIOS SCHED_ADD_DEST command buffer:
  477. Offset    Size    Description    (Table 1449)
  478.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  479.  0Ch    WORD    schedule handle
  480.  0Eh    WORD    device number if manual send wanted
  481.  10h    WORD    non-zero if poll desired
  482.  12h    WORD    person ID
  483.  14h 20 BYTEs    last name
  484.  28h 20 BYTEs    first name
  485.  3Ch 32 BYTEs    company
  486.  5Ch 32 BYTEs    notes
  487.  7Ch  6 BYTEs    FAX country code
  488.  82h  6 BYTEs    FAX city/area code
  489.  88h 14 BYTEs    FAX local number
  490.  96h 14 BYTEs    FAX extension
  491.  A4h 24 BYTEs    reserved
  492.  BCh  6 BYTEs    voice country code
  493.  C2h  6 BYTEs    voice city/area code
  494.  C8h 14 BYTEs    voice local number
  495.  D6h 14 BYTEs    voice extension
  496.  E4h 24 BYTEs    reserved
  497.  FCh 10 BYTEs    outbound routing information
  498. 106h 10 BYTEs    billing information, credit card etc
  499. 110h    DWORD    remote FAX capabilities
  500. 114h 21 BYTEs    T.30 poll code of FAX number
  501. 129h 15 BYTEs    reserved
  502. 138h  6 BYTEs    future expansion
  503. 13Eh    WORD    structure size
  504.  
  505. Format of FaxBIOS SCHED_ADD_FILE command buffer:
  506. Offset    Size    Description    (Table 1450)
  507.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  508.  0Ch    WORD    schedule handle
  509.  0Eh    WORD    file type
  510.         0000h unidentified
  511.         0001h native file format
  512.         0002h ASCII
  513.         0003h FaxBIOS Tiff Class F
  514.  10h 80 BYTEs    file name
  515.  60h 80 BYTEs    font token
  516.  B0h    WORD    conversion options bitmap
  517.  B2h    WORD    resolution
  518.         0000h standard 98 lines per inch, 204 dpi
  519.         0001h fine 196 lines per inch, 204 dpi
  520.         0002h Group4 300 dpi
  521.         0003h Group4 400 dpi
  522.  B4h    WORD    page length
  523.         0000h 279 mm (11 in)
  524.         0001h 297 mm (11.69 in)
  525.         0002h 364 mm (14.33 in)
  526.         0003h unlimited
  527.  B6h    WORD    page width
  528.         0000h 215 mm (8.46 in)
  529.         0001h 255 mm (10.04 in)
  530.         0002h 303 mm (11.93 in)
  531.         0003h 151 mm (5.91 in)
  532.         0004h 107 mm (4.21 in)
  533.  B8h    WORD    binary file transfer specification
  534.         0000h only as FAX
  535.         0001h only as file (for non-faxable files)
  536.         0002h as file when possible else FAX
  537.  BAh    WORD    seam flag (nonzero for seam with next)
  538.  BCh    WORD    delete flag (nonzero to delete when done)
  539.  BEh  6 BYTEs    future expansion
  540.  C4h    WORD    structure size
  541.  
  542. Format of FaxBIOS SCHED_SET_PARAMS command buffer:
  543. Offset    Size    Description    (Table 1451)
  544.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  545.  0Ch    WORD    scheduler handle
  546.  0Eh    DWORD    time to send
  547.  10h 10 BYTEs    priority token
  548.  1Ch 80 BYTEs    logo file token
  549.  6Ch 80 BYTEs    signature file token
  550.  BCh 80 BYTEs    cover page token
  551. 10Ch 40 BYTEs    Subject text
  552. 134h 40 BYTEs    From text
  553. 15Ch    WORD    user ID
  554. 15Eh  6 BYTEs    future expansion
  555. 164h    WORD    structure size
  556.  
  557. Format of FaxBIOS SCHED_CLOSE command buffer:
  558. Offset    Size    Description    (Table 1452)
  559.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  560.  0Ch    WORD    scheduler handle
  561.  0Eh    WORD    envelope ID generated
  562.  10h  6 BYTEs    future expansion
  563.  16h    WORD    structure size
  564.  
  565. Format of FaxBIOS SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
  566. Offset    Size    Description    (Table 1453)
  567.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  568.  0Ch    WORD    log handle
  569.  0Eh    WORD    number of entries
  570.  10h  6 BYTEs    future expansion
  571.  16h    WORD    structure size
  572.  
  573. Format of FaxBIOS GRAPH_GET_FILE_TYPE command buffer:
  574. Offset    Size    Description    (Table 1454)
  575.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  576.  0Ch 80 BYTEs    filename
  577.  5Ch    WORD    file type
  578.         0000h unidentified
  579.         0001h native file format
  580.         0002h ASCII
  581.         0003h FaxBIOS Tiff Class F
  582.  5Eh    WORD    bitmap of supported capabilities
  583.  60h  6 BYTEs    future expansion
  584.  66h    WORD    structure size
  585.  
  586. Format of FaxBIOS GRAPH_CREATE_FILE command buffer:
  587. Offset    Size    Description    (Table 1455)
  588.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  589.  0Ch 80 BYTEs    filename
  590.  5Ch    WORD    graph handle
  591.  5Eh  6 BYTEs    future expansion
  592.  64h    WORD    structure size
  593.  
  594. Format of FaxBIOS GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
  595. Offset    Size    Description    (Table 1456)
  596.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  597.  0Ch    WORD    graph handle
  598.  0Eh  6 BYTEs    future expansion
  599.  14h    WORD    structure size
  600.  
  601. Format of FaxBIOS GRAPH_CREATE_PAGE command buffer:
  602. Offset    Size    Description    (Table 1457)
  603.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  604.  0Ch    WORD    graph handle
  605.  0Eh    WORD    resolution
  606.  10h    WORD    page width
  607.  12h  6 BYTEs    future expansion
  608.  18h    WORD    structure size
  609.  
  610. Format of FaxBIOS GRAPH_WRITE_PAGE command buffer:
  611. Offset    Size    Description    (Table 1458)
  612.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  613.  0Ch    WORD    graph handle
  614.  0Eh    DWORD    pointer to storage for image
  615.  12h    WORD    band height in lines
  616.  14h    WORD    width of page image in bytes
  617.  16h    WORD    facsimile page width constant
  618.  18h    WORD    width of page image in bits
  619.  1Ah    WORD    number of bytes actually processed
  620.  1Ch  6 BYTEs    future expansion
  621.  22h    WORD    structure size
  622.  
  623. Format of FaxBIOS GRAPH_OPEN_FILE command buffer:
  624. Offset    Size    Description    (Table 1459)
  625.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  626.  0Ch 80 BYTEs    filename
  627.  5Ch    WORD    file type
  628.  5Eh    WORD    graph handle
  629.  60h    WORD    number of pages
  630.  62h  6 BYTEs    future expansion
  631.  68h    WORD    structure size
  632.  
  633. Format of FaxBIOS GRAPH_GOTO_PAGE command buffer:
  634. Offset    Size    Description    (Table 1460)
  635.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  636.  0Ch    WORD    graph handle
  637.  0Eh    WORD    page number
  638.  10h    WORD    vertical resolution
  639.  12h    WORD    page width
  640.  14h    DWORD    page length
  641.  18h  6 BYTEs    future expansion
  642.  1Eh    WORD    structure size
  643.  
  644. Format of FaxBIOS GRAPH_READ_PAGE command buffer:
  645. Offset    Size    Description    (Table 1461)
  646.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  647.  0Ch    WORD    graph handle
  648.  0Eh    DWORD    pointer to storage for image
  649.  12h    WORD    band height in lines
  650.  14h    WORD    width of page image in bytes
  651.  16h    WORD    facsimile page width constant
  652.  18h    WORD    width of page image in bits
  653.  1Ah    WORD    number of bytes actually processed
  654.  1Ch  6 BYTEs    future expansion
  655.  22h    WORD    structure size
  656.  
  657. Format of FaxBIOS IOCTL_ANSWER_FAX command buffer:
  658. Offset    Size    Description    (Table 1462)
  659.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  660.  0Ch    WORD    device number
  661.  0Eh  6 BYTEs    future expansion
  662.  14h    WORD    structure size
  663.  
  664. Format of FaxBIOS IOCTL_DIAL command buffer:
  665. Offset    Size    Description    (Table 1463)
  666.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  667.  0Ch    WORD    device number
  668.  0Eh  6 BYTEs    country code
  669.  14h  6 BYTEs    city or area code
  670.  1Ah 14 BYTEs    local number
  671.  28h 14 BYTEs    extension
  672.  36h 14 BYTEs    reserved
  673.  4Eh  6 BYTEs    future expansion
  674.  54h    WORD    structure size
  675. --------N-2F8100-----------------------------
  676. INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
  677.     AX = 8100h
  678. Return: AL = FFh if installed
  679. Program: TurboNET is a NetBIOS-based file redirector and server; a
  680.       demonstration version may be downloaded from Nanosoft's BBS
  681. SeeAlso: AX=8000h"TurboNET"
  682. --------N-2F8101-----------------------------
  683. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  684.     AX = 8101h
  685. Return: AL = ???
  686.     DL = ???
  687. --------N-2F8102-----------------------------
  688. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  689.     AX = 8102h
  690. Return: AL = ???
  691.     DL = ???
  692. --------N-2F8103-----------------------------
  693. INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
  694.     AX = 8103h
  695.     ES:DI -> 17-byte buffer
  696. Return: buffer filled
  697. --------N-2F8104-----------------------------
  698. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  699.     AX = 8104h
  700.     BL = ???
  701.     BH = ???
  702.     CX = ???
  703.     DX = ???
  704.     DS:SI -> 16-byte buffer containing ???
  705. Return: AL = 00h ???
  706. --------N-2F8105-----------------------------
  707. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  708.     AX = 8105h
  709.     CX = ??? (don't change current value if 0000h)
  710.     DX = ??? (don't change current value if 0000h)
  711. Return: AL = 00h successful
  712. --------s-2F8200-----------------------------
  713. INT 2F - RESPLAY - SAMPLE/PLAYBACK
  714.     AX = 8200h
  715.     DX:DI -> start of sample space
  716.     CX:BX = length in bytes
  717. Return: AX = status (see #1464)
  718. Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  719. SeeAlso: AX=8201h"RESPLAY",AX=8210h
  720.  
  721. (Table 1464)
  722. Values for RESPLAY status:
  723.  1000h    successful
  724.  2000h    not initialized (see AX=8210h)
  725.  other    RESPLAY not installed
  726. --------G-2F8200-----------------------------
  727. INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
  728.     AX = 8200h
  729. Return: AL = FFh if installed
  730. Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
  731.       captured and recorded for later analysis
  732. SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
  733. SeeAlso: AX=8204h"CAPDOS"
  734. --------s-2F8201-----------------------------
  735. INT 2F - RESPLAY - INSTALLATION CHECK
  736.     AX = 8201h
  737. Return: AX = 7746h if installed
  738. SeeAlso: AX=8202h"RESPLAY",AX=8210h
  739. --------G-2F8201-----------------------------
  740. INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
  741.     AX = 8201h
  742. Note:    resets queue of captured INT 21 calls
  743. SeeAlso: AX=8200h"CAPDOS"
  744. --------s-2F8202-----------------------------
  745. INT 2F - RESPLAY - UNINSTALL
  746.     AX = 8202h
  747. Return: AX = status
  748.         1000h successful
  749. SeeAlso: AX=8201h"RESPLAY",AX=8210h"RESPLAY"
  750. --------G-2F8202-----------------------------
  751. INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
  752.     AX = 8202h
  753. SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
  754. --------G-2F8203-----------------------------
  755. INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
  756.     AX = 8203h
  757. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
  758. --------G-2F8204-----------------------------
  759. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
  760.     AX = 8204h
  761. Return: AH = flag: queue wrapped if nonzero
  762.     BX = index of current start of queue
  763.     CX = size of queue in entries
  764. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
  765. --------G-2F8205-----------------------------
  766. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
  767.     AX = 8205h
  768.     BX = queue item number
  769. Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
  770. SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
  771. --------s-2F8210-----------------------------
  772. INT 2F - RESPLAY - INITIALIZE
  773.     AX = 8210h
  774.     BL = sound device number (see #1465)
  775.     BH = sample rate in multiples of 250 Hz (14h to A0h)
  776.     CL = direction
  777.         00h playback
  778.         01h sample
  779. Return: AX = status (see #1464)
  780. SeeAlso: AX=8200h"RESPLAY"
  781.  
  782. (Table 1465)
  783. Values for RESPLAY sound device:
  784.  00h    printer port LPT1
  785.  01h    printer port LPT2
  786.  02h    prototype board at I/O address 0300h
  787.  03h    printer port (alternative LPT1)
  788.  04h    internal speaker
  789. ----------2F86-------------------------------
  790. INT 2F U - ???
  791.     AH = 86h
  792.     AL = function (at least 06h and 07h)
  793.     ???
  794. Return: ???
  795. Note:    called by Codeview for Windows
  796. SeeAlso: AH=44h
  797. --------U-2F8900-----------------------------
  798. INT 2F - WHOA!.COM - INSTALLATION CHECK
  799.     AX = 8900h
  800. Return: AL = state
  801.         00h not installed
  802.         FFh installed
  803. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  804. SeeAlso: AX=8901h,AX=8902h
  805. --------U-2F8901-----------------------------
  806. INT 2F - WHOA!.COM - UNINSTALL
  807.     AX = 8901h
  808. Return: AL = status
  809.         FDh successful
  810.         FEh error
  811. SeeAlso: AX=8900h
  812. --------U-2F8902-----------------------------
  813. INT 2F - WHOA!.COM - SET DELAY COUNT
  814.     AX = 8902h
  815.     BX = delay count (larger values slow system down more)
  816. Return: AL = status
  817.         FDh successful
  818.         FEh error
  819. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  820. SeeAlso: AX=8900h
  821. --------U-2F9000-----------------------------
  822. INT 2F U - RAID - INSTALLATION CHECK
  823.     AX = 9000h
  824. Return: AL = FFh if installed
  825. Program: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
  826.       that resides mostly in EMS
  827. --------U-2F9001-----------------------------
  828. INT 2F U - RAID - GET ???
  829.     AX = 9001h
  830. Return: DX:AX -> ???
  831. SeeAlso: AX=9000h
  832. --------U-2F9002-----------------------------
  833. INT 2F U - RAID - GET RESIDENT SEGMENT
  834.     AX = 9002h
  835. Return: AX = segment of resident (conventional memory) portion
  836. SeeAlso: AX=9000h
  837. --------U-2F9003-----------------------------
  838. INT 2F U - RAID - UNINSTALL
  839.     AX = 9003h
  840. Return: ???
  841. SeeAlso: AX=9000h
  842. --------U-2F9004-----------------------------
  843. INT 2F U - RAID - GET ???
  844.     AX = 9004h
  845. Return: AX = first available paragraph past end of resident portion???
  846.     CX destroyed
  847. SeeAlso: AX=9000h
  848. --------e-2F92-------------------------------
  849. INT 2F - Network Courier E-Mail - API
  850.     AH = 92h
  851.     AL = function
  852.         00h installation check
  853.         01h uninstall
  854.         02h pop down MICRO.EXE notification window
  855.         03h ???
  856.         04h ???
  857.         05h ???
  858. Return: ???
  859. Program: The Network Courier is an electronic mail package by Consumers
  860.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  861.       renamed Microsoft Mail v3.0.
  862. SeeAlso: AX=9400h,AX=9401h,AX=9402h,AH=9Ch
  863. Index:    installation check;Network Courier E-Mail
  864. Index:    uninstall;Network Courier E-Mail
  865. --------R-2F9200-----------------------------
  866. INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
  867.     AX = 9200h
  868. Program: DRIVEMAP is a redirector which allows drives on computers connected
  869.       over the parallel or serial ports to appear as local drives
  870. BUG:    jumps to data because jump table entry is 0000h
  871. Note:    DRIVEMAP returns AX=FFFFh if not a valid function number in AL
  872. --------R-2F9201-----------------------------
  873. INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
  874.     AX = 9201h
  875.     DL = drive number (01h = A:, etc.)
  876. Return: AL = 92h if mapped drive
  877.     AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
  878. SeeAlso: AX=9204h,AX=920Bh
  879. --------R-2F9202-----------------------------
  880. INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
  881.     AX = 9202h
  882.     BX = caller's CS
  883. Return: AX = status
  884.         0000h failed
  885.         nonzero successful
  886. SeeAlso: AX=9204h
  887. --------R-2F9203-----------------------------
  888. INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
  889.     AX = 9203h
  890. Return: AH = major version
  891.     AL = minor version
  892.     CX = segment of resident code
  893. Note:    the DRIVEMAP included with PC Tools v8.0 is version 1.00
  894. SeeAlso: AX=9204h,INT 16/AX=FF70h
  895. --------R-2F9204-----------------------------
  896. INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
  897.     AX = 9204h
  898. Return: AX = 9200h if installed
  899.        BL = ???
  900.        CX = segment of resident code
  901. Program: DRIVEMAP is a redirector which allows drives on computers connected
  902.       over the parallel or serial ports to appear as local drives
  903. SeeAlso: AX=9201h,AX=9202h,AX=9203h
  904. --------R-2F9205-----------------------------
  905. INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
  906.     AX = 9205h
  907.     BX = ??? to set
  908. Return: CX = new value of ???
  909. --------R-2F9206-----------------------------
  910. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  911.     AX = 9206h
  912.     ???
  913. Return: ???
  914. --------R-2F9207-----------------------------
  915. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  916.     AX = 9207h
  917.     ???
  918. Return: AX = ???
  919. --------R-2F9208-----------------------------
  920. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  921.     AX = 9208h
  922.     ???
  923. Return: ???
  924. --------R-2F9209-----------------------------
  925. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  926.     AX = 9209h
  927.     ???
  928. Return: AX = ???
  929.     BX = ???
  930.     CX = ???
  931.     DX = ???
  932. --------R-2F920A-----------------------------
  933. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  934.     AX = 920Ah
  935.     BX = ???
  936. Return: AX = ??? or FFFBh on error
  937. --------R-2F920B-----------------------------
  938. INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
  939.     AX = 920Bh
  940.     BL = drive letter (41h ['A'] = A:, etc)
  941.     CX = ??? (0000h removes mapping)
  942. Return: AX = ??? or FFF8h on error
  943. SeeAlso: AX=9201h,AX=920Dh
  944. --------R-2F920C-----------------------------
  945. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  946.     AX = 920Ch
  947.     ???
  948. Return: AX = ??? (0002h)
  949.     CX = ??? (0000h)
  950. --------R-2F920D-----------------------------
  951. INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
  952.     AX = 920Dh
  953.     BL = drive letter (41h ['A'] = A:, etc)
  954. Return: AX = type flags
  955.         bit 0: ???
  956.         bit 1: available
  957.         bit 5: local
  958.     BX = ???
  959.     CX = segment of resident code (apparently an unintended side effect)
  960. Program: DRIVEMAP is a redirector which allows drives on computers connected
  961.       over the parallel or serial ports to appear as local drives
  962. SeeAlso: AX=9218h,INT 16/AX=FF70h
  963. --------R-2F920E-----------------------------
  964. INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
  965.     AX = 920Eh
  966.     BX = port number (0-2)
  967.     CX = ??? (0000h to unmap)
  968. Return: ???
  969. --------R-2F920F-----------------------------
  970. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  971.     AX = 920Fh
  972.     ES:DI -> 3-byte buffer for ???
  973. Return: CX = 0000h
  974.     ES:DI buffer filled
  975. --------R-2F9210-----------------------------
  976. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  977.     AX = 9210h
  978.     ???
  979. Return: ???
  980. --------R-2F9211-----------------------------
  981. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  982.     AX = 9211h
  983.     ES:DI -> 8-word buffer for ???
  984. Return: CX = 0000h
  985.     ES:DI buffer filled
  986. --------R-2F9212-----------------------------
  987. INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
  988.     AX = 9212h
  989.     BX = phase
  990.         0000h leave critical section???
  991.         nonzero enter critical section???
  992. --------R-2F9213-----------------------------
  993. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  994.     AX = 9213h
  995.     BX = function number (0000h-000Bh)
  996.     ???
  997. Return: ???
  998. --------R-2F9214-----------------------------
  999. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  1000.     AX = 9214h
  1001.     ES:DI -> 6-word buffer for ???
  1002. Return: CX = 0000h
  1003.     AX = ???
  1004.     ES:DI buffer filled
  1005. --------R-2F9215-----------------------------
  1006. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  1007.     AX = 9215h
  1008.     ES:DI -> 100-word buffer for ???
  1009. Return: CX = 0000h
  1010.     ES:DI buffer filled
  1011. --------R-2F9216-----------------------------
  1012. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1013.     AX = 9216h
  1014.     ES:DI -> ???
  1015. Return: ???
  1016. --------R-2F9217-----------------------------
  1017. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1018.     AX = 9217h
  1019.     DS:SI -> 25-word buffer containing ???
  1020. Return: ???
  1021. --------R-2F9218-----------------------------
  1022. INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
  1023.     AX = 9218h
  1024.     BX = port number???
  1025. Return: AX = ???
  1026.     BX = ??? (0000h)
  1027.     CX = ??? (0000h)
  1028. Program: DRIVEMAP is a redirector which allows drives on computers connected
  1029.       over the parallel or serial ports to appear as local drives
  1030. --------R-2F9219-----------------------------
  1031. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1032.     AX = 9219h
  1033.     ???
  1034. Return: ???
  1035. --------R-2F921A-----------------------------
  1036. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1037.     AX = 921Ah
  1038.     ???
  1039. Return: AH = ???
  1040.     AL = ???
  1041.     BX = ???
  1042. --------R-2F921B-----------------------------
  1043. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1044.     AX = 921Bh
  1045.     ???
  1046. Return: AX = ???
  1047.     CX = segment of resident code (apparently an unintended side effect)
  1048. --------R-2F921C-----------------------------
  1049. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1050.     AX = 921Ch
  1051.     ???
  1052. Return: ???
  1053. --------R-2F921D-----------------------------
  1054. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  1055.     AX = 921Dh
  1056. Return: AX = ???
  1057. --------R-2F921E-----------------------------
  1058. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1059.     AX = 921Eh
  1060.     ???
  1061. Return: ???
  1062. Program: DRIVEMAP is a redirector which allows drives on computers connected
  1063.       over the parallel or serial ports to appear as local drives
  1064. Note:    this function sets two variables to 24h each
  1065. SeeAlso: INT 16/AX=FF70h
  1066. --------V-2F93-------------------------------
  1067. INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
  1068.     AH = 93h
  1069.     BX = CX = AX
  1070. Return: AL = state
  1071.         FFh if installed and BX=CX=AX on entry
  1072.         BX = segment of resident code
  1073.         01h if installed but BX or CX differ from AX (multiplex number not
  1074.           available)
  1075. Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
  1076. SeeAlso: INT 14/AX=AA01h,INT 2F/AX=6400h
  1077. Index:    screen saver;InnerMission
  1078. --------e-2F9400-----------------------------
  1079. INT 2F - MICRO.EXE - INSTALLATION CHECK
  1080.     AX = 9400h
  1081. Return: AL = 07h or 08h if installed
  1082. Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection
  1083. SeeAlso: AH=92h"Network Courier",AX=9401h,AX=9402h,AX=9403h,AX=9404h
  1084. SeeAlso: INT 21/AH=3Fh"WORKGRP.SYS"
  1085. --------e-2F9401-----------------------------
  1086. INT 2F - MICRO.EXE - SET ??? FLAG
  1087.     AX = 9401h
  1088. SeeAlso: AX=9400h,AX=9403h
  1089. --------e-2F9402-----------------------------
  1090. INT 2F - MICRO.EXE - ???
  1091.     AX = 9402h
  1092.     ???
  1093. Return: ???
  1094. SeeAlso: AX=9400h
  1095. --------e-2F9403-----------------------------
  1096. INT 2F - MICRO.EXE - SET ??? FLAG
  1097.     AX = 9403h
  1098. SeeAlso: AX=9400h,AX=9404h
  1099. --------e-2F9404-----------------------------
  1100. INT 2F - MICRO.EXE - CLEAR ??? FLAG
  1101.     AX = 9404h
  1102.     ES:DI -> name of executable from which MICRO.EXE was started
  1103. Note:    if the specified name is identical to the name of the program file
  1104.       from which MICRO was started, the ??? flag is cleared; otherwise,
  1105.       it is left unchanged
  1106. SeeAlso: AX=9400h,AX=9403h
  1107. --------e-2F9C-------------------------------
  1108. INT 2F - Network Courier E-Mail OPERATOR.EXE - API
  1109.     AH = 9Ch
  1110.     AL = subfunction
  1111.         01h uninstall
  1112. Return: ???
  1113. Program: The Network Courier is an electronic mail package by Consumers
  1114.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  1115.       renamed Microsoft Mail v3.0.
  1116. SeeAlso: AH=92h
  1117. Index:    uninstall;Network Courier E-Mail OPERATOR.EXE
  1118. --------G-2F9E00-----------------------------
  1119. INT 2F U - INTMON v2.1 - INSTALLATION CHECK
  1120.     AX = 9E00h
  1121. Return: AX = FFFFh if installed
  1122.         BX = segment of resident code
  1123. Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
  1124.       and higher machines by Celso Minnitti, Jr.
  1125. SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
  1126. --------G-2F9E01-----------------------------
  1127. INT 2F U - INTMON v2.1 - RESET
  1128.     AX = 9E01h
  1129. Return: ???
  1130. Desc:    this function specifies that INTMON should assume that any interrupts
  1131.       on which it is currently awaiting a return have completed (i.e.
  1132.       interrupts which never return such as INT 20 and INT 27)
  1133. SeeAlso: AX=9E00h,AX=9E03h
  1134. --------G-2F9E02-----------------------------
  1135. INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
  1136.     AX = 9E02h
  1137. Return: ???
  1138. SeeAlso: AX=9E00h
  1139. --------G-2F9E03-----------------------------
  1140. INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
  1141.     AX = 9E03h
  1142.     BH = interrupt number???
  1143. Return: ???
  1144. Note:    if AL > 03h on entry, INTMON 2.1 returns immediately
  1145. SeeAlso: AX=9E00h,AX=9E01h
  1146. --------G-2F9F00-----------------------------
  1147. INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
  1148.     AX = 9F00h
  1149. Return: AX = FFFFh if installed
  1150. Program: INTCFG is an optionally-resident control program for INTMON by Celso
  1151.       Minnitti, Jr.
  1152. SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
  1153. --------G-2F9F01-----------------------------
  1154. INT 2F U - INTCFG v2.1 - ???
  1155.     AX = 9F01h
  1156.     ???
  1157. Return: ???
  1158. SeeAlso: AX=9F00h
  1159. --------G-2F9F30-----------------------------
  1160. INT 2F U - INTCFG v2.1 - GET ???
  1161.     AX = 9F30h
  1162. Return: AX = ??? (0002h)
  1163. SeeAlso: AX=9F00h
  1164. --------G-2F9F49-----------------------------
  1165. INT 2F U - INTCFG v2.1 - UNINSTALL
  1166.     AX = 9F49h
  1167. Return: AX,DX,DS,ES destroyed
  1168. SeeAlso: AX=9F00h
  1169. --------E-2FA1--BX0081-----------------------
  1170. INT 2F - Ergo DOS extenders - INSTALLATION CHECK
  1171.     AH = A1h
  1172.     BX = 0081h
  1173.     AL = which
  1174.         FEh OS/286,OS/386
  1175.         FFh HummingBoard DOS extender
  1176.     ES:DI -> 16-byte buffer
  1177. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  1178. Note:    since TKERNEL is a licensed version, it is likely that subfunctions
  1179.       BX=0082h and BX=0084h are present and function identically to the
  1180.       AX=FBA1h/BX=008xh calls
  1181. SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  1182. --------m-2FA189-----------------------------
  1183. INT 2F U - Biologic HRAMDEV.SYS - API
  1184.     AX = A189h
  1185.     BX = subfunction
  1186.         0000h set ???
  1187.         0001h remove ???
  1188.         0002h get status ???
  1189.         0003h enable ???
  1190.         0004h disable ???
  1191.         0005h set ??? flag
  1192.         0006h clear ??? flag
  1193.         0007h set ??? flag
  1194.         0008h clear ??? flag
  1195.         0009h set ???
  1196.     ES:DI -> function-specific arguments
  1197.         if func 0000h: 20-byte buffer containing ???
  1198.         if func 0001h: 20-byte buffer for returned ???
  1199.         if func 0002h: 16-byte buffer for returned ???
  1200.         if func 0009h: WORD containing ???
  1201. Return: BX = A189h if installed
  1202.     AH = status
  1203.         00h successful
  1204.         FFh failed or invalid function number
  1205. Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
  1206.       provides improved high memory access under MS-DOS 5.0
  1207. Note:    functions 00h and 01h use a stack of four entries; function 01h always
  1208.       removes the values stored with the most recent function 00h call
  1209.       which has not yet been matched with a function 01h call.
  1210. --------U-2FA4E0-----------------------------
  1211. INT 2F - Futurus Team - INSTALLATION CHECK
  1212.     AX = A4E0h
  1213. Return: AL = 52h ("R") if installed
  1214.         AH = major version plus 30h ("0")
  1215.         ES:BX -> ??? (INT A4 handler???)
  1216. Note:    older versions of Right Hand Man (from which Team evolved) store the
  1217.       signature "RH" at offset 103h in the INT 2F handler's segment
  1218. SeeAlso: INT A4"Right Hand Man"
  1219. --------U-2FA900-----------------------------
  1220. INT 2F - METZTSR.COM - INSTALLATION CHECK
  1221.     AX = A900h
  1222.     CF set
  1223. Return: CF clear if resident
  1224.         AX = 97FFh
  1225.     CF set if not present
  1226. Notes:    METZTSR.COM prevents METZ applications (such as the MAGIC screen
  1227.       saver) inactivity timeout while running a DOSapp under MS Windows.
  1228.     the default multiplex number is A9h, but may be set to any value from
  1229.       80h to FFh with a commandline switch
  1230. SeeAlso: AX=A901h,AX=A902h
  1231. --------U-2FA901-----------------------------
  1232. INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
  1233.     AX = A901h
  1234.     CF set
  1235. Return: CF clear if successful
  1236.         AX:DX = BIOS time at which INT 09 was last invoked
  1237.     CF set if not present
  1238. SeeAlso: INT 09,INT 1A/AH=00h
  1239. --------U-2FA902-----------------------------
  1240. INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
  1241.     AX = A902h
  1242.     BL = new value
  1243.         00h Ctrl-Alt-Del not allowed
  1244.         else Ctrl-Alt-Del allowed (startup default is 01h)
  1245.     CF set
  1246. Return: CF clear if successful
  1247.         AX = 97FFh
  1248.     CF set if not resident
  1249. SeeAlso: AX=A903h
  1250. --------U-2FA903-----------------------------
  1251. INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
  1252.     AX = A903h
  1253.     CF set
  1254. Return: CF clear if successful
  1255.         AX = 97FFh if Ctrl-Alt-Del allowed
  1256.         AX = 0000h if Ctrl-Alt-Del not allowed
  1257.     CF set if not resident
  1258. SeeAlso: AX=A902h
  1259. --------U-2FAA00-----------------------------
  1260. INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
  1261.     AX = AA00h
  1262. Return: AL = 00h not installed
  1263.          FFh installed
  1264. Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
  1265. --------f-2FAB00-----------------------------
  1266. INT 2F - Btrieve Multi-User - INSTALLATION CHECK
  1267.     AX = AB00h
  1268. Return: AL = 4Dh if installed
  1269. SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
  1270. --------f-2FAB01-----------------------------
  1271. INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
  1272.     AX = AB01h
  1273.     BX = process ID
  1274.     DS:DX -> 38-byte parameter record (see INT 7B"Btrieve")
  1275. Return: AL = status
  1276.         00h OK
  1277.         other retry after calling INT 7F/AX=0200h
  1278. SeeAlso: AX=AB00h,AX=AB02h,INT 7B"Btrieve",INT 7F/AX=0200h
  1279. --------f-2FAB02-----------------------------
  1280. INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
  1281.     AX = AB02h
  1282. Return: AL = 00h successful
  1283.         BX = process ID
  1284.     AL > 00h failed, retry after calling INT 7F/AX=0200h
  1285. SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
  1286. --------V-2FAC00-----------------------------
  1287. INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
  1288.     AX = AC00h
  1289. Return: AX = FFFFh
  1290.     ES:DI -> ??? (graphics data?) (not documented)
  1291. Note:    this installation check was moved here to avoid the conflict with the
  1292.       CD-ROM extensions that occurred in DOS 4.00
  1293. SeeAlso: AX=1500h"GRAPHICS"
  1294. --------V-2FAD00-----------------------------
  1295. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  1296.     AX = AD00h
  1297. Return: AL = FFh if installed
  1298.         BX = ??? (0100h for MS-DOS 3.3+)
  1299. Note:    DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
  1300.       subfunctions listed here
  1301. --------O-2FAD00-----------------------------
  1302. INT 2F U - DR-DOS 3.41,5.0 KEYB - INSTALLATION CHECK
  1303.     AX = AD00h
  1304. Return: AX = FFFFh if installed
  1305. SeeAlso: AX=AD80h
  1306. --------V-2FAD01-----------------------------
  1307. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
  1308.     AX = AD01h
  1309.     BX = new code page
  1310. Return: CF clear if successful
  1311.         AX = 0001h
  1312.     CF set on error (unsupported code page)
  1313.         AX = 0000h
  1314. SeeAlso: AX=AD02h
  1315. --------O-2FAD01-----------------------------
  1316. INT 2F U - DR-DOS 3.41,5.0 KEYB - GET CONFIGURATION
  1317.     AX = AD01h
  1318. Return: BX = current code page
  1319.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  1320.     ES = resident code segment
  1321. SeeAlso: AX=AD83h
  1322. --------V-2FAD02-----------------------------
  1323. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
  1324.     AX = AD02h
  1325. Return: CF set if code page never set
  1326.         AX = 0001h
  1327.         BX = FFFFh (assume first hardware code page)
  1328.     CF clear if successful
  1329.         BX = current code page
  1330. SeeAlso: AX=AD01h,AX=AD03h
  1331. --------V-2FAD03-----------------------------
  1332. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
  1333.     AX = AD03h
  1334.     ES:DI -> buffer for code page information (see #1466)
  1335.     CX = size of buffer in bytes
  1336. Return: CF set if buffer too small
  1337.     CF clear if successful
  1338.         ES:DI buffer filled
  1339. SeeAlso: AX=AD01h,AX=AD02h
  1340.  
  1341. Format of DOS 5.0-6.0 DISPLAY.SYS code page information:
  1342. Offset    Size    Description    (Table 1466)
  1343.  00h    WORD    number of software code pages
  1344.  02h    WORD    ??? (0003h)
  1345.  04h    WORD    number of hardware code pages
  1346.  06h  N WORDs    hardware code page numbers
  1347.       N WORDs    software (prepared) code pages (FFFFh if not yet prepared)
  1348. --------V-2FAD04-----------------------------
  1349. INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
  1350.     AX = AD04h
  1351.     ???
  1352. Return: ???
  1353. --------V-2FAD10-----------------------------
  1354. INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
  1355.     AX = AD10h
  1356.     ???
  1357. Return: AX = FFFFh
  1358.     BX = ??? (0100h in PC-DOS 4.01)
  1359. --------V-2FAD10-----------------------------
  1360. INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
  1361.     AX = AD10h
  1362.     ???
  1363. Return: CF clear if successful
  1364.     CF set on error
  1365. Note:    this function is a NOP if the active code page has never been set
  1366.       (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
  1367. --------V-2FAD40-----------------------------
  1368. INT 2F - DOS 4+ - ???
  1369.     AX = AD40h
  1370.     DX = ???
  1371.     ???
  1372. Return: ???
  1373. Note:    called by PC-DOS 4.01 PRINT.COM
  1374. --------K-2FAD80-----------------------------
  1375. INT 2F u - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  1376.     AX = AD80h
  1377. Return: AL = FFh if installed
  1378.         BX = version number (BH = major, BL = minor)
  1379.         ES:DI -> internal data (see #1467)
  1380. Notes:    MS-DOS 3.30, PC-DOS 4.01, and MS-DOS 5.00 all report version 1.00.
  1381.     this function was undocumented prior to the release of DOS 5.0
  1382.  
  1383. Format of KEYB internal data:
  1384. Offset    Size    Description    (Table 1467)
  1385.  00h    DWORD    original INT 09
  1386.  04h    DWORD    original INT 2F
  1387.  08h  6 BYTEs    ???
  1388.  0Eh    WORD    flags
  1389.  10h    BYTE    ???
  1390.  11h    BYTE    ???
  1391.  12h  4 BYTEs    ???
  1392.  16h  2 BYTEs    country ID letters
  1393.  18h    WORD    current code page
  1394. ---DOS 3.3---
  1395.  1Ah    WORD    pointer to first item in list of code page tables???
  1396.  1Ch    WORD    pointer to ??? item in list of code page tables
  1397.  1Eh  2 BYTEs    ???
  1398.  20h    WORD    pointer to key translation data (see #1469)
  1399.  22h    WORD    pointer to last item in code page table list (see #1468)
  1400.  24h  9 BYTEs    ???
  1401. ---DOS 4.01---
  1402.  1Ah  2 BYTEs    ???
  1403.  1Ch    WORD    pointer to first item in list of code page tables???
  1404.  1Eh    WORD    pointer to ??? item in list of code page tables
  1405.  20h  2 BYTEs    ???
  1406.  22h    WORD    pointer to key translation data (see #1469)
  1407.  24h    WORD    pointer to last item in code page table list (see #1468)
  1408.  26h  9 BYTEs    ???
  1409.  
  1410. Format of code page table list entries:
  1411. Offset    Size    Description    (Table 1468)
  1412.  00h    WORD    pointer to next item, FFFFh = last
  1413.  02h    WORD    code page
  1414.  04h  2 BYTEs    ???
  1415.  
  1416. Format of KEYB translation data:
  1417. Offset    Size    Description    (Table 1469)
  1418.  00h    WORD    size of data in bytes, including this word
  1419.  02h N-2 BYTEs    ???
  1420. --------K-2FAD81-----------------------------
  1421. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  1422.     AX = AD81h
  1423.     BX = code page (see INT 21/AX=6601h)
  1424. Return: CF set on error
  1425.         AX = 0001h (code page not available)
  1426.     CF clear if successful
  1427. Notes:    called by DISPLAY.SYS
  1428.     this function was undocumented prior to the release of DOS 5.0
  1429. SeeAlso: AX=AD82h
  1430. --------K-2FAD82-----------------------------
  1431. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  1432.     AX = AD82h
  1433.     BL = new state
  1434.         00h US keyboard (Control-Alt-F1)
  1435.         FFh foreign keyboard (Control-Alt-F2)
  1436. Return: CF set on error (BL not 00h or FFh)
  1437.     CF clear if successful
  1438. Note:    this function was undocumented prior to the release of DOS 5.0
  1439. SeeAlso: AX=AD81h,AX=AD83h
  1440. --------K-2FAD83-----------------------------
  1441. INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
  1442.     AX = AD83h
  1443. Return: BL = current state
  1444.         00h US keyboard
  1445.         FFh foreign keyboard
  1446. SeeAlso: AX=AD82h
  1447. --------l-2FAE00-----------------------------
  1448. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  1449.     AX = AE00h
  1450.     DX = magic value FFFFh
  1451.     CH = FFh
  1452.     CL = length of command line tail (4DOS v4.0)
  1453.     DS:BX -> command line buffer (see #1470)
  1454.     DS:SI -> command name buffer (see #1471)
  1455.     DI = 0000h (4DOS v4.0)
  1456. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  1457.     AL = 00h if the command should be executed as usual
  1458. Notes:    This call provides a mechanism for TSRs to install permanent
  1459.       extensions to the command repertoire of COMMAND.COM.    It appears
  1460.       that COMMAND.COM makes this call before executing the current
  1461.       command line, and does not execute it itself if the return is FFh.
  1462.     APPEND hooks this call, to allow subsequent APPEND commands to
  1463.       execute without re-running APPEND
  1464. SeeAlso: AX=AE01h
  1465.  
  1466. Format of COMMAND.COM command line buffer:
  1467. Offset    Size    Description    (Table 1470)
  1468.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  1469.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  1470.       N BYTEs    command line text, terminated by 0Dh
  1471.  
  1472. Format of command name buffer:
  1473. Offset    Size    Description    (Table 1471)
  1474.  00h    BYTE    length of command name
  1475.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  1476. --------l-2FAE01-----------------------------
  1477. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  1478.     AX = AE01h
  1479.     DX = magic value FFFFh
  1480.     CH = 00h
  1481.     CL = length of command name (4DOS v4.0)
  1482.     DS:BX -> command line buffer (see #1470)
  1483.     DS:SI -> command name buffer (see #1471)
  1484. Return: DS:SI buffer updated
  1485.       if length byte is nonzero, the following bytes contain the uppercase
  1486.       internal command to execute and the command line buffer contains the
  1487.       command's parameters (the first DS:[SI] bytes are ignored)
  1488. Notes:    this call requests execution of the command which a previous call to
  1489.       AX=AE00h indicated was resident
  1490.     APPEND hooks this call
  1491. BUG:    Novell DOS 7.0's COMMAND.COM will attempt to run a disk program with
  1492.       the indicated name even if the returned length byte is zero, because
  1493.       the register used to flag this case is clobbered without first
  1494.       checking it.    The workaround is to set the command name buffer to
  1495.       "REM" followed by enough blanks to pad out the original command's
  1496.       length, which will also work with MS-DOS 6.
  1497.       (from padgett@tccslr.dnet.mmc.com)
  1498. SeeAlso: AX=AE00h
  1499. ----------2FAF-------------------------------
  1500. INT 2F U - ???
  1501.     AH = AFh
  1502.     ???
  1503. Return: ???
  1504. --------V-2FB000-----------------------------
  1505. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  1506.     AX = B000h
  1507. Return: AL = status
  1508.         00h not installed, OK to install
  1509.         01h not installed, not OK to install
  1510.         FFh installed
  1511. Notes:    called by DISPLAY.SYS
  1512.     documented for DOS 5.0, but undocumented in prior versions
  1513. SeeAlso: AX=2300h,AX=2E00h,AX=B001h
  1514. --------V-2FB001-----------------------------
  1515. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  1516.     AX = B001h
  1517.     DS:BX -> DWORD buffer for address of 8x8 font table
  1518. Return: buffer filled
  1519.     AL = FFh
  1520. Note:    PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
  1521.       MS-DOS 3.30 sets it to 0030h
  1522. SeeAlso: AH=2Eh"GRAFTABL",AX=B000h
  1523. --------I-2FB400-----------------------------
  1524. INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
  1525.     AX = B400h
  1526. Return: AL = FFh if installed
  1527. --------I-2FB401-----------------------------
  1528. INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
  1529.     AX = B401h
  1530. Return: ES -> host screen buffer (PC ASCII format)
  1531.     ES unchanged if communications not started
  1532. --------I-2FB402-----------------------------
  1533. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1534.     AX = B402h
  1535.     BX = ???
  1536. Return: ???
  1537. --------I-2FB403-----------------------------
  1538. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1539.     AX = B403h
  1540.     ???
  1541. Return: ???
  1542. --------I-2FB404-----------------------------
  1543. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1544.     AX = B404h
  1545.     ???
  1546. Return: ???
  1547. --------I-2FB405-----------------------------
  1548. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1549.     AX = B405h
  1550.     ???
  1551. Return: ???
  1552. ----------2FB700-----------------------------
  1553. INT 2F - APPEND - INSTALLATION CHECK
  1554.     AX = B700h
  1555. Return: AL = status
  1556.         00h not installed
  1557.         FFh installed
  1558. Note:    MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
  1559.       a TopView-compatible environment
  1560. ----------2FB701-----------------------------
  1561. INT 2F U - APPEND v3.21 only - GET APPEND PATH
  1562.     AX = B701h
  1563. Return: ES:DI -> active APPEND path
  1564. Notes:    the only version of APPEND known to support this call is the APPEND
  1565.       shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
  1566.       "Incorrect APPEND Version" and aborts the caller
  1567.     use AX=B704h first, and only call this function if that one is not
  1568.       supported
  1569. SeeAlso: AX=B704h
  1570. ----------2FB702-----------------------------
  1571. INT 2F - APPEND - VERSION CHECK
  1572.     AX = B702h
  1573. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  1574.     AL = major version number
  1575.     AH = minor version number, otherwise
  1576. SeeAlso: AX=B710h
  1577. ----------2FB703-----------------------------
  1578. INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  1579.     AX = B703h
  1580.     ES:DI -> INT 21 handler APPEND should chain to
  1581. Return: ES:DI -> APPEND's INT 21 handler
  1582. Note:    each invocation of this function toggles a flag which APPEND uses to
  1583.       determine whether to chain to the user handler or the original
  1584.       INT 21
  1585. ----------2FB704-----------------------------
  1586. INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
  1587.     AX = B704h
  1588. Return: ES:DI -> active APPEND path (128 bytes max)
  1589. Note:    some versions of append do not support this call, and return ES
  1590.       unchanged; in this case, you should call AX=B701h to get the APPEND
  1591.       path
  1592. SeeAlso: AX=B701h
  1593. ----------2FB706-----------------------------
  1594. INT 2F - DOS 4+ APPEND - GET APPEND FUNCTION STATE
  1595.     AX = B706h
  1596. Return: BX = APPEND state (see #1472)
  1597. SeeAlso: AX=B707h
  1598.  
  1599. Bitfields for APPEND state:
  1600. Bit(s)    Description    (Table 1472)
  1601.  0    set if APPEND enabled
  1602.  1-11    reserved
  1603.  12    (DOS 5.0) set if APPEND applies directory search even if a drive has
  1604.       been specified
  1605.  13    set if /PATH flag active
  1606.  14    set if /E flag active (environment var APPEND exists)
  1607.  15    set if /X flag active
  1608. ----------2FB707-----------------------------
  1609. INT 2F - DOS 4+ APPEND - SET APPEND FUNCTION STATE
  1610.     AX = B707h
  1611.     BX = APPEND state bits (see #1472)
  1612. SeeAlso: AX=B706h
  1613. ----------2FB710-----------------------------
  1614. INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
  1615.     AX = B710h
  1616. Return: AX = current APPEND state (see #1472)
  1617.     BX = ??? (0000h in MS-DOS 3.30 and 5.00)
  1618.     CX = ??? (0000h in MS-DOS 3.30 and 5.00)
  1619.     DL = major version
  1620.     DH = minor version
  1621. SeeAlso: AX=B702h
  1622. ----------2FB711-----------------------------
  1623. INT 2F - DOS 4+ APPEND - SET RETURN FOUND NAME STATE
  1624.     AX = B711h
  1625. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  1626.       6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename
  1627.       is written over top of the filename passed to the INT 21h call.  The
  1628.       application must provide a sufficiently large buffer.     This state is
  1629.       reset after the next INT 21h call processed by APPEND.
  1630.     APPEND uses the byte at offset 3Dh in the PSP (see INT 21/AH=26h) to
  1631.       store the flag telling it to overwrite the filename
  1632. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  1633.       INT 21/AH=6Ch
  1634. SeeAlso: INT 21/AH=26h,INT 21/AH=4Eh
  1635. --------N-2FB800-----------------------------
  1636. INT 2F - network - INSTALLATION CHECK
  1637.     AX = B800h
  1638. Return: AL = status
  1639.         00h        not installed
  1640.         nonzero installed
  1641.           BX = installed component flags (test in this order!)
  1642.            bit 6   server
  1643.            bit 2   messenger
  1644.            bit 7   receiver
  1645.            bit 3   redirector
  1646.            bit 1   LANPUP (LANtastic 4.0)
  1647. Notes:    this function is supported by LAN Manager, LANtastic, NetWare Lite,
  1648.       SilverNET, 10NET, etc.
  1649.     LANtastic and NetWare Lite use only BL for the return value, preserving
  1650.       BH; LAN Manager and DOS LAN Requester return BH=00h.    This permits
  1651.       differentiation between those two groups by setting BH to a nonzero
  1652.       value before the call and checking its value on return.
  1653. SeeAlso: AX=4E53h,AX=B809h
  1654. --------N-2FB800CXF041-----------------------
  1655. INT 2F - 10NET - INSTALLATION CHECK
  1656.     AX = B800h
  1657.     CX = F041h
  1658. Return: AL = status
  1659.         00h        not installed
  1660.         nonzero installed
  1661.         BX = installed component flags (test in this order!)
  1662.            bit 6   server
  1663.            bit 2   messenger
  1664.            bit 7   receiver
  1665.            bit 3   redirector
  1666.            bit 1   LANPUP (LANtastic 4.0)
  1667.         CX = 10Net data segment
  1668.         CX:DX -> 10Net Configuration Table
  1669.               (see #0780 at INT 21/AX=5E01h"10NET")
  1670. Note:    if CX <> F041h on entry, neither CX nor DX will be changed, and this
  1671.       call becomes identical to the standard installation check above
  1672. SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
  1673. --------N-2FB803-----------------------------
  1674. INT 2F - network - GET NETWORK EVENT POST HANDLER
  1675.     AX = B803h
  1676. Return: ES:BX -> current event post handler (see AX=B804h)
  1677. Note:    this function is supported by 10NET v5.0
  1678. SeeAlso: AX=B804h,AX=B903h
  1679. --------N-2FB804-----------------------------
  1680. INT 2F - network - SET NETWORK EVENT POST HANDLER
  1681.     AX = B804h
  1682.     CX = (10NET) 0370h if 10Windows is hooking post handler
  1683.     ES:BX -> new event post handler
  1684. Notes:    used in conjunction with AX=B803h to hook into the network event post
  1685.       routine
  1686.     this function is supported by 10NET v5.0
  1687.     The specified handler is called on any network event.  Two events are
  1688.       defined: message received and critical network error.
  1689. SeeAlso: AX=B803h,AX=B904h
  1690.  
  1691. (Table 1473)
  1692. Values network post routine is called with:
  1693.     AX = 0000h single block message
  1694.         DS:SI -> ASCIZ originator name
  1695.         DS:DI -> ASCIZ destination name
  1696.         ES:BX -> text header (see #1474)
  1697.     AX = 0001h start multiple message block
  1698.         CX = block group ID
  1699.         DS:SI -> ASCIZ originator name
  1700.         DS:DI -> ASCIZ destination name
  1701.     AX = 0002h multiple block text
  1702.         CX = block group ID
  1703.         ES:BX -> text header (see #1474)
  1704.     AX = 0003h end multiple block message
  1705.         CX = block group ID
  1706.     AX = 0004h message aborted due to error
  1707.         CX = block group ID
  1708.     AX = 0101h server received badly formatted network request
  1709.         Return: AX = FFFFh (PC LAN will process error)
  1710.     AX = 0102h unexpected network error
  1711.         ES:BX -> NCB (see INT 5C)
  1712.     AX = 0103h server received INT 24 error
  1713.         other registers as for INT 24, except AH is in BH
  1714.         Return: as below, but only 0000h and FFFFh allowed
  1715. Return: AX = response code
  1716.         0000h user post routine processed message
  1717.         0001h PC LAN will process message, but message window not displayed
  1718.         FFFFh PC LAN will process message
  1719.  
  1720. Format of text header:
  1721. Offset    Size    Description    (Table 1474)
  1722.  00h    WORD    length of text (maximum 512 bytes)
  1723.  02h  N BYTEs    text of message
  1724. Note:    all CRLF sequences in message text are replaced by 14h
  1725. --------N-2FB807-----------------------------
  1726. INT 2F - network - GET NetBIOS NAME NUMBER OF MACHINE NAME
  1727.     AX = B807h
  1728. Return: CH = NetBIOS name number of the machine name
  1729. SeeAlso: INT 21/AX=5E00h
  1730. --------N-2FB808-----------------------------
  1731. INT 2F U - network - RELINK KEYBOARD HANDLER
  1732.     AX = B808h
  1733.     ES:BX -> INT 09 handler network should call after it finishes INT 09
  1734. Notes:    this call replaces the address to which the network software chains on
  1735.       an INT 09 without preserving the original value.  This allows a prior
  1736.       handler to unlink, but does not allow a new handler to be added
  1737.       such that the network gets the INT 09 first unless the new handler
  1738.       completely takes over INT 09 and never chains.
  1739.     this function is called by the DOS 3.2 KEYBxx.COM
  1740. SeeAlso: AX=B908h
  1741. --------N-2FB809-----------------------------
  1742. INT 2F - LANtastic Network, NetWare Lite - VERSION CHECK
  1743.     AX = B809h
  1744. Return: AH = major version
  1745.     AL = minor version (decimal)
  1746. Notes:    this function is also supported by SilverNET
  1747.     NetWare Lite returns its own version number rather than a PC LAN
  1748.       compatibility version
  1749. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LAN Manager"
  1750. --------N-2FB809-----------------------------
  1751. INT 2F - PC LAN Program - VERSION CHECK
  1752.     AX = B809h
  1753. Return: AH = minor version (decimal)
  1754.     AL = major version
  1755. Notes:    this function is also supported in this form by LAN Manager, the DOS
  1756.       LAN Requester, and 10NET v5.0
  1757.     10NET returns version 1.10 (AX=0A01h) for compatibility
  1758. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
  1759. --------N-2FB80A-----------------------------
  1760. INT 2F - PC Network 1.00 - ???
  1761.     AX = B80Ah
  1762.     ???
  1763. Return: ???
  1764. Program: PC Network is an early networking package which was renamed the
  1765.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  1766. Note:    called by RECEIVER (equivalent to NetWare Lite SERVER)
  1767. --------N-2FB80F-----------------------------
  1768. INT 2F - DOS LAN Requester - GET START PARAMETERS
  1769.     AX = B80Fh
  1770.     CX = size of return data buffer
  1771.     ES:DI -> return data buffer (see #1475)
  1772. Return: AX = status
  1773.          00h     network started
  1774.          nonzero network not started
  1775.     CX = number of bytes returned in buffer
  1776.     ES:DI buffer filled
  1777.  
  1778. Format of DOS LAN Requester return data buffer:
  1779. Offset    Size    Description    (Table 1475)
  1780.  00h    BYTE    major version
  1781.  01h    BYTE    minor version
  1782.  02h    WORD    configuration flags given when network was started (see #1476)
  1783.  04h 15 BYTEs    NET START machine name (space padded)
  1784.  13h    BYTE    00h
  1785.  14h 9    BYTEs    NET START domain name (NULL padded)
  1786.  1Dh    BYTE    00h
  1787.  1Eh 32 BYTEs    /WRK heuristics string (space padded, not terminated)
  1788.  3Eh    WORD    /SRV value
  1789.  40h    WORD    /ASG value
  1790.  42h    WORD    /NBC value
  1791.  44h    WORD    /NBS value
  1792.  46h    WORD    /BBC value
  1793.  48h    WORD    /BBS value
  1794.  4Ah    WORD    /PBC value
  1795.  4Ch    WORD    /PBS value
  1796.  4Eh    WORD    /PFS value
  1797.  50h    WORD    /PFT value
  1798.  52h    WORD    /PWT value
  1799.  54h    WORD    /KUC value
  1800.  56h    WORD    /KST value
  1801.  58h    WORD    /NVS value
  1802.  5Ah    WORD    /NMS value
  1803.  5Ch    WORD    /NDB value
  1804.  5Eh    WORD    /MBI value
  1805.  60h    BYTE    NetBIOS name number for machine name
  1806.  61h    BYTE    NetBIOS name number for domain name
  1807.  62h    WORD    NetBIOS sessions required for configuration
  1808.  64h    WORD    NetBIOS commands required for configuration
  1809.  66h    WORD    NetBIOS names required for configuration
  1810.  68h 128 BYTEs    NET START path (LANROOT)
  1811.  E8h    BYTE    00h
  1812.  
  1813. Bitfields for configuration flags:
  1814. Bit(s)    Description    (Table 1476)
  1815.  0    /NVS nonzero
  1816.  1    /NMS nonzero
  1817.  2    /API
  1818.  3    /HIM
  1819.  4    /LIM
  1820.  5    /ENC
  1821.  6    /POP
  1822.  7    /EMS
  1823.  8    /RPL
  1824.  9-12    reserved
  1825.  13    RDR started
  1826.  14    RCV started
  1827.  15    User is currently logged on
  1828. --------N-2FB900-----------------------------
  1829. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  1830.     AX = B900h
  1831. Return: AL = state
  1832.         00h if not installed
  1833.         FFh if installed
  1834. --------N-2FB901-----------------------------
  1835. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  1836.     AX = B901h
  1837. Return: AL = ???
  1838.     ES:BX -> RECEIVER.COM INT 2F handler
  1839. Desc:    allows more efficient execution by letting the caller bypass any other
  1840.       INT 2F handlers which have been added since RECEIVER.COM was
  1841.       installed
  1842. --------N-2FB903-----------------------------
  1843. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  1844.     AX = B903h
  1845. Return: ES:BX -> POST handler
  1846. SeeAlso: AX=B803h,AX=B904h
  1847. --------N-2FB904-----------------------------
  1848. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  1849.     AX = B904h
  1850.     ES:BX -> new POST handler
  1851. SeeAlso: AX=B804h,AX=B903h
  1852. --------N-2FB905-----------------------------
  1853. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  1854.     AX = B905h
  1855.     DS:BX -> 128-byte buffer for filename 1
  1856.     DS:DX -> 128-byte buffer for filename 2
  1857. Return: buffers filled from RECEIVER.COM internal buffers
  1858. Note:    use of filenames is unknown, but one appears to be for storing messages
  1859. SeeAlso: AX=B906h
  1860. --------N-2FB906-----------------------------
  1861. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  1862.     AX = B906h
  1863.     DS:BX -> 128-byte buffer for filename 1
  1864.     DS:DX -> 128-byte buffer for filename 2
  1865. Return: RECEIVER.COM internal buffers filled from user buffers
  1866. Note:    use of filenames is unknown, but one appears to be for storing messages
  1867. SeeAlso: AX=B905h
  1868. --------N-2FB908-----------------------------
  1869. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  1870.     AX = B908h
  1871.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  1872. Note:    this call replaces the address to which RECEIVER.COM chains on an
  1873.       INT 09 without preserving the original value.     This allows a prior
  1874.       handler to unlink, but does not allow a new handler to be added
  1875.       such that RECEIVER gets the INT 09 first.
  1876. SeeAlso: AX=B808h
  1877. --------V-2FBC00-----------------------------
  1878. INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
  1879.     AX = BC00h
  1880. Return: AL = state
  1881.         00h not installed, OK to install
  1882.         01h not installed, not OK to install
  1883.         FFh installed
  1884.         BX = 5456h ("TV")
  1885. Range:    AH=80h to AH=FFh, selected by commandline switch
  1886. SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
  1887. --------s-2FBC00BX3F3F-----------------------
  1888. INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
  1889.     AX = BC00h
  1890.     BX = 3F3Fh ('??')
  1891.     CX = 0000h
  1892.     DX = 0000h
  1893. Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
  1894. Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
  1895.       of sound boards; its primary programmer was Bryan Crane
  1896. SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
  1897. --------s-2FBC01-----------------------------
  1898. INT 2F - MediaVision MVSOUND.SYS - GET VERSION
  1899.     AX = BC01h
  1900.     BX = magic value 6D20h ('m ')
  1901.     CX = magic value 2076h (' v')
  1902.     DX = magic value 2020h ('  ')
  1903. Return: BX = ASCII major version (leading zeros significant)
  1904.     CX = ASCII minor version (leading zeros significant)
  1905. SeeAlso: AX=BC00h/BX=3F3Fh
  1906. --------s-2FBC02-----------------------------
  1907. INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
  1908.     AX = BC02h
  1909. Return: BX:DX -> state table
  1910. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC03h
  1911. --------s-2FBC03-----------------------------
  1912. INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
  1913.     AX = BC03h
  1914. Return: BX:DX -> function table
  1915. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC02h
  1916. --------s-2FBC04-----------------------------
  1917. INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
  1918.     AX = BC04h
  1919. Return: AX = 4D56h ('MV')
  1920.     BL = DMA channel
  1921.     CL = IRQ number
  1922. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND"
  1923. --------V-2FBC06-----------------------------
  1924. INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
  1925.     AX = BC06h
  1926. Return: BX = 5456h ("TV")
  1927.     CH = major version
  1928.     CL = minor version
  1929.     DL = revision
  1930. SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
  1931. --------s-2FBC06-----------------------------
  1932. INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
  1933.     AX = BC06h
  1934. Return: AX = 4D56h ('MV')
  1935.     DX:BX -> status string (first byte 0Ch if no status message to display)
  1936. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
  1937. --------s-2FBC0B-----------------------------
  1938. INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
  1939.     AX = BC0Bh
  1940. Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
  1941. SeeAlso: AX=BC00h/BX=3F3Fh
  1942. --------U-2FBE00-----------------------------
  1943. INT 2F - REDVIEW - INSTALLATION CHECK
  1944.     AX = BE00h
  1945. Return: AL = FFh if installed
  1946. Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
  1947.       copies data sent to standard output to standard error when the
  1948.       former has been redirected to a file, thus allowing the data to
  1949.       be seen on the screen at the same time it is captured in a file
  1950. --------N-2FBF00-----------------------------
  1951. INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  1952.     AX = BF00h
  1953. Return: AL = FFh if installed
  1954. --------N-2FBF01-----------------------------
  1955. INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  1956.     AX = BF01h
  1957.     ???
  1958. Return: ???
  1959. --------N-2FBF80-----------------------------
  1960. INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  1961.     AX = BF80h
  1962.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  1963. Return: AL = FFh if installed
  1964.         ES:DI -> internal workspace
  1965. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  1966. --------F-2FC0-------------------------------
  1967. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
  1968.     AH = C0h
  1969.     AL = function code (01h to 15h)
  1970. Return: ???
  1971. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h/BX=4D53h
  1972. --------N-2FC000-----------------------------
  1973. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  1974.     AX = C000h
  1975. Return: AL = FFh if installed
  1976.         DX:BX -> FAR entry point (see #1477,#1478,#1479)
  1977.         ES:SI -> signature string "LINKSUP$"
  1978. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1979. Note:    on return, ES = DX for LSL v1.10 and v2.05; LSL makes use of this in
  1980.       its search for a previous installation
  1981. SeeAlso: AX=5100h
  1982.  
  1983. (Table 1477)
  1984. Call LSL function "Request MLID Registration" with:
  1985.     BX = 0001h
  1986.     ES:SI -> registration??? record (see #1481)
  1987.     DS:DI -> buffer for LSL information block (see #1482)
  1988. Return: AX = completion code (0000h,8001h) (see #1480)
  1989.     DS:DI buffer filled if successful
  1990.     BX,CX corrupted
  1991. Note:    see "Novell LAN Driver Developer's Guide, Volume III" for more details
  1992.  
  1993. (Table 1478)
  1994. Call LSL function "get support entry points" with:
  1995.     BX = 0002h
  1996.     ES:SI -> buffer for entry point record (see #1483)
  1997. Return: ES:SI buffer filled
  1998.  
  1999. (Table 1479)
  2000. Call LSL function "Request MLID API entry point" with:
  2001.     BX = 0003h
  2002. Return: ES:SI -> MLID (Multiple Link Interface Driver) API entry point
  2003.         (call with BX=function 00h-10h, not range-checked)
  2004. Note:    LSL v1.10 and v2.05 execute BX=0003h for BX=0000h and any BX >= 0003h
  2005.  
  2006. (Table 1480)
  2007. Values for LSL completion code:
  2008.  0000h    successful
  2009.  8001h    out of resources
  2010.  8002h    bad parameter
  2011.  8003h    no more items
  2012.  8004h    item not present
  2013.  8005h    failed
  2014.  8006h    receive overflow
  2015.  8007h    canceled
  2016.  8008h    bad command
  2017.  8009h    duplicate entry
  2018.  800Ah    no such handler
  2019.  800Bh    no such driver
  2020.  
  2021. Format of LSL registration record:
  2022. Offset    Size    Description    (Table 1481)
  2023.  00h    DWORD    -> ??? FAR function (to be called with ES:SI -> ??? and
  2024.           returning AX = completion code)
  2025.  04h    DWORD    -> ???
  2026.  08h    DWORD    -> ??? data (at least 3Eh bytes)
  2027.  
  2028. Format of LSL information block:
  2029. Offset    Size    Description    (Table 1482)
  2030.  00h    DWORD    -> ??? entry point (called with BX=function 00h-11h)
  2031.  04h    WORD    ???
  2032.  06h    WORD    ???
  2033. Note:    due to a fencepost error, LSL v2.05 (distributed with Novell DOS 7)
  2034.       will crash if the above entry point is called with BX=0012h
  2035.  
  2036. Format of entry point record:
  2037. Offset    Size    Description    (Table 1483)
  2038.  00h    DWORD    pointer to protocol support entry point in LSL (see #1484)
  2039.  04h    DWORD    pointer to general support entry point in LSL (see #1485)
  2040.  
  2041. (Table 1484)
  2042. Call protocol support entry point with:
  2043.     BX = function number
  2044.         0000h ???
  2045.         0001h ???
  2046.         0002h ???
  2047.         0003h "ScheduleAESEvent"
  2048.         ES:SI -> AES ECB to be scheduled (see #1488)
  2049.         Return: ES,SI preserved
  2050.         0004h "CancelAESEvent"
  2051.         ES:SI -> ECB to be cancelled (see #1488)
  2052.         Return: ES,SI preserved
  2053.         0005h "GetIntervalMarker"
  2054.         Return: DX:AX = current interval marker in milliseconds
  2055.             all other registers preserved
  2056.         0006h "RegisterStack"
  2057.         AX = logical board number
  2058.         ES:SI -> bound stack info structure (see #1498)
  2059.         Return: BX = assigned Stack ID if AX=0000h
  2060.         0007h "DeRegisterStack"
  2061.         AX = protocol stack's assigned Stack ID
  2062.         0008h "RegisterDefaultStack"
  2063.         AX = logical board number
  2064.         ES:SI -> stack info structure (see #1499)
  2065.         0009h "DeRegisterDefaultStack"
  2066.         AX = logical board number
  2067.         000Ah "RegisterPrescanStack"
  2068.         AX = logical board number
  2069.         ES:SI -> stack info structure (see #1499)
  2070.         000Bh "DeRegisterPrescanStack"
  2071.         AX = logical board number
  2072.         000Ch "SendPacket"
  2073.         ES:SI -> send ECB
  2074.         Return: interrupts disabled
  2075.         000Dh ???
  2076.         000Eh ???
  2077.         000Fh ???
  2078.         0010h "GetStackIDFromName"
  2079.         ES:SI -> counted NUL-terminated protocol name (max 15 chars)
  2080.         Return: BX = Stack ID if AX=0000h
  2081.         0011h "GetPIDFromStackIDBoard"
  2082.         AX = Stack ID for protocol
  2083.         CX = logical board number
  2084.         ES:SI -> 6-byte buffer for protocol ID
  2085.         0012h "GetMLIDControlEntry"
  2086.         AX = logical board number
  2087.         Return: ES:SI -> MLID control handler (see #1486) if AX=0000h
  2088.         0013h "GetProtocolControlEntry"
  2089.         AX = Stack ID or
  2090.             FFFEh Prescan stack
  2091.                 CX = logical board number
  2092.             FFFFh default protocol
  2093.                 CX = logical board number
  2094.         Return: ES:SI -> protocol stack control entry point if AX=0000h
  2095.                   (see #1487)
  2096.         0014h "GetLSLStatistics"
  2097.         Return: AX = 0000h (successful)
  2098.             ZF set
  2099.             ES:SI -> LSL statistics table (see #1490)
  2100.         0015h "BindStack"
  2101.         AX = protocol stack's assigned Stack ID
  2102.         CX = logical board number
  2103.         0016h "UnbindStack"
  2104.         AX = protocol stack's assigned Stack ID
  2105.         CX = logical board number
  2106.         0017h "AddProtocolID"
  2107.         AX = frame type ID code
  2108.         ES:SI -> 6-byte protocol ID
  2109.         CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
  2110.         0018h "RelinquishControl"
  2111.         Return: after LSL performs any necessary background processing
  2112.         0019h "GetLSLConfiguration"
  2113.         Return: AX = 0000h (successful)
  2114.             ZF set
  2115.             ES:SI -> LSL configuration table (see #1489)
  2116.         001Ah "GetTickMarker"
  2117.         Return: AX = number of 55ms ticks since LSL loaded
  2118.             BX destroyed
  2119. Return: AX = completion code (see #1480)
  2120.     ZF set if successful
  2121.     SS:SP, DS, BP preserved; most other registers may be destroyed
  2122.  
  2123. (Table 1485)
  2124. Call general support entry point with:
  2125.     BX = function number
  2126.         0000h "Allocate Memory" (obsolete)
  2127.          always returns AX=8008h (BAD_COMMAND)
  2128.         0001h "Free Memory" (obsolete)
  2129.          always returns AX=8008h (BAD_COMMAND)
  2130.         0002h "Realloc Memory" (obsolete)
  2131.          always returns AX=8008h (BAD_COMMAND)
  2132.         0003h "Memory Statistics" (obsolete)
  2133.          always returns AX=8008h (BAD_COMMAND)
  2134.         0004h "Add Memory To Pool" (obsolete)
  2135.          always returns AX=8008h (BAD_COMMAND)
  2136.         0005h "AddGeneralService"
  2137.         ES:SI -> General Service Control Block (see #1500)
  2138.         0006h "RemoveGeneralService"
  2139.         ES:SI -> General Service Control Block (see #1500)
  2140.         0007h "GetNETcfgPath"
  2141.         Return: AX = 0000h (successful)
  2142.             DS:DX -> ASCIZ pathname for NET.CFG
  2143.         0008h U ???     (in LSL 1.10)
  2144.         Return: AX = 0000h
  2145.             ES:SI -> ??? (a 22-byte data area)
  2146.         000Ah "GetCriticalSectionStatus"
  2147.         Return: BX = total outstanding calls to "StartCriticalSection"
  2148.         000Bh "ServiceEvents"
  2149.         interrupts disabled
  2150.         Return: interrupts disabled
  2151.         0010h "GetStackECB"
  2152.         DS:DI -> Lookahead structure (see #1501)
  2153.         interrupts disabled
  2154.         Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
  2155.             interrupts disabled
  2156.         8000h-FFFFh reserved for user general service providers
  2157. Return: AX = completion code (see #1480)
  2158.     ZF set if successful
  2159.     SS:SP, DS, BP preserved
  2160.  
  2161. (Table 1486)
  2162. Call MLID control handler with:
  2163.     AX = logical board number
  2164.     BX = function number
  2165.         0000h "GetMLIDConfiguration"
  2166.         Return: ES:SI -> MLID's configuration table if successful
  2167.                   (see #1493 for format)
  2168.         0001h "GetMLIDStatistics"
  2169.         Return: ES:SI -> MLID's statistics table if successful
  2170.                   (see #1493 for format)
  2171.         0002h "AddMulticastAddress"
  2172.         ES:SI -> 6-byte multicast address to add
  2173.         0003h "DeleteMulticastAddress"
  2174.         ES:SI -> 6-byte multicast address to delete
  2175.         0005h "MLIDShutdown"
  2176.         CX = type
  2177.             0000h permanent (also deregisters from LSL)
  2178.             other temporary (shutdown hardware only)
  2179.         0006h "MLIDReset" reinitialize board / restart from temp shutdown
  2180.         0007h "Create Connection" (obsolete?)
  2181.         ???
  2182.         0008h "Delete Connection" (obsolete?)
  2183.         ???
  2184.         0009h "SetLookAheadSize"
  2185.         CX = requested lookahead size (00h-80h)
  2186.         0010h "PromiscuousChange"
  2187.         CX = what to receive promiscuously
  2188.             bit 0: MAC frames
  2189.             bit 1: non-MAC frames
  2190.         0011h "RegisterReceiveMonitor"
  2191.         CX = subfunction
  2192.             0000h disable receive monitoring
  2193.             else  enable receive monitoring
  2194.         ES:SI -> monitor receive routine
  2195.         ES:DI -> monitor transmit routine
  2196.         0012h "Driver Poll" (obsolete?)
  2197.         ???
  2198. Return: AX = completion code (see #1480)
  2199.     ZF set if successful
  2200. Note:    not all boards/MLIDs support function 0010h; see bit 13 in the MLID
  2201.       mode flags field of the MLID's configuration table
  2202.  
  2203. (Table 1487)
  2204. Call protocol stack control entry point with:
  2205.     BX = function number
  2206.         0000h "GetProtocolStackConfiguration"
  2207.         Return: ES:SI -> protocol stack's configuration table
  2208.                    (see #1492)
  2209.         0001h "GetProtocolStackStatistics"
  2210.         Return: ES:SI -> protocol stack's statistics table (see #1491)
  2211.         0002h "BindToMLID"
  2212.         CX = board number to bind to
  2213.         ES:SI -> implementation-dependant parameter string
  2214.         0003h "UnBindFromMLID"
  2215.         CX = board number from which protocol should unbind
  2216.         ES:SI -> optional implementation-dependant parameter string
  2217.         0004h "MLIDDeRegistered"
  2218.         CX = board number that has de-registered from LSL
  2219. Return: AX = status
  2220.         0000h successful
  2221.         else implementation-dependant error codes
  2222.     ZF set if successful
  2223.     SS:SP, DS, BP preserved
  2224.  
  2225. Format of AES ECB:
  2226. Offset    Size    Description    (Table 1488)
  2227.  00h    DWORD    "AESLink" pointer used by LSL for list management
  2228.  04h    DWORD    number of milliseconds to wait
  2229.  08h    DWORD    "AESStatus" (is set to 00000000h when AES ESR is invoked)
  2230.  0Ch    DWORD    -> function to be invoked when time expires
  2231.         ES:SI will point to this structure on entry,
  2232.         DS, BP, and SS:SP must be preserved.
  2233.  
  2234. Format of LSL Configuration Table:
  2235. Offset    Size    Description    (Table 1489)
  2236.  00h    BYTE    major version of configuration table
  2237.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  2238.  02h  8 BYTEs    reserved
  2239.  0Ah    BYTE    LSL major version (decimal)
  2240.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  2241. ---LSL 1.0x ---
  2242.  0Ch 14 BYTEs    reserved
  2243. ---LSL 1.10+ ---
  2244.  0Ch    WORD    maximum number of boards which LSL can handle
  2245.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  2246.  10h 12 BYTEs    reserved
  2247.  
  2248. Format of LSL Statistics Table:
  2249. Offset    Size    Description    (Table 1490)
  2250.  00h    BYTE    major version of statistics table format
  2251.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  2252.  02h    WORD    "GenericCounters" number of counters in static portion of
  2253.           table
  2254.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  2255.           counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  2256.           is the next field, etc.
  2257.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  2258.  0Ch    DWORD    reserved
  2259.  10h    DWORD    reserved
  2260.  14h    DWORD    "AESEventsCount" number of completed AES events
  2261.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  2262.           sections inside the MLIDs
  2263.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  2264.  20h    DWORD    reserved
  2265.  24h    DWORD    reserved
  2266.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  2267.  2Ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  2268.           protocol stack
  2269.  30h    WORD    "NumberCustom" number of custom variables that follow
  2270.  32h  N DWORDs    custom counters
  2271.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2272.     var    length-prepended and NULL terminated string for Counter 0
  2273.     ...
  2274.     var    length-prepended and NULL terminated string for Counter N-1
  2275.  
  2276. Format of Protocol Stack Statistics Table:
  2277. Offset    Size    Description    (Table 1491)
  2278.  00h    BYTE    statistics table major version
  2279.  01h    BYTE    statistics table minor version (decimal, 0-99)
  2280.  02h    WORD    number of generic counters following
  2281.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  2282.  08h    DWORD    TotalTxPackets
  2283.  0Ch    DWORD    TotalRxPackets
  2284.  10h    DWORD    IgnoredRxPackets
  2285.  14h    WORD    number of custom counters
  2286.  16h  N DWORDs    custom counters
  2287.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2288.     var    length-prepended and NULL terminated string for Counter 0
  2289.     ...
  2290.     var    length-prepended and NULL terminated string for Counter N-1
  2291.  
  2292. Format of Protocol Stack Configuration Table:
  2293. Offset    Size    Description    (Table 1492)
  2294.  00h    BYTE    configuration table major version
  2295.  01h    BYTE    configuration table minor version (decimal, 0-99)
  2296.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  2297.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  2298.  0Ah    BYTE    protocol stack major version
  2299.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  2300.  0Ch 16 BYTEs    reserved for future use
  2301.  
  2302. Format of MLID Configuration Table:
  2303. Offset    Size    Description    (Table 1493)
  2304.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  2305.  1Ah    BYTE    configuration table major version
  2306.  1Bh    BYTE    configuration table minor version (decimal, 0-99)
  2307.  1Ch  6 BYTEs    node address
  2308.  22h    WORD    MLID mode flags (see #1494)
  2309.  24h    WORD    board number
  2310.  26h    WORD    board instance (if more than one of same board installed)
  2311.  28h    WORD    maximum packet size
  2312.  2Ah    WORD    BestDataSize
  2313.  2Ch    WORD    WorstDataSize
  2314.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  2315.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  2316.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  2317.  3Ah    WORD    reserved (0000h)
  2318.  3Ch    WORD    frame type ID
  2319.  3Eh    WORD    TransportTime (milliseconds)
  2320.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  2321.  44h    WORD    lookahead size
  2322.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  2323.  48h    WORD    QueueDepth
  2324.  4Ah  6 BYTEs    reserved (0)
  2325.  50h    BYTE    driver major version
  2326.  51h    BYTE    driver minor version (decimal, 0-99)
  2327.  52h    WORD    bus/multicast flags (see #1495)
  2328.  54h    WORD    send retries
  2329.  56h    DWORD    ConfigTableLink
  2330.  5Ah    WORD    MLID sharing flags (see #1496)
  2331.  5Ch    WORD    slot number
  2332.  5Eh    WORD    I/O address 1
  2333.  60h    WORD    I/O range 1
  2334.  62h    WORD    I/O address 2
  2335.  64h    WORD    I/O range 2
  2336.  66h    DWORD    memory address 1
  2337.  6Ah    WORD    memory size 1
  2338.  6Ch    DWORD    memory address 2
  2339.  70h    WORD    memory size 2
  2340.  72h    BYTE    interrupt line 1
  2341.  73h    BYTE    interrupt line 2
  2342.  74h    BYTE    DMA line 1
  2343.  75h    BYTE    DMA line 2
  2344.  
  2345. Bitfields for MLID mode flags:
  2346. Bit(s)    Description    (Table 1494)
  2347.  15    MLID supports Octet Reversal
  2348.  14    node address is non-canonical
  2349.  13    promiscuous mode is supported
  2350.  12-8    reserved
  2351.  7    LDataSize field in LookAhead structure supported
  2352.  6    raw send supported
  2353.  5    MLID needs to be polled by LSL
  2354.  4    reserved (0)
  2355.  3    multicasting is supported
  2356.  2    not currently used by DOS ODI, set to 0.
  2357.  1    network card uses DMA.
  2358.  0    RealDriverBit, always set to 1.
  2359.  
  2360. Bitfields for bus/multicast flags:
  2361. Bit(s)    Description    (Table 1495)
  2362.  10-9    specialized multicast support
  2363.     00 = Group addressing is default for medium
  2364.     01 = Invalid
  2365.     10 = Filter group address in MLID.
  2366.     11 = Adapter filters group address.
  2367.  2    supports Micro Channel cards
  2368.  1    supports ISA cards
  2369.  0    supports EISA cards
  2370.  
  2371. Bitfields for MLID sharing flags:
  2372. Bit(s)    Description    (Table 1496)
  2373.  8    NIC can share DMA2
  2374.  7    NIC can share DMA1
  2375.  6    NIC can share IRQ2
  2376.  5    NIC can share IRQ1
  2377.  4    NIC can share Memory2
  2378.  3    NIC can share Memory1
  2379.  2    NIC can share IO2
  2380.  1    NIC can share IO1
  2381.  0    MLID is currently shut down
  2382.  
  2383. Format of MLID Statistics Table:
  2384. Offset    Size    Description    (Table 1497)
  2385.  00h    BYTE    driver statistics table major version
  2386.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  2387.  02h    WORD    number of generic counters (typically 13)
  2388.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  2389.  08h    DWORD    TotalTxCount
  2390.  0Ch    DWORD    TotalRxCount
  2391.  10h    DWORD    NoECBAvailableCount
  2392.  14h    DWORD    TxTooBigCount
  2393.  18h    DWORD    TxTooSmallCount
  2394.  1Ch    DWORD    RxOverflowCount
  2395.  20h    DWORD    RxTooBigCount
  2396.  24h    DWORD    RxTooSmallCount
  2397.  28h    DWORD    TxMiscCount
  2398.  2Ch    DWORD    RxMiscCount
  2399.  30h    DWORD    TxRetryCount
  2400.  34h    DWORD    RxChecksumErrorCount
  2401.  38h    DWORD    RxMismatchCount
  2402.  3Ch    WORD    number of custom counters
  2403.  3Eh  N DWORDs    custom counters
  2404.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2405.     var    length-prepended and NULL terminated string for Counter 0
  2406.     ...
  2407.     var    length-prepended and NULL terminated string for Counter N-1
  2408.  
  2409. Format of bound stack info structure:
  2410. Offset    Size    Description    (Table 1498)
  2411.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  2412.  04h    DWORD    -> receive handler
  2413.  08h    DWORD    -> control handler
  2414.  
  2415. Format of stack info structure:
  2416. Offset    Size    Description    (Table 1499)
  2417.  00h    DWORD    -> receive handler
  2418.  04h    DWORD    -> control handler
  2419.  
  2420. Format of General Service Control Block:
  2421. Offset    Size    Description    (Table 1500)
  2422.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  2423.  04h    DWORD    -> entry point for general service handler
  2424.  08h    WORD    command code for this general service (8000h-FFFFh)
  2425. Note:    the control block must not be altered or deallocated until the general
  2426.       service is removed
  2427.  
  2428. Format of Lookahead structure:
  2429. Offset    Size    Description    (Table 1501)
  2430.  00h    DWORD    -> Media header
  2431.  04h    DWORD    -> lookahead buffer
  2432.  08h    WORD    length of lookahead buffer
  2433.  0Ah  6 BYTEs    protocol ID
  2434.  10h    WORD    logical board number
  2435.  12h    WORD    lookahead size
  2436. --------f-2FC000-----------------------------
  2437. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  2438.     AX = C000h
  2439. Return: AL = FFh if installed
  2440.        ES:DI -> signature string "FN32 32CHAR TSR"
  2441. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  2442. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  2443.       managing dictionary files in each directory which contains long
  2444.       filenames
  2445. --------M-2FC000-----------------------------
  2446. INT 2F - QMR - INSTALLATION CHECK
  2447.     AX = C000h
  2448. Return: AL = FFh if installed
  2449.         ES:DI -> signature string "QMR1!"
  2450. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  2451.       service interrupt (int 33h) and substitutes a fast software
  2452.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  2453. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2454. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  2455. --------V-2FC000-----------------------------
  2456. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  2457.     AX = C000h
  2458. Return: AL = FFh if installed
  2459.         BX = segment of resident code
  2460. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  2461.       Javurek
  2462. Range:    AH=C0h to AH=FFh, selected by scanning for a free multiplex number
  2463. Note:    the transient portion of VGAsave compares the first 38 bytes of the
  2464.       resident code (addressed through BX) against its own copy of the
  2465.       resident code to complete the installation check
  2466. SeeAlso: INT 14/AX=AA01h,INT 2F/AH=93h
  2467. Index:    screen saver;VGAsave
  2468. --------V-2FC000-----------------------------
  2469. INT 2F - AD-DOS - INSTALLATION CHECK
  2470.     AX = C000h
  2471. Return: AL = FFh if installed
  2472.         BX = 4144h ('AD')
  2473.         CX = 2D44h ('-D')
  2474.         DX = 4F53h ('OS')
  2475. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2476.       MS Windows
  2477. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2478. SeeAlso: AX=C001h,AX=C003h,AX=C005h,AX=C007h,AX=C009h,AX=C020h,INT 14/AX=AA01h
  2479. Index:    screen saver;AD-DOS
  2480. --------U-2FC000-----------------------------
  2481. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  2482.     AX = C000h
  2483. Return: AL = FFh if installed
  2484.         ES = segment of resident code
  2485. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  2486.       with 3-mode floppy drives to read Wang document diskettes
  2487. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2488. Note:    The installation check is completed by comparing the resident code
  2489.       with the copy in the transient program
  2490. --------i-2FC000-----------------------------
  2491. INT 2F - ASPIHOOK.SYS - INSTALLATION CHECK
  2492.     AX = C000h
  2493. Return: AL = FFh if multiplex number in use
  2494.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  2495. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  2496.       ASPI host manager; it is part of the Personal Measure system
  2497.       activity monitor from Spirit of Performance, Inc.
  2498. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2499. SeeAlso: AX=C000h"PMEASURE"
  2500. --------i-2FC000-----------------------------
  2501. INT 2F - PMEASURE.EXE - INSTALLATION CHECK
  2502.     AX = C000h
  2503. Return: AL = FFh if multiplex number in use
  2504.         ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
  2505. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  2506.       is part of the Personal Measure system activity monitor from Spirit
  2507.       of Performance, Inc.
  2508. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2509. Note:    If ASPIHOOK.SYS is already installed, PMEASURE.EXE uses the next higher
  2510.       free multiplex number.
  2511. SeeAlso: AX=C000h"ASPIHOOK"
  2512. --------c-2FC000-----------------------------
  2513. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
  2514.     AX = C000h
  2515. Return: AL = FFh if installed
  2516.         SI = signature value 20D6h
  2517.         DI = signature value 8761h
  2518.         ES:BX -> configuration table (see #1502)
  2519.         CX = ??? (0300h)
  2520.         DX = ??? (0020h)
  2521. Program: PCACHE is the resident print spooler portion of PrintCache by
  2522.       LaserTools; it may use either memory or disk space to spool output
  2523. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2524. SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
  2525.  
  2526. Format of PrintCache configuration table:
  2527. Offset    Size    Description    (Table 1502)
  2528.  00h 26 BYTEs    ASCIZ signature string "TORQ Configuration Table: "
  2529.  1Ah  2 BYTEs    ???
  2530.  1Ch    DWORD    -> data table (see #1503)
  2531.  20h  4 BYTEs    ASCIZ version string ("3.1" for v3.1)
  2532.  24h  5 BYTEs    ???
  2533.  29h 12 BYTEs    ASCIZ version date string ("Aug 31 1993" for v3.1)
  2534.  35h    WORD    buffered port type (01h = LPT, 02h = COM)
  2535.  37h    WORD    buffered port BIOS port number
  2536.  39h  5 BYTEs    ASCIZ buffered port name ("LPTn" or "COMn")
  2537.  3Eh    WORD    physical port type (01h = LPT, 02h = COM)
  2538.  40h    WORD    physical port BIOS port number
  2539.  42h  5 BYTEs    ASCIZ physical port name ("LPTn" or "COMn")
  2540.  47h    BYTE    port driver IRQ
  2541.  48h 21 BYTEs    ???
  2542.  5Dh    WORD    buffer size in K
  2543.  5Fh 27 BYTEs    ???
  2544.  7Ah    BYTE    popup hotkey shift states (see INT 16/AH=02h)
  2545.  7Bh    BYTE    popup hotkey scan code (see INT 09h"IRQ1")
  2546.  7Ch  4 BYTEs    ???
  2547.  80h 20 BYTEs    ASCIZ printer type name
  2548.     ???
  2549.  
  2550. Format of PrintCache data table:
  2551. Offset    Size    Description    (Table 1503)
  2552.  00h  2 BYTEs    ???
  2553.  02h    DWORD    -> ??? entry point
  2554.     ???
  2555. --------U-2FC000-----------------------------
  2556. INT 2F - Frank Kintrup TSR Utilities - INSTALLATION CHECK
  2557.     AX = C000h
  2558. Return: AL = FFh if installed
  2559.         BX = program ID (see #1504)
  2560.         CX = 464Bh (signature "FK")
  2561.         DX = revision number (DH = major, DL = minor)
  2562.         ES = resident segment of TSR
  2563. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  2564. SeeAlso: AX=C001h"Kintrup",AX=C002h"Kintrup"
  2565.  
  2566. (Table 1504)
  2567. Values for Frank Kintrup TSR program ID:
  2568.  4153h    "AS"    ASCII.COM    ASCII table with paste function
  2569.  434Ch    "CL"    CLOCK.COM    clock with date/time display and alarm
  2570.  5043h    "PC"    PCALC.COM    programmer's calculator with paste function
  2571.  5343h    "SC"    SCRSAVE.COM    screen saver with mouse support and hotkey
  2572.  5544h    "UD"    UNDEL.COM    undelete program like SMARTCAN or DPROTECT
  2573. --------F-2FC000BX444B-----------------------
  2574. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  2575.     AX = C000h
  2576.     BX = 444Bh ('DK')
  2577.     CX = 4A4Eh ('AN')
  2578. Return: AL = status
  2579.         00h not installed, OK to install
  2580.         FFh installed
  2581.         BX = 646Bh ('dk')
  2582.         CX = 6A6Eh ('an')
  2583. Range:    AH=C0h to AH=FFh, selected automatically
  2584. SeeAlso: AH=C0h"MTEZ"
  2585. --------M-2FC001-----------------------------
  2586. INT 2F - QMR - REQUEST HARDWARE RESET
  2587.     AX = C001h
  2588. Return: ES = QMR code segment
  2589.     AL destroyed
  2590. Desc:    this function is used to force a full mouse reset when QMR is installed
  2591. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2592. --------V-2FC001ES0000-----------------------
  2593. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  2594.     AX = C001h
  2595.     ES = 0000h
  2596. Return: AL = 00h if successful
  2597.         ES = AD-DOS TSR Code Segment
  2598. SeeAlso: AX=C000h"AD-DOS"
  2599. Index:    screen saver;AD-DOS
  2600. --------c-2FC001-----------------------------
  2601. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
  2602.     AX = C001h
  2603. Return: AL = FFh if installed
  2604.         ES:BX -> ???
  2605.         ES:DX -> ???
  2606.         ES:SI -> ???
  2607.         ES:DI -> ??? (equivalent to AX=C002h)
  2608. SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
  2609. --------U-2FC001-----------------------------
  2610. INT 2F - Frank Kintrup TSR Utilities - CLOCK - DISABLE DISPLAY UPDATE
  2611.     AX = C001h
  2612. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  2613. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  2614. --------V-2FC002-----------------------------
  2615. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  2616.     AX = C002h
  2617. Return: AL = 00h if successful
  2618.         BX = status
  2619.         0000h no input since last check
  2620.         0001h new input available
  2621. Note:    this call also resets the new-input flag
  2622. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2623. Index:    screen saver;AD-DOS
  2624. --------M-2FC002-----------------------------
  2625. INT 2F - QMR - DISABLE QMR
  2626.     AX = C002h
  2627. Return: ES = QMR code segment
  2628.     AL destroyed
  2629. Desc:    this call temporarily disables QMR
  2630. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  2631. --------c-2FC002-----------------------------
  2632. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
  2633.     AX = C002h
  2634. Return: AX = ??? in K
  2635.     BX = size of print buffer in K
  2636. Program: PCACHE is the resident print spooler portion of PrintCache by
  2637.       LaserTools; it may use either memory or disk space to spool output
  2638. SeeAlso: AX=C000h"PCACHE"
  2639. --------U-2FC002-----------------------------
  2640. INT 2F - Frank Kintrup TSR Utilities - CLOCK - ENABLE DISPLAY UPDATE
  2641.     AX = C002h
  2642. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  2643. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  2644. --------V-2FC003-----------------------------
  2645. INT 2F - AD-DOS - SET MINUTES TO WAIT
  2646.     AX = C003h
  2647.     BX = minutes to wait before blanking screen
  2648. Return: AL = 00h if successful
  2649. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2650.       MS Windows
  2651. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2652. Note:    this call also resets the delay timer
  2653. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2654. Index:    screen saver;AD-DOS
  2655. --------M-2FC003-----------------------------
  2656. INT 2F - QMR - ENABLE QMR
  2657.     AX = C003h
  2658. Return: ES = QMR code segment
  2659.     AL destroyed
  2660. Desc:    this call enables QMR after it has been disabled
  2661. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2662. --------c-2FC003-----------------------------
  2663. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2664.     AX = C003h
  2665. Return: BX destroyed
  2666. SeeAlso: AX=C004h"PCACHE"
  2667. --------V-2FC004-----------------------------
  2668. INT 2F - AD-DOS - GET MINUTES TO WAIT
  2669.     AX = C004h
  2670. Return: AL = 00h if successful
  2671.         BX = minutes to wait before blanking screen
  2672. SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
  2673. Index:    screen saver;AD-DOS
  2674. --------c-2FC004-----------------------------
  2675. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2676.     AX = C004h
  2677. Return: BX destroyed
  2678. SeeAlso: AX=C003h"PCACHE"
  2679. --------V-2FC005-----------------------------
  2680. INT 2F - AD-DOS - SET BLANKER STATUS
  2681.     AX = C005h
  2682.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  2683. Return: AL = 00h if successful
  2684. SeeAlso: AX=C006h"AD-DOS"
  2685. Index:    screen saver;AD-DOS
  2686. --------c-2FC005-----------------------------
  2687. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2688.     AX = C005h
  2689.     ???
  2690. Return: BX destroyed
  2691.     ???
  2692. Program: PCACHE is the resident print spooler portion of PrintCache by
  2693.       LaserTools; it may use either memory or disk space to spool output
  2694. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2695. SeeAlso: AX=C000h"PCACHE"
  2696. --------V-2FC006-----------------------------
  2697. INT 2F - AD-DOS - GET BLANKER STATUS
  2698.     AX = C006h
  2699. Return: AL = 00h if successful
  2700.         BX = current state of screen blanker (0000h inactive, 0001h active)
  2701. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2702.       MS Windows
  2703. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2704. SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
  2705. Index:    screen saver;AD-DOS
  2706. --------c-2FC006-----------------------------
  2707. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2708.     AX = C006h
  2709.     ???
  2710. Return: BX destroyed
  2711.     ???
  2712. Note:    this function appears to be identical to AX=C007h
  2713. SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
  2714. --------V-2FC007-----------------------------
  2715. INT 2F - AD-DOS - SET HOT KEY
  2716.     AX = C007h
  2717.     BX = hot key
  2718.     CL = hot key shift status
  2719. Return: AL = 00h if successful
  2720. SeeAlso: AX=C008h"AD-DOS"
  2721. Index:    screen saver;AD-DOS
  2722. --------c-2FC007-----------------------------
  2723. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2724.     AX = C007h
  2725.     ???
  2726. Return: BX destroyed
  2727.     ???
  2728. Note:    this function appears to be identical to AX=C006h
  2729. SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
  2730. --------V-2FC008-----------------------------
  2731. INT 2F - AD-DOS - GET CURRENT HOT KEY
  2732.     AX = C008h
  2733. Return: AX = status
  2734.         0000h successful
  2735.         BX = Hot Key
  2736.         CL = Hot Key Shift Status
  2737.         0008h otherwise
  2738. SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
  2739. Index:    screen saver;AD-DOS
  2740. --------c-2FC008-----------------------------
  2741. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2742.     AX = C008h
  2743. Return: BX destroyed
  2744. SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
  2745. --------V-2FC009-----------------------------
  2746. INT 2F - AD-DOS - UNBLANK MONITOR
  2747.     AX = C009h
  2748. Return: AL = 00h if successful
  2749. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2750.       MS Windows
  2751. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2752. Note:    this function works by simulating keyboard activity
  2753. Index:    screen saver;AD-DOS
  2754. --------c-2FC009-----------------------------
  2755. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2756.     AX = C009h
  2757. Return: BX destroyed
  2758. Program: PCACHE is the resident print spooler portion of PrintCache by
  2759.       LaserTools; it may use either memory or disk space to spool output
  2760. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2761. SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
  2762. --------V-2FC00A-----------------------------
  2763. INT 2F - AD-DOS - ???
  2764.     AX = C00Ah
  2765. Return: AX = status
  2766.         0000h successful
  2767.         BH = ??
  2768.         BL = ??
  2769.         000Ah failed
  2770. Index:    screen saver;AD-DOS
  2771. --------c-2FC00A-----------------------------
  2772. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2773.     AX = C00Ah
  2774.     ???
  2775. Return: AH = bit flags
  2776.         bit 5: ???
  2777.     AL = bit flags
  2778.         bit 4: ???
  2779.         bit 3: ???
  2780.     BX destroyed
  2781.     ???
  2782. SeeAlso: AX=C000h"PCACHE"
  2783. --------V-2FC00B-----------------------------
  2784. INT 2F - AD-DOS - ???
  2785.     AX = C00Bh
  2786. Return: AX = status
  2787.         0000h successful
  2788.         000Bh failed
  2789. Index:    screen saver;AD-DOS
  2790. --------c-2FC00B-----------------------------
  2791. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  2792.     AX = C00Bh
  2793. Return: BX destroyed
  2794. SeeAlso: AX=C000h"PCACHE"
  2795. --------V-2FC00C-----------------------------
  2796. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  2797.     AX = C00Ch
  2798. Return: AX = status
  2799.         0000h successful
  2800.         000Ch failed
  2801. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2802.       MS Windows
  2803. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2804. Index:    screen saver;AD-DOS
  2805. --------c-2FC00C-----------------------------
  2806. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2807.     AX = C00Ch
  2808. Return: AX = ??? (0000h)
  2809.     BX = ??? (0000h)
  2810.     CX = ??? (0100h)
  2811.     DL = ???
  2812.     DH = ???
  2813. SeeAlso: AX=C000h"PCACHE"
  2814. --------c-2FC00D-----------------------------
  2815. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
  2816.     AX = C00Dh
  2817.     DL = ???
  2818. Return: BX destroyed
  2819. Program: PCACHE is the resident print spooler portion of PrintCache by
  2820.       LaserTools; it may use either memory or disk space to spool output
  2821. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2822. SeeAlso: AX=C000h"PCACHE"
  2823. --------V-2FC00E-----------------------------
  2824. INT 2F - AD-DOS - SET PASSWORD STATUS
  2825.     AX = C00Eh
  2826.     BX = new state (0000h disabled, 0001h enabled)
  2827. Return: ???
  2828. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
  2829. Index:    screen saver;AD-DOS
  2830. --------c-2FC00E-----------------------------
  2831. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
  2832.     AX = C00Eh
  2833.     ES:DX -> ???
  2834. Return: BX destroyed
  2835. Note:    ES:DX is stored internally if the variable is currently 0000h:0000h,
  2836.       but ignored if already set; a counter is incremented
  2837. SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
  2838. --------V-2FC00F-----------------------------
  2839. INT 2F - AD-DOS - GET PASSWORD STATUS
  2840.     AX = C00Fh
  2841. Return: BX = current state (0000h disabled, 0001h enabled)
  2842. SeeAlso: AX=C00Eh"AD-DOS"
  2843. Index:    screen saver;AD-DOS
  2844. --------c-2FC00F-----------------------------
  2845. INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
  2846.     AX = C00Fh
  2847. Return: BX destroyed
  2848. Note:    this function decrements the counter used by AX=C00Eh, and clears the
  2849.       internal pointer variable to 0000h:0000h when it reaches zero
  2850. SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
  2851. --------c-2FC010-----------------------------
  2852. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2853.     AX = C010h
  2854.     CX = index of ??? table (00h-02h, others treated as 00h)
  2855.     SI = offset into data table
  2856. Return:    AL = byte at specified offset into table
  2857.     BX destroyed
  2858. SeeAlso: AX=C000h"PCACHE"
  2859. --------c-2FC011-----------------------------
  2860. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2861.     AX = C011h
  2862. Return: AX = ??? (0007h)
  2863.     BX = ??? (0001h)
  2864.     CH = ???
  2865.     CL = ???
  2866. SeeAlso: AX=C000h"PCACHE"
  2867. --------c-2FC012-----------------------------
  2868. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2869.     AX = C012h
  2870. Return: AX = ???
  2871.     BX = ???
  2872.     CX = ???
  2873.     DX = ???
  2874. SeeAlso: AX=C000h"PCACHE"
  2875. --------c-2FC013-----------------------------
  2876. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2877.     AX = C013h
  2878.     ???
  2879. Return: BX destroyed
  2880.     ???
  2881. Program: PCACHE is the resident print spooler portion of PrintCache by
  2882.       LaserTools; it may use either memory or disk space to spool output
  2883. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2884. SeeAlso: AX=C000h"PCACHE"
  2885. --------c-2FC014-----------------------------
  2886. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2887.     AX = C014h
  2888.     ???
  2889. Return: BX destroyed
  2890.     ???
  2891. SeeAlso: AX=C000h"PCACHE"
  2892. --------c-2FC015-----------------------------
  2893. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2894.     AX = C015h
  2895.     ???
  2896. Return: BX destroyed
  2897.     ???
  2898. SeeAlso: AX=C000h"PCACHE"
  2899. --------c-2FC016-----------------------------
  2900. INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
  2901.     AX = C016h
  2902. Return: BX destroyed
  2903. SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
  2904. --------c-2FC017-----------------------------
  2905. INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
  2906.     AX = C017h
  2907. Return: BX destroyed
  2908. SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
  2909. --------c-2FC018-----------------------------
  2910. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2911.     AX = C018h
  2912.     ???
  2913. Return: BX destroyed
  2914.     ???
  2915. Note:    the first instruction of this function is an indirect jump which points
  2916.       at a RET by default
  2917. SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
  2918. --------c-2FC019-----------------------------
  2919. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2920.     AX = C019h
  2921.     ???
  2922. Return: BX destroyed
  2923.     ???
  2924. Note:    the first instruction of this function is an indirect jump which points
  2925.       at a RET by default
  2926. SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
  2927. --------c-2FC01A-----------------------------
  2928. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2929.     AX = C01Ah
  2930. Return: BX destroyed
  2931. SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
  2932. --------c-2FC01B-----------------------------
  2933. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2934.     AX = C01Bh
  2935. Return: BX destroyed
  2936. SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
  2937. --------c-2FC01C-----------------------------
  2938. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2939.     AX = C01Ch
  2940.     ???
  2941. Return: AX = ???
  2942.     BX destroyed
  2943. SeeAlso: AX=C000h"PCACHE"
  2944. --------c-2FC01D-----------------------------
  2945. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  2946.     AX = C01Dh to C01Fh
  2947. Return: BX destroyed
  2948. Program: PCACHE is the resident print spooler portion of PrintCache by
  2949.       LaserTools; it may use either memory or disk space to spool output
  2950. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2951. SeeAlso: AX=C000h"PCACHE"
  2952. --------V-2FC020-----------------------------
  2953. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  2954.     AX = C020h
  2955. Return: AL = 00h if successful
  2956.         BX = VxD API Status
  2957.         0000h no error
  2958.         0001h error
  2959.         0100h neither Windows 3.X enhanced mode nor Windows/386 2.x
  2960.               is running
  2961.         0200h VM API entry point not found (VxD not installed)
  2962. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2963. Note:    this call resets the VxD API Status to zero
  2964. SeeAlso: AX=1602h,AX=1607h
  2965. Index:    screen saver;AD-DOS
  2966. --------V-2FC04E-----------------------------
  2967. INT 2F - Explosiv v2.00+ - NON-TSR EXECUTING CHECK
  2968.     AX = C04Eh
  2969. Return: AL = 4Fh if Explosiv is running but not memory-resident
  2970. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  2971.       by H&G Software (Reidar Gresseth and Chris Hook)
  2972. Range:    AH=C0h to AH=C9h, selected by configuration
  2973. SeeAlso: AX=C050h
  2974. Index:    screen saver;Explosiv
  2975. --------V-2FC050-----------------------------
  2976. INT 2F - Explosiv v2.00+ - INSTALLATION CHECK
  2977.     AX = C050h
  2978. Return: AL = 51h if installed
  2979.     ---v3.0+ ---
  2980.         BX = interval in clock ticks
  2981.         CH = animation display color (00h mono, 01h tinge, 02h color)
  2982.         CL = animation delay factor
  2983.         DH = animation parameters
  2984.         DL = INT 10 checking (00h on, 01h off)
  2985.         SI = number of bytes available for animation code
  2986.         DI = display type (00h VGA, 01h EGA, 02h CGA, 03h HGC, 04h MDA)
  2987. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  2988.       by H&G Software (Reidar Gresseth and Chris Hook)
  2989. Range:    AH=C0h to AH=C9h, selected by configuration
  2990. SeeAlso: AH=93h,AX=C000h"AD-DOS",AX=C04Eh,AX=C052h,AX=C054h"v3"
  2991. SeeAlso: INT 14/AX=AA01h
  2992. Index:    screen saver;Explosiv
  2993. --------V-2FC052-----------------------------
  2994. INT 2F - Explosiv v2.00+ - UNINSTALL
  2995.     AX = C052h
  2996.     DX:BX = address to return to on successful uninstall
  2997. Return: at specified address if successful
  2998.     AL = 53h on error
  2999. Note:    specified return address must have the segment of the caller's PSP
  3000. SeeAlso: AX=C050h
  3001. Index:    screen saver;Explosiv
  3002. --------V-2FC054-----------------------------
  3003. INT 2F - Explosiv v2.x - GET ANIMATION DELAY FACTOR
  3004.     AX = C054h
  3005. Return: AL = delay factor
  3006. SeeAlso: AX=C057h
  3007. Index:    screen saver;Explosiv
  3008. ----------2FC054-----------------------------
  3009. INT 2F - Explosiv v3.0+ - UPDATE PARAMETERS
  3010.     AX = C054h
  3011.     BX = new interval in clock ticks
  3012.     CH = animation display color (00h mono, 01h tinge, 02h color)
  3013.     CL = animation delay factor
  3014.     DH = animation parameters
  3015.     DL = INT 10 checking (00h on, 01h off)
  3016. SeeAlso: AX=C050h
  3017. --------V-2FC055-----------------------------
  3018. INT 2F - Explosiv v2.x - SET BLANKING INTERVAL
  3019.     AX = C055h
  3020.     BX = new interval in clock ticks
  3021. Index:    screen saver;Explosiv
  3022. --------V-2FC056-----------------------------
  3023. INT 2F - Explosiv v2.x - SET ANIMATION DISPLAY TYPE
  3024.     AX = C056h
  3025.     BL = animated display type (00h mono, 01h color)
  3026. SeeAlso: AX=C058h"v2.x"
  3027. Index:    screen saver;Explosiv
  3028. --------V-2FC056-----------------------------
  3029. INT 2F - Explosiv v3.0+ - ENABLE/DISABLE EXPLOSIV
  3030.     AX = C056h
  3031.     BX = new state
  3032.         0000h disabled
  3033.         0100h enabled
  3034.         0101h enabled, but never blank
  3035.         0102h enabled, always blank
  3036. --------V-2FC057-----------------------------
  3037. INT 2F - Explosiv v2.x - SET ANIMATION DELAY FACTOR
  3038.     AX = C057h
  3039.     BL = delay factor
  3040. SeeAlso: AX=C054h"v2.x"
  3041. Index:    screen saver;Explosiv
  3042. --------V-2FC058-----------------------------
  3043. INT 2F - Explosiv v2.x - SET ANIMATION PARAMETER
  3044.     AX = C058h
  3045.     BL = animation parameter
  3046. Note:    the animation parameter has different interpretations for each display
  3047. SeeAlso: AX=C056h"v2.x"
  3048. Index:    screen saver;Explosiv
  3049. ----------2FC058-----------------------------
  3050. INT 2F - Explosiv v3.0+ - LOAD NEW ANIMATION DISPLAY CODE
  3051.     AX = C058h
  3052.     BX = file handle for file containing display code
  3053.     CX = number of bytes to load
  3054.     DX = offset at which animation code should be loaded
  3055. Return: AL = status (see #1505)
  3056. Note:    if AL=00h-03h on return, the file will be closed
  3057.  
  3058. (Table 1505)
  3059. Values for Explosiv function status:
  3060.  00h    successful
  3061.  01h    code too large to available space
  3062.  02h    no data read, load aborted
  3063.  03h    incomplete load, default blanking display loaded instead
  3064.  58h    unexpected offset in DX
  3065. --------V-2FC059-----------------------------
  3066. INT 2F - Explosiv v2.x - DISABLE EXPLOSIV
  3067.     AX = C059h
  3068. Note:    clears flag set by AX=C05Ah
  3069. SeeAlso: AX=C05Ah
  3070. Index:    screen saver;Explosiv
  3071. --------V-2FC05A-----------------------------
  3072. INT 2F u - Explosiv v2.x - ENABLE EXPLOSIV
  3073.     AX = C05Ah
  3074.     BL = ???
  3075. Note:    sets flag cleared by AX=C059h then stores BL
  3076. SeeAlso: AX=C059h,AX=C05Bh
  3077. Index:    screen saver;Explosiv
  3078. --------V-2FC05B-----------------------------
  3079. INT 2F - Explosiv v2.x - CHANGE ANIMATION DISPLAY
  3080.     AX = C05Bh
  3081.     BL = animation display
  3082. Note:    this function fails silently if the requested display is not in memory
  3083. SeeAlso: AX=C05Ah,AX=C05Ch
  3084. Index:    screen saver;Explosiv
  3085. --------V-2FC05C-----------------------------
  3086. INT 2F - Explosiv v2.x - SET INT 10 CHECKING
  3087.     AX = C05Ch
  3088.     BL = new state of INT 10 checking (00h enabled, 01h disabled)
  3089. SeeAlso: AX=C05Bh
  3090. Index:    screen saver;Explosiv
  3091. --------N-2FC100-----------------------------
  3092. INT 2F U - Personal NetWare - STPIPX v1.00 - INSTALLATION CHECK
  3093.     AX = C100h
  3094. Return: AL = FFh if installed
  3095.         ES:SI -> signature string "STP-IPX$"
  3096.         BX = version??? (0001h for v1.00)
  3097.         DI corrupted
  3098. Note:    AH=C1h is the default value; STPIPX probably scans a range of
  3099.       multiplex numbers to find a free one, as LSL does
  3100. SeeAlso: AX=C000h"LSL",AX=C101h
  3101. ----------2FC101-----------------------------
  3102. INT 2F U - Personal NetWare - STPIPX v1.00 - UNINSTALL
  3103.     AX = C101h
  3104. Return: AL = status???
  3105.     BX corrupted
  3106. SeeAlso: AX=C101h
  3107. --------d-2FC300DX0000-----------------------
  3108. INT 2F U - SpaceManager - INSTALLATION CHECK
  3109.     AX = C300h
  3110.     DX = 0000h
  3111. Return: AL = FFh if any SpaceManager programs installed
  3112.         BX = 6F73h
  3113.         CX = 6F68h
  3114. Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
  3115.       Systems, Inc.
  3116. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  3117. SeeAlso: AX=C300h/DX=0666h
  3118. --------d-2FC300DX0666-----------------------
  3119. INT 2F U - SpaceManager - INSTALLATION VERIFICATION
  3120.     AX = C300h
  3121.     DX = program identifier (see #1506) or 0666h for any SpaceManager prog
  3122.     BX = 4F53h ('OS')
  3123.     CX = 4F48h ('OH')
  3124. Return: AL = FFh if BX/CX as specified and specified program installed
  3125.         BX = 6F73h ('os')
  3126.         CX = 6F68h ('oh')
  3127. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  3128. Note:    this call is chained if BX,CX, or DX are not as specified above
  3129. SeeAlso: AX=C300h/DX=0000h
  3130.  
  3131. (Table 1506)
  3132. Values for SpaceManager program identifier:
  3133.  9000h    SMOUNT (SuperMount)
  3134.  9001h    SELECTC (SelectCompress)
  3135.  9002h    SUPERX (SuperExchange)
  3136.  9003h    FORTUNE (FortuneTeller)
  3137. --------d-2FC301-----------------------------
  3138. INT 2F U - SpaceManager - ???
  3139.     AX = C301h
  3140.     DX = program identifier (9000h,9001h,9003h) (see #1506)
  3141.     ???
  3142. Return: ???
  3143. --------d-2FC302-----------------------------
  3144. INT 2F U - SpaceManager - ENABLE PROGRAM
  3145.     AX = C302h
  3146.     DX = program identifier (9000h,9001h,9003h) (see #1506)
  3147. Return: AX destroyed
  3148. SeeAlso: AX=C303h,AX=C306h
  3149. --------d-2FC303-----------------------------
  3150. INT 2F U - SpaceManager - DISABLE PROGRAM
  3151.     AX = C303h
  3152.     DX = program identifier (9000h,9001h,9003h) (see #1506)
  3153. Return: AX destroyed
  3154. SeeAlso: AX=C302h,AX=C306h
  3155. --------d-2FC304-----------------------------
  3156. INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
  3157.     AX = C304h
  3158.     DX = program identifier (9000h,9001h,9003h) (see #1506)
  3159. Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
  3160.     AX destroyed
  3161. --------d-2FC305DX9003-----------------------
  3162. INT 2F U - SpaceManager - FORTUNE.EXE - NOP
  3163.     AX = C305h
  3164.     DX = 9003h
  3165. Return: AX destroyed
  3166. --------d-2FC305-----------------------------
  3167. INT 2F U - SpaceManager - ???
  3168.     AX = C305h
  3169.     DX = program identifier (9000h,9001h) (see #1506)
  3170.     ???
  3171. Return: ???
  3172. --------d-2FC306-----------------------------
  3173. INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
  3174.     AX = C306h
  3175.     DX = program identifier (9000h,9001h,9003h) (see #1506)
  3176. Return: AL = current state (00h disabled, FAh enabled)
  3177.     AH destroyed
  3178. SeeAlso: AX=C302h,AX=C303h
  3179. --------d-2FC307DX9001-----------------------
  3180. INT 2F U - SpaceManager - SELECTC - ???
  3181.     AX = C307h
  3182.     DX = 9001h
  3183.     BX = ???
  3184.     CX = ???
  3185.     ???
  3186. Return: ???
  3187. --------d-2FC308DX9001-----------------------
  3188. INT 2F U - SpaceManager - SELECTC - ???
  3189.     AX = C308h
  3190.     DX = 9001h
  3191.     ???
  3192. Return: ???
  3193. --------d-2FC64CBX5553-----------------------
  3194. INT 2F U - Smart Prompt - INSTALLATION CHECK
  3195.     AX = C64Ch
  3196.     BX = 5553h
  3197. Return: AX = 4CC6h if installed
  3198.     BX = 5355h if installed
  3199. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which forces
  3200.       an immediate flush of SmartDrive's (and compatible caches') buffers
  3201.       on returning to the DOS prompt
  3202. --------v-2FC900BP0000-----------------------
  3203. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  3204.     AX = C900h
  3205.     BP = 0000h
  3206. Return: AL = FFh if installed
  3207.         BP >= 0014h
  3208. Note:    called by TBSCANX
  3209. SeeAlso: AX=C987h,AX=CA00h
  3210. --------v-2FC987-----------------------------
  3211. INT 2F U - ThunderByte??? - DISINFECT FILE???
  3212.     AX = C987h
  3213.     BX:DX -> filename
  3214.     BX:CX -> virus name
  3215. Return: AX = status
  3216.         0000h successful???
  3217. Note:    called by TBSCANX
  3218. SeeAlso: AX=CA00h
  3219. --------r-2FC9FF-----------------------------
  3220. INT 2F C - StackMan - INSTALLATION BROADCAST
  3221.     AX = C9FFh
  3222.     BL = BCD version number
  3223.     CX = number of stacks
  3224.     DX = stack size in bytes
  3225. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  3226.       which functions as a replacement for the DOS STACK= command as well
  3227.       as permitting multiple TSRs to share a pool of stack space
  3228. Notes:    called by StackMan when it goes resident to inform interested TSRs that
  3229.       its API is available
  3230.     the installation check consists of testing for the string "STACKXXX" at
  3231.       offset 0Ah from the INT B4 handler
  3232. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  3233. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  3234. --------F-2FCA-------------------------------
  3235. INT 2F - FAXPLUS - FAX TSR
  3236.     AH = CAh
  3237.     ???
  3238. Return: ???
  3239. Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
  3240.       Veldman
  3241. SeeAlso: AH=2Ah"Gammafax"
  3242. --------v-2FCA00BX5442-----------------------
  3243. INT 2F - TBSCANX - INSTALLATION CHECK
  3244.     AX = CA00h
  3245.     BX = 5442h ('TB')
  3246. Return: AL = state
  3247.         00h not installed
  3248.         FFh installed
  3249.         BX = 7462h ('tb') if BX was 5442h on entry
  3250. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  3251. Note:    programs may perform virus checks on themselves, other program files,
  3252.       or their data files by invoking the TBSCANX API.
  3253. SeeAlso: AX=4653h,AX=C900h
  3254. --------v-2FCA01-----------------------------
  3255. INT 2F - TBSCANX - GET STATUS
  3256.     AX = CA01h
  3257. Return: AH = BCD version number (v2.2+)
  3258.         CAh for versions before 2.2
  3259.     AL = state (00h = disabled, 01h = enabled)
  3260.     CX = number of signatures which will be searched
  3261. ---v2.0---
  3262.     BX = EMS handle, 0000h if not using EMS
  3263. ---v2.3+---
  3264.     BX = segment of swap area, 0000h if not swapped
  3265.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  3266. SeeAlso: AX=CA02h
  3267. --------v-2FCA02-----------------------------
  3268. INT 2F - TBSCANX - SET STATE
  3269.     AX = CA02h
  3270.     BL = new state (00h = disabled, 01h = enabled)
  3271. SeeAlso: AX=CA01h
  3272. --------v-2FCA03-----------------------------
  3273. INT 2F - TBSCANX - SCAN BUFFER
  3274.     AX = CA03h
  3275.     CX = size of buffer
  3276.     DS:DX -> buffer containing data to scan
  3277. Return: CF clear if no virus signatures found
  3278.         BX,ES destroyed
  3279.     CF set if signature found
  3280.         ES:BX -> ASCIZ virus name (v2.3+)
  3281.         DS:DX -> ASCIZ virus name (v2.0)
  3282.     AX,CX,DX destroyed (v2.3+)
  3283.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  3284. SeeAlso: AX=CA04h
  3285. --------v-2FCA04-----------------------------
  3286. INT 2F - TBSCANX - SCAN FILE
  3287.     AX = CA04h
  3288.     DS:DX -> filename
  3289. Return: CF clear if no virus signatures found
  3290.         BX,ES destroyed
  3291.     CF set if signature found
  3292.         ES:BX -> ASCIZ virus name
  3293.     AX,CX,DX destroyed
  3294. Note:    this function requires at least 4K free memory
  3295. SeeAlso: AX=CA03h
  3296. --------U-2FCAFEBX0000-----------------------
  3297. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  3298.     AX = CAFEh
  3299.     BX = 0000h
  3300. Return: BX = segment of resident code if installed
  3301.         0000h if not installed
  3302. SeeAlso: AX=5453h,INT 2D"AMIS"
  3303. --------F-2FCB00-----------------------------
  3304. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  3305.     AX = CB00h
  3306. Return: AL = status
  3307.         00h not installed, OK to install
  3308.         01h not installed, not OK to install
  3309.         FFh installed
  3310. Note:    AH = CBh is the default identifier, but may be reconfigured
  3311. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
  3312. --------F-2FCB00BX4D53-----------------------
  3313. INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
  3314.     AX = CB00h
  3315.     BX = 4D53h ('MS')
  3316.     CX = 4949h ('II')
  3317. Return: AL = status
  3318.         00h not installed, OK to install
  3319.         01h not installed, not OK to install
  3320.         FFh installed
  3321.         BX = 6D73h ('ms')
  3322.         CX = 6969h ('ii')
  3323. Note:    this function is equivalent to the standard CASMGR installation check,
  3324.       but uses the additional magic values to identify which CAS is
  3325.       installed
  3326. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB0Eh,AX=CB16h
  3327. --------F-2FCB01-----------------------------
  3328. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  3329.     AX = CB01h
  3330.     DS:DX -> ASCIZ name of task control file
  3331. Return: AX >= 0: event handle
  3332.     AX < 0: two's complement of error code
  3333. Note:    files needed for an event must be kept until task is complete or error
  3334. SeeAlso: AX=CB0Bh,AX=CB15h
  3335.  
  3336. (Table 1507)
  3337. Values for CAS error code:
  3338.   (AH = class, AL = subcode, value passed back is 2's complement)
  3339.   Class 00h    --- FAX warnings
  3340.     Subcode 00h    no error
  3341.         02h    bad scanline count
  3342.         03h    page sent with errors, could not retransmit
  3343.         04h    received data lost
  3344.         05h    invalid or missing logo file
  3345.         06h    filename does not match nonstandard format (NSF) header
  3346.         07h    file size does not match NSF header
  3347.   Class 01h    --- DOS warnings (data was sent)
  3348.     Subcode 01h    invalid function
  3349.         05h    access denied
  3350.         06h    invalid handle
  3351.         others    see INT 21/AH=59h
  3352.   Class 02h    --- fatal errors (data not sent)
  3353.     Subcode 00h    multiplex handler failed
  3354.         01h    unknown command
  3355.         02h    bad event handle
  3356.         03h    FIND NEXT attempted before FIND FIRST
  3357.         04h    no more events
  3358.         07h    invalid queue type
  3359.         08h    bad control file
  3360.         09h    communication board busy
  3361.         0Ah    invalid command parameter
  3362.         0Bh    can't uninstall resident code
  3363.         0Ch    file exists
  3364.         80h    unknown task type
  3365.         81h    bad phone number
  3366.         82h    bad .PCX file header
  3367.         83h    unexpected EOF
  3368.         84h    unexpected disconnect
  3369.         85h    too many dialing retries
  3370.         86h    no file specified for send
  3371.         87h    communication board timeout
  3372.         88h    received too many pages (>1023) of data
  3373.         89h    manual connect initiated too long ago
  3374.         8Ah    hardware command set error
  3375.         8Bh    bad NonStandard Format (NSF) header file
  3376.   Class 03h    --- fatal DOS errors
  3377.     Subcode 02h    file not found
  3378.         03h    path not found
  3379.         others    see INT 21/AH=59h
  3380.   Class 04h    --- FAX errors
  3381.     Subcode 01h    remote unit not Group 3 compatible
  3382.         02h    remote unit did not send capabilities
  3383.         03h    other FAX machine incompatible
  3384.         04h    other FAX incapable of file transfers
  3385.         05h    exceeded retrain or FAX resend limit
  3386.         06h    line noise or failure to agree on bit rate
  3387.         07h    remote disconnected after receiving data
  3388.         08h    no response from remote after sending data
  3389.         09h    remote's capabilities incompatible
  3390.         0Ah    no dial tone (v1.2+)
  3391.         0Bh    invalid response from remote unit after sending data
  3392.         0Dh    phone line dead or remote unit disconnected
  3393.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  3394.         11h    invalid command from remote after receiving data
  3395.         15h    tried to receive from incompatible hardware
  3396.         5Ch    received data overflowed input buffer
  3397.         5Dh    remote unexpectedly stopped sending data
  3398.         5Eh    other FAX machine jammed (no data sent)
  3399.         5Fh    remote took too long to send fax scan line
  3400.         63h    can't get through to remote unit
  3401.         64h    user canceled event
  3402.   Class 05h    --- application-specific (v1.2+)
  3403.   ---Intel FAXPOP.EXE
  3404.     Subcode 00h    tried to send while in graphics mode
  3405.         01h    insufficient disk space
  3406.         02h    internal buffer overflow
  3407.   Class 06h    --- CAS implementation-specific (v1.2+)
  3408. --------F-2FCB02-----------------------------
  3409. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  3410.     AX = CB02h
  3411. Return: AX >= 0: event handle of aborted event
  3412.     AX < 0: error code (see #1507)
  3413. Note:    termination could take up to 30 seconds
  3414. SeeAlso: AX=CB08h,AX=CB10h
  3415. --------F-2FCB05-----------------------------
  3416. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  3417.     AX = CB05h
  3418.     CX = status of events to find
  3419.         0000h successful completion
  3420.         0001h waiting to be processed
  3421.         0002h number has been dialed
  3422.         0003h connection established, sending
  3423.         0004h connection established, receiving
  3424.         0005h event aborted
  3425.         FFFFh find any event, regardless of status
  3426.         other negative values, match error code
  3427.     DH = direction
  3428.         00h chronological order, earliest to latest
  3429.         01h reverse chronological order, latest to earliest
  3430.     DL = queue to search
  3431.         00h task queue
  3432.         01h receive queue
  3433.         02h log queue
  3434. Return: AX = 0000h successful
  3435.         BX = event handle for found event
  3436.     AX < 0       error code (see #1507)
  3437. SeeAlso: AX=CB06h,AX=CB07h
  3438. --------F-2FCB06-----------------------------
  3439. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  3440.     AX = CB06h
  3441.     DL = queue to search
  3442.         00h task queue
  3443.         01h receive queue
  3444.         02h log queue
  3445. Return: AX = 0000h successful
  3446.         BX = event handle for found event
  3447.     AX < 0       error code (see #1507)
  3448. Note:    direction of search is same as preceding FIND FIRST call
  3449. SeeAlso: AX=CB05h
  3450. --------F-2FCB07-----------------------------
  3451. INT 2F - Communicating Applications Specification - OPEN FILE
  3452.     AX = CB07h
  3453.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  3454.     CX = receive file number (ignored for task queue and log queue)
  3455.         0000h  open receive control file
  3456.         N       open Nth received data file
  3457.     DL = queue
  3458.         00h task queue
  3459.         01h receive queue control file or received file, as given by CX
  3460.         02h log queue
  3461.         03h group file in task queue (v1.2+)
  3462.         04h group file in log queue (v1.2+)
  3463. Return: AX = 0000h successful
  3464.         BX = DOS file handle for requested file
  3465.     AX < 0       error code (see #1507)
  3466. Note:    the returned file handle has been opened in read-only mode and should
  3467.       be closed with INT 21/AH=3Eh after use
  3468. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  3469. --------F-2FCB08-----------------------------
  3470. INT 2F - Communicating Applications Specification - DELETE FILE
  3471.     AX = CB08h
  3472.     BX = event handle
  3473.     CX = receive file number
  3474.         0000h delete ALL received files and receive control file
  3475.         N      delete Nth received file
  3476.     DL = queue
  3477.         00h delete control file in task queue and corresponding group file
  3478.           if it exists
  3479.         01h delete file in receive queue, as given by CX
  3480.         02h delete control file in log queue (individual deletions not
  3481.           recommended, to maintain integrity of log) and corresponding
  3482.           group file if it exists
  3483. Return: AX = 0000h successful
  3484.     AX < 0       error code (see #1507)
  3485. SeeAlso: AX=CB02h,AX=CB09h
  3486. --------F-2FCB09-----------------------------
  3487. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  3488.     AX = CB09h
  3489.     DL = queue
  3490.         00h delete all control files in task queue, including all group
  3491.           files
  3492.         01h delete all files in receive queue
  3493.         02h delete all control files in log queue, including all group
  3494.           files
  3495. Return: AX = 0000h successful
  3496.     AX < 0       error code (see #1507)
  3497. SeeAlso: AX=CB08h
  3498. --------F-2FCB0A-----------------------------
  3499. INT 2F - Communicating Applications Specification - GET EVENT DATE
  3500.     AX = CB0Ah
  3501.     BX = event handle
  3502.     DL = queue
  3503.         00h task queue
  3504.         01h receive queue
  3505.         02h log queue
  3506. Return: AX = 0000h successful
  3507.         CX = year
  3508.         DH = month
  3509.         DL = day
  3510.     AX < 0       error code (see #1507)
  3511. SeeAlso: AX=CB0Bh,AX=CB0Ch
  3512. --------F-2FCB0B-----------------------------
  3513. INT 2F - Communicating Applications Specification - SET TASK DATE
  3514.     AX = CB0Bh
  3515.     BX = event handle (task event only)
  3516.     CX = year
  3517.     DH = month
  3518.     DL = day
  3519. Return: AX = 0000h successful
  3520.     AX < 0       error code (see #1507)
  3521. Note:    setting a task's date and time to before the current date and time
  3522.       causes it to execute immediately
  3523. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  3524. --------F-2FCB0C-----------------------------
  3525. INT 2F - Communicating Applications Specification - GET EVENT TIME
  3526.     AX = CB0Ch
  3527.     BX = event handle
  3528.     DL = queue
  3529.         00h task queue
  3530.         01h receive queue
  3531.         02h log queue
  3532. Return: AX = 0000h successful
  3533.         CH = hour
  3534.         CL = minute
  3535.         DH = second
  3536.         DL = 00h
  3537.     AX < 0       error code (see #1507)
  3538. SeeAlso: AX=CB0Ah,AX=CB0Dh
  3539. --------F-2FCB0D-----------------------------
  3540. INT 2F - Communicating Applications Specification - SET TASK TIME
  3541.     AX = CB0Dh
  3542.     BX = event handle (task events only)
  3543.     CH = hour
  3544.     CL = minute
  3545.     DH = second
  3546.     DL unused
  3547. Return: AX = 0000h successful
  3548.     AX < 0       error code (see #1507)
  3549. Note:    setting a task's date and time to before the current date and time
  3550.       causes it to execute immediately
  3551. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  3552. --------F-2FCB0E-----------------------------
  3553. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  3554.     AX = CB0Eh
  3555.     DS:DX -> 256-byte buffer
  3556. Return: AX = 0000h successful
  3557.         DS:DX buffer filled
  3558.     AX < 0       error code (see #1507)
  3559.  
  3560. Format of CAS external data block:
  3561. Offset    Size    Description    (Table 1508)
  3562.  00h    BYTE    CAS major version
  3563.  01h    BYTE    CAS minor version
  3564.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  3565.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  3566.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  3567.  60h 32 BYTEs    ASCIZ default sender name
  3568.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  3569.  95h 107 BYTEs    reserved
  3570. --------F-2FCB0F-----------------------------
  3571. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  3572.     AX = CB0Fh
  3573.     DL = subfunction
  3574.         00h get current autoreceive state
  3575.         01h set autoreceive state
  3576.         DH = number of rings before answer, 00h = never
  3577. Return: AX = 0000h autoreceive disabled
  3578.     AX = N       number of rings before answer
  3579.     AX < 0       error code (see #1507)
  3580. --------F-2FCB10-----------------------------
  3581. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  3582.     AX = CB10h
  3583.     DS:DX -> 512-byte buffer
  3584. Return: AX = 0000h successful
  3585.         BX = event handle of current event or negative error code if
  3586.               no current event
  3587.         buffer filled
  3588.     AX < 0       error code (see #1507)
  3589. SeeAlso: AX=CB02h,AX=CB0Dh
  3590.  
  3591. (Table 1509)
  3592. Values for CAS event type:
  3593.  00h    send
  3594.  01h    receive
  3595.  02h    polled send
  3596.  03h    polled receive
  3597.  04h to 7Fh reserved
  3598.  FFh    serious hardware error
  3599.  
  3600. Format of CAS status area:
  3601. Offset    Size    Description    (Table 1510)
  3602.  00h    BYTE    event type (see #1509)
  3603.  01h    BYTE    transfer type
  3604.         00h 200x200 dpi, FAX mode
  3605.         01h 100x200 dpi, FAX mode
  3606.         02h file transfer mode
  3607.         03h to 7Fh reserved
  3608.  02h    WORD    event status (see #1511)
  3609.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  3610.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  3611.  08h    WORD    number of files to transfer, max 7FFFh
  3612.  0Ah    WORD    offset of file transfer record
  3613.  0Ch 47 BYTEs    ASCIZ phone number to call
  3614.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  3615.  7Bh    BYTE    reserved (00h)
  3616.  7Ch    BYTE    connect time, seconds
  3617.  7Dh    BYTE    connect time, minutes
  3618.  7Eh    BYTE    connect time, hours
  3619.  7Fh    DWORD    total number of pages in all files
  3620.  83h    DWORD    pages already transmitted
  3621.  87h    WORD    number of files already transmitted
  3622.  89h    BYTE    cover page flag
  3623.         00h don't transmit cover page
  3624.         01h transmit cover page
  3625.         02h to 7Fh reserved
  3626.  8Ah    WORD    total number of transmission errors
  3627.  8Ch 78 BYTEs    reserved (zeros)
  3628.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  3629.  EFH 32 BYTEs    ASCIZ destination name
  3630. 10Fh 32 BYTEs    ASCIZ sender name
  3631. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  3632. 17Fh 128 BYTEs    file transfer record for current event (see #1512)
  3633.  
  3634. (Table 1511)
  3635. Values for CAS event status:
  3636.  0000h    completed successfully
  3637.  0001h    waiting
  3638.  0002h    number dialed
  3639.  0003h    connected, sending
  3640.  0004h    connected, receiving
  3641.  0005h    aborted
  3642.  0006h to 007Fh reserved
  3643.  0080h to 7FFFh application-specific events
  3644.  8000h to FFFFh error codes
  3645.  
  3646. Format of CAS file transfer record:
  3647. Offset    Size    Description    (Table 1512)
  3648.  00h    BYTE    file type (ignored unless FAX)
  3649.         00h ASCII
  3650.         01h PCX
  3651.         02h DCX
  3652.         03h to 7Fh reserved
  3653.  01h    BYTE    text size for ASCII FAX file
  3654.         00h = 80 columns by 66 lines (11 inches)
  3655.         01h = 132 columns by 88 lines (11 inches)
  3656.         02h to 7Fh reserved
  3657.  02h    BYTE    status of file
  3658.         00h untouched
  3659.         01h opened
  3660.         02h moved
  3661.         03h deleted
  3662.         04h not yet received
  3663.         05h to 7Fh reserved
  3664.  03h    DWORD    bytes already transmitted
  3665.  07h    DWORD    file size in bytes
  3666.  0Bh    WORD    pages alread transmitted
  3667.  0Dh    WORD    number of pages in file
  3668.  0Fh 80 BYTEs    ASCIZ filename
  3669.  5Fh    BYTE    1/8 inch page length
  3670.         if page length below set to 01h through 7Fh, this value
  3671.           specifies additional 1/8 inch increments to page length
  3672.  60h    BYTE    page length
  3673.         00h = 11 inches
  3674.         01h to 7Fh = page length is this number of inches plus value of
  3675.               1/8 inch field above
  3676.         80h to FEh reserved
  3677.         FFh = ASCII pages ending with formfeed
  3678.  61h 31 BYTEs    reserved (zeros)
  3679. --------F-2FCB11-----------------------------
  3680. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  3681.     AX = CB11h
  3682.     DL = queue to get status of
  3683.         00h task queue
  3684.         01h receive queue
  3685.         02h log queue
  3686.         03h send events (v1.2+)
  3687.         04h receive events (v1.2+)
  3688. Return: AX >= 0     total number of changes made to queue, modulo 32768
  3689.         BX = number of control files currently in queue
  3690.         CX = number of received files (zero for task and log queues)
  3691.     AX < 0    error code (see #1507)
  3692. SeeAlso: AX=CB12h
  3693. --------F-2FCB11DL03-------------------------
  3694. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  3695.     AX = CB11h
  3696.     DL = 03h
  3697. Return: AX = number of successful sends since resident manager started
  3698.     BX = number of unsuccessful sends, including warnings
  3699. SeeAlso: AX=CB11h/DL=04h
  3700. --------F-2FCB11DL04-------------------------
  3701. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  3702.     AX = CB11h
  3703.     DL = 04h
  3704. Return: AX = number of received file events since resident manager started
  3705.     BX = number of received FAX events
  3706. SeeAlso: AX=CB11h/DL=03h
  3707. --------F-2FCB12-----------------------------
  3708. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  3709.     AX = CB12h
  3710.     DS:DX -> 128-byte status buffer (see #1513,#1515)
  3711. Return: AX = 0000h successful
  3712.         DS:DX buffer filled with hardware-dependent status information
  3713.        < 0       error code (see #1507)
  3714. SeeAlso: AX=CB10h,AX=CB11h
  3715.  
  3716. Format of status buffer for Intel Connection CoProcessor:
  3717. Offset    Size    Description    (Table 1513)
  3718.  00h    BYTE    Connection CoProcessor connection status flags (see #1516)
  3719.  01h    BYTE    number of kilobytes of free buffer space
  3720.  02h    BYTE    page buffer status
  3721.         bit 7: Connection CoProcessor has documents to send
  3722.         bits 6-0: number of pages in buffer
  3723.  03h    BYTE    number of retries left for dialing number
  3724.  04h    BYTE    page number to retransmit
  3725.  05h    BYTE    communications status (see #1517)
  3726.  06h    BYTE    baud rate (see #1514)
  3727.  07h  3 BYTEs    reserved
  3728.  0Ah    BYTE    Connection CoProcessor hardware status (see #1518)
  3729.  0Bh    BYTE    Connection CoProcessor switch states (see #1519)
  3730.  0Ch    BYTE    communications flags (see #1520)
  3731.  0Dh    BYTE    reserved
  3732.  0Eh    WORD    error count (only valid while busy, reset when idle)
  3733.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  3734.  14h    BYTE    'A' if Connection CoProcessor board present
  3735.  15h  9 BYTEs    reserved
  3736.  1Eh 21 BYTEs    ASCIZ CCITT identification
  3737.  33h 77 BYTEs    reserved
  3738. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3739.       by examining the byte at offset 14h
  3740.  
  3741. Bitfields for Connection CoProcessor baud rate:
  3742. Bit(s)    Description    (Table 1514)
  3743.  7    reserved
  3744.  6-4    baud rate
  3745.     000 = 300 baud    (V.21 SDLC or HDLC mode)
  3746.     100 = 2400 baud (V.27 ter)
  3747.     101 = 4800 baud (V.27 ter)
  3748.     110 = 7200 baud (V.29)
  3749.     111 = 9600 baud (V.29)
  3750.  3-0    reserved, should be 0110
  3751.  
  3752. Format of status buffer for Intel SatisFAXtion board:
  3753. Offset    Size    Description    (Table 1515)
  3754.  00h    BYTE    SatisFAXtion connection status flags (see #1521)
  3755.  01h    BYTE    SatisFAXtion board state (see #1522)
  3756.  02h    BYTE    number of KB free in buffer
  3757.  03h    BYTE    number of pages or files in buffer
  3758.  04h    BYTE    number of redials remaining on current number
  3759.  05h    BYTE    FAX page number to retransmit
  3760.  06h    BYTE    current page/file in block transfer
  3761.  07h    BYTE    number of rings received (only if auto-answer enabled)
  3762.  08h    WORD    error count
  3763.  0Ah    DWORD    length of file being transferred
  3764.  0Eh  6 BYTEs    reserved
  3765.  14h    BYTE    'B' if SatisFAXtion board present
  3766.  15h 13 BYTEs    ASCIZ transfer agent name
  3767.  22h  5 BYTEs    ASCIZ transfer agent version number
  3768.  27h 13 BYTEs    ASCIZ resident loader name
  3769.  34h  5 BYTEs    ASCIZ resident loader version number
  3770.  39h 21 BYTEs    ASCIZ remote CSID
  3771.  4Eh 13 BYTEs    ASCIZ resident manager name
  3772.  5Bh  5 BYTEs    ASCIZ resident manager version number
  3773.  60h 32 BYTEs    reserved
  3774. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3775.       by examining the byte at offset 14h
  3776.  
  3777. Bitfields for Connection CoProcessor connection status flags:
  3778. Bit(s)    Description    (Table 1516)
  3779.  7    hardware busy sending or receiving
  3780.  6    last page of data
  3781.  5    no data on current page
  3782.  4    retransmit request for current page being transmitted
  3783.  3    NSF (nonstandard file) mode active
  3784.  2-0    reserved
  3785.  
  3786. Bitfields for communications status:
  3787. Bit(s)    Description    (Table 1517)
  3788.  7    originating call
  3789.  6    FAX message to be sent
  3790.  5    on line
  3791.  4    ring detected and receive enabled
  3792.  3    buffer dumped on receive
  3793.  2-0    hardware sequence state
  3794.     000 idle
  3795.     001 dial
  3796.     010 answer
  3797.     011 transmit
  3798.     100 receive
  3799.     101 pre-message
  3800.     110 post-message
  3801.     111 disconnect
  3802.  
  3803. Bitfields for Connection CoProcessor hardware status:
  3804. Bit(s)    Description    (Table 1518)
  3805.  7    modem option installed
  3806.  6    Connection CoProcessor has control of DAA (not latched)
  3807.  5    on line (not latched)
  3808.  4    ring detected (not latched)
  3809.  3    data in command buffer (not latched)
  3810.  2    set if using DMA channel 1, clear if using DMA channel 3
  3811.  1    line length compensation 1 set (not latched)
  3812.  0    line length compensation 0 set (not latched)
  3813.  
  3814. Bitfields for Connection CoProcessor switch states:
  3815. Bit(s)    Description    (Table 1519)
  3816.  7    reserved
  3817.  6    unused
  3818.  5    spare switch open
  3819.  4    FAX ADR1 switch open
  3820.  3    FAX ADR0 switch open
  3821.  2    alternate interrupt switch open
  3822.  1    COM SEL 1 switch open
  3823.  0    COM SEL 0 switch open
  3824. Note:    valid combinations of 0-2 are
  3825.     000  COM2 IRQ3 IObase 2F8h
  3826.     001  COM1 IRQ4 IObase 3F8h
  3827.     010  COM4 IRQ3 IObase 2E8h
  3828.     011  COM3 IRQ4 IObase 3E8h
  3829.     110  COM4 IRQ2 IObase 2E8h
  3830.     111  COM3 IRQ5 IObase 3E8h
  3831.  
  3832. Bitfields for communications flags:
  3833. Bit(s)    Description    (Table 1520)
  3834.  7    reserved
  3835.  6    auxiliary relay forced ON
  3836.  5    modem select relay forced ON
  3837.  4    offhook relay forced ON
  3838.  3    9600 bps enabled
  3839.  2    7200 bps enabled
  3840.  1    4800 bps enabled
  3841.  0    2400 bps enabled
  3842.  
  3843. Bitfields for SatisFAXtion connection status flags:
  3844. Bit(s)    Description    (Table 1521)
  3845.  7    busy in T.30 CCITT fax protocol
  3846.  6    data on current page/file (only used for block xfers)
  3847.  5    retransmission of last page requested
  3848.  4    in file transfer mode
  3849.  3    data in buffer
  3850.  2    data buffer dumped on receive
  3851.  1    200x100 dpi resolution instead of 200x200 dpi
  3852.  0    data modem in use, FAX image modem not available
  3853.  
  3854. Bitfields for SatisFAXtion board state:
  3855. Bit(s)    Description    (Table 1522)
  3856.  7    reserved
  3857.  6    handset jack active, data and FAX modems not available
  3858.  5-3    current rate
  3859.     000  300 bps (V.21 HDLC)
  3860.     100 2400 bps (V.27 ter)
  3861.     101 4800 bps (V.27 ter)
  3862.     110 7200 bps (V.29)
  3863.     111 9600 bps (V.29)
  3864.  2-0    T.30 CCITT protocol state
  3865.     000 idle
  3866.     001 dialing
  3867.     010 answering
  3868.     011 transmitting
  3869.     100 receiving
  3870.     101 pre-message
  3871.     110 post-message
  3872.     111 disconnect
  3873. --------F-2FCB13DL00-------------------------
  3874. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  3875.     AX = CB13h
  3876.     DL = 00h
  3877. Return: AX = 0040h in progress
  3878.        >= 0       passed
  3879.        < 0       hardware-dependent failure code (see #1523,#1524)
  3880. SeeAlso: AX=CB13h/DL=01h
  3881.  
  3882. Bitfields for Intel Connection CoProcessor failure codes:
  3883. Bit(s)    Description    (Table 1523)
  3884.  3    9600 bps FAX modem module failed
  3885.  2    SDLC chip failed
  3886.  1    RAM failed
  3887.  0    ROM checksum failed
  3888.  
  3889. Bitfields for Intel SatisFAXtion failure codes:
  3890. Bit(s)    Description    (Table 1524)
  3891.  1    2400 bps data modem failed
  3892.  0    9600 bps FAX modem failed
  3893. --------F-2FCB13DL01-------------------------
  3894. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  3895.     AX = CB13h
  3896.     DL = 01h
  3897. Return: AX = 0000h successfully started
  3898.     AX < 0       error code (see #1507)
  3899. SeeAlso: AX=CB13h/DL=00h
  3900. --------F-2FCB14-----------------------------
  3901. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  3902.     AX = CB14h
  3903.     BX = event handle
  3904.     CX = receive file number
  3905.         0001h first received file
  3906.         N      Nth received file
  3907.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  3908. Return: AX = 0000h successful
  3909.     AX < 0       error code (see #1507)
  3910. --------F-2FCB15-----------------------------
  3911. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  3912.     AX = CB15h
  3913.     DS:DX -> variable-length data area (see #1525)
  3914. Return: AX >= 0 event handle
  3915.     AX < 0    error code (see #1507)
  3916. SeeAlso: AX=CB01h
  3917.  
  3918. Format of CAS file submission data area:
  3919. Offset    Size    Description    (Table 1525)
  3920.  00h    BYTE    transfer type
  3921.         00h = 200x200 dpi, fax mode
  3922.         01h = 100x200 dpi, fax mode
  3923.         02h = file transfer mode
  3924.         03h to 7Fh reserved
  3925.  01h    BYTE    text size
  3926.         00h = 80 columns
  3927.         01h = 132 columns
  3928.         02h to 7Fh reserved
  3929.  02h    WORD    time to send (DOS packed time, see #0761 at INT 21/AX=5700h)
  3930.  04h    WORD    date to send (DOS packed date, see #0762 at INT 21/AX=5700h)
  3931.  06h 32 BYTEs    ASCIZ destination name
  3932.  26h 80 BYTEs    ASCIZ name of file to send
  3933.  76h 47 BYTEs    ASCIZ phone number to dial
  3934.  A5h 64 BYTEs    ASCIZ application-specific tag string
  3935.  E5h    BYTE    reserved (00h)
  3936.  E6h    BYTE    cover page
  3937.         00h don't send cover page
  3938.         01h send cover page
  3939.         02h to 7Fh reserved
  3940.  E7h 23 BYTEs    reserved (zeros)
  3941.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  3942.         set to 01h)
  3943. --------F-2FCB16BX1234-----------------------
  3944. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  3945.     AX = CB16h
  3946.     BX = 1234h
  3947.     CX = 5678h
  3948.     DX = 9ABCh
  3949. Return: AX = 0000h successful
  3950.     AX < 0       error code
  3951. Note:    the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
  3952. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h
  3953. Index:    uninstall;CAS Manager
  3954. --------F-2FCB17-----------------------------
  3955. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  3956.     AX = CB17h
  3957.     BX = event handle
  3958.     CL = cover page status
  3959.         00h not read
  3960.         01h read by user
  3961. Return: AX = 0000h successful
  3962.     AX < 0       error code
  3963. --------F-2FCB80-----------------------------
  3964. INT 2F - Intel SatisFAXtion CASMGR - ???
  3965.     AX = CB80h
  3966.     ???
  3967. Return: ???
  3968. --------F-2FCB81-----------------------------
  3969. INT 2F - Intel SatisFAXtion CASMGR - ???
  3970.     AX = CB81h
  3971.     ???
  3972. Return: ???
  3973. --------F-2FCB82-----------------------------
  3974. INT 2F - Intel SatisFAXtion CASMGR - ???
  3975.     AX = CB82h
  3976.     ???
  3977. Return: ???
  3978. --------F-2FCBDCBL56-------------------------
  3979. INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
  3980.     AX = CBDCh
  3981.     BL = 56h
  3982.     BH = line number (starts with 1)
  3983.     CX:DX -> 32-byte status buffer or 80 character string
  3984. Return: AX = number of cards installed, or FFFFh on error
  3985. Program: Comwave manufacturers the Microfax line of fax cards which are a high-
  3986.       performance multi-card FAX solution for OEMs.
  3987. Note:    defaults to AH=CBh but can be changed
  3988. SeeAlso: AX=CBDDh,AX=DA00h
  3989. --------F-2FCBDDBL56-------------------------
  3990. INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
  3991.     AX = CBDDh
  3992.     BL = 56h
  3993.     BH = ?
  3994.     CX:DX -> command to execute
  3995. Return: AX = status
  3996.         0000h success
  3997.         FFFFh on error
  3998. SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
  3999. --------c-2FCC--SI5453-----------------------
  4000. INT 2F U - PC-Kwik Programs - API
  4001.     AH = CCh
  4002.     SI = 5453h or 7473h
  4003.     AL = function number (at least 00h,01h,04h,05h,07h,80h)
  4004.     DL = program identifier (see #1526)
  4005. Return: SI = 7473h
  4006.     other registers vary by function
  4007. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  4008.       thus supports this call
  4009. SeeAlso: INT 21/AH=2Bh/CX=4358h
  4010.  
  4011. (Table 1526)
  4012. Values for PC-Kwik program identifier:
  4013.  00h    all installed PowerPak programs
  4014.  01h    SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
  4015.  02h    PCKSPL (print spooler)
  4016.  04h    PCKSCRN (screen accelerator)
  4017.  05h    PCKKEY (keyboard enhancer)
  4018.  06h    PCKRAMD (RAM disk)
  4019.  08h    PCKWIK.SYS
  4020.  10h    PCKCDROM (CD-ROM support for SUPERPCK)
  4021. --------N-2FCC00-----------------------------
  4022. INT 2F - Tsoft NFSDRVR - INSTALLATION CHECK
  4023.     AX = CC00h
  4024. Return: AX = 7777h
  4025.     BX = ???
  4026.     CX = ???
  4027.     DX = ???
  4028.     ES = data segment of resident portion
  4029. SeeAlso: AX=CC01h,AX=CC06h
  4030. --------N-2FCC01-----------------------------
  4031. INT 2F - Tsoft NFSDRVR - ???
  4032.     AX = CC01h
  4033.     ???
  4034. Return: ???
  4035. SeeAlso: AX=CC00h
  4036. --------N-2FCC01-----------------------------
  4037. INT 2F - Tsoft NFSDRVR - ???
  4038.     AX = CC02h
  4039.     ???
  4040. Return: ???
  4041. SeeAlso: AX=CC00h
  4042. --------N-2FCC01-----------------------------
  4043. INT 2F - Tsoft NFSDRVR - ???
  4044.     AX = CC03h
  4045.     ???
  4046. Return: ???
  4047. SeeAlso: AX=CC00h
  4048. --------N-2FCC01-----------------------------
  4049. INT 2F - Tsoft NFSDRVR - ???
  4050.     AX = CC04h
  4051.     ???
  4052. Return: ???
  4053. SeeAlso: AX=CC00h
  4054. --------N-2FCC01-----------------------------
  4055. INT 2F - Tsoft NFSDRVR - ???
  4056.     AX = CC05h
  4057.     ???
  4058. Return: ???
  4059. SeeAlso: AX=CC00h
  4060. --------N-2FCC01-----------------------------
  4061. INT 2F - Tsoft NFSDRVR - ???
  4062.     AX = CC06h
  4063.     ???
  4064. Return: ???
  4065. SeeAlso: AX=CC00h
  4066. ----------2FCD00-----------------------------
  4067. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  4068.     AX = CD00h
  4069. Return: AL = state
  4070.         00h not installed, OK to install
  4071.         01h not installed, not OK to install
  4072.         FFh installed
  4073. SeeAlso: AX=CD02h"Image"
  4074. --------P-2FCD00-----------------------------
  4075. INT 2F - LaserPort Interface - INSTALLATION CHECK
  4076.     AX = CD00h
  4077. Return: AL = status
  4078.         FFh installed
  4079. SeeAlso: AX=CD0Fh"LaserPort"
  4080. --------U-2FCD00-----------------------------
  4081. INT 2F - SWELL.EXE - INSTALLATION CHECK
  4082.     AX = CD00h
  4083. Return: AX = 00FFh installed
  4084.         BH = major version
  4085.         BL = minor version
  4086. Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
  4087.       process with INT 21/AH=4Bh
  4088. ----------2FCD01-----------------------------
  4089. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  4090.     AX = CD01h
  4091.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  4092. Return: AL = status
  4093.         00h successful
  4094.         CX:BX -> internal character device name
  4095.         80h error
  4096. --------U-2FCD01-----------------------------
  4097. INT 2F - SWELL.EXE - SUSPEND ONCE
  4098.     AX = CD01h
  4099. Return: AX = 0000h
  4100. SeeAlso: AX=CD02h"SWELL"
  4101. ----------2FCD02-----------------------------
  4102. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  4103.     AX = CD02h
  4104. Return: AL = status
  4105.         00h/01h successful
  4106.         BH = major version number (BCD)
  4107.         BL = minor version number (BCD)
  4108.         80h error
  4109. Note:    if return AL = 01h, the IPI supports network redirection
  4110. SeeAlso: AX=CD00h"Image"
  4111. --------U-2FCD02-----------------------------
  4112. INT 2F - SWELL.EXE - SUSPEND
  4113.     AX = CD02h
  4114. Return: AX = 0000h
  4115. SeeAlso: AX=CD03h"SWELL"
  4116. ----------2FCD03-----------------------------
  4117. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  4118.     AX = CD03h
  4119.     BX = scan line
  4120.     CX = requested density in dots per inch (300, 600, or 1200)
  4121. Return: AL = status (see also AX=CD04h"Image")
  4122.         00h successful
  4123.         CX = density at which scan line was mapped
  4124.         ES:DI -> start of scan line
  4125.         80h unsuccessful
  4126.         81h scan line out of range
  4127.         82h unsupported scan line density
  4128.         83h out of memory
  4129. SeeAlso: AX=CD04h"Image"
  4130. --------U-2FCD03-----------------------------
  4131. INT 2F - SWELL.EXE - ACTIVATE
  4132.     AX = CD03h
  4133. Return: AX = 0000h
  4134. SeeAlso: AX=CD02h"SWELL"
  4135. ----------2FCD04-----------------------------
  4136. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  4137.     AX = CD04h
  4138.     CX:BX -> structure (see #1528)
  4139. Return: AL = status (see #1527)
  4140. SeeAlso: AX=CD03h"Image"
  4141.  
  4142. (Table 1527)
  4143. Values for IPI function status:
  4144.  00h    successful
  4145.  80h    unsuccessful
  4146.  81h    scan line out of range
  4147.  82h    unsupported scan line density
  4148.  83h    out of memory
  4149.  84h    unrecognized source
  4150.  85h    initialization error
  4151.  
  4152. Format of structure:
  4153. Offset    Size    Description    (Table 1528)
  4154.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  4155.  02h    DWORD    pointer to image data
  4156.  06h    WORD    scan line on which to place
  4157.  08h    WORD    bit offset from start of scan line at which to place
  4158.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  4159.  0Ch    WORD    width in bits of data
  4160.  0Eh    WORD    source logical page number
  4161.  10h    WORD    source handle (only if source in expanded memory)
  4162.  12h    WORD    source offset (only if source in expanded memory)
  4163. --------U-2FCD04-----------------------------
  4164. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  4165.     AX = CD04h
  4166. Return: AX = 0000h
  4167. SeeAlso: AX=CD05h"SWELL"
  4168. ----------2FCD05-----------------------------
  4169. INT 2F - Intel Image Processing Interface - PRINT PAGE
  4170.     AX = CD05h
  4171. Return: AL = status (00h,80h) (see #1527)
  4172. Note:    page image is retained, so multiple calls will print multiple copies of
  4173.       the page
  4174. SeeAlso: AX=CD06h"Image"
  4175. --------U-2FCD05-----------------------------
  4176. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  4177.     AX = CD05h
  4178. Return: AX = 0000h
  4179. SeeAlso: AX=CD04h"SWELL"
  4180. ----------2FCD06-----------------------------
  4181. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  4182.     AX = CD06h
  4183. Return: AL = status (00h,80h) (see #1527)
  4184. Note:    palette is reset to default
  4185. SeeAlso: AX=CD09h"Image"
  4186. --------U-2FCD06-----------------------------
  4187. INT 2F - SWELL.EXE - UNINSTALL
  4188.     AX = CD06h
  4189. Return: AX = status
  4190.         0000h uninstalled
  4191.         8002h programs still swapped, not uninstalled
  4192. ----------2FCD07-----------------------------
  4193. INT 2F - Intel Image Processing Interface - reserved
  4194.     AX = CD07h
  4195. SeeAlso: AX=CD00h"Image"
  4196. --------U-2FCD07-----------------------------
  4197. INT 2F - SWELL.EXE - GET INFO
  4198.     AX = CD07h
  4199.     ES:BX -> 32-byte buffer for info (see #1529)
  4200. Return: AX = status
  4201.         0000h successful
  4202.         ES:BX buffer filled
  4203.         8001h buffer wrong size
  4204.  
  4205. Format of SWELL.EXE info buffer:
  4206. Offset    Size    Description    (Table 1529)
  4207.  00h    WORD    20h  (total size of buffer)
  4208.  02h    BYTE    suspend-once mode active if nonzero
  4209.  03h    BYTE    00h active, 01h suspended
  4210.  04h    BYTE    00h quiet, 01h verbose
  4211.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  4212.  06h 26 BYTEs    unused???
  4213. ----------2FCD08-----------------------------
  4214. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  4215.     AX = CD08h
  4216.     CX:BX -> structure (see #1530)
  4217. Return: AL = status (00h,80h-85h) (see #1527)
  4218. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  4219.  
  4220. Format of IPI screen image structure:
  4221. Offset    Size    Description    (Table 1530)
  4222.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  4223.  02h    DWORD    pointer to image data
  4224.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  4225.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  4226.  0Ah    WORD    left cropping (currently must be zero)
  4227.  0Ch    WORD    top cropping (currently must be zero)
  4228.  0Eh    WORD    width (currently must be 8000h)
  4229.  10h    WORD    height (currently must be 8000h)
  4230.  12h    WORD    horizontal size of image in 1200 dpi units
  4231.  14h    WORD    vertical size of image in 1200 dpi units
  4232.  16h    WORD    aspect ratio (currently reserved)
  4233.  18h    WORD    initialization flag (if 01h, initialization is performed)
  4234.  1Ah    WORD    pixels per line of source data
  4235.  1Ch    WORD    number of scan lines in source data
  4236.  1Eh    WORD    number of scan lines in packet
  4237.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  4238.  22h    WORD    pixels per byte (1,2,4, or 8)
  4239.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  4240.  26h    WORD    source page number (if in expanded memory)
  4241.  28h    WORD    source handle (if in expanded memory)
  4242.  2Ah    WORD    source offset (if in expanded memory)
  4243. --------U-2FCD08-----------------------------
  4244. INT 2F - SWELL.EXE - UNUSED
  4245.     AX = CD08h
  4246. Return: AX = FFFFh (error)
  4247. ----------2FCD09-----------------------------
  4248. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  4249.     AX = CD09h
  4250.     CX:BX -> structure (see #1531)
  4251. Return: AL = status (00h,80h) (see #1527)
  4252. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  4253.  
  4254. Format of IPI load screen structure:
  4255. Offset    Size    Description    (Table 1531)
  4256.  00h    BYTE    style
  4257.         44h ('D') diamond style
  4258.         4Ch ('L') line style
  4259.  01h    BYTE    reserved (00h)
  4260.  02h    WORD    frequency in lines per inch [sic]
  4261.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  4262.  04h    WORD    screen angle in degrees (-360 to 360)
  4263.         currently coerced to nearest of -45, 0, 45, or 90
  4264. --------U-2FCD09-----------------------------
  4265. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  4266.     AX = CD09h
  4267. Return: AX = 0000h
  4268. SeeAlso: AX=CD0Ah"SWELL"
  4269. ----------2FCD0A-----------------------------
  4270. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  4271.     AX = CD0Ah
  4272.     CX:BX -> palette structure (see #1532)
  4273. Return: AL = status (00h,80h) (see #1527)
  4274. SeeAlso: AX=CD09h"Image Processing"
  4275.  
  4276. Format of IPI palette structure:
  4277. Offset    Size    Description    (Table 1532)
  4278.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  4279.  01h    2**N    palette translation values, one per possible pixel value
  4280. --------U-2FCD0A-----------------------------
  4281. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  4282.     AX = CD0Ah
  4283. Return: AX = 0000h
  4284. SeeAlso: AX=CD09h"SWELL"
  4285. --------P-2FCD0F-----------------------------
  4286. INT 2F - LaserPort Interface - EXECUTE FUNCTION
  4287.     AX = CD0Fh
  4288.     BL = function
  4289.         01h enable
  4290.         02h disable
  4291.         03h ???
  4292. Return: AL = status
  4293.         00h success
  4294. SeeAlso: AX=CD00h"LaserPort"
  4295. --------K-2FCF00-----------------------------
  4296. INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
  4297.     AX = CF00h
  4298. Return: AL = FFh if installed
  4299. Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
  4300. Note:    values in AL other than 00h cause an immediate return without modifying
  4301.       any registers
  4302. --------G-2FD000-----------------------------
  4303. INT 2F C - MDEBUG display driver - GET DRIVER STATUS
  4304.     AX = D000h
  4305. Return: CF set on error
  4306.         all other registers must be unchanged)
  4307.     CF clear if successful
  4308.         AL = FFh
  4309.         AH = driver semaphor
  4310.         00h driver is not active
  4311.         01h driver is active
  4312.         BX = CS of the driver
  4313.         CX = driver version (CH = major, CL = minor, must be >= 013Ch)
  4314.         DL = buffer semaphor
  4315.         00h driver is not pending
  4316.         01h driver is pending between functions 02h and 03h
  4317.         DH = show semaphor
  4318.         00h driver is not pending
  4319.         01h driver is pending between functions 04h and 05h
  4320. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  4321.       Schemmer, including a memory monitor, an interpreter and a
  4322.       disassembler
  4323. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  4324. Notes:    MDEBUG can use any two consecutive multiplex numbers between C0h and
  4325.       FFh; the default is D0h for the display driver and D1h for the
  4326.       command driver (see INT 60/AH=00h"MDEBUG" for the actual multiplex
  4327.       numbers used)
  4328.     this function MUST be reentrant, as MDEBUG calls it after every popup
  4329.       before any other actions.  The handler should not change any
  4330.       registers if the display is in an unsupported mode or in a mode
  4331.       MDEBUG supports itself, e.g. a normal text mode with at least 80x25
  4332.       characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
  4333.       not call any of the other functions for this popup session.
  4334.     MDEBUG will not call the other functions if the returned version is
  4335.       less than the actual version of MDEBUG.
  4336.     if the driver is reentrant, DL and DH should be 00h
  4337. SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
  4338. --------M-2FD000-----------------------------
  4339. INT 2F - ZWmous - INSTALLATION CHECK
  4340.     AX = D000h
  4341. Return: AX = 5A57h ("ZW") if installed
  4342.         BX = segment of resident code
  4343. Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
  4344.       with many non-mouse applications by entering the letter under the
  4345.       mouse cursor on button presses
  4346. SeeAlso: INT 33/AX=0003h
  4347. --------N-2FD000-----------------------------
  4348. INT 2F - Lotus CD/Networker - INSTALLATION CHECK
  4349.     AX = D000h
  4350. Return: AL = FFh if CD/Networker TSR is loaded
  4351.     BX = 4D44h ("MD") signature
  4352.     CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
  4353.     DX = bitmap identifying all loaded CD/Networker TSRs.
  4354. Notes:    INT 2F/AH=D0h is used by CD/Networker to communicate between a
  4355.       resident redirector TSR and a transient program that controls the
  4356.       TSR's CD-ROM drive emulation (volume attachments, caching, etc).
  4357.     At present there is only one CD/Networker TSR; the bitmap always = 4.
  4358. SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
  4359. --------G-2FD001-----------------------------
  4360. INT 2F C - MDEBUG display driver - INITIALIZE DRIVER
  4361.     AX = D001h
  4362. Return: CF set on error
  4363.     AL = driver semaphor
  4364.     AH = buffer semaphor
  4365. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  4366. Notes:    MDEBUG calls this function after every successful call of the function
  4367.       00h. The function should reset all internal data and the status of
  4368.       the driver. If this function returns an error, MDEBUG will not call
  4369.       the other functions in this popup session.
  4370.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  4371.       FFh; the default is D0h for the display driver and D1h for the
  4372.       command driver
  4373. SeeAlso: AX=D000h
  4374. --------G-2FD002-----------------------------
  4375. INT 2F C - MDEBUG display driver - SAVE GRAPHIC DATA
  4376.     AX = D002h
  4377. Return: CF set on error
  4378.     CF clear if successful
  4379.         display memory saved and display switched to one of the text modes
  4380.           02h, 03h or 07h.
  4381. Note:    MDEBUG calls this function only once every popup session before
  4382.       displaying its windows.
  4383. SeeAlso: AX=D000h,AX=D003h
  4384. --------N-2FD002BX4D44-----------------------
  4385. INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
  4386.     AX = D002h
  4387.     BX = 4D44h
  4388.     DX = bitmap identifying one loaded CD/Networker TSR
  4389. Return: ES:DI -> data area owned by TSR
  4390. Note:    the format of the data area changes with each minor revision, so it
  4391.       cannot be counted on
  4392. SeeAlso: AX=D000h"Lotus"
  4393. --------G-2FD003-----------------------------
  4394. INT 2F C - MDEBUG display driver - RESTORE GRAPHIC DATA
  4395.     AX = D003h
  4396. Return: CF set on error
  4397.     CF clear if successful
  4398.         display restored to the mode it was in before calling AX=D002h and
  4399.           the display memory is restored
  4400. Note:    MDEBUG calls this function only once every popup session just before
  4401.      it exits to normal DOS.
  4402. SeeAlso: AX=D000h,AX=D002h
  4403. --------G-2FD004-----------------------------
  4404. INT 2F - MDEBUG display driver - SHOW SAVED DATA
  4405.     AX = D004h
  4406. Return: CF set on error
  4407.     CF clear if successful
  4408.         display switched to mode it was in before calling AX=D002h and the
  4409.           display memory is restored
  4410. Note:    This function needn't save the display memory before changing it.
  4411. SeeAlso: AX=D000h,AX=D005h
  4412. --------G-2FD005-----------------------------
  4413. INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
  4414.     AX = D005h
  4415. Return: CF set on error
  4416.     CF clear if successful
  4417.         display restored to mode it was in before calling AX=D004h
  4418. Note:    This function needn't save or change the display memory
  4419. SeeAlso: AX=D000h,AX=D004h
  4420. --------G-2FD0-------------------------------
  4421. INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
  4422.     AH = D0h
  4423.     AL = 06h-7Fh
  4424. Note:    these functions are reserved for future use
  4425. --------G-2FD0-------------------------------
  4426. INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
  4427.     AH = D0h
  4428.     AL = 80h-FFh
  4429. Note:    these functions numbers are reserved for user defined features (e.g.
  4430.       communication between the transient und resident parts of the driver)
  4431. --------G-2FD100-----------------------------
  4432. INT 2F C - MDEBUG command driver - GET STATUS
  4433.     AX = D100h
  4434.     BX = version of MDEBUG (BH = major, BL = minor)
  4435.     CX = command driver counter
  4436. ---v1.60+---
  4437.     DS:SI -> MDEBUG identification table (see #1533)
  4438.     ES = segment of display memory used by MDEBUG
  4439.     DI = size of video mode used by MDEBUG
  4440.         (high byte = lines, low byte = columns)
  4441. Return: DL = FFh
  4442.     BX = version number of the driver if it is less than the version in BX,
  4443.           else unchanged
  4444.     CX incremented
  4445. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  4446.       Schemmer, including a memory monitor, an interpreter, and a
  4447.       disassembler
  4448. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  4449. Notes:    called by MDEBUG at start of popup session; if the version number
  4450.       returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
  4451.       not call any of the other functions during this popup session
  4452.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  4453.       FFh; the default is D0h for the display driver and D1h for the
  4454.       command driver (see INT 60/AH=00h"MDEBUG" for the multiplex numbers
  4455.       actually used)
  4456.     this function must end with a far call to the old INT 2F handler after
  4457.       changing the registers
  4458.     this function MUST be reentrant
  4459.     command drivers must also declare the following data at the given
  4460.       offsets in the code segment
  4461.         100h  3 BYTEs    JMP-command in .COM-files
  4462.         103h    BYTE    NOP-command (90h)
  4463.         104h 26 BYTEs    signature "Kommandotreiber für MDEBUG"
  4464.         11Eh 12 BYTEs    name of driver, e.g. "MDHISDRV.COM"
  4465.                 each driver must have a unique name
  4466.     MDEBUG will pass every key and command to the command driver(s) before
  4467.       checking for a valid internal command
  4468. SeeAlso: AX=D000h,AX=D101h
  4469.  
  4470. Format of MDEBUG identification table:
  4471. Offset    Size    Description    (Table 1533)
  4472.  -2    WORD    entry offset
  4473.  00h    WORD    CS of MDEBUG
  4474.  02h    DWORD    old INT 08h vector
  4475.  06h    DWORD    old INT 09h vector
  4476.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  4477.  0Eh    BYTE    length of version string
  4478.  0Fh  N BYTEs    version string
  4479. --------G-2FD101-----------------------------
  4480. INT 2F - MDEBUG command driver - INITIALIZE DRIVER
  4481.     AX = D101h
  4482.     CX = command driver counter
  4483. Return: DL = status
  4484.         FFh if successful
  4485.         CX incremented
  4486.         else error: all registers unchanged
  4487. Note:    this function must end with a  far call to the old INT 2F handler after
  4488.       changing the registers
  4489.     this function must be reentrant
  4490. --------G-2FD102-----------------------------
  4491. INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
  4492.     AX = D102h
  4493.     BL = first character of the interpreter command
  4494.     BH = last character of the interpreter command (or blank)
  4495.     DS:SI -> parameter for the interpreter command as ASCIZ string
  4496.     DS:DI -> MDEBUG data structure (see #1535)
  4497. Return: AL = FFh
  4498.     CF set on error
  4499.         AH = error number (see #1534)
  4500.         DS:SI -> ASCIZ error message (max 30 characters) if AH=0Ch
  4501.     CF clear if successful
  4502.         AH = return code
  4503.         00h continue processing the command line
  4504.         01h leave MDEBUG popup session
  4505.         02h leave MDEBUG popup session and automatically popup again
  4506.               if the InDOS flag is zero
  4507.         03h not used (same as 00h)
  4508.         04h not used (same as 00h)
  4509.         05h put new command line into the input buffer,
  4510.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  4511.         06h process new command line
  4512.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  4513.            else unknown status, but continue processing commmand line
  4514. Note:    this function must end with a far call to the old INT 2F handler (with
  4515.       registers unchanged) if the driver does not support the interpreter
  4516.       command in BX.  Otherwise, the driver must not chain to the old
  4517.       INT 2F.
  4518.  
  4519. (Table 1534)
  4520. Values for MDEBUG error number:
  4521.  01h    syntax error
  4522.  02h    first shell of the command.com is activ
  4523.  03h    Esc pressed
  4524.  04h    break pressed
  4525.  05h    DOS is busy
  4526.  06h    command ended
  4527.  07h    division by zero
  4528.  08h    invalid display driver
  4529.  09h    invalid command driver
  4530.  0Ah    error 8 and 9
  4531.  0Bh    unknown error
  4532.  0Ch    new error
  4533.  else    unknown error
  4534.  
  4535. Format of MDEBUG data structure:
  4536. Offset    Size    Description    (Table 1535)
  4537.  00h    WORD    register SE
  4538.  02h    WORD    register OF
  4539.  04h    WORD    register FS
  4540.  06h    WORD    register FO
  4541.  08h    WORD    register AX
  4542.  0Ah    WORD    register BX
  4543.  0Ch    WORD    register CX
  4544.  0Eh    WORD    register DX
  4545.  10h    WORD    register SI
  4546.  12h    WORD    register DI
  4547.  14h    WORD    register DS
  4548.  16h    WORD    register ES
  4549.  18h    WORD    register BP
  4550.  1Ah    WORD    register SS
  4551.  1Ch    WORD    register SP
  4552.  1Eh    WORD    register FL (flags)
  4553.  20h    WORD    register R0
  4554.  22h    WORD    register R1
  4555.  24h    WORD    register R2
  4556.  26h    WORD    register R3
  4557.  28h    WORD    register R4
  4558.  2Ah    WORD    register R5
  4559.  2Ch    WORD    register R6
  4560.  2Eh    WORD    register R7
  4561.  30h    WORD    register R8
  4562.  32h    WORD    register CS, return-address
  4563.  34h    WORD    register IP, return-address
  4564.  36h    DWORD    saved pointer to data for key <F6> (v1.60)
  4565.         saved monitor address (v1.70)
  4566.  3Ah 12 WORDs    saved register values on last popup entry (for <F8> key)
  4567.         (original register values at popup entry of MDEBUG)
  4568.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4569.  52h 12 WORDs    saved register values on last popup exit (for <SHIFT-F8> key)
  4570.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4571.  6Ah    DWORD    address of the DOS-invars-table
  4572.  6Eh    DWORD    address of the InDOS flag
  4573.  72h    WORD    offset of the register which is used for the segment of the
  4574.           first monitor window
  4575.  74h    WORD    offset of the register which is used for the offset of the
  4576.           first monitor window
  4577.  76h    WORD    name of the register which is used for the segment of the
  4578.           first monitor segment
  4579.  78h    WORD    name of the register which is used for the offset of the first
  4580.           monitor window
  4581.  7Ah    WORD    pseudo register 1
  4582.  7Ch    WORD    pseudo register 2
  4583. --------G-2FD103-----------------------------
  4584. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
  4585.     AX = D103h
  4586.     BX = key code (like result of an interrupt 16h call)
  4587.     CX = cursor position
  4588.         0000h in the ASCII column of the monitor
  4589.         0001h in one of the hex fields of the monitor
  4590.     DS:SI -> MDEBUG data structure (see #1535)
  4591.     ES:DI -> actual byte in the monitor
  4592. Return: AL = FFh
  4593.     AH = return code
  4594.         00h key processed, read next key
  4595.         01h leave MDEBUG popup session
  4596.         02h leave MDEBUG popup session and automatically popup again if DOS
  4597.           is not busy
  4598.         03h signal an error (beep)
  4599.         04h driver has redefined the key, proceed with the new key
  4600.         BX = new key code
  4601.         MDEBUG will not pass the new key to the command driver(s)
  4602.        else treat like code 00h
  4603. Note:    this function must end with a far call to the old INT 2F handler (with
  4604.       registers unchanged) if the driver does not support the key in BX.
  4605.       Otherwise, the driver must not chain to the old INT 2F.
  4606. SeeAlso: AX=D104h
  4607. --------G-2FD104-----------------------------
  4608. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
  4609.     AX = D104h
  4610.     DS:SI -> MDEBUG data structure (see #1535)
  4611. Return: AL = FFh
  4612.     AH = return code
  4613.         00h key processed, read next key
  4614.         01h leave MDEBUG popup session
  4615.         02h leave MDEBUG popup session and automactically popup again if
  4616.           DOS is not busy
  4617.         03h signal an error (beep)
  4618.         04h driver has redefined the key, proceed with the new key
  4619.         BX = new key code
  4620.         MDEBUG won't pass the new key to the command driver(s)
  4621.         05h put new command line into the input buffer
  4622.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4623.         06h process new command line
  4624.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4625.        else treat like code 00h
  4626. Note:    this function must end with a far call to the old INT 2F handler if the
  4627.       driver does not support the key in BX.  Otherwise, the driver must
  4628.       not chain to the old INT 2F.
  4629. SeeAlso: AX=D103h
  4630. --------G-2FD1-------------------------------
  4631. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4632.     AH = D1h
  4633.     AL = 05h-0Ah
  4634. Note:    these functions are reserved for future use
  4635. --------G-2FD110-----------------------------
  4636. INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
  4637.     AX = D110h
  4638. Return: DL = FFh
  4639.     ES:BX -> next program in the chain for INT 2F
  4640.     CX = code segment of this driver
  4641.     DI = offset of driver identification table (see #1536) (v1.60+)
  4642. Notes:    only called by the transient part of the driver
  4643.     must be reentrant and the driver must not chain this function to the
  4644.       old INT 2F
  4645.  
  4646. Format of the MDEBUG driver identification table:
  4647. Offset    Size    Description    (Table 1536)
  4648.  00h  26 BYTEs     signature "Kommandotreiber für MDEBUG"
  4649.                          ^- Note: ASCII 129,German U-umlaut
  4650.  27h  12 BYTEs     name of driver, e.g. "MDHISDRV.COM"
  4651.          each driver must have a unique name
  4652. --------G-2FD111-----------------------------
  4653. INT 2F - MDEBUG command driver - START DRIVER
  4654.     AX = D111h
  4655. Return: DL = FFh
  4656. Notes:    only called by the transient part of the driver to inform the resident
  4657.       part that it is installed
  4658.     the function must be reentrant and the driver mustn't chain this
  4659.       function to the old INT 2F
  4660. SeeAlso: AX=D101h,AX=D112h
  4661. --------G-2FD112-----------------------------
  4662. INT 2F - MDEBUG command driver - END DRIVER
  4663.     AX = D112h
  4664. Return: DL = FFh
  4665. Notes:    only called by the transient part of the driver to inform the resident
  4666.       part that it will be released after this function
  4667.     the function must be reentrant and the driver mustn't chain this
  4668.       function to the old INT 2F
  4669. SeeAlso: AX=D101h,AX=D111h
  4670. --------G-2FD1-------------------------------
  4671. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4672.     AH = D1h
  4673.     AL = 13h-7Fh
  4674. Note:    these functions are reserved for future use
  4675. --------G-2FD1-------------------------------
  4676. INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
  4677.     AH = D1h
  4678.     AL = 80h-FFh
  4679. Note:    these functions are reserved for user defined features (e.g.
  4680.       communication between the transient und resident parts of the driver)
  4681. --------U-2FD200-----------------------------
  4682. INT 2F - PCL-838.EXE - INSTALLATION CHECK
  4683.     AX = D200h
  4684. Return: AL = FFh if installed??? (documented as AX = return value)
  4685. Program: PCL-838 is a resident utility for controlling a stepmotor adapter
  4686.       board by Advantec
  4687. SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
  4688. --------Q-2FD200BX5144-----------------------
  4689. INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
  4690.     AX = D200h
  4691.     BX = 5144h ("QD")
  4692.     CX = 4D45h ("ME")
  4693.     DX = 4D30h ("M0")
  4694. Return: AL = FFh installed
  4695.     if BX,CX,DX registers were as specified on entry:
  4696.         BX = 4D45h ("ME")
  4697.         CX = 4D44h ("MD")
  4698.         DX = 5652h ("VR")
  4699. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4700. Notes:    the Quarterdeck RPCI (Resident Program Communication Interface) is
  4701.       supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
  4702.     for AL <> 0, if the BX/CX/DX values don't match the identifier of a
  4703.       Quarterdeck product, it just chains to the previous INT 2F handler
  4704. SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
  4705. SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
  4706. --------U-2FD201-----------------------------
  4707. INT 2F - PCL-838.EXE - UNINSTALL
  4708.     AX = D201h
  4709. Return: AX = return value
  4710. SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
  4711. --------m-2FD201BX4849-----------------------
  4712. INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
  4713.     AX = D201h
  4714.     BX = 4849h ("HI")
  4715.     CX = 4D45h ("ME")
  4716.     DX = 4D51h ("MQ")
  4717. Return: BX = 4F4Bh ("OK")
  4718.     ES:DI -> HIMEM entry point
  4719. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4720. SeeAlso: AX=D200h,AX=D201h/BX=5145h
  4721. --------m-2FD201BX4849-----------------------
  4722. INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
  4723.     AX = D201h
  4724.     BX = 4849h ("HI")
  4725.     CX = 5241h ("RA")
  4726.     DX = 4D30h ("M0")
  4727. Return: BX = 4F4Bh ("OK")
  4728.     CX = segment of start of HIRAM chain
  4729.     DX = reserved block owner (QEMM/QRAM code segment)
  4730. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4731. Note:    the HIRAM memory chain has the same format as the regular DOS 4.0
  4732.       memory chain (see INT 21/AH=52h), except that XMS Upper Memory Blocks
  4733.       have the block header program name field set to "UMB"; blocks whose
  4734.       "owner" field is set to the reserved segment returned in DX are
  4735.       locked-out regions such as video memory and ROMs.
  4736. SeeAlso: AX=12FFh/BX=0006h,AX=D200h
  4737. --------G-2FD201BX4D41-----------------------
  4738. INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
  4739.     AX = D201h
  4740.     BX = 4D41h ("MA")
  4741.     CX = 4E49h ("NI")
  4742.     DX = 4645h ("FE")
  4743. Return: BX = 5354h ("ST") if installed
  4744. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4745. SeeAlso: AX=D200h
  4746. --------E-2FD201BX4D45-----------------------
  4747. INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
  4748.     AX = D201h
  4749.     BX = 4D45h ("ME")
  4750.     CX = 5155h ("QU")
  4751.     DX = 5044h ("PD")
  4752. Return: AL = FFh
  4753.     BX = 4F4Bh ("OK")
  4754. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4755. Note:    this function is called by QEMM 6.03
  4756.     performs a variety of actions before setting return registers
  4757. SeeAlso: AX=D200h
  4758. --------m-2FD201BX5145-----------------------
  4759. INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
  4760.     AX = D201h
  4761.     BX = 5145h ("QE")
  4762.     CX = 4D4Dh ("MM")
  4763.     DX = 3432h ("42")
  4764. Return: BX = 4F4Bh ("OK")
  4765.     ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
  4766. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4767. Note:    this call is not available under QEMM v6.00 unless Windows3 support
  4768.       has been disabled with the NW3 switch to QEMM386.SYS
  4769. SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
  4770. --------V-2FD201BX5649-----------------------
  4771. INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
  4772.     AX = D201h
  4773.     BX = 5649h ("VI")
  4774.     CX = 4452h ("DR")
  4775.     DX = 414Dh ("AM")
  4776. Return: BX = 4F4Bh ("OK")
  4777.     ES:DI -> VIDRAM entry point
  4778. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4779. SeeAlso: AX=D200h
  4780.  
  4781. (Table 1537)
  4782. Call VIDRAM entry point with:
  4783.     AH = 00h get status
  4784.         Return: AL = VIDRAM state (see #1538)
  4785.             BL = extra RAM status
  4786.                 00h VIDRAM does not use extra RAM
  4787.                 01h VIDRAM uses EMS as extra RAM
  4788.                 02h VIDRAM uses EGA as extra RAM
  4789.             BH = feature flags (see #1539)
  4790.             CL = current monitor (01h = mono, 80h = color)
  4791.             SI = current top of memory (paragraph)
  4792.             DI = segment of start of HiRAM chain
  4793.     AH = 01h setup
  4794.         AL = VIDRAM state (see #1538)
  4795.         BL = extra RAM status (see above)
  4796.         BH = feature flags (see #1539)
  4797.         CL = monitor (01h = monochrome, 80h = color)
  4798.         SI = new top of memory (paragraph)
  4799.         DI = segment of start of HiRAM chain
  4800.     AH = 02h get end address of VIDRAM code
  4801.         Return: ES:DI -> VIDRAM partial map context (see #1540,#1541)
  4802. Return: CF set on error
  4803.     CF clear if successful
  4804.  
  4805. (Table 1538)
  4806. Values for VIDRAM state:
  4807.  00h    off
  4808.  01h    no EGA graphics
  4809.  02h    no graphics at all
  4810.  
  4811. Bitfields for VIDRAM feature flags:
  4812. Bit(s)    Description    (Table 1539)
  4813.  0    override enabled
  4814.  1    mapped memory detected in A000h-B000h range
  4815.  2    top of memory not at 640K
  4816.  3    MDA detected
  4817.  4    high RAM exists in video area
  4818.  5    mapped memory detected in video area
  4819.  6-7    reserved???
  4820.  
  4821. Format of VIDRAM partial map context (EMS 3.2):
  4822. Offset    Size    Description    (Table 1540)
  4823.  00h    BYTE    EMS version ID (32h)
  4824.  01h    WORD    EMM handle for this entry
  4825.  03h    BYTE    number of frames
  4826.  04h    BYTE    first page frame
  4827.  05h    WORD    offset from ES to previously saved map
  4828.  
  4829. Format of VIDRAM partial map context (EMS 4.0):
  4830. Offset    Size    Description    (Table 1541)
  4831.  00h    BYTE    EMS version ID (40h)
  4832.  01h    WORD    mappable segment count
  4833.  03h  N WORD    mappable segments
  4834.     WORD    offset to previously saved map???
  4835. --------U-2FD202-----------------------------
  4836. INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
  4837.     AX = D202h
  4838.     CX:BX -> parameter table
  4839. Return: AX = return value
  4840. SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
  4841. --------R-2FD300BX4562-----------------------
  4842. INT 2F U - TeleReplica - INSTALLATION CHECK
  4843.     AX = D300h
  4844.     BX = 4562h
  4845.     CX = 2745h
  4846.     DX = serial port I/O base address??? (03F8h for v3.9)
  4847. Return: SI = segment of resident code
  4848.     AX = 251Dh
  4849.     BX = DF21h
  4850.     CX = F321h
  4851.     DX = ???
  4852. --------R-2FD3CB-----------------------------
  4853. INT 2F U - LapLink Quick Connect v6 - API
  4854.     AX = D3CBh
  4855.     CX = function
  4856.         0002h get ???
  4857.         Return: BX:AX -> ???
  4858.             CL = ???
  4859.             CH = ???
  4860.             DX = ???
  4861.             DI = COM1 I/O port???
  4862.             SI = COM2 I/O port???
  4863.         0003h initialization???
  4864.         0004h ???
  4865.         0005h initialization???
  4866.         0006h reset/clear ???
  4867.         Return: AX = 0000h
  4868.             ES:DI -> next byte after ??? cleared by this call
  4869.         0007h initialization???
  4870.         0008h uninstall
  4871.         Return: BX = status
  4872.                 0000h successful
  4873.                 FFFFh incomplete, stub remains in memory
  4874. Return: CX = 534Bh (except function 0002h)
  4875. Index:    uninstall;LapLink Quick Connect
  4876. --------l-2FD44D-----------------------------
  4877. INT 2F - 4DOS.COM v2.1+ - API
  4878.     AX = D44Dh
  4879.     BH = function
  4880.         00h installation check
  4881.         Return: AX = 44DDh
  4882.             BL = major version number
  4883.             BH = minor version number
  4884.             CX = PSP segment address for current invocation
  4885.             DL = 4DOS shell number (0 for the first (root) shell,
  4886.                   updated each time a new copy is loaded)
  4887.         01h (internal, v2.1-3.03) terminate current copy of 4DOS
  4888.         Return: nothing
  4889.         (internal, v4.0) ???
  4890.         Return: AX = 44DDh
  4891.             ES:BX -> data area (see #1542)
  4892.         02h ???
  4893.         DX = ???
  4894.     ---v2.1-3.03 only---
  4895.         03h EXEC program
  4896.         CX:DX -> EXEC record (see #1543)
  4897.         FEh deallocate shell number (passed through to root shell)
  4898.         ???
  4899.         FFh allocate shell number (passed through to root shell)
  4900. Note:    bug in v3.00 will crash system if unrecognized value in BH
  4901. SeeAlso: AX=D44Eh,AX=E44Dh,INT 21/AX=4403h
  4902. Index:    installation check;4DOS|installation check;NDOS
  4903.  
  4904. Format of 4DOS v4.0 data area:
  4905. Offset    Size    Description    (Table 1542)
  4906.  00h  2 BYTEs    ???
  4907.  06h    WORD    XMS handle for swapping
  4908.     ???
  4909.  
  4910. Format of 4DOS EXEC record:
  4911. Offset    Size    Description    (Table 1543)
  4912.  00h    WORD    offset of ASCIZ program name in same segment as EXEC record
  4913.  02h    WORD    offset of DOS commandline in same segment as EXEC record
  4914.  04h    WORD    segment of environment for child process (see INT 21/AH=26h)
  4915. --------l-2FD44E-----------------------------
  4916. INT 2F C - 4DOS v3.0+ - AWAITING USER INPUT
  4917.     AX = D44Eh
  4918. ---4DOS v3.01+---
  4919.     BX = condition
  4920.         0000h 4DOS is ready to display prompt
  4921.         0001h 4DOS has displayed the prompt, about to accept user input
  4922. Return: the handler must preserve SI, DI, BP, SP, DS, ES, and SS
  4923. Note:    v3.00 only makes the call corresponding to BX=0001h, does not set BX
  4924. SeeAlso: AX=D44Dh
  4925. --------K-2FD44FBX0000-----------------------
  4926. INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  4927.     AX = D44Fh
  4928.     BX = 0000h
  4929. Return: AX = 44DDh if installed
  4930. SeeAlso: AX=D44Fh/BX=0001h
  4931. --------K-2FD44FBX0001-----------------------
  4932. INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  4933.     AX = D44Fh
  4934.     BX = 0001h
  4935.     CX = number of keystrokes (01h-FFh)
  4936.     DS:DX -> keystroke list (one word per keystroke)
  4937. Return: AX = status
  4938.         0000h successful
  4939.         nonzero failed
  4940.     BX,CX,DX destroyed
  4941. Notes:    the keystrokes are the exact values to return from subsequent calls to
  4942.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  4943.         0000h causes subfunctions 01h and 11h to indicate an empty
  4944.               keyboard buffer
  4945.         FFFFh is followed by a word indicating the number of clock
  4946.               ticks to delay before the next faked keystroke
  4947.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  4948.       invocation, and does not range-check CX; it will overwrite memory
  4949.       following the resident portion if CX is greater than 100h.
  4950. SeeAlso: AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
  4951. --------G-2FD600-----------------------------
  4952. INT 2F - HEART.COM - INSTALLATION CHECK
  4953.     AX = D600h
  4954. Return: AX = 0303h (two hearts) if installed
  4955.         ES:DI -> buffer (see #1544)
  4956. Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
  4957. Notes:    Once the host program has identified the address of the data area, it
  4958.       can change this to indicate safe/critical, alternate colours, etc.
  4959.     The entries for the color table are in char/attrib form.  Every two
  4960.       entries form a pair which is alternated between 68 times a minute.
  4961.       The first half of the table is for color videos, the second mono.
  4962.       Within each half, the first half is for the safe chars, and the
  4963.       second for the critical chars.
  4964.  
  4965. Format of HEART.COM buffer:
  4966. Offset    Size    Description    (Table 1544)
  4967.  00h  8 WORDs    table of colors/attributes (see notes above)
  4968.  10h    BYTE    flags
  4969.         bit 0: program is in critical section, so flash double
  4970.               exclamation mark
  4971.         bit 1: program is in safe code, so flash the heart character
  4972.  11h    WORD    position of heartbeat on screen, normally 009Eh (last column
  4973.         of second line)
  4974. --------T-2FD600-----------------------------
  4975. INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
  4976.     AX = D600h
  4977. Return: AL = D6h if installed
  4978. Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
  4979.       is a programmer's text editor by Greenview Data.
  4980. SeeAlso: AX=D601h,AX=D602h
  4981. --------T-2FD601-----------------------------
  4982. INT 2F U - VEDIT VSWAP - ???
  4983.     AX = D601h
  4984.     BL = subfunction number???
  4985. Return: BL = return code ???
  4986.     ES = resident portion's data??? segment
  4987.     DX = resident portion's code segment
  4988. SeeAlso: AX=D600h"VSWAP"
  4989. --------T-2FD602-----------------------------
  4990. INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
  4991.     AX = D602h
  4992.     other registers set as for INT 21/AX=4B00h
  4993. Return: CF set on error
  4994.         AL = error code
  4995.         82h = failure due to ???
  4996.     CF clear on success
  4997. SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
  4998. --------N-2FD701BX0000-----------------------
  4999. INT 2F - Banyan VINES v4+ - GET BANV INTERRUPT NUMBER
  5000.     AX = D701h
  5001.     BX = 0000h
  5002. Return: AX = 0000h if installed
  5003.         BX = interrupt number (60h to 66h)
  5004.        nonzero not present
  5005. Note:    if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
  5006.       necessary to examine the four bytes preceding the handlers for
  5007.       INT 60 through INT 66 for the string "BANV"
  5008. SeeAlso: AX=D702h,AX=D703h,AX=D704h
  5009. --------N-2FD702-----------------------------
  5010. INT 2F U - Banyan VINES v4+ - PCPRINT interface
  5011.     AX = D702h
  5012.     BX = function
  5013.     ???
  5014. Return: ???
  5015. SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
  5016. --------N-2FD703-----------------------------
  5017. INT 2F U - Banyan VINES v4+ - MAIL interface
  5018.     AX = D703h
  5019.     BX = function
  5020.     ???
  5021. Return: ???
  5022. SeeAlso: AX=D702h,AX=D704h
  5023. --------N-2FD704-----------------------------
  5024. INT 2F U - Banyan VINES v4+ - Streettalk Directory Assistance interface
  5025.     AX = D704h
  5026.     BX = function
  5027.     ???
  5028. Return: ???
  5029. SeeAlso: AX=D703h,INT 61/AX=0007h/BX=0002h"Banyan",INT 61/AX=0007h/BX=0008h
  5030. --------N-2FD800-----------------------------
  5031. INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
  5032.     AX = D800h
  5033. Return: AL = FFh if installed
  5034.         DX = version number (0100h for v1.0, 0101h for v1.1)
  5035.         BX = data segment of resident copy
  5036.         ES:DI -> private API entry point (see #1545)
  5037.         SI = segment of resident code
  5038. SeeAlso: AX=7A00h,AX=D880h
  5039.  
  5040. (Table 1545)
  5041. Call CLIENT API entry point with:
  5042.     BX = function
  5043.         0000h get ???
  5044.         Return: DX = CLIENT version??? (0101h for v1.1)
  5045.             ES:BX -> ??? data
  5046.         0001h ???
  5047.         0002h ???
  5048.         0003h ???
  5049.         0004h ???
  5050.         0005h ???
  5051.         DL = ???
  5052.         ???
  5053.         Return: ???
  5054.         0006h get module name???
  5055.         ES:DI -> 16-byte buffer
  5056.         Return: CX = ???
  5057.             ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
  5058.         0007h ???
  5059.         DX:CX = ???
  5060.         ???
  5061.         Return: ???
  5062.         0008h ???
  5063.         0009h ???
  5064.         DL = ???
  5065.         ES:DI -> 16-byte buffer for ???
  5066.         Return: CF clear if successful
  5067.                 AX = 0000h
  5068.                 CX = 0000h
  5069.                 SI,DI destroyed
  5070.             CF set on error
  5071.                 AX = error code 4903h
  5072.         000Ah ???
  5073.         AH = subfunction
  5074.             00h get ???
  5075.             01h clear/set ??? flag
  5076.             AL = new state (00h cleared, 01h set)
  5077.             02h set ???
  5078.             DX = new value of ???
  5079.         Return: DX = old value of ???
  5080.         000Bh ???
  5081.         AX = ???
  5082.         ???
  5083.         Return: ???
  5084.         000Ch ???
  5085.         AX = ???
  5086.         ???
  5087.         Return: ???
  5088.         000Dh ???
  5089.         AX = ???
  5090.         ???
  5091.         Return: ???
  5092.         000Eh get original INT 17
  5093.         Return: CF clear
  5094.             ES:BX -> original INT 17
  5095.         000Fh ???
  5096.         0010h ???
  5097.         AX = ???
  5098.         ???
  5099.         Return: ???
  5100.         0011h get ???
  5101.         Return: CF clear
  5102.             DL = ???
  5103.         0012h get ???
  5104.         AL = index of ???
  5105.         ES:DI -> 10-byte buffer for ???
  5106.         Return: CF clear if successful
  5107.                 ES:DI buffer filled
  5108.                 AX,CX destroyed
  5109.             CF set on error
  5110.                 AX = error code (4907h if AL out of range)
  5111.         0013h get ???
  5112.         Return: CF clear
  5113.             DH = ???
  5114.             DL = ???
  5115.         0014h ???
  5116.         DL = ???
  5117.         ???
  5118.         Return: CF clear if successful
  5119.                 ???
  5120.             CF set on error
  5121.                 AX = error code 8056h
  5122.         0015h ???
  5123.         DX = ???
  5124.         Return: ES:DI -> ???
  5125.         other
  5126.         Return: CF set
  5127.             AX = 0001h (invalid function)
  5128. --------N-2FD856-----------------------------
  5129. INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
  5130.     AX = D856h
  5131. Return: AX = 0001h if supported???
  5132.     BX = ??? (0004h for v1.1)
  5133.     CX = ??? (0F20h for v1.1)
  5134.     DS = segment of resident code
  5135.     ES = data segment of resident copy
  5136. Note:    this function is also supported by Personal NetWare SERVER, bundled
  5137.       with Novell DOS 7
  5138. --------N-2FD880-----------------------------
  5139. INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
  5140.     AX = D880h
  5141. Return: AL = FFh if installed
  5142.         DX = version number (0100h for v1.0, 0101h for v1.1)
  5143.         BX = data segment of resident copy
  5144.         CL = current state (00h SERVER is disabled, 01h SERVER is active)
  5145.         ES:DI -> private API entry point (see #1546)
  5146.         SI = ??? (offset of configuration info?)
  5147. Note:    this function is also supported by Personal NetWare SERVER, but DI is
  5148.       not set; instead, ES:SI points at the API entry point
  5149. SeeAlso: AX=7A00h,AX=D800h,INT 2A/AX=D852h
  5150.  
  5151. (Table 1546)
  5152. Call SERVER API entry point with:
  5153.     BX = function
  5154.         0000h ???
  5155.         ???
  5156.         Return: ???
  5157.         Note: closes open files by calling INT 21/AH=3Eh
  5158.         0001h get connection information
  5159.         DX = connection number (0001h-max connections)
  5160.         ES:DI -> 28-byte buffer for connection information
  5161.         Return: CF clear if successful
  5162.                 ES:DI buffer filled
  5163.             CF set on error
  5164.                 AX = FFFFh
  5165.     ---Personal NetWare only---
  5166.         0002h ???
  5167.         0003h ???
  5168.         0004h ???
  5169.         0005h ???
  5170.         0006h ???
  5171.         0007h ???
  5172.         other
  5173.         Return: CF set
  5174.             AX = 0001h (invalid function)
  5175. --------d-2FD8C0-----------------------------
  5176. INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
  5177.     AX = D8C0h
  5178. Return: AL = FFh if installed
  5179.         CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
  5180.         DH = major version??? (01h for v1.1)
  5181.         DL = minor version??? (01h for v1.1)
  5182.         ES:DI -> private API entry point (see #1547)
  5183. Program: NLCACHE is a disk cache included with NetWare Lite
  5184. SeeAlso: AX=D800h,AX=D880h
  5185.  
  5186. (Table 1547)
  5187. Call NLCACHE/NWCACHE API entry point with:
  5188.     BX = function
  5189.         0000h ???
  5190.         ???
  5191.         Return: CF clear if successful
  5192.                 AX = 0000h
  5193.                 ???
  5194.             CF set on error
  5195.                 AX = error code
  5196.         0001h (NWCACHE only) ???
  5197.         ES:DI -> buffer for ???
  5198.         Return: ???
  5199.         other
  5200.         Return: CF set
  5201.             AX = 0001h (invalid function)
  5202. --------F-2FDA00-----------------------------
  5203. INT 2F - ZyXEL ZFAX - INSTALLATION CHECK
  5204.     AX = DA00h
  5205. Return: AH = enabled state (00h = enabled, 01h = disabled)
  5206.     AL = 5Ah installed
  5207. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  5208.       fax modems.
  5209. Note:    This function, and the other DAxxh functions, may apply only to version
  5210.       1 of the software; see AX=DB00h for the version 2 installation check
  5211. SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h,AX=DB00h
  5212. --------F-2FDA01-----------------------------
  5213. INT 2F - ZyXEL ZFAX - UNINSTALL
  5214.     AX = DA01h
  5215. Return: AL = 00h Success
  5216.          01h Failure
  5217. SeeAlso: AX=DA00h,AX=DB01h
  5218. --------F-2FDA02-----------------------------
  5219. INT 2F - ZyXEL ZFAX - DISABLE
  5220.     AX = DA02h
  5221. Return: AL = 00h
  5222. SeeAlso: AX=DA03h,AX=DB02h
  5223. --------F-2FDA03-----------------------------
  5224. INT 2F - ZyXEL ZFAX - ENABLE
  5225.     AX = DA03h
  5226. Return: AL = 00h
  5227. SeeAlso: AX=DA02h,AX=DB03h
  5228. --------G-2FDA55-----------------------------
  5229. INT 2F U - TRAP.COM - INSTALLATION CHECK
  5230.     AX = DA55h
  5231.     DL = interrupt number
  5232.     DH = ???
  5233. Return: if installed
  5234.         AH = interrupt number
  5235.         AL = ???
  5236.         ES:BX -> ???
  5237. Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
  5238. Note:    a separate copy of TRAP is loaded for each interrupt to be traced; thus
  5239.       the interrupt number is part of the installation check
  5240. --------N-2FDAB2-----------------------------
  5241. INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
  5242.     AX = DAB2h
  5243. Return: AX = 00FFh if installed
  5244.         BX:CX -> MIB table
  5245. Program: BWSNMP is part of the BW-NFS package
  5246. SeeAlso: INT 62/AH=00h"ETHDEV"
  5247. --------F-2FDB00-----------------------------
  5248. INT 2F - ZyXEL ZFAX v2+ - INSTALLATION CHECK
  5249.     AX = DB00h
  5250. Return:    AL = 5Bh if installed (v2.x)
  5251.         ES:BX -> ???
  5252.     AX = 00DBh if installed (v3)
  5253.         ES:BX -> ZFAX configuration table (see #1548)
  5254. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  5255.       fax modems.
  5256. SeeAlso: AX=CBDCh,AX=DA00h,AX=DB01h,AX=DB02h,AX=DB03h
  5257.  
  5258. Format of ZFAX Configuration Table:
  5259. Offset    Size    Description    (Table 1548)
  5260.  00h    WORD    version number (0300h for v3.0)
  5261.  02h    BYTE    reserved
  5262.  03h 70 BYTEs    ZFAX working path
  5263.  49h 128 BYTEs    path to external editor
  5264.  C9h 128 BYTEs    path to external terminal emulator
  5265. 149h 128 BYTEs    path to Ring Shell
  5266. 1C9h 128 BYTEs    path to DOS Shell
  5267. 249h 128 BYTEs    path to Data Shell
  5268. 2C9h 70 BYTEs    path to Chinese font
  5269. 30Fh    BYTE    printer type (see #1549)
  5270. 310h    BYTE    printer port (00h = LPT1, etc.)
  5271. 311h    BYTE    type of graphics adapter
  5272.         (00h auto-detect, 01h VGA, 02h EGA, 03h CGA, 04h Hercules)
  5273. 312h    BYTE    display type
  5274.         (00h auto-detect, 01h LCD, 02h color, 03h mono)
  5275. 313h    BYTE    scan code for ZFAX hotkey
  5276. 314h    BYTE    shift mask for ZFAX hotkey
  5277. 315h    BYTE    tone/pulse dialing (00h tone, 01h pulse)
  5278. 316h    BYTE    Caller ID (00h disabled, 01h enabled)
  5279. 317h    BYTE    Distinctive Ring (00h disabled, 01h enabled)
  5280. 318h    BYTE    normal ring answer type (see #1550)
  5281. 319h    BYTE    Ring 1 answer type (see #1550)
  5282. 31Ah    BYTE    Ring 2 answer type (see #1550)
  5283. 31Bh    BYTE    Ring 3 answer type (see #1550)
  5284. 31Ch    BYTE    COM port for modem
  5285. 31Dh    BYTE    speaker volume (00h-07h)
  5286. 31Eh    BYTE    modem dial timer, seconds
  5287. 31Fh    WORD    user-defined COM port I/O address
  5288. 321h    BYTE    user-defined COM port IRQ number
  5289. 322h 81 BYTEs    dial prefix string
  5290. 373h 79 BYTEs    dial postfix string
  5291. 3C2h    BYTE    ring count until automatic answer
  5292. 3C3h    BYTE    retry count on busy signal
  5293. 3C4h    BYTE    redial delay in seconds
  5294. 3C5h    WORD    system password
  5295. 3C7h    BYTE    reserved
  5296. 3C8h    BYTE    voice file compression format
  5297.         00h CELP at 9600bps
  5298.         01h two-bit ADPCM at 19200bps
  5299.         03h three-bit ADPCM at 28800bps
  5300. 3C9h    BYTE    voice system: DTMF 0 action (see #1551)
  5301. 3CAh    BYTE    voice system: DTMF 1 action
  5302. 3CBh    BYTE    voice system: DTMF 2 action
  5303. 3CCh    BYTE    voice system: DTMF 3 action
  5304. 3CDh    BYTE    voice system: DTMF 4 action
  5305. 3CEh    BYTE    voice system: DTMF 5 action
  5306. 3CFh    BYTE    voice system: DTMF 6 action
  5307. 3D0h    BYTE    voice system: DTMF 7 action
  5308. 3D1h    BYTE    voice system: DTMF 8 action
  5309. 3D2h    BYTE    voice system: DTMF 9 action (see #1551)
  5310. 3D3h    WORD    reserved
  5311. 3D5h 25 BYTEs    local FAX ID to display on page header
  5312. 3EEh 20 BYTEs    local FAX ID sent to remote FAX
  5313. 402h    BYTE    FAX page size
  5314.         00h A4 (210x297mm)
  5315.         01h B4 (250x353mm)
  5316.         02h A3 (297x420mm)
  5317. 403h    BYTE    FAX resolution
  5318.         00h normal (3.85 pixels/mm)
  5319.         01h high (7.7 pixels/mm)
  5320. 404h    BYTE    FAX coding scheme
  5321.         00h 1-D, modified Huffman coding
  5322.         01h 2-D, modified READ coding
  5323. 405h    BYTE    left margin for text in millimeters
  5324. 406h    BYTE    vertical insertion for text in mm (0-20)
  5325. 407h    BYTE    horizontal insertion in mm (0-20)
  5326. 408h    BYTE    maximum text lines per page
  5327. 409h    BYTE    text type (00h ASCII, 01h WordStar-formatted)
  5328. 40Ah    BYTE    PCX image resize (00h disabled, 01h enabled)
  5329. 40Bh    BYTE    AutoPrint (00h disabled, 01h enabled)
  5330. 40Ch    BYTE    cover page (00h disabled, 01h enabled)
  5331. 40Dh 81 BYTEs    cover page logo filename
  5332. 45Eh 65 BYTEs    cover page sender name
  5333. 49Fh    BYTE    print capture (00h disabled, 01h enabled)
  5334. 4A0h    BYTE    send immediately (00h disabled, 01h enabled)
  5335. 4A1h    BYTE    print capture printer port
  5336. 4A2h    BYTE    print capture timer in seconds
  5337. 4A3h    BYTE    scan code for print capture hotkey
  5338. 4A4h    BYTE    shift mask for print capture hotkey
  5339. 4A5h    BYTE    DataShell type
  5340.         00h internal Zmodem, 01h Data Shell, 02h disable
  5341. 4A6h    BYTE    video I/O type
  5342.         00h auto-detect, 01h use BIOS, 02h direct writes
  5343. 4A7h    BYTE    call transfer digits
  5344. 4A8h    WORD    voice recorder maximum time in seconds (0-999)
  5345.  
  5346. (Table 1549)
  5347. Values for ZFAX printer type:
  5348.  00h    EPSON FX (9 pins)
  5349.  01h    EPSON LQ (24 pins)
  5350.  02h    HP Laser Jet II, letter size
  5351.  03h    HP Laser Jet II, legal size
  5352.  04h    HP Laser Jet II, A4 size
  5353.  05h    HP Laser Jet III, letter size
  5354.  06h    HP Laser Jet III, legal size
  5355.  07h    HP Laser Jet III, A4 size
  5356.  
  5357. (Table 1550)
  5358. Values for Ring Answer Type:
  5359.  00h    voice system
  5360.  01h    FAX only
  5361.  02h    Data Shell
  5362.  03h    Ring Shell
  5363.  04h    DOS Shell
  5364.  05h    ignore
  5365.  
  5366. (Table 1551)
  5367. Values for DTMF action:
  5368.  00h    none
  5369.  01h    page operator
  5370.  02h    FaxBack
  5371.  03h    announcement
  5372.  04h    call transfer
  5373.  05h    receive FAX
  5374.  06h    receive data
  5375.  07h    voice mailbox
  5376.  08h    DOS Shell Out
  5377.  09h    Data Shell Out
  5378. --------F-2FDB01-----------------------------
  5379. INT 2F - ZyXEL ZFAX v2+ - UNINSTALL
  5380.     AX = DB01h
  5381. Return: AX = status
  5382.         0000h successful
  5383.         0001h ZFAX is busy
  5384.         0002h another program resident above ZFAX
  5385. Note:    this function unhooks the vectors taken by the ZFAX TSR if they have
  5386.       not been hooked by other TSRs and releases the TSR's memory
  5387.     ZFAX v2.x crashes the contributor's machine when this function is
  5388.       called
  5389. SeeAlso: AX=DA01h,AX=DB00h
  5390. --------F-2FDB02-----------------------------
  5391. INT 2F - ZyXEL ZFAX v2.x - DISABLE
  5392.     AX = DB02h
  5393. Return: AL = 00h
  5394. SeeAlso: AX=DA02h,AX=DB00h,AX=DB03h
  5395. --------F-2FDB03-----------------------------
  5396. INT 2F - ZyXEL ZFAX v2.x - ENABLE
  5397.     AX = DB03h
  5398. Return: AL = 00h
  5399. SeeAlso: AX=DA03h,AX=DB00h,AX=DB02h
  5400. --------F-2FDB10-----------------------------
  5401. INT 2F - ZyXEL ZFAX v3 - EXECUTE ZFAX MAIN MENU
  5402.     AX = DB10h
  5403. --------F-2FDB11-----------------------------
  5404. INT 2F - ZyXEL ZFAX v3 - SEND FAX
  5405.     AX = DB11h
  5406.     DS:SI -> filename including path
  5407.     DS:BX -> remote FAX number
  5408. Return:    AX = status (see #1552)
  5409. SeeAlso: AX=DB12h,AX=DB13h,AX=DB14h,AX=DB20h,AX=DB21h
  5410.  
  5411. (Table 1552)
  5412. Values for ZFAX status:
  5413.  00h    OK
  5414.  01h    invalid DOS function
  5415.  02h    file not found
  5416.  03h    path not found
  5417.  04h    no file handle available
  5418.  05h    access denied by DOS
  5419.  06h    invalid handle
  5420.  07h    disk full
  5421.  10h    printer error
  5422.  11h    no graphics font
  5423.  12h    no ZFAX font
  5424.  20h    DCD dropped while sending
  5425.  21h    not ZyXEL modem
  5426.  22h    busy
  5427.  23h    no response from COM port
  5428.  24h    no carrier
  5429.  25h    no dial tone
  5430.  26h    no answer
  5431.  27h    no response
  5432.  28h    failed to send FAX
  5433.  30h    user aborted
  5434.  40h    critical error on disk
  5435.  50h    parameter error
  5436. --------F-2FDB12-----------------------------
  5437. INT 2F - ZyXEL ZFAX v3 - PRINT FAX
  5438.     AX = DB12h
  5439.     DS:SI -> filename, including path
  5440. Return: AX = status
  5441. SeeAlso: AX=DB11h,AX=DB13h,AX=DB14h
  5442. --------F-2FDB13-----------------------------
  5443. INT 2F - ZyXEL ZFAX v3 - CONVERT FAX
  5444.     AX = DB13h
  5445.     DS:SI -> source filename, including path
  5446.     DS:BX -> destination filename, including path
  5447.     CX = destination file format
  5448.         00h FAX, 01h PCX, 02h TIFF, 03h PRN
  5449. Return: AX = status
  5450. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h,AX=DB22h
  5451. --------F-2FDB14-----------------------------
  5452. INT 2F - ZyXEL ZFAX v3 - VIEW FAX
  5453.     AX = DB14h
  5454.     DS:SI -> source filename, including path
  5455. Return: AX = status
  5456. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h
  5457. --------F-2FDB20-----------------------------
  5458. INT 2F - ZyXEL ZFAX v3 - POLL FAX
  5459.     AX = DB20h
  5460.     DS:SI -> remote FAX number
  5461. Return: AX = status
  5462. SeeAlso: AX=DB11h,AX=DB21h
  5463. --------F-2FDB21-----------------------------
  5464. INT 2F - ZyXEL ZFAX v3 - SEND VOICE
  5465.     AX = DB21h
  5466.     DS:SI -> filename including path
  5467.     DS:BX -> remote phone number
  5468. Return:    AX = status
  5469. SeeAlso: AX=DB11h,AX=DB20h,AX=DB22h,AX=DB23h,AX=DB24h
  5470. --------F-2FDB22-----------------------------
  5471. INT 2F - ZyXEL ZFAX v3 - CONVERT VOICE FILE
  5472.     AX = DB22h
  5473.     DS:SI -> source filename, including path
  5474.     DS:BX -> destination filename, including path
  5475.     CX = destination format
  5476.         00h two-bit ADPCM, 01h three-bit ADPCM, 02h VOC
  5477. Return:    AX = status
  5478. SeeAlso: AX=DB13h,AX=DB20h,AX=DB21h,AX=DB23h
  5479. --------F-2FDB23-----------------------------
  5480. INT 2F - ZyXEL ZFAX v3 - RECORD VOICE FILE
  5481.     AX = DB23h
  5482.     DS:SI -> destination filename, including path
  5483.     CX = recording channel (0 = telephone line, 1 = microphone/speaker)
  5484.     DX = voice file format
  5485.         00h CELP, 01h two-bit ADPCM, 02h three-bit ADPCM
  5486. Return: AX = status
  5487. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  5488. --------F-2FDB24-----------------------------
  5489. INT 2F - ZyXEL ZFAX v3 - PLAY VOICE FILE
  5490.     AX = DB24h
  5491.     DS:SI -> name of voice file, including path
  5492.     CX = playback channel (0 = telephone line, 1 = microphone/speaker)
  5493. Return: AX = status
  5494. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  5495. --------F-2FDB25-----------------------------
  5496. INT 2F - ZyXEL ZFAX v3 - ANSWER MODEM WITH VOICE SYSTEM
  5497.     AX = DB25h
  5498. Return: AX = status
  5499. SeeAlso: AX=DB21h,AX=DB22h,AX=DB26h,AX=DB27h,AX=DB28h
  5500. --------F-2FDB26-----------------------------
  5501. INT 2F - ZyXEL ZFAX v3 - DIAL PHONE
  5502.     AX = DB26h
  5503.     DS:SI -> remote phone number
  5504. Return: AX = status
  5505. SeeAlso: AX=DB25h
  5506. --------F-2FDB27-----------------------------
  5507. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX - ANSWER MODEM AND SET TO FAX MODE
  5508.     AX = DB27h
  5509. Return: AX = status
  5510. SeeAlso: AX=DB25h,AX=DB28h
  5511. --------F-2FDB28-----------------------------
  5512. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX DATA - ANSWER MODEM IN MULTI-AUDIO MODE
  5513.     AX = DB28h
  5514. Return: AX = status
  5515. SeeAlso: AX=DB25h,AX=DB27h,AX=DB31h
  5516. --------F-2FDB31-----------------------------
  5517. INT 2F - ZyXEL ZFAX v3 - SEND DATA - DIAL NUMBER AND UPLOAD FILE WITH ZMODEM
  5518.     AX = DB31h
  5519.     DS:SI -> source file name, including path
  5520.     DS:BX -> remote data number
  5521. Return: AX = status
  5522. SeeAlso: AX=DB00h,AX=DB28h
  5523. --------F-2FDB40-----------------------------
  5524. INT 2F - ZyXEL ZFAX v3 - INTERNAL TERMINAL
  5525.     AX = DB40h
  5526. Return: AX = status
  5527. SeeAlso: AX=DB00h
  5528. --------K-2FDC00-----------------------------
  5529. INT 2F - GOLD.COM - INSTALLATION CHECK
  5530.     AX = DC00h
  5531. Return: AL = state
  5532.         00h not installed
  5533.         FFh installed
  5534. Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the code
  5535.       for F1; the purpose is to improve Kermit's VTxxx emulation
  5536. --------K-2FDC01-----------------------------
  5537. INT 2F - GOLD.COM - GET STATE
  5538.     AX = DC01h
  5539. Return: AL = status
  5540.         00h off
  5541.         01h on
  5542. SeeAlso: AX=DC00h,AX=DC02h
  5543. --------K-2FDC02-----------------------------
  5544. INT 2F - GOLD.COM - SET STATE
  5545.     AX = DC02h
  5546.     DL = new state
  5547.         00h off
  5548.         01h on
  5549. Return: AL = 00h (OK)
  5550. SeeAlso: AX=DC01h
  5551. --------t-2FDD-------------------------------
  5552. INT 2F - CappaCom programs - API
  5553.     AH = DDh
  5554.     AL = 00h general installation check
  5555.         Return: AL = FFh if any CappaCom programs are resident
  5556.     AL = FEh get info
  5557.         Return: ES:BX -> TSR info list (see #1553)
  5558.     AL = program identifier
  5559.         BH = function
  5560.         FDh get version
  5561.             Return: BX = version
  5562.         FFh installation check
  5563.             Return: AL = FFh if installed
  5564.                 BX = version
  5565.                 ES = segment of resident code
  5566.         others vary by program
  5567. Return: AL = status
  5568.         bit 7 set on error
  5569.         AL = 81h unknown function
  5570. Note:    CappaCom was originally SoftCom but changed its name due to a trademark
  5571.       conflict
  5572. Index:    installation check;SoftCom programs
  5573. Index:    installation check;CappaCom programs
  5574.  
  5575. Format of CappaCom TSR info list:
  5576. Offset    Size    Description    (Table 1553)
  5577.  00h  9 BYTEs    blank-padded ASCIZ program name
  5578.  09h    BYTE    program ID
  5579.  0Ah    WORD    program's PSP segment
  5580.  0Ch    WORD    program version (major in high byte)
  5581.  0Eh    DWORD    pointer to next item in info list or 0000h:0000h
  5582.  12h    BYTE    number of interrupts hooked
  5583.  13h  5 BYTEs    interrupt numbers hooked by program
  5584.  18h  8 BYTEs    reserved
  5585. ----------2FDD-------------------------------
  5586. INT 2F - MIXFIX.EXE - API
  5587.     AH = DDh
  5588.     AL = function
  5589.         00h installation check
  5590.         Return: AX = 00DDh if installed
  5591.                 BX = version (BH = major, BL = minor)
  5592.         41h/61h get From: address
  5593.         Return: AX = 0001h
  5594.             ES:BX -> ASCIZ 4d address of mail sender ("1:2/3.4")
  5595.         49h/69h get To: address
  5596.         Return: AX = 0001h
  5597.             ES:BX -> ASCIZ 4d address of recipient ("1:2/3.4")
  5598.         4Ah/6Ah get subject of mail
  5599.         Return: AX = 0001h
  5600.             ES:BX -> ASCIZ subject of handled mail
  5601.         4Dh/6Dh get mail name
  5602.         Return: AX = 0001h
  5603.             ES:BX -> ASCIZ full name of current mail file
  5604.         4Eh/6Eh get From: field
  5605.         Return: AX = 0001h
  5606.             ES:BX -> ASCIZ From: field of mail (mail sender's name)
  5607. Program: MIXFIX by "KIV without Co" is a FidoNet mail robot which may execute
  5608.       other programs for mail handling.  The called programs may use the
  5609.       services described here to retrieve information about the mail being
  5610.       handled.
  5611. Index: installation check;MIXFIX.EXE
  5612. --------d-2FDD--BX7844-----------------------
  5613. INT 2F - xDISK v3.32+ - INSTALLATION CHECK
  5614.     AH = DDh
  5615.     BX = 7844h ('xD')
  5616.     CX = 4953h ('IS')
  5617.     DX = 4B3Fh ('K?')
  5618.     AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
  5619.     ES:DI -> 25-byte data buffer (see #1554)
  5620. Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
  5621.        BX = 87BBh
  5622.        DX = B4C0h
  5623.        ES:DI buffer filled
  5624.     CX,CF destroyed
  5625. SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
  5626.  
  5627. Format of xDISK data buffer:
  5628. Offset    Size    Description    (Table 1554)
  5629.  00h    DWORD    pointer to ASCIZ driver signature "xDISK unit: X"
  5630.  04h    BYTE    flag: 01h if disk linked to DOS, 00h if unlinked
  5631.  05h    BYTE    flag: 01h if write protected, 00h if not
  5632.  06h    BYTE    flag: 01h if root directory full, 00h if not
  5633.  07h    BYTE    flag: 01h if free space uncompacted, 00h if compacted
  5634.  08h    BYTE    resizing state: 00h not resizable, 01h resized, 80h resizable
  5635.  09h    BYTE    flag: 01h inelastic resizable disk, 00h elastic
  5636.  0Ah  2 BYTEs    reserved
  5637.  0Ch    BYTE    flag: 01h collapsed disk, 00h not collapsed
  5638.  0Dh    BYTE    flag: 01h using all EMS, 00h some EMS free
  5639.  0Eh    BYTE    flag: 01h password enabled, 00h disabled
  5640.  0Fh    BYTE    flag: 01h password audio feedback, 00h no feedback
  5641.  10h    BYTE    flag: 01h password video feedback, 00h no feedback
  5642.  11h    BYTE    flag: 01h confirm changes, 00h no confirmation
  5643.  12h    BYTE    flag: 01h terse display, 00h verbose display
  5644.  13h    BYTE    flag: 01h click speaker on disk access, 00h no click
  5645.  14h    BYTE    flag: 01h flash icon on disk access, 00h no icon flash
  5646.  15h    BYTE    FAT entry size: 00h 12-bit, FFh 16-bit
  5647.  16h    WORD    count of open files in RAM disk
  5648.  18h    BYTE    unused
  5649. --------Q-2FDE00BX4456-----------------------
  5650. INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
  5651.     AX = DE00h
  5652.     BX = 4456h ("DV")
  5653.     CX = 5844h ("XD")
  5654.     DX = 4931h ("I1")
  5655. Return: AL = FFh if installed (even if other registers do not match)
  5656.     if BX,CX, and DX were as specified on entry,
  5657.         BX = 4845h ("HE")
  5658.         CX = 5245h ("RE")
  5659.         DX = 4456h ("DV")
  5660. Range:    AH=C0h to AH=FFh, selected by scanning AH=DEh-FFh, then AH=C0h-DDh
  5661. Note:    the XDI handler should not issue any DOS or BIOS calls, nor should it
  5662.       issue DESQview API calls other than those allowed from hardware ints
  5663. SeeAlso: AX=DE02h,INT 15/AX=5400h
  5664. --------Q-2FDE01-----------------------------
  5665. INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
  5666.     AX = DE01h
  5667.     BX = driver ID
  5668.     other registers as needed by driver
  5669. Notes:    XDI drivers should pass this call through to previous handler if ID
  5670.       does not match
  5671.     DESQview never calls this function
  5672. --------Q-2FDE01BX4450-----------------------
  5673. INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
  5674.     AX = DE01h
  5675.     BX = 4450h ("DP")
  5676.     CX = 4D49h ("MI")
  5677.     DX = 3039h ("09")
  5678. Return: AL = FFh if installed
  5679.         BX = 4D42h ("MB")
  5680.         CX = 4921h ("I!")
  5681.         DX = 8F4Fh
  5682.         ES:DI -> filename of DPMI host overlay
  5683. Note:    the installation check consists of testing for the existence of the
  5684.       character device QDPMI$$$
  5685. SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
  5686. Index:    installation check;QDPMI
  5687. --------U-2FDE01BX5242-----------------------
  5688. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
  5689.     AX = DE01h
  5690.     BX = 5242h ("RB")
  5691.     CX:DX = program identifier
  5692.         656F7000h ("eop",0) for DVeop
  5693. Return: AX = 5242h ("RB") if installed
  5694.         ES:BX -> data or entry point
  5695.         CX = version number (CH = major, CL = minor)
  5696.  
  5697. (Table 1555)
  5698. Call DVeop entry point with:
  5699.     ES:DI -> callback address or 0000h:0000h to remove callback
  5700. Return: AX = status
  5701.         0000h failed (callback table full or attempted to remove non-
  5702.           existent callback)
  5703.         0001h successful
  5704.         ES:DI -> chaining address
  5705.     BX,CX,DX destroyed
  5706. Notes:    the callback function is called with a simulated interrupt when the
  5707.       DESQview window containing it is closed; it should perform all
  5708.       necessary cleanup and then perform a FAR jump to the chaining address
  5709.       or an IRET if the chaining address is 0000h:0000h
  5710.     if the program wishes to remove itself before the window is closed, it
  5711.       should call the DVeop entry point with the previously returned
  5712.       chaining address and ignore the returned chaining address.
  5713. --------U-2FDE01BX7474-----------------------
  5714. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
  5715.     AX = DE01h
  5716.     BX = 7474h
  5717.     CL = function
  5718.         00h installation check
  5719.         Return: AL = FFh
  5720.         01h get process handle
  5721.         DX = keys on Open Window menu (DL = first, DH = second)
  5722.         Return: AX = process handle or 0000h if not running
  5723.         02h (v1.3+) set TMAN handle
  5724.         DX = TMAN process handle
  5725.         03h (v1.3+) set open keys to ignore on next CL=01h call
  5726.         DX = keys on Open Window menu (DL = first, DH = second)
  5727. Return: BX = 4F4Bh ("OK")
  5728.     DL destroyed
  5729. Note:    DVTXDI is distributed as part of the shareware products DVTree (DOS
  5730.      shell/DESQview process manager) and DVTMAN by Mike Weaver
  5731. Index:    installation check;DVTXDI
  5732. --------U-2FDE01BX7575-----------------------
  5733. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
  5734.     AX = DE01h
  5735.     BX = 7575h
  5736.     CX = function
  5737.         0000h installation check
  5738.         Return: AX = 00FFh if installed
  5739.         0001h turn on notification (currently unused)
  5740.         Return: AX = 0001h
  5741.         0002h turn off notification (currently unused)
  5742.         Return: AX = 0001h
  5743.         0003h get process information
  5744.         Return: AX = status
  5745.                 0000h failed
  5746.                 0001h successful
  5747.                 BX = last instantaneous time slice
  5748.                     in 1/100s (v1.10)
  5749.                     in 1/18s (v1.11+)
  5750.                 CX = number of processes
  5751.                 DX = number of "(starting)" records (v2.00+)
  5752.                 SI = number of records in process info array
  5753.                       (v2.00+) (always 15 for v1.x)
  5754.                 ES:DI -> process info array (see #1556,#1557)
  5755.         0004h get version
  5756.         Return: AH = major version
  5757.             AL = minor version
  5758.         0005h (v1.10+) get time since DESQview started
  5759.         Return: DX:AX = 1/100s since DV start (v1.10)
  5760.             DX:AX = 1/18s since DV start (v1.11+)
  5761.         0006h (v1.10+) get number of task switches
  5762.         Return: DX:AX = total task switches
  5763.             CX = task switches in last instantaneous interval
  5764. Notes:    DVSIXDI is part of the DVSI (DESQview System Information) package by
  5765.       Daniel J. Bodoh
  5766.     for v1.00, function 0003h allocates common memory, which the caller
  5767.       must deallocate after reading the process information; only the
  5768.       currently used records are placed in the buffer
  5769.     for v1.10+, function 0003h merely returns a pointer to the internal
  5770.       array of process information; the caller should make a copy of the
  5771.       array while inside a critical section (see INT 15/AX=101Bh).    Only
  5772.       those records with bit 7 of the first byte set are valid.
  5773. Index:    installation check;DVSIXDI
  5774.  
  5775. Format of DVSIXDI v1.00 information for one process:
  5776. Offset    Size    Description    (Table 1556)
  5777.  00h    BYTE    flags
  5778.         bit 7: process slot is valid
  5779.  01h    WORD    offset into DESQVIEW.DVO of program's record if started from
  5780.           Open Windows menu, else undefined
  5781.  03h    WORD    Switch Windows window number
  5782.  05h    WORD    segment of process handle
  5783.  07h    WORD    number of tasks owned by process
  5784.  09h    WORD    mapping context of process (see INT 15/AX=1016h)
  5785.  0Bh    DWORD    hook for other programs
  5786.  
  5787. Format of DVSIXDI v1.10-v2.00 information for one process:
  5788. Offset    Size    Description    (Table 1557)
  5789.  00h    BYTE    process flags (see #1558)
  5790.  01h    WORD    Open Window keys
  5791.  03h    WORD    Switch Windows number
  5792.  05h    WORD    segment of process handle
  5793.  07h    WORD    number of tasks for process
  5794.  09h    WORD    process mapping context
  5795.  0Bh    DWORD    time process started (relative to start of DESQview)
  5796.  0Fh    DWORD    time process last got CPU (relative to start of DESQview)
  5797.  13h    DWORD    time process last gave up CPU (relative to start of DESQview)
  5798.  17h    DWORD    total CPU time since process started
  5799.  1Bh    DWORD    CPU time at start of current instantaneous interval
  5800.  1Fh    DWORD    CPU time in current instantaneous interval
  5801.  23h    DWORD    hook for other programs
  5802. Note:    all times are in 1/100s for v1.10, in 1/18s for v1.11+
  5803.  
  5804. Bitfields for DVSIXDI process flags:
  5805. Bit(s)    Description    (Table 1558)
  5806.  7    valid record
  5807.  6    (v2.00+) record is allocated; if bit 7 clear, process is "(starting)"
  5808.       and only offsets 01h and 09h are valid
  5809.  5    (v2.00+) this app currently owns the CPU
  5810.  4    reserved (0)
  5811.  3    DESQview system task
  5812.  2    reserved (0)
  5813.  1    task has keyboard (currently unused)
  5814.  0    task swapped out (currently unused)
  5815. --------Q-2FDE01BXFFFE-----------------------
  5816. INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
  5817.     AX = DE01h
  5818.     BX = FFFEh
  5819.     CX = 4D47h ("MG")
  5820.     DX = 0052h (0,"R")
  5821. Return: AL = FFh
  5822.     DX = 584Dh
  5823. --------Q-2FDE02-----------------------------
  5824. INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
  5825.     AX = DE02h
  5826.     BX = mapping context of DESQview
  5827.     DX = handle of DESQview system task
  5828. Note:    driver should pass this call to previous handler after doing its work
  5829. SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
  5830. --------Q-2FDE03-----------------------------
  5831. INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
  5832.     AX = DE03h
  5833.     BX = mapping context of DESQview
  5834.     DX = handle of DESQview system task
  5835. Notes:    driver should pass this call to previous handler before doing its work
  5836.     DESQview makes this call when it is exiting, but before unhooking any
  5837.       interrupt vectors
  5838. SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
  5839. --------Q-2FDE04-----------------------------
  5840. INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
  5841.     AX = DE04h
  5842.     BX = mapping context of new process (see INT 15/AX=1016h)
  5843.     DX = handle of process
  5844. Return: nothing
  5845. Notes:    XMS XDI handler (installed by default) allocates a 22-byte record
  5846.       (see #1559) from "common" memory to control access to XMS memory
  5847.     all DOS, BIOS, and DV API calls are valid in handler
  5848.     driver should pass this call to previous handler after processing it
  5849. SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
  5850.  
  5851. Format of XMS XDI structure:
  5852. Offset    Size    Description    (Table 1559)
  5853.  00h    DWORD    pointer to 10-byte record???
  5854.  04h    DWORD    pointer to next XMS XDI structure
  5855.  08h    WORD    mapping context
  5856.  0Ah    BYTE    ???
  5857.  0Bh  5 BYTEs    XMS entry point to return for INT 2F/AX=4310h
  5858.         (FAR jump to next field)
  5859.  10h  6 BYTEs    FAR handler for XMS driver entry point
  5860.         (consists of a FAR CALL followed by RETF)
  5861. --------Q-2FDE05-----------------------------
  5862. INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
  5863.     AX = DE05h
  5864.     BX = mapping context of process (see INT 15/AX=1016h)
  5865.     DX = handle of last task in process
  5866. Return: nothing
  5867. Notes:    XMS XDI handler releases the structure allocated by AX=DE04h
  5868.     driver should pass this call to previous handler before processing it
  5869.     all DOS, BIOS, and DV API calls except those generating a task switch
  5870.       are valid in handler
  5871. SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
  5872. --------Q-2FDE06-----------------------------
  5873. INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
  5874.     AX = DE06h
  5875.     BX = mapping context of process containing task
  5876.     DX = handle of new task
  5877. Notes:    driver should pass this call to previous handler after processing it
  5878.     all DOS, BIOS, and DV API calls are valid in handler
  5879. --------Q-2FDE07-----------------------------
  5880. INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
  5881.     AX = DE07h
  5882.     BX = mapping context of process containing task
  5883.     DX = handle of task
  5884. Notes:    driver should pass this call to previous handler before processing it
  5885.     all DOS, BIOS, and DV API calls except those generating a task switch
  5886.       are valid in handler
  5887. SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
  5888. --------Q-2FDE08-----------------------------
  5889. INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
  5890.     AX = DE08h
  5891.     BX = mapping context of task being switched from (see INT 15/AX=1016h)
  5892.     DX = handle of task being switched from
  5893. Notes:    invoked prior to task swap, interrupts, etc
  5894.     driver should pass this call to previous handler after processing it
  5895. SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
  5896. --------Q-2FDE09-----------------------------
  5897. INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
  5898.     AX = DE09h
  5899.     BX = mapping context of task being switched to (see INT 15/AX=1016h)
  5900.     DX = handle of task being switched to
  5901. Notes:    state is restored except for interrupts
  5902.     driver should pass this call to previous handler before processing it
  5903. SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
  5904. --------Q-2FDE0A-----------------------------
  5905. INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
  5906.     AX = DE0Ah
  5907.     BX = mapping context of task receiving focus
  5908.     DX = handle of running task
  5909. Notes:    driver should pass this call to previous handler before processing it
  5910.     this call often occurs inside a keyboard interrupt
  5911.     DV 2.42 does not provide this call to XDI handlers running inside a
  5912.       window; instead, it directly calls the INT 2F handler which was
  5913.       active at the time DV started
  5914. SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
  5915. --------Q-2FDE0B-----------------------------
  5916. INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
  5917.     AX = DE0Bh
  5918.     BX = mapping context of DESQview system task
  5919.     CX = number of system memory paragraphs required for the use of all
  5920.           XDI drivers (DV will add this to system memory in DVP buffer)
  5921.     DX = handle of DESQview system task
  5922.     SI = mapping context of new process if it starts
  5923.     ES:DI -> DVP buffer
  5924. Return: CX incremented as needed
  5925. Notes:    once DV invokes this function, the DVP buffer contents may be changed
  5926.     driver should pass this call to previous handler before processing it
  5927. --------Q-2FDE0C-----------------------------
  5928. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
  5929.     AX = DE0Ch
  5930.     BX = mapping context of task being swapped out (see INT 15/AX=1016h)
  5931.     DX = handle of DESQview system task
  5932. Note:    driver should pass this call to previous handler after processing it
  5933. --------Q-2FDE0D-----------------------------
  5934. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
  5935.     AX = DE0Dh
  5936.     BX = mapping context of process just swapped in (see INT 15/AX=1016h)
  5937.     DX = handle of DESQview system task
  5938. Note:    driver should pass this call to previous handler before processing it
  5939. --------Q-2FDE0E-----------------------------
  5940. INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
  5941.     AX = DE0Eh
  5942.     BX = mapping context of DESQview system task
  5943.     DX = handle of DESQview system task
  5944.     SI = mapping context of failed process (same as for call to AX=DE0Bh)
  5945. Note:    driver should pass this call to previous handler after processing it
  5946. --------Q-2FDE0F-----------------------------
  5947. INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
  5948.     AX = DE0Fh
  5949. Note:    DESQview 2.50+ calls this function just before it completes its
  5950.       initialization.  At the time of the call, DESQview has not yet
  5951.       changed any interrupt vectors
  5952. SeeAlso: AX=DE02h
  5953. --------Q-2FDE10-----------------------------
  5954. INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
  5955.     AX = DE10h
  5956.     BX = mapping context of process (see INT 15/AX=1016h)
  5957.     DX = task handle of process
  5958. Note:    DESQview 2.50+ calls this function before it frees the task; it is
  5959.       similar to AX=DE07h but allows the XDI handler to make calls which
  5960.       cause context switches
  5961. SeeAlso: AX=DE06h,AX=DE07h
  5962. --------c-2FDF00-----------------------------
  5963. INT 2F - HyperWare programs - INSTALLATION CHECK
  5964.     AX = DF00h
  5965.     BX = product code (see #1560)
  5966.     CX = 0000h
  5967.     DX = 0000h
  5968. Return: AL = status
  5969.         00h not installed
  5970.         FFh multiplex number in use
  5971.         CX = 5948h ('YH') if selected product installed
  5972.         ---HyperDisk---
  5973.         BX = code segment of resident portion
  5974.         DX = HyperDisk local data version
  5975. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5976. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  5977. SeeAlso: INT 13/AX=8EEDh
  5978. Index:    installation check;HyperDisk|installation check;HyperStb
  5979. Index:    installation check;HyperKey|installation check;HyperScreen
  5980. Index:    HyperDisk;installation check|HyperStb;installation check
  5981. Index:    HyperKey;installation check|HyperScreen;installation check
  5982.  
  5983. (Table 1560)
  5984. Values for HyperWare product code:
  5985.  4248h    ('BH') HyperStb
  5986.  4448h    ('DH') HyperDisk v4.20+
  5987.  4B48h    ('KH') HyperKey
  5988.  5348h    ('SH') HyperScreen
  5989. ----------2FDF00BX5445-----------------------
  5990. INT 2F U - TELTSR.COM - INSTALLATION CHECK
  5991.     AX = DF00h
  5992.     BX = 5445h ('TE')
  5993.     CX = 4C54h ('LT')
  5994.     DX = 5352h ('SR')
  5995. Return: BX = 5454h ('TT') if installed
  5996.     CX = 494Eh ('IN') if installed
  5997.     DX = 5454h ('ST') if installed
  5998. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  5999. Range:    AH=???h to ???h, selected automatically
  6000. SeeAlso: AX=DF01h"TELTSR",AX=DF02h"TELTSR"
  6001. --------c-2FDF01BX4448-----------------------
  6002. INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
  6003.     AX = DF01h
  6004.     BX = 4448h ('DH')
  6005. Return: AX = 0000h if function supported
  6006.         BX = number of cache buffers in use
  6007.         CX = number of cache buffers which have been modified
  6008.         DL = caching flags (see #1561)
  6009. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  6010. SeeAlso: AX=DF00h,AX=DF02h
  6011.  
  6012. Bitfields for HyperDisk caching flags:
  6013. Bit(s)    Description    (Table 1561)
  6014.  0    staged writes enabled for floppy disks
  6015.  1    staged writes enabled for hard disks
  6016.  2    writes verified on floppy disks
  6017.  3    writes verified on hard disks
  6018.  4    reserved (0)
  6019.  5    reserved (0)
  6020.  6    floppy caching enabled
  6021.  7    all caching functions enabled
  6022. ----------2FDF01-----------------------------
  6023. INT 2F U - TELTSR.COM - ???
  6024.     AX = DF01h
  6025.     ???
  6026. Return: ???
  6027. SeeAlso: AX=DF00h"TELTSR",AX=DF02h"TELTSR"
  6028. --------c-2FDF02BX4448-----------------------
  6029. INT 2F - HyperDisk v4.50+ - SET CACHE STATE
  6030.     AX = DF02h
  6031.     BX = 4448h ('DH')
  6032.     DL = new caching flags (see #1561)
  6033. Return: AX = 0000h if supported
  6034.         BX = number of cache buffers in use
  6035.         CX = number of cache buffers which have been modified
  6036.         DL = previous caching flags (see #1561)
  6037. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  6038. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  6039. SeeAlso: AX=DF00h,AX=DF01h
  6040. ----------2FDF02-----------------------------
  6041. INT 2F U - TELTSR.COM - ???
  6042.     AX = DF02h
  6043.     ???
  6044. Return: ???
  6045. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  6046. SeeAlso: AX=DF00h"TELTSR",AX=DF01h"TELTSR"
  6047. --------U-2FE000-----------------------------
  6048. INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
  6049.     AX = E000h
  6050. Return: AX = 4A52h ("JR") if present
  6051. Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
  6052.       apparent DOS version analogously to MS-DOS SETVER
  6053. Note:    this installation check differs from the usual one of returning AL=FFh
  6054. SeeAlso: AX=E001h,INT 21/AH=52h
  6055. --------K-2FE000DX5354-----------------------
  6056. INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
  6057.     AX = E000h
  6058.     DX = 5354h ("ST")
  6059. Return: AL = FFh if installed
  6060.         BX = version (BH = major, BL = BCD minor)
  6061.         DX = segment of resident code
  6062. Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
  6063. --------U-2FE001-----------------------------
  6064. INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
  6065.     AX = E001h
  6066. Return: AH = major version
  6067.     AL = minor version
  6068. SeeAlso: AX=E000h
  6069. --------U-2FE002-----------------------------
  6070. INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
  6071.     AX = E002h
  6072. Return: AL = FFh if successful
  6073.         BH = major DOS version
  6074.         BL = minor DOS version
  6075.         CH = DOS version flag
  6076.         CL = OEM number
  6077.         DH = major DR-DOS version number (FFh if unknown)
  6078.         DL = minor DR-DOS version number (FFh if unknown)
  6079. SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
  6080. --------U-2FE003-----------------------------
  6081. INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
  6082.     AX = E003h
  6083.     BH = new major DOS version
  6084.     BL = new minor DOS version
  6085.     CH = new DOS version flag
  6086.     CL = new DOS revision number
  6087.     DH = new OEM number
  6088. SeeAlso: AX=E002h
  6089. --------U-2FE004-----------------------------
  6090. INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
  6091.     AX = E004h
  6092. Return: AL = FFh if successful
  6093. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  6094. --------U-2FE005-----------------------------
  6095. INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
  6096.     AX = E005h
  6097. Return: AL = FFh if successful
  6098. SeeAlso: AX=E000h,AX=E004h,AX=E006h
  6099. --------U-2FE006-----------------------------
  6100. INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
  6101.     AX = E006h
  6102. Return: AL = FFh if successful
  6103.         BL = status
  6104.         01h resident and active
  6105.         02h resident and inactive
  6106. --------U-2FE007-----------------------------
  6107. INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
  6108.     AX = E007h
  6109. Return: AL = FFh if successful
  6110.         BL = status
  6111.         00h if TaskMAX not loaded before SETDRVER
  6112.         FFh if TaskMAX was loaded before SETDRVER
  6113. SeeAlso: AX=E003h
  6114. --------U-2FE0-------------------------------
  6115. INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
  6116.     AH = E0h
  6117.     AL = 08h-10h
  6118. --------K-2FE100-----------------------------
  6119. INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
  6120.     AX = E100h
  6121. Return: AX = 0001h if installed
  6122.         DS:SI -> ASCIZ hotkey name
  6123.         DS:DI -> ASCIZ recording filename
  6124. Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
  6125.       by P2 Enterprises
  6126. SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
  6127. Index:    hotkeys;Phantom2
  6128. --------K-2FE101-----------------------------
  6129. INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
  6130.     AX = E101h
  6131.     BX = function mask (see #1562)
  6132.     CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
  6133.     DS:DX -> ASCIZ filespec if BX bit 7 set
  6134. SeeAlso: AX=E100h
  6135. Index:    hotkeys;Phantom2
  6136.  
  6137. Bitfields for Phantom2 function mask:
  6138. Bit(s)    Description    (Table 1562)
  6139.  0    record
  6140.  1    play
  6141.  2    QuickPlay
  6142.  3    loop
  6143.  4    mode display toggle
  6144.  5    sound toggle
  6145.  6    set hotkey
  6146.  7    set filespec
  6147. --------K-2FE102-----------------------------
  6148. INT 2F - Phantom2 v1.1+ - UNINSTALL
  6149.     AX = E102h
  6150. Return: AX = status
  6151.         0001h removal successful
  6152.         0002h not installed as TSR
  6153.         FFFFh disabled but not removed
  6154. SeeAlso: AX=E100h
  6155. --------K-2FE103-----------------------------
  6156. INT 2F - Phantom2 v2.8 - SET ??? FLAG
  6157.     AX = E103h
  6158. Return: AX = 0001h
  6159. SeeAlso: AX=E100h
  6160. --------y-2FE200-----------------------------
  6161. INT 2F - SecureDevice - LOGIN TO DRIVE
  6162.     AX = E200h
  6163.     DL = drive number (0 = A:)
  6164.     DS:SI -> 104-byte key
  6165. Return: AL = status
  6166.         00h unable to determine key's validity
  6167.         01h key is valid
  6168.         FFh key is invalid
  6169. Program: SecureDevice is a copylefted device driver by Max Loewenthal and
  6170.       Arthur Helwig which turns one or more disk files into encrypted
  6171.       logical drives
  6172. SeeAlso: AX=E201h,AX=E203h,AX=E209h
  6173. --------y-2FE201-----------------------------
  6174. INT 2F - SecureDevice - GET INFORMATION
  6175.     AX = E201h
  6176.     DX = driver index (0000h = first loaded)
  6177. Return: AL = number of volumes handled by driver
  6178.     DL = drive number of first volume (00h = A:)
  6179. SeeAlso: AX=E200h,AX=E203h,AX=E209h
  6180. --------y-2FE203-----------------------------
  6181. INT 2F - SecureDevice - DESTROY PASSWORD (LOGOUT FROM DRIVE)
  6182.     AX = E203h
  6183.     DL = drive number (00h = A:) or FFh for all drives
  6184. Return: nothing
  6185. SeeAlso: AX=E200h,AX=E209h
  6186. --------y-2FE209DX0000-----------------------
  6187. INT 2F - SecureDevice - INSTALLATION CHECK
  6188.     AX = E209h
  6189.     DX = 0000h
  6190. Return: AX = 1DEAh if installed
  6191.         DX = number of drivers installed
  6192. --------K-2FE300-----------------------------
  6193. INT 2F - ANARKEY.COM - INSTALLATION CHECK
  6194.     AX = E300h
  6195. Return: AL = state
  6196.         00h not installed
  6197.         FEh if installed but suspended (v3.0+)
  6198.         FFh installed
  6199. Program: ANARKEY.COM is a commandline recall program by Steven Calwas
  6200. Range:    AH=C0h to AH=FFh, selected by commandline switch
  6201. SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
  6202. SeeAlso: AX=E307h,INT 66"Newkey"
  6203. --------V-2FE300-----------------------------
  6204. INT 2F - Blank - INSTALLATION CHECK
  6205.     AX = E300h
  6206. Return: AL = FFh if installed
  6207.         ES = resident code segment
  6208. Program: Blank is a shareware screen blanker by Yonah Schmeidler
  6209. Note:    AH=E3h is the default, which may be reconfigured by the installation
  6210.       program in the registered version
  6211. SeeAlso: AH=93h,AX=C050h,INT 14/AX=AA01h
  6212. Index:    screen saver;Blank
  6213. --------K-2FE301-----------------------------
  6214. INT 2F U - ANARKEY.COM v2+ - GET ???
  6215.     AX = E301h
  6216. Return: DX:BX -> ??? (see #1563,#1564)
  6217. SeeAlso: AX=E300h
  6218.  
  6219. Format of returned data structure for ANARKEY v2.0:
  6220. Offset    Size    Description    (Table 1563)
  6221.  -7   7 BYTEs    signature ('ANARKEY')
  6222.  00h    WORD    ??? (I see 0001h in v2.0)
  6223.  02h    WORD    ??? (I see 0001h in v2.0)
  6224.  04h    WORD    ??? (I see 0 in v2.0)
  6225.  06h    WORD    PSP segment of next program loaded
  6226.  
  6227. Format of returned data structure for ANARKEY v3+:
  6228. Offset    Size    Description    (Table 1564)
  6229.  -1    BYTE    multiplex number
  6230.  00h    WORD    ??? (I see 0001h in v3.0-4.0)
  6231.  02h    WORD    ??? (I see 0001h in v3.0-4.0)
  6232.  04h    BYTE    ??? (I see 0 in v3.0-4.0)
  6233.  05h    WORD    PSP segment of next program loaded
  6234. --------K-2FE302-----------------------------
  6235. INT 2F U - ANARKEY.COM v3+ - ???
  6236.     AX = E302h
  6237.     BL = ???
  6238. Return: ???
  6239. SeeAlso: AX=E300h
  6240. --------K-2FE303-----------------------------
  6241. INT 2F U - ANARKEY.COM v3+ - ANARKMD API
  6242.     AX = E303h
  6243.     BL = function
  6244.         01h toggle insert mode
  6245.         02h display contents of history buffer
  6246.         03h write history buffer to file
  6247.         ES:DX -> file name
  6248.         04h clear history buffer
  6249.         05h undefine all aliases
  6250.         06h show aliases
  6251.         07h list programs using Unix switchar
  6252.         08h jump to bottom of history buffer
  6253.         09h (v4.0) add string to history buffer
  6254.         ES:DX -> ASCIZ string
  6255.         0Ah (v4.0) ???
  6256.         ES:DX -> ???
  6257.         0Bh (v4.0) copy string to edit buffer for use as next input line
  6258.         ES:DX -> ASCIZ string
  6259.         0Ch (v4.0) ???
  6260.         0Dh (v4.0) copy ??? to ???
  6261.         0Eh (v4.0) ???
  6262.         0Fh (v4.0) ???
  6263.         10h (v4.0) set ??? flag
  6264.         11h (v4.0) display error message about running in EMS under Windows
  6265. Return: ???
  6266. SeeAlso: AX=E300h
  6267. --------K-2FE304-----------------------------
  6268. INT 2F U - ANARKEY.COM v2+ - ???
  6269.     AX = E304h
  6270.     BL = ???
  6271. Return: ???
  6272. SeeAlso: AX=E300h
  6273. --------K-2FE305-----------------------------
  6274. INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
  6275.     AX = E305h
  6276.     BL = new state
  6277.         01h suspended
  6278.         00h enabled
  6279. SeeAlso: AX=E300h
  6280. --------K-2FE306-----------------------------
  6281. INT 2F U - ANARKEY.COM v4.0 - GET ???
  6282.     AX = E306h
  6283. Return: AX = ???
  6284. SeeAlso: AX=E300h
  6285. --------K-2FE307-----------------------------
  6286. INT 2F U - ANARKEY.COM v4.0 - GET ???
  6287.     AX = E307h
  6288. Return: AX = ???
  6289.     BL = ???
  6290. SeeAlso: AX=E300h
  6291. --------l-2FE44D-----------------------------
  6292. INT 2F - NDOS - API
  6293.     AX = E44Dh
  6294. Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
  6295.       Norton Utilities
  6296. Note:    as NDOS is a licensed version of 4DOS v3.03, the API is identical to
  6297.       that for 4DOS, except that AH=E4h instead of D4h and the installation
  6298.       check returns AX=44EEh instead of AX=44DDh
  6299. SeeAlso: AX=D44Dh,AX=E44Eh
  6300. --------l-2FE44EBX0000-----------------------
  6301. INT 2F C - NDOS - AWAITING USER INPUT
  6302.     AX = E44Eh
  6303.     BX = condition
  6304.         0000h NDOS is ready to display prompt
  6305.         0001h NDOS has displayed the prompt, about to accept user input
  6306. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  6307. SeeAlso: AX=E44Dh
  6308. --------E-2FED00-----------------------------
  6309. INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
  6310.     AX = ED00h
  6311.     BL = DOS extender ID (see #1565)
  6312. Return: AL = status
  6313.         00h not installed
  6314.         FFh installed
  6315.         SI = 5048h ("PH")
  6316.         DI = 4152h ("AR")
  6317.         CH = major version number
  6318.         CL = minor version number
  6319.         DX = flags
  6320.             bit 0: running under DPMI
  6321.             bit 1: running under Phar Lap VMM
  6322.         if running under DPMI:
  6323.             BX = DPMI version (BH = major, BL = minor)
  6324. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
  6325.  
  6326. (Table 1565)
  6327. Values for Phar Lap DOS extender ID:
  6328.  01h    286dosx v1.3+ (Software Development Kit)
  6329.  02h    286dosx v1.3+ (Run-Time Kit)
  6330.  03h    386dosx v4.0+ (SDK)
  6331.  04h    386dosx v4.0+ (RTK)
  6332. --------E-2FED03-----------------------------
  6333. INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
  6334.     AX = ED03h
  6335.     CX = real-mode code segment
  6336.     DX = real-mode data segment
  6337. Return: CF clear if successful
  6338.         CX = protected-mode code segment selector
  6339.         DX = protected-mode data segment selector
  6340.         ES:DI -> real-mode entry point for calling protected-mode functions
  6341.               (see INT 21/AX=250Dh)
  6342.     CF set on error
  6343.         AX = error code
  6344.         0008h unable to allocate LDT descriptors
  6345. --------E-2FED80-----------------------------
  6346. INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
  6347.     AX = ED80h
  6348.     BL = DOS extender ID (see #1565)
  6349.     SI = 5048h ("PH")
  6350.     DI = 4152h ("AR")
  6351.     ???
  6352. Return: ???
  6353. --------y-2FEE00-----------------------------
  6354. INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
  6355.     AX = EE00h
  6356. Return: AL = FFh if installed
  6357. Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
  6358. SeeAlso: INT 21/AH=40h"NB.SYS"
  6359. --------U-2FEE00-----------------------------
  6360. INT 2F - XVIEW - INSTALLATION CHECK
  6361.     AX = EE00h
  6362. Return: AX = 00FFh if installed
  6363. Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
  6364. --------N-2FEE00-----------------------------
  6365. INT 2F - WEB v4.02 - INSTALLATION CHECK
  6366.     AX = EE00h
  6367. Return: AL = status
  6368.         00h not installed
  6369.         FFh installed
  6370. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6371. SeeAlso: AH=EEh"WEB",AX=EEF0h
  6372. --------U-2FEE01-----------------------------
  6373. INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
  6374.     AX = EE01h
  6375.     DS:DX -> ASCIZ string containing case-insensitive keyword to look up
  6376. Return: AX = status (see #1566)
  6377. Note:    the specified keyword should be a hyperlink in the _IndexPage of some
  6378.       database; the current database is searched first
  6379. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
  6380.  
  6381. (Table 1566)
  6382. Values for XVIEW function status:
  6383.  0000h    successful
  6384.  00F1h    unknown subfunction
  6385.  00F2h    unable to pop up
  6386. --------U-2FEE02-----------------------------
  6387. INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
  6388.     AX = EE02h
  6389.     DX = physical page number or anchor page number (see #1567)
  6390. Return: AX = status (see #1566)
  6391. Note:    physical page numbers are assigned by the hypertext compiler, and
  6392.       will change if a page is inserted in the middle
  6393. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
  6394.  
  6395. (Table 1567)
  6396. Values for XVIEW anchor page number:
  6397.  FFEAh    _Credits
  6398.  FFECh    _SearchTopics
  6399.  FFEDh    _SearchText
  6400.  FFF0h    _ManualList
  6401.  FFF5h    _HelpOnHelp
  6402.  FFF8h    _HomePage
  6403.  FFF9h    _IndexPage
  6404. --------U-2FEE03-----------------------------
  6405. INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
  6406.     AX = EE03h
  6407.     DS:DX -> data packet (see #1568)
  6408. Return: AX = status (see #1566)
  6409. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
  6410.  
  6411. Format of XVIEW data packet:
  6412. Offset    Size    Description    (Table 1568)
  6413.  00h    DWORD    -> ASCIZ database filespec (0000h:0000h for current database)
  6414.  04h    DWORD    -> ASCIZ text to look up or 0000h:0000h
  6415.  08h    WORD    page number (0000h if keyword used)
  6416.  0Ah  6 BYTEs    reserved
  6417. --------U-2FEE04-----------------------------
  6418. INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
  6419.     AX = EE04h
  6420. Return: AX = status (see #1566)
  6421. Note:    equivalent to the action taken when the user presses the Alt-L hotkey
  6422. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
  6423. --------U-2FEE05-----------------------------
  6424. INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
  6425.     AX = EE05h
  6426. Return: AX = status (see #1566)
  6427. Note:    equivalent to the action taken when the user presses the Alt-H hotkey
  6428. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
  6429. --------U-2FEE06-----------------------------
  6430. INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
  6431.     AX = EE06h
  6432. Return: AX = status (see also AX=EE01h)
  6433.         0001h specified filename is not an xText database
  6434.         0002h no databases found
  6435.         0003h bad data in file
  6436.         0004h memory shortage
  6437.         0005h unable to open the requested file
  6438.         0007h invalid page number for file
  6439. Note:    although this call is not required, the exit code can alert the
  6440.       caller to problems; if the call is not made, the program should
  6441.       enforce a delay of about 1/2 second to allow the viewer to pop up,
  6442.       and should not get keyboard input or attempt disk accesses during
  6443.       the delay
  6444. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
  6445. --------N-2FEE-------------------------------
  6446. INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
  6447.     AH = EEh
  6448.     AL = module ID (see #1569)
  6449. Return: AX = 0000h if installed
  6450.         ES:DI -> far entry point for module-specific API calls
  6451.           (see #1570,#1571,#1572,#1573,#1574)
  6452. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6453. SeeAlso: AX=EE00h"WEB"
  6454.  
  6455. (Table 1569)
  6456. Values for WEB module ID:
  6457.  10h    server module (SERVER.EXE)
  6458.  20h    client module (CLIENT.EXE)
  6459.  30h    mail module (MAIL.EXE)
  6460.  40h    spooler (PCSPOOL.EXE)
  6461.  50h    kernel module (KERNEL.EXE)
  6462.  60h    SAP module (KERNEL.EXE)
  6463.  70h    resident station manager (SM.EXE)
  6464.  90h    router module (ROUTER.EXE)
  6465.  
  6466. (Table 1570)
  6467. Call server module entry point with:
  6468.     BX = function
  6469.         0000h remove server module
  6470.         Return: AX = status (0000h if successful, else WEB error code)
  6471.         0001h create SYSINFO file
  6472.         Note:    the SYSINFO file is used by the station manager when
  6473.               displaying info for a particular station
  6474.         0002h get server object table
  6475.         Return: CX = number of server objects
  6476.             ES:DI -> server object table
  6477.         Note:    server objects include drives and devices that the
  6478.               server module controls
  6479.         0003h get server variables
  6480.         Return: ES:DI -> server variables
  6481.  
  6482. (Table 1571)
  6483. Call client module entry point with:
  6484.     BX = function
  6485.         0000h remove client module
  6486.         Return: AX = status (0000h if successful, else WEB error code)
  6487.         0001h decrement client-only flag
  6488.         0002h increment client-only flag
  6489.         0005h set device capture
  6490.         Note:    decrements DeviceOutput flag, telling the spooler that
  6491.               it may trap device output again
  6492.         0006h clear device capture
  6493.         Note:    increments DeviceOutput flag, telling the spooler that
  6494.               it should not trap device output (this is used
  6495.               internally by the spooler to prevent it from trapping
  6496.               its own output)
  6497.         0007h get client debug pointer
  6498.         Return: ES:DI -> client debug data structure (see #1575)
  6499.         0008h get root drive
  6500.         Return: AL = WEB startup drive
  6501.         0009h get maximum possible drive/device redirections
  6502.         Return: AL = maximum drive redirections
  6503.             CH = maximum LPTx redirections
  6504.             CL = maximum COMx redirections
  6505.         000Ah suspend client
  6506.         Return: AX = previous value of Suspend flag
  6507.         000Bh resume client
  6508.         Return: AX = previous value of Suspend flag
  6509.         000Ch get instance data
  6510.         CX = maximum number of structures in array
  6511.         ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
  6512.               (see #1576)
  6513.         Return: CX = number of structures actually returned
  6514.         Note:    used internally by WEB4WIN
  6515.  
  6516. (Table 1572)
  6517. Call mail module entry point with:
  6518.     BX = function
  6519.         0000h remove mail module
  6520.         Return: AX = status (0000h successful, else WEB error code)
  6521.         0001h set mail poll
  6522.         Note:    schedules the WEB mail module
  6523.         0002h set mail notify
  6524.         Note:    sets the Notify flag, which determines whether the
  6525.               user will be notified when mail is received
  6526.         0003h clear mail notify
  6527.         Note:    clears the Notify flag, which determines whether the
  6528.               user will be notified when mail is received
  6529.         0004h check whether new mail has arrived
  6530.         Return: AL = new mail status
  6531.                 00h no new mail since last call
  6532.                 else new mail has arrived
  6533.         Note:    also clears the new-mail flag after retrieving it
  6534.         0005h send notify
  6535.         ES:DI -> name of WEB user to be notified
  6536.         0006h get post office
  6537.         Return: ES:DI -> full network path of Post Office subdirectory
  6538.  
  6539. (Table 1573)
  6540. Call spooler entry point with:
  6541.     BX = function
  6542.         0000h remove PCSpool module
  6543.         Return: AX = status (0000h successful, else WEB error code)
  6544.         0001h set spooler poll
  6545.         Note:    schedules the WEB spooler
  6546.         0002h check spooler changed
  6547.         Return:    AX = 0000h
  6548.         Note:    this call is a NOP in current versions of WEB
  6549.  
  6550. (Table 1574)
  6551. Call kernel entry point with:
  6552.     BX = function
  6553.         0000h remove kernel module
  6554.         Return: AX = status (0000h successful, else WEB error code)
  6555.         0001h set kernel ^S filter
  6556.         DL = new state (00h don't filter ^S, nonzero do filter)
  6557.         0002h get kernel data area
  6558.         Return: ES:DI -> kernel data area
  6559.         0003h display dialog box
  6560.         CL = dialog box type
  6561.             00h password
  6562.             01h E-Note received notification
  6563.             02h Novell login
  6564.             03h general notification
  6565.         DL = number of rows to display
  6566.         ES:SI -> array of far pointers to rows to be displayed
  6567.         ES:DI -> Pascal-style input buffer
  6568.         Return: AX = status (0000h successful, else error code)
  6569.         0004h kernel service events
  6570.         0005h get kernel's in-critical-section flag
  6571.         Return: ES:DI -> kernel InCriticalSection flag
  6572.         0006h schedule DOS event
  6573.         AL = directive
  6574.             00h do not ignore WEB ExtraBusy flag
  6575.             01h ignore ExtraBusy flag
  6576.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  6577.         ES:SI -> WEB AES Event Control Block (ECB) (see #1577)
  6578.         Notes:    the WEB Asynchronous Event Scheduler is similar to the
  6579.               one used by IPX; this call schedules a special ECB
  6580.               to be executed at a later time.  Unlike IPX ECBs,
  6581.               the timeout must be set explicitly by the caller
  6582.             this function also calls function 0004h
  6583.         0007h check busy
  6584.         AL = directive
  6585.             00h do not ignore WEB ExtraBusy flag
  6586.             01h ignore ExtraBusy flag
  6587.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  6588.         Return: AX = status (0000h not busy, else busy)
  6589.         0008h set keyboard intercept
  6590.         Note:    currently a NOP which returns immediately
  6591.         0009h get keyboard intercept
  6592.         Note:    currently a NOP which returns immediately
  6593.         000Ah get dialog flags
  6594.         Return: ES:DI -> kernel dialog flags (see #1578)
  6595.         000Bh get network path
  6596.         Return: ES:DI -> fully-qualified network path of file where
  6597.                 the screen is stored on Dialog calls
  6598.         000Ch kernel alternate dialog
  6599.         CL = dialog box type
  6600.             00h password
  6601.             01h E-Note received notification
  6602.             02h Novell login
  6603.             03h general notification
  6604.         DL = number of rows to display
  6605.         ES:SI -> array of far pointers to rows to be displayed
  6606.         ES:DI -> Pascal-style input buffer
  6607.         Return: AX = status (0000h successful, else error code)
  6608.         Note:    this function is identical to function 0003h except
  6609.               that it does not notify WEB4WIN of the impending
  6610.               dialog request
  6611.         000Dh get machine/operating system type
  6612.         Return: AX = machine/operating system type
  6613.                 01h IBM PC, MS-DOS
  6614.                 02h IBM PC, DOSV (Japanese)
  6615.                 03h NEC PC-9800, JDOS (Japanese)
  6616.                 04h IBM PC, Korean DBC DOS
  6617.  
  6618. Format of client debug data structure:
  6619. Offset    Size    Description    (Table 1575)
  6620.  00h    WORD    total files
  6621.  02h    WORD    files free
  6622.  04h    WORD    no files
  6623.  06h    WORD    minimum files
  6624.  08h    WORD    total FCBs
  6625.  0Ah    WORD    total safe FCBs
  6626.  0Ch    WORD    FCBs in use
  6627.  0Eh    WORD    wrong FCB
  6628.  10h    WORD    compressed
  6629.  12h    WORD    retransmits
  6630.  
  6631. Format of WIN_INSTANCE_DATA structure:
  6632. Offset    Size    Description    (Table 1576)
  6633.  00h    DWORD    real-mode pointer to data to be instanced
  6634.  04h    WORD    size of data to be instanced
  6635.  
  6636. Format of WEB AES Event Control Block:
  6637. Offset    Size    Description    (Table 1577)
  6638.  00h    DWORD    link address
  6639.  04h    WORD    ESR address
  6640.  08h    BYTE    InUse flag
  6641.  09h    BYTE    completion code
  6642.  0Ah  3 BYTEs    reserved
  6643.  0Dh    WORD    timeout
  6644.  0Fh    BYTE    IgnoreExtra flag
  6645.  10h    WORD    PSP
  6646.  12h    DWORD    DTA
  6647.  16h    WORD    AX value for DOS critical information
  6648.  18h    WORD    BX value for DOS critical information
  6649.  1Ah    WORD    CX value for DOS critical information
  6650.  1Ch    WORD    DX value for DOS critical information
  6651.  
  6652. (Table 1578)
  6653. Values for kernel dialog flags:
  6654.  01h    dialog will timeout
  6655.  02h    display stars instead of entered keystrokes
  6656. --------N-2FEEF0-----------------------------
  6657. INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
  6658.     AX = EEF0h
  6659.     BX = notification function ID (see #1579)
  6660. Return: varies by notification function
  6661. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6662. Note:    the notification functions are used internally by WEB modules to notify
  6663.       other modules and external programs of actions or event, and should
  6664.       never be called by an application
  6665. SeeAlso: AX=EE00h"WEB"
  6666.  
  6667. (Table 1579)
  6668. Values for WEB Notification Function ID:
  6669.  00h    node added
  6670.  01h    node deleted
  6671.  02h    dial attempt
  6672.  03h    dial failed
  6673.  04h    file close
  6674.  05h    close connection
  6675.  07h    check Windows mode
  6676.  20h    link up
  6677.  21h    link down
  6678. --------K-2FF000-----------------------------
  6679. INT 2F U - 4MAP - INSTALLATION CHECK
  6680.     AX = F000h
  6681. Return: AX = 00FFh
  6682. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  6683. Note:    returns AX=00FFh for any value of AL not listed here
  6684. SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
  6685. --------K-2FF001-----------------------------
  6686. INT 2F U - 4MAP - GET KEY MAPPINGS
  6687.     AX = F001h
  6688. Return: ES:BX -> key mappings
  6689. SeeAlso: AX=F000h
  6690. --------K-2FF002-----------------------------
  6691. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  6692.     AX = F002h
  6693.     BL = character to insert
  6694. Return: AX = status
  6695.         0000h successful
  6696.         0001h buffer full
  6697. SeeAlso: AX=F000h,AX=F003h
  6698. --------K-2FF003-----------------------------
  6699. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  6700.     AX = F003h
  6701.     BL = character to insert
  6702. Return: AX = status
  6703.         0000h successful
  6704.         0001h buffer full
  6705. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  6706. SeeAlso: AX=F000h,AX=F002h
  6707. --------m-2FF1-------------------------------
  6708. INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
  6709.     AH = F1h
  6710.     AL <> F1h
  6711. Return: AL = F1h if installed
  6712. Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
  6713.       popup TSRs to be loaded but swapped out to disk, EMS, or XMS.     One
  6714.       TSR at a time is brought back into memory at the user's request.
  6715. --------E-2FF100-----------------------------
  6716. INT 2F - DOS EXTENDER INSTALLATION CHECK
  6717.     AX = F100h
  6718. Return: AL = FFh if DOS extender present
  6719.         SI = 444Fh ("DO")
  6720.         DI = 5358h ("SX")
  6721. Note:    supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
  6722. SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  6723. --------W-2FF200-----------------------------
  6724. INT 2F - WINX - INSTALLATION CHECK
  6725.     AX = F200h
  6726. Return: AX = 00FFh if installed
  6727. Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
  6728.       launch Windows applications from a DOS Box; it was published in
  6729.       "DOS and Windows Protected Mode-Programming with DOS Extenders"
  6730.       (Addison-Wesley) and should not be confused with the Windows driver
  6731.       of the same name which is part of the DESQview/X package
  6732. --------W-2FF201-----------------------------
  6733. INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
  6734.     AX = F201h
  6735. Return: AX = status
  6736.         FFFFh if WINX is busy processing a different request
  6737.         0000h if successful
  6738.         BX:CX = address of server buffer (see #1580)
  6739.  
  6740. Format of WINX server buffer:
  6741. Offset    Size    Description    (Table 1580)
  6742.  00h    BYTE    command/status
  6743.         00h buffer available
  6744.         01h buffer contains result
  6745.         02h change directory
  6746.         03h execute program
  6747.         FFh terminate windows portion of WINX
  6748.  01h  ? BYTEs    command (03h) or directory (02h)
  6749.   or
  6750.  01h    DWORD    result (01h)
  6751. --------W-2FF202-----------------------------
  6752. INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
  6753.     AX = F202h
  6754.     BX:CX -> directory
  6755. Return: AX = status
  6756.         FFFFh if WINX is busy processing a different request
  6757.         0000h if successful
  6758. SeeAlso: AX=F200h,AX=F203h
  6759. --------W-2FF203-----------------------------
  6760. INT 2F - WINX - EXECUTE COMMAND
  6761.     AX = F203h
  6762.     BX:CX -> command
  6763. Return: AX = status
  6764.         0000h if successful
  6765.         FFFFh if WINX is busy processing a different request
  6766. SeeAlso: AX=F200h,AX=F202h
  6767. --------G-2FF400-----------------------------
  6768. INT 2F - FINDIRQ.COM - INSTALLATION CHECK
  6769.     AX = F400h
  6770. Return: AL = 01h if installed
  6771. Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
  6772.       of PC Magazine; when run as a TSR it can determine which IRQs are
  6773.       used only when a device is active
  6774. SeeAlso: AX=F401h
  6775. --------G-2FF401CX5121-----------------------
  6776. INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
  6777.     AX = F401h
  6778.     CX = 5121h ('Q!')
  6779. Return: AX:DX -> hooked interrupt table (see #1581)
  6780. SeeAlso: AX=F400h
  6781.  
  6782. Format of FINDIRQ hooked interrupt table:
  6783. Offset    Size    Description    (Table 1581)
  6784.  00h    BYTE    1Ch
  6785.  01h    DWORD    FINDIRQ's INT 1C handler
  6786.  05h    DWORD    original INT 1C handler
  6787.  09h    BYTE    28h
  6788.  0Ah    DWORD    FINDIRQ's INT 28 handler
  6789.  0Eh    DWORD    original INT 28 handler
  6790.  12h    BYTE    2Fh
  6791.  13h    DWORD    FINDIRQ's INT 2F handler
  6792.  17h    DWORD    original INT 2F handler
  6793. --------d-2FF700-----------------------------
  6794. INT 2F - AUTOPARK.COM - INSTALLATION CHECK
  6795.     AX = F700h
  6796. Return: AL = state
  6797.         00h not installed
  6798.         FFh installed
  6799. Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
  6800. --------d-2FF701-----------------------------
  6801. INT 2F - AUTOPARK.COM - SET PARKING DELAY
  6802.     AX = F701h
  6803.     BX:CX = 32-bit count of 55ms timer ticks
  6804. --------d-2FF800CX4455-----------------------
  6805. INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
  6806.     AX = F800h
  6807.     CX = 4455h ("DU")
  6808.     DL = 45h ("E")
  6809. Return: AL = FFh if installed
  6810.         ES:BX -> ASCII signature "Universal Data Exchange"
  6811. Program: SuperStor is a disk-compression program by Addstor.
  6812. Note:    returns AX=0001h if AL is not 00h or 01h
  6813. SeeAlso: AX=1001h,AX=F801h
  6814. --------d-2FF801CX4455-----------------------
  6815. INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
  6816.     AX = F801h
  6817.     CX = 4455h ("DU")
  6818.     DL = 45h ("E")
  6819.     ES:BX = return address if successful
  6820. Return: at specified address if successfully removed from memory
  6821.     else
  6822.         AL = error code
  6823.         ???
  6824. Program: SuperStor is a disk-compression program by Addstor.
  6825. Note:    returns AX=0001h if AL is not 00h or 01h
  6826. SeeAlso: AX=1001h,AX=F800h
  6827. --------*-2FFB-------------------------------
  6828. INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
  6829.     AH = FBh
  6830. SeeAlso: AX=FB42h/BX=0001h
  6831. --------a-2FFB00-----------------------------
  6832. INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
  6833.     AX = FB00h
  6834. Return: AX = 00FFh if installed
  6835. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6836. SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
  6837. --------U-2FFB00-----------------------------
  6838. INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
  6839.     AX = FB00h
  6840. Return: AX = FFFFh if installed
  6841.         BX = version (BCD, BH=major, BL=minor)
  6842. SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
  6843. --------a-2FFB01-----------------------------
  6844. INT 2F U - AutoBraille v1.1A - ???
  6845.     AX = FB01h
  6846.     ???
  6847. Return: ???
  6848. --------U-2FFB01-----------------------------
  6849. INT 2F U - Jot-It! v1.50 - GET USER NAME
  6850.     AX = FB01h
  6851. Return: DX:BX -> ASCIZ user name
  6852. SeeAlso: AX=FB02h"Jot-It"
  6853. --------a-2FFB02-----------------------------
  6854. INT 2F U - AutoBraille v1.1A - ???
  6855.     AX = FB02h
  6856. Return: AH = ???
  6857.     AL = ???
  6858. --------U-2FFB02-----------------------------
  6859. INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
  6860.     AX = FB02h
  6861. Return: DX:BX -> ASCIZ name of directory in which messages are stored
  6862. SeeAlso: AX=FB01h"Jot-It"
  6863. --------a-2FFB03-----------------------------
  6864. INT 2F U - AutoBraille v1.1A - GET NEXT ???
  6865.     AX = FB03h
  6866. Return: AX = ???
  6867. --------U-2FFB03-----------------------------
  6868. INT 2F U - Jot-It! v1.50 - UNINSTALL
  6869.     AX = FB03h
  6870. Return: resident code removed from memory
  6871. Note:    CAUTION: NO checks are performed to ensure that the interrupt vectors
  6872.       being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
  6873. SeeAlso: AX=FB00h"Jot-It"
  6874. --------a-2FFB-------------------------------
  6875. INT 2F U - AutoBraille v1.1A - SET ???
  6876.     AH = FBh
  6877.     AL = 04h-08h
  6878. Return: AX = 0000h
  6879. --------a-2FFB-------------------------------
  6880. INT 2F U - AutoBraille v1.1A - SET ???
  6881.     AH = FBh
  6882.     AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
  6883. Return: ???
  6884. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6885. --------a-2FFB-------------------------------
  6886. INT 2F U - AutoBraille v1.1A - SET ???
  6887.     AH = FBh
  6888.     AL = 10h-1Fh
  6889.     ???
  6890. Return: ???
  6891. --------a-2FFB20-----------------------------
  6892. INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
  6893.     AX = FB20h
  6894.     BL = flags to set
  6895. SeeAlso: AX=FB21h"AutoBraille"
  6896. --------a-2FFB21-----------------------------
  6897. INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
  6898.     AX = FB21h
  6899.     BL = flags to clear
  6900. SeeAlso: AX=FB20h"AutoBraille"
  6901. --------a-2FFB22-----------------------------
  6902. INT 2F U - AutoBraille v1.1A - SET ???
  6903.     AX = FB22h
  6904.     BL = ???
  6905. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6906. --------a-2FFB28-----------------------------
  6907. INT 2F U - AutoBraille v1.1A - ???
  6908.     AX = FB28h
  6909.     BX = ???
  6910.     ???
  6911. Return: ???
  6912. SeeAlso: AX=FB29h"AutoBraille"
  6913. --------a-2FFB29-----------------------------
  6914. INT 2F U - AutoBraille v1.1A - ???
  6915.     AX = FB29h
  6916.     BX = ???
  6917.     ???
  6918. Return: ???
  6919. SeeAlso: AX=FB28h"AutoBraille"
  6920. --------a-2FFB-------------------------------
  6921. INT 2F U - AutoBraille v1.1A - SET ???
  6922.     AH = FBh
  6923.     AL = 2Bh-34h
  6924.     BX = ???
  6925. --------a-2FFB35-----------------------------
  6926. INT 2F U - AutoBraille v1.1A - SET ???
  6927.     AX = FB35h
  6928.     BL = ???
  6929. --------a-2FFB36-----------------------------
  6930. INT 2F U - AutoBraille v1.1A - SET ???
  6931.     AX = FB36h
  6932.     BL = ???
  6933. --------a-2FFB37-----------------------------
  6934. INT 2F U - AutoBraille v1.1A - SET ???
  6935.     AX = FB37h
  6936.     BL = ???
  6937. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6938. --------E-2FFB42BX0001-----------------------
  6939. INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
  6940.     AX = FB42h
  6941.     BX = 0001h
  6942. Return: AX = version number??? (AL=major, AH=minor)
  6943.     CX = next-selector increment
  6944. ---BC2.0---
  6945.     ES:BX -> 80-byte buffer for ???
  6946.     DX = DPMI version
  6947. ---BC3.0---
  6948.     BX = ??? (0000h)
  6949.     DX = ???
  6950.     ES:SI -> list of valid selectors ???
  6951. Notes:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6952.       as version 1.000, while the version distributed with BC++ 3.0
  6953.       identifies itself as version 1.0; the former is 10864 bytes, the
  6954.       latter 22180 bytes.  The BC2.0 version is a DPMI loader, while
  6955.       the BC3.0 version also adds a DPMI host and DOS extender
  6956.     the BC++ 2.0 version displays an error message if called with BX
  6957.       values other than 0001h-0008h
  6958. SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
  6959. --------E-2FFB42BX0002-----------------------
  6960. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
  6961.     AX = FB42h
  6962.     BX = 0002h
  6963.     CX = size in bytes
  6964.     DX = bit flags
  6965.         bit 2: set to allocate DOS memory, clear for DPMI memory
  6966.     SI = selector of descriptor to be modified to access allocated memory
  6967.     DI = selector of a second descriptor to be modified
  6968. Return: AX = ??? or 0000h on error
  6969.     CX:DX = linear base address of DPMI memory block
  6970.     SI:DI = handle for DPMI memory block or FFFFh:FFFFh
  6971.     ???
  6972. Note:    two segment descriptors may be set if a code and an aliased data
  6973.       segment are required; if only one descriptor is needed, SI should
  6974.       equal DI on entry
  6975. BUG:    when allocating DOS memory, the code computes the linear address by
  6976.       multiplying the segment number by 4 rather than shifting by 4
  6977. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  6978. --------E-2FFB42BX0002-----------------------
  6979. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
  6980.     AX = FB42h
  6981.     BX = 0002h
  6982.     ES:SI -> memory block info (see #1582)
  6983. Return: ???
  6984. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6985.       as version 1.000, while the version distributed with BC++ 3.0
  6986.       identifies itself as version 1.0; the former is 10864 bytes, the
  6987.       latter 22180 bytes.
  6988. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  6989.  
  6990. Format of DPMILOAD memory block info:
  6991. Offset    Size    Description    (Table 1582)
  6992.  00h    WORD    flags
  6993.         bit 0: set if data segment rather than code segment
  6994.         bit 1: information valid
  6995.         bit 2: set if DOS memory block rather than DPMI memory block
  6996.         bit 4: ???
  6997.         bit 15: set if no LDT selectors for memory block???
  6998.  02h    DWORD    block size in bytes
  6999. ---DPMI memory block---
  7000.  06h    DWORD    DPMI memory block handle
  7001. ---DOS memory block---
  7002.  06h    WORD    real-mode segment of memory block
  7003.  08h    WORD    selector of memory block
  7004. ---
  7005.  0Ah    DWORD    linear address of memory
  7006.  0Eh    WORD    memory operation error code
  7007.         0008h no more free LDT descriptors
  7008. ---if flags bit 0 clear---
  7009.  10h    WORD    code segment selector for memory block or 0000h or FFFFh
  7010.  12h    WORD    data alias selector for memory block or 0000h or FFFFh
  7011. ---if flags bit 0 set---
  7012.  10h    WORD    data segment selector for memory block or 0000h or FFFFh
  7013.  12h    WORD    unused???
  7014. --------E-2FFB42BX0003-----------------------
  7015. INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
  7016.     AX = FB42h
  7017.     BX = 0003h
  7018. Return: DX:AX = size of largest free block in paragraphs
  7019.         0000h:0000h on error (BC3.0 version only)
  7020. Note:    AX and DX are destroyed on error, but no other error indicator is
  7021.       returned, under the BC++ 2.0 version of DPMILOAD
  7022. SeeAlso: AX=FB42h/BX=0002h
  7023. --------E-2FFB42BX0004-----------------------
  7024. INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
  7025.     AX = FB42h
  7026.     BX = 0004h
  7027.     DS:DX -> ASCIZ filename of protected-mode executable
  7028. Return: CX = selector of ??? or 0000h
  7029. ---BC3.0---
  7030.     DX = status (0000h,FFF4h,others???) (see #1583)
  7031. Note:    the filename may also be terminated by a CR rather than a NUL under the
  7032.       BC++ 3.0 version of DPMILOAD
  7033.  
  7034. (Table 1583)
  7035. Values for DPMILOAD function status:
  7036.  0000h    successful
  7037.  0001h    ??? failure
  7038.  0002h    invalid selector
  7039.  0004h    unknown error
  7040.  0008h    no more LDT descriptors available???
  7041.  FFDEh    unable to set descriptor
  7042.  FFDFh    unable to get segment base address
  7043.  FFE0h    ???
  7044.  FFF2h    invalid parameter value
  7045.  FFF4h    component of filename too long (name not in 8.3 format)
  7046.  FFF5h    pathname too long (>79 chars)
  7047.  FFF6h    ???
  7048.  FFF8h    ???
  7049.  FFF9h    index out of range
  7050.  FFFAh    ???
  7051.  FFFCh    invalid access to code segment???
  7052.  FFFEh    ???
  7053.  FFFFh    general error
  7054. --------E-2FFB42BX0005-----------------------
  7055. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
  7056.     AX = FB42h
  7057.     BX = 0005h
  7058.     CX = selector of DPMILOAD data (see #1584)
  7059.     DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
  7060. Return: DX = status (see #1583)
  7061.         0000h successful
  7062.         AX:BX -> ??? FAR function (called with two words on top of stk)
  7063.         else
  7064.         BX destroyed
  7065. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
  7066.  
  7067. Format of DPMILOAD data:
  7068. Offset    Size    Description    (Table 1584)
  7069.  00h 12 BYTEs    ???
  7070.  0Ch    WORD    ??? bit flags
  7071.  0Eh 14 BYTEs    ???
  7072.  1Ch    WORD    number of memory control records
  7073.  1Eh 25 BYTEs    ???
  7074.  37h    BYTE    ??? bit flags
  7075.         bit 4: data valid???
  7076.  38h  4 BYTEs    ???
  7077.  3Ch    WORD    ???
  7078.  3Eh 12 BYTEs    ???
  7079.  46h    BYTE    ??? counter
  7080.  47h    BYTE    ???
  7081.  48h    BYTE    ???
  7082.  49h    BYTE    ???
  7083.  4Ah    WORD    ???
  7084.  4Ch  2 BYTEs    ???
  7085.  4Eh    WORD    offset of array of 64-byte memory control records
  7086.  52h    WORD    offset of name list (see #1585)
  7087.  54h  4 BYTEs    ???
  7088.  58h    WORD    offset of array of 6-byte objects
  7089.  5Ah  8 BYTEs    ???
  7090.  62h  9 BYTEs    ASCIZ name for ???
  7091.  6Bh  9 BYTEs    ASCIZ name for ???
  7092.     ???
  7093.  
  7094. Format of name list entry [array]:
  7095. Offset    Size    Description    (Table 1585)
  7096.  00h    BYTE    length of name (00h if end of array)
  7097.  01h  N BYTEs    name
  7098.  N+1    WORD    1-based index into array of unknown 6-byte objects
  7099.  
  7100. Format of 6-byte objects:
  7101. Offset    Size    Description    (Table 1586)
  7102.  00h    BYTE    ???
  7103.  01h    BYTE    ???
  7104.  02h    BYTE    ???
  7105.  03h    BYTE    1-based index of memory control record
  7106.  04h    WORD    ???
  7107.  
  7108. Format of memory control record:
  7109. Offset    Size    Description    (Table 1587)
  7110.  00h 20 BYTEs    memory block info (see #1582)
  7111.  14h  6 BYTEs    ???
  7112.  1Ah    BYTE    ???
  7113.  1Bh  2 BYTEs    ???
  7114.  1Dh    BYTE    ??? bit flags
  7115.  1Eh 14 BYTEs    ???
  7116.  2Ch    DWORD    pointer to ??? memory control record or 0000h:0000h
  7117.  30h    DWORD    pointer to ??? memory control record or 0000h:0000h
  7118.  34h    DWORD    pointer to next??? memory control record or 0000h:0000h
  7119.  38h    DWORD    pointer to prev??? memory control record or 0000h:0000h
  7120.  3Ch  4 BYTEs    ???
  7121. Note:    the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
  7122.       the pointers at offsets 34h and 38h
  7123. --------E-2FFB42BX0006-----------------------
  7124. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
  7125.     AX = FB42h
  7126.     BX = 0006h
  7127.     CX = selector of DPMILOAD data (see #1584)
  7128.     DX = 1-based index into array of ??? 6-byte objects
  7129. Return: DX = status (see #1583)
  7130.         0000h successful
  7131.         AX:BX -> ??? FAR function (called with two words on top of stk)
  7132.         else
  7133.         BX destroyed
  7134. SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
  7135. --------E-2FFB42BX0007-----------------------
  7136. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
  7137.     AX = FB42h
  7138.     BX = 0007h
  7139.     CX = selector of ???
  7140. Return: ???
  7141. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  7142.       as version 1.000, while the version distributed with BC++ 3.0
  7143.       identifies itself as version 1.0; the former is 10864 bytes, the
  7144.       latter 22180 bytes.
  7145. --------E-2FFB42BX0007-----------------------
  7146. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7147.     AX = FB42h
  7148.     BX = 0007h
  7149.     CX = selector of DPMILOAD data (see #1584)
  7150.     ???
  7151. Return: DX = status (see #1583)
  7152.         0000h successful
  7153.         AX = ???
  7154. --------E-2FFB42BX0008-----------------------
  7155. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  7156.     AX = FB42h
  7157.     BX = 0008h
  7158.     CX = bit flags
  7159.         bit 2: set if DPMI memory, clear if DOS memory
  7160.     DX = selector of DOS memory block
  7161.     SI:DI = handle of DPMI memory block
  7162. Return: DX = 0000h on error, unchanged if succcessful
  7163. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  7164.       as version 1.000, while the version distributed with BC++ 3.0
  7165.       identifies itself as version 1.0; the former is 10864 bytes, the
  7166.       latter 22180 bytes.
  7167. SeeAlso: AX=FB42h/BX=0002h
  7168. --------E-2FFB42BX0008-----------------------
  7169. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  7170.     AX = FB42h
  7171.     BX = 0008h
  7172.     ES:SI -> memory block info (see #1582)
  7173. Return: ???
  7174. SeeAlso: AX=FB42h/BX=0009h
  7175. --------E-2FFB42BX0009-----------------------
  7176. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
  7177.     AX = FB42h
  7178.     BX = 0009h
  7179.     ES:SI -> memory block info (see #1582)
  7180.     ???
  7181. Return: ???
  7182. SeeAlso: AX=FB42h/BX=0008h"3.0"
  7183. --------E-2FFB42BX000A-----------------------
  7184. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
  7185.     AX = FB42h
  7186.     BX = 000Ah
  7187.     CX = 0001h
  7188.     DX = ???
  7189.     SI = ???
  7190. Return: after user exits subshell
  7191. Notes:    this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
  7192.       function is not available in protected mode.
  7193.     the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
  7194.       version also adds a DPMI host and DOS extender.
  7195. SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
  7196. --------E-2FFB42BX000B-----------------------
  7197. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
  7198.     AX = FB42h
  7199.     BX = 000Bh
  7200. --------E-2FFB42BX000C-----------------------
  7201. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
  7202.     AX = FB42h
  7203.     BX = 000Ch
  7204.     ES:SI -> memory block info ??? (see #1582)
  7205. Return: DX = status???
  7206. SeeAlso: AX=FB42h/BX=000Fh
  7207. --------E-2FFB42BX000D-----------------------
  7208. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
  7209.     AX = FB42h
  7210.     BX = 000Dh
  7211.     CX = number of words to copy from protected-mode to real mode stack
  7212.     DL = interrupt number
  7213.     DH = flags
  7214.         bit 0: reset the interrupt controller and A20 line
  7215.     ES:DI -> real-mode call structure (see INT 31/AX=0300h)
  7216. Return: CX = status
  7217.         0000h successful
  7218.         0001h failed
  7219. SeeAlso: INT 31/AX=0300h
  7220. --------E-2FFB42BX000E-----------------------
  7221. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  7222.     AX = FB42h
  7223.     BX = 000Eh
  7224.     DS:DX -> ASCIZ or CR-terminated name of ???
  7225. Return: CX = selector of DPMILOAD data (see #1584) corresponding to name,
  7226.           0000h on error
  7227. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
  7228. --------E-2FFB42BX000F-----------------------
  7229. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
  7230.     AX = FB42h
  7231.     BX = 000Fh
  7232.     ES:SI -> memory block info (see #1582)
  7233. Return: ???
  7234. SeeAlso: AX=FB42h/BX=000Ch
  7235. --------E-2FFB42BX0010-----------------------
  7236. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
  7237.     AX = FB42h
  7238.     BX = 0010h
  7239.     DX = segment number
  7240. Return: CX = status (0000h,0008h) (see also AX=FB42h/BX=0004h)
  7241.         0000h successful
  7242.         DX = selector number for descriptor
  7243.         0008h failed
  7244. SeeAlso: AX=FB42h/BX=0023h
  7245. --------E-2FFB42BX0011-----------------------
  7246. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7247.     AX = FB42h
  7248.     BX = 0011h
  7249.     CX = selector of DPMILOAD data (see #1584)
  7250.     ???
  7251. Return: DX = status (0000h,0002h,FFFEh) (see also #1583)
  7252.         0000h successful
  7253.         AX:BX -> ??? name
  7254.         FFFEh ??? error
  7255. --------E-2FFB42BX0012-----------------------
  7256. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7257.     AX = FB42h
  7258.     BX = 0012h
  7259.     CX = selector for ???
  7260. Return: CX = selector for ???
  7261. --------E-2FFB42BX0013-----------------------
  7262. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7263.     AX = FB42h
  7264.     BX = 0013h
  7265.     CX = selector of DPMILOAD data (see #1584)
  7266.     DX = 1-based index of ???
  7267. Return: CX = status (0000h,0002h,FFF9h) (see also #1583)
  7268.         0000h successful
  7269.         BX = ??? or 0000h
  7270.         FFF9h ??? error
  7271. --------E-2FFB42BX0014-----------------------
  7272. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
  7273.     AX = FB42h
  7274.     BX = 0014h
  7275.     CX = 0001h
  7276. Return: BX = 0000h if installed
  7277. Note:    unlike most of the DPMILOAD functions, this call is available only in
  7278.       real or V86 mode
  7279. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
  7280. --------E-2FFB42BX0015-----------------------
  7281. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
  7282.     AX = FB42h
  7283.     BX = 0015h
  7284.     CX = 0001h
  7285. Return: ???
  7286. Note:    unlike most of the DPMILOAD functions, this call is available only in
  7287.       real or V86 mode
  7288. SeeAlso: AX=FB42h/BX=000Ah
  7289. --------E-2FFB42BX0016-----------------------
  7290. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7291.     AX = FB42h
  7292.     BX = 0016h
  7293.     CX = selector of DPMILOAD data (see #1584)
  7294. Return: DX = status (see also AX=FB42h/BX=0004h)
  7295.         0000h successful
  7296.         CX = ???
  7297. --------E-2FFB42BX0017-----------------------
  7298. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7299.     AX = FB42h
  7300.     BX = 0017h
  7301.     CX = ???
  7302.     DX = ???
  7303.     ???
  7304. Return: DX = status (0000h,0001h) (see #1583)
  7305. --------E-2FFB42BX0018-----------------------
  7306. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
  7307.     AX = FB42h
  7308.     BX = 0018h
  7309.     CX = ???
  7310. --------E-2FFB42BX0019-----------------------
  7311. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7312.     AX = FB42h
  7313.     BX = 0019h
  7314.     CX = selector for ???
  7315.     ???
  7316. Return: DX = status (see also AX=FB42h/BX=0004h)
  7317.         0000h successful
  7318.         CX = selector for ???
  7319. --------E-2FFB42BX001A-----------------------
  7320. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7321.     AX = FB42h
  7322.     BX = 001Ah
  7323.     CX = selector for ???
  7324.     ???
  7325. Return: DX = status (see also AX=FB42h/BX=0004h)
  7326.         0000h successful
  7327.         0004h failed
  7328.     CX:BX -> ???
  7329. --------E-2FFB42BX001B-----------------------
  7330. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7331.     AX = FB42h
  7332.     BX = 001Bh
  7333.     CX = selector of DPMILOAD data (see #1584)
  7334.     DX = offset of ???
  7335. Return: DX = status (0000h,0002h) (see also #1583)
  7336.         0000h successful
  7337.         BX = selector for ???
  7338.         CX = selector for ???
  7339. --------E-2FFB42BX001C-----------------------
  7340. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7341.     AX = FB42h
  7342.     BX = 001Ch
  7343.     ES = selector for DPMILOAD data (see #1584)
  7344.     CX = 1-based index of ???
  7345.     DX = 1-based index of ???
  7346. Return: DX = status (0000h,0002h,FFF9h) (see #1583)
  7347. --------E-2FFB42BX001D-----------------------
  7348. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7349.     AX = FB42h
  7350.     BX = 001Dh
  7351. Return: CX:DX = ???
  7352. --------E-2FFB42BX001E-----------------------
  7353. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7354.     AX = FB42h
  7355.     BX = 001Eh
  7356.     CX = ???
  7357.     ???
  7358. Return: DX = status (see also AX=FB42h/BX=0004h)
  7359.         0000h successful
  7360.         FFF7h ??? error
  7361.     CX:BX -> ???
  7362. --------E-2FFB42BX001F-----------------------
  7363. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  7364.     AX = FB42h
  7365.     BX = 001Fh
  7366.     DS:DX -> 8-character name of ???
  7367.     ???
  7368. Return: CX = selector of DPMILOAD data (see #1584) for ???
  7369.         0000h on error
  7370. SeeAlso: AX=FB42h/BX=000Eh
  7371. --------E-2FFB42BX0020-----------------------
  7372. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
  7373.     AX = FB42h
  7374.     BX = 0020h
  7375. Return: DX = ??? (always 0000h)
  7376. --------E-2FFB42BX0021-----------------------
  7377. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
  7378.     AX = FB42h
  7379.     BX = 0021h
  7380.     CL = exception number (00h-1Fh)
  7381. Return: DX = status (see also AX=FB42h/BX=0004h)
  7382.         0000h successful
  7383.         AX:BX = selector:offset of handler
  7384.         FFF2h unable to get exception handler vector
  7385. SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
  7386. --------E-2FFB42BX0022-----------------------
  7387. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
  7388.     AX = FB42h
  7389.     BX = 0022h
  7390.     CL = exception number (00h-1Fh)
  7391.     SI:DX = selector:offset of new handler
  7392. Return: DX = status (0000h,0004h,FFF2h) (see #1583)
  7393. SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
  7394. --------E-2FFB42BX0023-----------------------
  7395. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
  7396.     AX = FB42h
  7397.     BX = 0023h
  7398.     CX = selector
  7399. Return: DX = status (see also AX=FB42h/BX=0004h)
  7400.         0000h successful
  7401.         CX = real-mode segment number
  7402.         FFF2h descriptor has invalid base address for real-mode segment
  7403. SeeAlso: AX=FB42h/BX=0010h
  7404. --------E-2FFB42BX0024-----------------------
  7405. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
  7406.     AX = FB42h
  7407.     BX = 0024h
  7408.     CL = interrupt number
  7409. Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
  7410.     AX:BX = selector:offset of handler
  7411. SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
  7412. --------E-2FFB42BX0025-----------------------
  7413. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
  7414.     AX = FB42h
  7415.     BX = 0025h
  7416.     CL = interrupt number
  7417.     SI:DX = selector:offset of new handler
  7418. Return: DX = status (0000h,0004h,FFF2h) (see #1583)
  7419. SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
  7420. --------E-2FFB42BX0026-----------------------
  7421. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7422.     AX = FB42h
  7423.     BX = 0026h
  7424.     CX = selector of DPMILOAD data (see #1584)
  7425.     DX = 1-based index of ???
  7426.     ???
  7427. Return: DX = status (0000h,0002h,FFF9h) (see #1583)
  7428.         0000h successful
  7429.         BX = offset of ??? within data structure
  7430. --------E-2FFB42BX0027-----------------------
  7431. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7432.     AX = FB42h
  7433.     BX = 0027h
  7434.     CX = selector of DPMILOAD data (see #1584)
  7435.     DX = offset of ???
  7436. Return: DX = status (see also AX=FB42h/BX=0004h)
  7437.         0000h successful
  7438.         BX = ???
  7439. --------E-2FFB42BX0080-----------------------
  7440. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  7441.     AX = FB42h
  7442.     BX = 0080h
  7443.     ???
  7444. Return: AX = ???
  7445.     ???
  7446. --------E-2FFB42BX0081-----------------------
  7447. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  7448.     AX = FB42h
  7449.     BX = 0081h
  7450.     ???
  7451. Return: AX = ???
  7452.     ???
  7453. --------E-2FFB42BX1001-----------------------
  7454. INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
  7455.     AX = FB42h
  7456.     BX = 1001h
  7457. Return: BX = 0000h
  7458. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
  7459. --------E-2FFB42BX1002-----------------------
  7460. INT 2F U - Borland RTM.EXE 1.0 - ???
  7461.     AX = FB42h
  7462.     BX = 1002h
  7463.     ???
  7464. Return: ???
  7465. SeeAlso: AX=FB42h/BX=1001h
  7466. --------E-2FFB42BX1003-----------------------
  7467. INT 2F U - Borland RTM.EXE 1.0 - ???
  7468.     AX = FB42h
  7469.     BX = 1003h
  7470.     ???
  7471. Return: ???
  7472. SeeAlso: AX=FB42h/BX=1001h
  7473. --------E-2FFB43-----------------------------
  7474. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
  7475.     AX = FB43h
  7476.     BX = subfunction (at least 0000h-000Eh)
  7477. Notes:    this function is only present in protected mode; it does nothing but
  7478.       an immediate IRET
  7479.     DPMILOAD.EXE itself calls various subfunctions:
  7480.         subfunction 0004h is called with CX=selector of ???, DI=selector
  7481.           of DPMILOAD data
  7482.         subfunction 0008h is called with CX=selector of DPMILOAD data
  7483. SeeAlso: AX=FB42h/BX=0001h
  7484. --------G-2FFB43BX0100-----------------------
  7485. INT 2F PU - Borland TDX - INSTALLATION CHECK
  7486.     AX = FB43h
  7487.     BX = 0100h
  7488. Return: BX = FB43h if loaded
  7489. Program: TDX is Borland's Turbo Debugger variant for DPMI programs
  7490. Note:    Borland Pascal 7 DPMI programs use this call to check whether they
  7491.       should install their own stack and general protection exception
  7492.       handlers, or allow TDX to handle those exceptions
  7493. --------a-2FFB64-----------------------------
  7494. INT 2F U - AutoBraille v1.1A - GET ???
  7495.     AX = FB64h
  7496. Return: AX = ??? (0006h seen)
  7497. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  7498. --------E-2FFBA1BX0081-----------------------
  7499. INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
  7500.     AX = FBA1h
  7501.     BX = 0081h
  7502.     ES:DI -> 16-byte buffer
  7503. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  7504. Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
  7505. Note:    TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
  7506.       extender was moved into DPMILOAD.
  7507. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
  7508. SeeAlso: INT 21/AX=4403h"TKERNEL"
  7509. --------E-2FFBA1BX0082-----------------------
  7510. INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
  7511.     AX = FBA1h
  7512.     BX = 0082h
  7513.     ES:DI -> response buffer (see #1588)
  7514. Return: ES:DI buffer filled
  7515. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  7516.  
  7517. Format of TKERNEL response buffer:
  7518. Offset    Size    Description    (Table 1588)
  7519.  00h  4 BYTEs    signature "IABH"
  7520.  04h    DWORD    pointer to FAR extender entry point (see #1589)
  7521.  
  7522. (Table 1589)
  7523. Call TKERNEL entry point with:
  7524.     AX = function number
  7525.         0000h initialize???
  7526.         STACK:    WORD  ???
  7527.         Return: AX = status???
  7528.             STACK unchanged
  7529.         0001h get version???
  7530.         Return: AX = 0200h for v2.0.34
  7531.         0002h get ???
  7532.         Return: AX = ??? (011Eh or 0182h seen)
  7533.         0003h load protected-mode executable
  7534.         STACK:    DWORD -> ASCIZ filename of executable
  7535.             DWORD    ???
  7536.             DWORD -> program arguments (counted string plus CR)
  7537.             DWORD -> environment for protected-mode executable
  7538.                 (terminated with two consecutive NULs)
  7539.             DWORD -> WORD buffer for ???
  7540.         Return: AX = status???
  7541.             STACK unchanged
  7542.         0004h get descriptor
  7543.         STACK:    WORD    selector for which to get descriptor
  7544.             WORD    segment number (when running in real mode)
  7545.             DWORD -> buffer for descriptor
  7546.         Return: CF clear if successful
  7547.                 buffer filled
  7548.             CF set on error
  7549.                 AX destroyed???
  7550.             STACK unchanged
  7551.         0005h ???
  7552.         STACK:    WORD    selector for ???
  7553.             WORD    subfunction number???
  7554.                 0000h run previously-loaded program???
  7555.                 0001h ??? (similar to 0000h)
  7556.                 0002h
  7557.                 0003h
  7558.                 0005h ??? (similar to 0000h and 0001h)
  7559.         Return: AX = status???
  7560.             STACK unchanged
  7561.         0006h ???
  7562.         STACK:    WORD ???
  7563.             DWORD -> WORD (call) max iterations of ???
  7564.                       (return) remaining iterations
  7565.         Return: AX = ???
  7566.             STACK unchanged
  7567.         0007h unused
  7568.         Return: AX = 0001h
  7569.         0008h unused
  7570.         Return: AX = 0001h
  7571.         0009h copy protected-mode memory into conventional memory
  7572.         STACK:    WORD    selector for source segment
  7573.             WORD    segment of source if in real mode???
  7574.             DWORD    offset of source
  7575.             WORD    number of bytes to copy
  7576.             DWORD -> low-memory destination
  7577.         Return: AX = status
  7578.             STACK unchanged
  7579.         000Ah copy conventional memory into protected-mode memory
  7580.         STACK:    WORD    selector for destination segment
  7581.             WORD    segment of destination if in real mode???
  7582.             DWORD    offset of destination
  7583.             WORD    number of bytes to copy
  7584.             DWORD -> low-memory source
  7585.         Return: AX = status
  7586.             STACK unchanged
  7587.         000Bh get ??? pointers
  7588.         STACK:    WORD desired pointer
  7589.                 0000h get ???
  7590.                 0002h get protected-mode CR3
  7591.                 0003h get 4K page table buffer pointer
  7592.                 else Return: DX:AX = FFFFh:FFFFh
  7593.         Return: DX:AX = requested pointer
  7594.             STACK unchanged
  7595.         000Ch set ??? pointers
  7596.         STACK:    WORD desired pointer
  7597.                 0000h set ???
  7598.                 0002h set protected-mode CR3
  7599.                 0003h set 4K page table buffer pointer
  7600.                 else ignore
  7601.             DWORD new value for pointer
  7602.         Return: STACK unchanged
  7603.         000Dh get ??? pointers
  7604.         STACK:    WORD desired pointer
  7605.                 0000h get ???
  7606.                 0001h get ???
  7607.                 0002h get ???
  7608.                 0003h get ???
  7609.                 0004h get ???
  7610.                 0005h get ???
  7611.                 0006h get ???
  7612.                 0007h get ???
  7613.                 else Return: DX:AX = FFFFh:FFFFh
  7614.         Return: DX:AX = desired pointer
  7615.             STACK unchanged
  7616.         000Eh set ??? pointer
  7617.         STACK:    WORD desired pointer
  7618.                 0000h set ???
  7619.                 0001h set ???
  7620.                 0002h set ???
  7621.                 0003h set ???
  7622.                 0004h set ???
  7623.                 0005h set ???
  7624.                 0006h set ???
  7625.                 0007h set ???
  7626.                 else Return: DX:AX = FFFFh:FFFFh
  7627.         Return: STACK unchanged
  7628.         000Fh get ???
  7629.         Return: AX = ??? (seen 0008h)
  7630.         0010h get ???
  7631.         Return: AX = ???
  7632.         0011h determine whether selector is valid
  7633.         STACK:    WORD    possible selector
  7634.         Return: AX = selector or 0000h if invalid
  7635.             STACK unchanged
  7636.         0012h get physical address
  7637.         STACK:    WORD    selector for desired segment
  7638.             WORD    segment number if in real mode
  7639.             DWORD    offset within segment
  7640.         Return: DX:AX = 32-bit physical address or 00000000h on error
  7641.             BX destroyed
  7642.             STACK unchanged
  7643.         0013h ???
  7644.         Note:    normally jumps to code for function 0012h
  7645.         0014h copy protected-mode memory to conventional memory, with ???
  7646.         STACK:    WORD    selector for source segment
  7647.             WORD    segment of source if in real mode???
  7648.             DWORD    offset of source
  7649.             WORD    number of bytes to copy
  7650.             DWORD -> low-memory destination
  7651.         Return: AX = status???
  7652.             STACK unchanged
  7653.         0015h copy conventional memory to protected-mode memory, with ???
  7654.         STACK:    WORD    selector for destination segment
  7655.             WORD    segment of destination if in real mode???
  7656.             DWORD    offset of destination
  7657.             WORD    number of bytes to copy
  7658.             DWORD -> low-memory source
  7659.         Return: AX = status???
  7660.             STACK unchanged
  7661.         0016h set ??? pointer
  7662.         STACK:    WORD    unused
  7663.             DWORD -> ??? or 0000h:0000h
  7664.         Return: AX = 0000h
  7665.             STACK unchanged
  7666.         0017h allocate real-mode procedure???
  7667.         STACK:    DWORD    ASCIZ name of procedure
  7668.             DWORD ???
  7669.             DWORD    address of subroutine to invoke
  7670.         Return: AX = status
  7671.                 0032h procedure by that name exists
  7672.                 0033h no more real-mode procedures available
  7673.             DX destroyed
  7674.             STACK unchanged
  7675.         0018h unused
  7676.         Return: AX = 0001h
  7677.         0019h get parameter block
  7678.         Return: DX:AX -> parameter block (format unknown at this time,
  7679.                   but 92h bytes)
  7680.                   (preceded by signature "!!PARAM-BLOCK!!")
  7681.         001Ah get ???
  7682.         Return: AX = ??? (0148h seen)
  7683.         001Bh free real-mode procedure???
  7684.         STACK:    DWORD -> ASCIZ name of procedure
  7685.         Return: ???
  7686.             STACK unchanged
  7687.         001Ch check whether packets from protected mode task pending
  7688.         Return: AX = 0001h if packets pending, 0000h if not
  7689.         001Dh set ???
  7690.         STACK:    DWORD ??? or 0000h:0000h
  7691.         Return: AX,BX destroyed
  7692.             STACK unchanged
  7693.         001Eh ???
  7694.         STACK:    WORD ??? (high byte ignored)
  7695.             DWORD -> data structure (see below)
  7696.         Return: AX,BX,CX,DX destroyed
  7697.             data structure updated
  7698.             STACK unchanged
  7699.         Format of data structure:
  7700.         Offset    Size    Description
  7701.          00h  2 BYTEs    unused
  7702.          02h    WORD    ???
  7703.          04h    WORD    ???
  7704.          06h    WORD    ???
  7705.          08h  2 BYTEs    unused
  7706.          0Ah    WORD    ???
  7707.          0Ch    WORD    (call) ???
  7708.                 (return) offset of this data structure (BUG?)
  7709.         001Fh set ???
  7710.         STACK:    WORD ??? (set to 0001h if zero)
  7711.         Return: AX destroyed
  7712.             STACK unchanged
  7713.         0020h ???
  7714.         STACK:    DWORD -> ??? (8 bytes of data)
  7715.         Return: AX = ???
  7716.             STACK unchanged
  7717.         0021h ???
  7718.         STACK:    DWORD -> ??? (8 bytes of data)
  7719.             WORD    ???
  7720.             WORD    ???
  7721.         Return: AX = ???
  7722.             STACK unchanged
  7723.         0022h ???
  7724.         STACK:    DWORD -> ??? (8 bytes of data)
  7725.             DWORD -> 4-byte buffer for results
  7726.         Return: AX = ???
  7727.             STACK unchanged
  7728.         0023h ???
  7729.         STACK:    DWORD -> ??? (8 bytes of data)
  7730.         Return: AX = ???
  7731.             STACK unchanged
  7732.         0024h set ???
  7733.         STACK:    WORD ???
  7734.         Return: AX destroyed
  7735.             STACK unchanged
  7736.         0025h get ???
  7737.         Return: AX = ??? (value set with func 0024h)
  7738.         0026h BUG: jumps to hyperspace due to fencepost error
  7739.         FFFFh set DOS memory management functions
  7740.         BX:SI -> FAR routine for allocating DOS memory
  7741.               (called with AH=48h,BX=number of paragraphs to alloc;
  7742.               returns CF clear, AX=segment of allocated memory, or
  7743.                   CF set on error)
  7744.         CX:DI -> FAR routine for freeing DOS memory
  7745.               (called with AH=49h,ES=segment of block to free;
  7746.               returns CF set on error, AX=error code)
  7747.         Note: each of these pointers normally points at INT 21/RETF
  7748.         other Return: AX = 0001h
  7749. Note:    BX may be destroyed by any of the API calls
  7750. --------E-2FFBA1BX0084-----------------------
  7751. INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
  7752.     AX = FBA1h
  7753.     BX = 0084h
  7754.     ES:DI -> response buffer (see #1590)
  7755. Return: ES:DI buffer filled
  7756. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  7757.  
  7758. Format of TKERNEL response buffer:
  7759. Offset    Size    Description    (Table 1590)
  7760.  00h  4 BYTEs    signature "IABH"
  7761.  04h    WORD    success indicator
  7762.         0001h failed (INT 2F hooked by another program)
  7763.         unchanged if successful
  7764.  06h    WORD    segment of ???
  7765.  08h    WORD    segment of ??? memory block to free if nonzero
  7766.  0Ah    WORD    segment of ??? memory block to free if nonzero
  7767. --------s-2FFBFBES0000-----------------------
  7768. INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
  7769.     AX = FBFBh
  7770.     ES = 0000h
  7771. Return: ES nonzero if installed
  7772.         ES:BX -> entry point data structure (see #1591)
  7773. SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
  7774.  
  7775. Format of SoundBlaster entry point data structure:
  7776. Offset    Size    Description    (Table 1591)
  7777.  00h  3 BYTEs    signature "FB "
  7778.  03h    BYTE    driver major version number???
  7779.  04h    DWORD    speech driver entry point (see #1592)
  7780.  08h 24 BYTEs    ???
  7781.  20h  ? BYTEs    data buffer for calling speech driver
  7782.  
  7783. (Table 1592)
  7784. Call SoundBlaster speech driver entry point with:
  7785.     AL = function
  7786.         07h speak a string
  7787.         data buffer (see #1591) contains:
  7788.             BYTE  length of string
  7789.               N BYTEs string to speak
  7790. --------N-2FFE00BX4454-----------------------
  7791. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  7792.     AX = FE00h
  7793.     BX = 4454h ("DT")
  7794.     CX = 4B52h ("KR")
  7795.     DX = 4E4Dh ("NM")
  7796. Return: AL = FFh if installed
  7797.        BX = 524Eh ("RM")
  7798.        CX = 4D44h ("MD")
  7799.        DX = 544Bh ("TK")
  7800. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7801. SeeAlso: AX=FE08h
  7802. --------N-2FFE00BX4454-----------------------
  7803. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  7804.     AX = FE00h
  7805.     BX = 4454h ("DT")
  7806.     CX = 4B52h ("KR")
  7807.     DX = 544Dh ("TM")
  7808. Return: AL = FFh if installed
  7809.        BX = 5254h ("RT")
  7810.        CX = 4D44h ("MD")
  7811.        DX = 544Bh ("TK")
  7812. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7813. SeeAlso: AX=FE08h
  7814. --------U-2FFE00DI4E55-----------------------
  7815. INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
  7816.     AX = FE00h
  7817.     DI = 4E55h ("NU")
  7818.     SI = TSR identifier (see #1593)
  7819. Return: SI = TSR reply
  7820.         lowercase version of SI on entry (i.e. SI OR 2020h)
  7821.     AH = status
  7822.         00h installed but disabled internally
  7823.         01h installed and enabled
  7824.     AL = installed product
  7825.         00h NCACHE-x or DISKREET
  7826.         01h SPEEDRV / FILESAVE / EP / DISKMON v6+ installed
  7827.         02h NCACHE2 / SMARTCAN
  7828.         45h DISKMON v5 installed
  7829.     BX = length of *.INI file (DISKMON and FILESAVE/EP/SMARTCAN only)
  7830.           (see #1594,#1595)
  7831.     CX = segment of resident portion
  7832.         FFFFh if completely loaded high (NCACHE)
  7833. ---FILESAVE/EP---
  7834.     DL = ??? (apparently always 00h)
  7835. ---DISKMON---
  7836.     DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6] / 1C26h [v7])
  7837. Notes:    the value returned in CX is incorrect for NCACHE 6.00
  7838.     all Norton Caches install as SMARTAAR drivers like SMARTDRV v3
  7839.     NCACHE2 and SPEEDRV both support the SMARTDRV v4+ installation check
  7840. SeeAlso: AX=4A10h/BX=0000h,AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
  7841. SeeAlso: INT 21/AX=4402h"SMARTDRV"
  7842.  
  7843. (Table 1593)
  7844. Values for Norton Utilities TSR identifier:
  7845.  4346h    ("CF") NCACHE-F (v5) / NCACHE (v6) / NCACHE2 (v7) / SPEEDRV
  7846.  4353h    ("CS") NCACHE-S (v5 only)
  7847.  4443h    ("DC") DISKREET
  7848.  444Dh    ("DM") DISKMON
  7849.  4653h    ("FS") FILESAVE (v5) / EP (v6) / SMARTCAN (v7)
  7850.  
  7851. Format of DISKMON.INI file:
  7852. Offset    Size    Description    (Table 1594)
  7853. -6Ch 108 BYTEs    (in memory copy only)
  7854.         list of filenames which are always protected:
  7855.           IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
  7856.           MIO.SYS/IO.BIN, COMMAND.COM
  7857.  00h    BYTE    ??? always 01h
  7858.  01h    BYTE    disk light (00h off, 01h on)
  7859.  02h    BYTE    disk protection (00h off, 01h on)
  7860.  03h    BYTE    protected areas
  7861.         01h system area
  7862.         02h files
  7863.         03h system area and files
  7864.         04h entire disk
  7865.  04h    BYTE    floppy access (00h not allowed, 01h allowed)
  7866.  05h 27 BYTEs    filename extension list (9 entries)
  7867.         (lowercase, blank padded or = 000000h)
  7868.  20h 240 BYTEs    filename list (20 entries)
  7869.         (lowercase, name and extension blank padded, with '.')
  7870. Note:    CX:0508h -> copy in installed TSR (v5)
  7871.     CX:052Fh -> copy in installed TSR (v6)
  7872.     CX:04E0h -> copy in installed TSR (v7)
  7873.  
  7874. Format of FILESAVE.INI / EP.INI / SMARTCAN.INI file:
  7875. Offset    Size    Description    (Table 1595)
  7876.  00h 26 BITs    drive list (bit set: file protection on, cleared: off):
  7877.  00h    BYTE    drives    A: - H:
  7878.  01h    BYTE    drives    I: - P:
  7879.  02h    BYTE    drives    Q: - X:
  7880.  03h    BYTE    drives    Y: - Z:
  7881.  04h    BYTE    which files to protect
  7882.         00h all files
  7883.         01h all files with extension in list
  7884.         02h all files except those with extension in list
  7885.  05h 27 BYTEs    filename extension list (9 entries, uppercase, ASCIZ)
  7886.  20h    BYTE    include files with archive bit clear (00h no, 01h yes)
  7887.  21h    WORD    number of days after which files are purged (0 = never)
  7888.  23h    WORD    max kilobytes of erased file space to hold (0 = all)
  7889. Note:    CX:03D2h -> copy in installed TSR (v5)
  7890.     CX:03F5h -> copy in installed TSR (v6)
  7891.     CX:0434h -> copy in installed TSR (v7)
  7892. --------U-2FFE01DI4E55-----------------------
  7893. INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
  7894.     AX = FE01h
  7895.     DI = 4E55h ("NU")
  7896.     SI = TSR identifier (see #1593)
  7897. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7898.     AX = status
  7899.         0002h successful (DISKMON, FILESAVE, EP)
  7900.         FE00h successful (NCACHE-x, DISKREET)
  7901. Notes:    if the enable/disable calls are used on DISKMON or NCACHE-x, the status
  7902.       report generated by the programs still indicates the previous state,
  7903.       and DISKMON.INI is not updated
  7904.     apparently has no effect on DISKREET
  7905. SeeAlso: AX=FE00h,AX=FE02h
  7906. --------U-2FFE02DI4E55-----------------------
  7907. INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
  7908.     AX = FE02h
  7909.     DI = 4E55h ("NU")
  7910.     SI = TSR identifier (see #1593)
  7911. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7912.     AX = status
  7913.         0004h successful (DISKMON, FILESAVE)
  7914.         FE00h successful (NCACHE-x, DISKREET)
  7915. Notes:    (see also AX=FE01h)
  7916.     this function appears to be unsafe, as the cache buffers are not
  7917.       flushed
  7918. SeeAlso: AX=FE00h,AX=FE01h
  7919. --------U-2FFE03DI4E55-----------------------
  7920. INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
  7921.     AX = FE03h
  7922.     DI = 4E55h ("NU")
  7923.     SI = TSR identifier (see #1593)
  7924. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7925.     AX = status
  7926.         0006h successful???
  7927. Notes:    only supported by DISKMON, FILESAVE, and NCACHE-x
  7928.     useful for flushing NCACHE before rebooting
  7929. SeeAlso: AX=FE00h,AX=FE10h
  7930. --------U-2FFE04DI4E55-----------------------
  7931. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  7932.     AX = FE04h
  7933.     DI = 4E55h ("NU")
  7934.     SI = TSR identifier (see #1593)
  7935. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7936.     AX = status
  7937.         0008h successful???
  7938. SeeAlso: AX=FE00h
  7939. --------U-2FFE05DI4E55-----------------------
  7940. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  7941.     AX = FE05h
  7942.     DI = 4E55h ("NU")
  7943.     SI = TSR identifier (see #1593)
  7944. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7945.     AX = status
  7946.         000Ah successful???
  7947. Note:    reportedly dangerous
  7948. SeeAlso: AX=FE00h
  7949. --------N-2FFE08-----------------------------
  7950. INT 2F - PC-NFS ??? - GET ???
  7951.     AX = FE08h
  7952. Return: ES:BX -> ???
  7953. Notes:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7954.     both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
  7955.       to AX=FE00h/DX=544Dh support this function
  7956. SeeAlso: AX=FE00h/BX=4454h
  7957. --------U-2FFE10DI4E55-----------------------
  7958. INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
  7959.     AX = FE10h
  7960.     DI = 4E55h ("NU")
  7961.     SI = TSR identifier (see #1593)
  7962. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7963.     AX = status
  7964. Note:    probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
  7965.       detected
  7966. SeeAlso: AX=FE03h
  7967. --------N-2FFF00-----------------------------
  7968. INT 2F - Topware Network Operating System - INSTALLATION CHECK
  7969.     AX = FF00h
  7970. Return: AL = status
  7971.         00h not installed, OK to install
  7972.         01h not installed, not OK to install
  7973.         FFh installed
  7974. SeeAlso: AX=FF01h,AX=FF02h,AX=FF10h,INT 21/AX=FF02h,INT 7A"Topware"
  7975. --------N-2FFF01-----------------------------
  7976. INT 2F - Topware Network Operating System - GET VERSION
  7977.     AX = FF01h
  7978. Return: AX = version
  7979. SeeAlso: AX=FF00h,AX=FF02h
  7980. --------N-2FFF02-----------------------------
  7981. INT 2F - TopWare Network OS v5.10+ - GET TopNet VERSION STRING
  7982.     AX = FF02h
  7983. Return: ES:BX -> version string
  7984. SeeAlso: AX=FF00h,AX=FF01h
  7985. --------N-2FFF10-----------------------------
  7986. INT 2F - TopWare Network OS v5.10+ - TopTerm - INSTALLATION CHECK
  7987.     AX = FF10h
  7988. Return: AL = status (00h not installed, 01h installed)
  7989. SeeAlso: AX=FF00h,AX=FF11h,AX=FF12h,AX=FF13h
  7990. --------N-2FFF11-----------------------------
  7991. INT 2F - TopWare Network OS v5.10+ - TopTerm - ENABLE KEYBOARD SERVICE
  7992.     AX = FF11h
  7993. Note:    this function is only available on workstations, not on the server
  7994. SeeAlso: AX=FF10h,AX=FF12h
  7995. --------N-2FFF12-----------------------------
  7996. INT 2F - TopWare Network OS v5.10+ - TopTerm - DISABLE KEYBOARD SERVICE
  7997.     AX = FF12h
  7998. Note:    this function is only available on workstations, not on the server
  7999. SeeAlso: AX=FF10h,AX=FF11h
  8000. --------N-2FFF13-----------------------------
  8001. INT 2F - TopWare Network OS v5.10+ - TopTerm - SET INSTALLATION FLAG
  8002.     AX = FF13h
  8003.     CL = new state (00h off, 01h on)
  8004. SeeAlso: AX=FF10h
  8005. --------N-2FFF14-----------------------------
  8006. INT 2F - TopWare Network OS v5.10+ - START BACKGROUND RECEIVE VIDEO DATA
  8007.     AX = FF14h
  8008. Note:    this function is only available on workstations, not on the server
  8009. SeeAlso: AX=FF10h,AX=FF15h
  8010. --------N-2FFF15-----------------------------
  8011. INT 2F - TopWare Network OS v5.10+ - END BACKGROUND RECEIVE VIDEO DATA
  8012.     AX = FF15h
  8013. Note:    this function is only available on workstations, not on the server
  8014. SeeAlso: AX=FF10h,AX=FF14h
  8015. --------N-2FFF16-----------------------------
  8016. INT 2F - TopWare Network OS v5.10+ - SET CONTROL NUMBER OF "SHOW" SCREEN
  8017.     AX = FF16h
  8018.     BL = which to set (00h TopShow, FFh TopTerm)
  8019.     CX = destination screen
  8020.         0000h all stations
  8021.         0000h-00FFh (TopTerm only) send to group CL
  8022.         8001h-80FEh send to station CL
  8023. SeeAlso: AX=FF18h
  8024. --------N-2FFF18-----------------------------
  8025. INT 2F - TopWare Network OS v5.10+ - SEND FULL SCREEN OF DATA FOR TopShow
  8026.     AX = FF18h
  8027. SeeAlso: AX=FF00h,AX=FF16h,AX=FF27h
  8028. --------N-2FFF23-----------------------------
  8029. INT 2F - TopWare Network OS v5.10+ - CLOSE SPOOL FILES AND START PRINTING
  8030.     AX = FF23h
  8031. SeeAlso: AX=FF00h
  8032. --------N-2FFF27-----------------------------
  8033. INT 2F - TopWare Network OS v5.10+ - GET "SHOW" TYPE
  8034.     AX = FF27h
  8035. Return: AL = type (00h complete version, 01h simple version)
  8036.     BL = "show" functions flag (00h disabled, 01h enabled)
  8037. SeeAlso: AX=FF16h,AX=FF18h
  8038. --------!---Section--------------------------
  8039.