home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / maj / 4266 / interrup.h < prev    next >
Text File  |  1994-08-07  |  289KB  |  8,104 lines

  1. Interrupt List, part 8 of 12
  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 #1473) 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 1473)
  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 #1474)
  67. Return: BX = process handle or 0000h if specified TSR not installed
  68.     ES:DI -> process block for TSR (see #1473) 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 1474)
  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 #1473)
  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 #1475)
  108.     DX:DI -> command buffer
  109.           (see #1477,#1480,#1481,#1482,#1483,#1484,#1489,#1495,#1502)
  110. Return: AL = FFh if submitted OK
  111.     CX = result code (see #1476)
  112. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  113. SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
  114.  
  115. (Table 1475)
  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 1476)
  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 1477)
  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 #1478)
  301.  2Eh    DWORD    T.30 capabilities (see #1479)
  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 1478)
  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 1479)
  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 1480)
  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 1481)
  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 1482)
  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 1483)
  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 1484)
  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 1485)
  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 1486)
  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 1487)
  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 1488)
  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 1489)
  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 1490)
  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 1491)
  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 1492)
  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 1493)
  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 1494)
  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 1495)
  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 1496)
  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 1497)
  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 1498)
  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 1499)
  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 1500)
  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 1501)
  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 1502)
  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 #1503)
  718. Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  719. SeeAlso: AX=8201h"RESPLAY",AX=8210h
  720.  
  721. (Table 1503)
  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 #1504)
  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 #1503)
  780. SeeAlso: AX=8200h"RESPLAY"
  781.  
  782. (Table 1504)
  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 #1505)
  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 1505)
  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 #1506)
  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 1506)
  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 #1508)
  1399.  22h    WORD    pointer to last item in code page table list (see #1507)
  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 #1508)
  1407.  24h    WORD    pointer to last item in code page table list (see #1507)
  1408.  26h  9 BYTEs    ???
  1409.  
  1410. Format of code page table list entries:
  1411. Offset    Size    Description    (Table 1507)
  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 1508)
  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 #1509)
  1454.     DS:SI -> command name buffer (see #1510)
  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 1509)
  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 1510)
  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 #1509)
  1483.     DS:SI -> command name buffer (see #1510)
  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 #1511)
  1597. SeeAlso: AX=B707h
  1598.  
  1599. Bitfields for APPEND state:
  1600. Bit(s)    Description    (Table 1511)
  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 #1511)
  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 #1511)
  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 #0799 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 1512)
  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 #1513)
  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 #1513)
  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 1513)
  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 #1514)
  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 1514)
  1780.  00h    BYTE    major version
  1781.  01h    BYTE    minor version
  1782.  02h    WORD    configuration flags given when network was started (see #1515)
  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 1515)
  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 #1516,#1517,#1518)
  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 1516)
  1984. Call LSL function "Request MLID Registration" with:
  1985.     BX = 0001h
  1986.     ES:SI -> registration??? record (see #1520)
  1987.     DS:DI -> buffer for LSL information block (see #1521)
  1988. Return: AX = completion code (0000h,8001h) (see #1519)
  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 1517)
  1994. Call LSL function "get support entry points" with:
  1995.     BX = 0002h
  1996.     ES:SI -> buffer for entry point record (see #1522)
  1997. Return: ES:SI buffer filled
  1998.  
  1999. (Table 1518)
  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 1519)
  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 1520)
  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 1521)
  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 1522)
  2038.  00h    DWORD    pointer to protocol support entry point in LSL (see #1523)
  2039.  04h    DWORD    pointer to general support entry point in LSL (see #1524)
  2040.  
  2041. (Table 1523)
  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 #1527)
  2049.         Return: ES,SI preserved
  2050.         0004h "CancelAESEvent"
  2051.         ES:SI -> ECB to be cancelled (see #1527)
  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 #1537)
  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 #1538)
  2065.         0009h "DeRegisterDefaultStack"
  2066.         AX = logical board number
  2067.         000Ah "RegisterPrescanStack"
  2068.         AX = logical board number
  2069.         ES:SI -> stack info structure (see #1538)
  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 #1525) 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 #1526)
  2096.         0014h "GetLSLStatistics"
  2097.         Return: AX = 0000h (successful)
  2098.             ZF set
  2099.             ES:SI -> LSL statistics table (see #1529)
  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 #1528)
  2116.         001Ah "GetTickMarker"
  2117.         Return: AX = number of 55ms ticks since LSL loaded
  2118.             BX destroyed
  2119. Return: AX = completion code (see #1519)
  2120.     ZF set if successful
  2121.     SS:SP, DS, BP preserved; most other registers may be destroyed
  2122.  
  2123. (Table 1524)
  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 #1539)
  2138.         0006h "RemoveGeneralService"
  2139.         ES:SI -> General Service Control Block (see #1539)
  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 #1540)
  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 #1519)
  2158.     ZF set if successful
  2159.     SS:SP, DS, BP preserved
  2160.  
  2161. (Table 1525)
  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 #1532 for format)
  2168.         0001h "GetMLIDStatistics"
  2169.         Return: ES:SI -> MLID's statistics table if successful
  2170.                   (see #1532 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 #1519)
  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 1526)
  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 #1531)
  2209.         0001h "GetProtocolStackStatistics"
  2210.         Return: ES:SI -> protocol stack's statistics table (see #1530)
  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 1527)
  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. SeeAlso: #1541
  2234.  
  2235. Format of LSL Configuration Table:
  2236. Offset    Size    Description    (Table 1528)
  2237.  00h    BYTE    major version of configuration table
  2238.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  2239.  02h  8 BYTEs    reserved
  2240.  0Ah    BYTE    LSL major version (decimal)
  2241.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  2242. ---LSL 1.0x ---
  2243.  0Ch 14 BYTEs    reserved
  2244. ---LSL 1.10+ ---
  2245.  0Ch    WORD    maximum number of boards which LSL can handle
  2246.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  2247.  10h 12 BYTEs    reserved
  2248.  
  2249. Format of LSL Statistics Table:
  2250. Offset    Size    Description    (Table 1529)
  2251.  00h    BYTE    major version of statistics table format
  2252.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  2253.  02h    WORD    "GenericCounters" number of counters in static portion of
  2254.           table
  2255.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  2256.           counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  2257.           is the next field, etc.
  2258.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  2259.  0Ch    DWORD    reserved
  2260.  10h    DWORD    reserved
  2261.  14h    DWORD    "AESEventsCount" number of completed AES events
  2262.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  2263.           sections inside the MLIDs
  2264.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  2265.  20h    DWORD    reserved
  2266.  24h    DWORD    reserved
  2267.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  2268.  2Ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  2269.           protocol stack
  2270.  30h    WORD    "NumberCustom" number of custom variables that follow
  2271.  32h  N DWORDs    custom counters
  2272.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2273.     var    length-prepended and NULL terminated string for Counter 0
  2274.     ...
  2275.     var    length-prepended and NULL terminated string for Counter N-1
  2276.  
  2277. Format of Protocol Stack Statistics Table:
  2278. Offset    Size    Description    (Table 1530)
  2279.  00h    BYTE    statistics table major version
  2280.  01h    BYTE    statistics table minor version (decimal, 0-99)
  2281.  02h    WORD    number of generic counters following
  2282.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  2283.  08h    DWORD    TotalTxPackets
  2284.  0Ch    DWORD    TotalRxPackets
  2285.  10h    DWORD    IgnoredRxPackets
  2286.  14h    WORD    number of custom counters
  2287.  16h  N DWORDs    custom counters
  2288.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2289.     var    length-prepended and NULL terminated string for Counter 0
  2290.     ...
  2291.     var    length-prepended and NULL terminated string for Counter N-1
  2292.  
  2293. Format of Protocol Stack Configuration Table:
  2294. Offset    Size    Description    (Table 1531)
  2295.  00h    BYTE    configuration table major version
  2296.  01h    BYTE    configuration table minor version (decimal, 0-99)
  2297.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  2298.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  2299.  0Ah    BYTE    protocol stack major version
  2300.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  2301.  0Ch 16 BYTEs    reserved for future use
  2302.  
  2303. Format of MLID Configuration Table:
  2304. Offset    Size    Description    (Table 1532)
  2305.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  2306.  1Ah    BYTE    configuration table major version
  2307.  1Bh    BYTE    configuration table minor version (decimal, 0-99)
  2308.  1Ch  6 BYTEs    node address
  2309.  22h    WORD    MLID mode flags (see #1533)
  2310.  24h    WORD    board number
  2311.  26h    WORD    board instance (if more than one of same board installed)
  2312.  28h    WORD    maximum packet size
  2313.  2Ah    WORD    BestDataSize
  2314.  2Ch    WORD    WorstDataSize
  2315.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  2316.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  2317.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  2318.  3Ah    WORD    reserved (0000h)
  2319.  3Ch    WORD    frame type ID
  2320.  3Eh    WORD    TransportTime (milliseconds)
  2321.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  2322.  44h    WORD    lookahead size
  2323.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  2324.  48h    WORD    QueueDepth
  2325.  4Ah  6 BYTEs    reserved (0)
  2326.  50h    BYTE    driver major version
  2327.  51h    BYTE    driver minor version (decimal, 0-99)
  2328.  52h    WORD    bus/multicast flags (see #1534)
  2329.  54h    WORD    send retries
  2330.  56h    DWORD    ConfigTableLink
  2331.  5Ah    WORD    MLID sharing flags (see #1535)
  2332.  5Ch    WORD    slot number
  2333.  5Eh    WORD    I/O address 1
  2334.  60h    WORD    I/O range 1
  2335.  62h    WORD    I/O address 2
  2336.  64h    WORD    I/O range 2
  2337.  66h    DWORD    memory address 1
  2338.  6Ah    WORD    memory size 1
  2339.  6Ch    DWORD    memory address 2
  2340.  70h    WORD    memory size 2
  2341.  72h    BYTE    interrupt line 1
  2342.  73h    BYTE    interrupt line 2
  2343.  74h    BYTE    DMA line 1
  2344.  75h    BYTE    DMA line 2
  2345.  
  2346. Bitfields for MLID mode flags:
  2347. Bit(s)    Description    (Table 1533)
  2348.  15    MLID supports Octet Reversal
  2349.  14    node address is non-canonical
  2350.  13    promiscuous mode is supported
  2351.  12-8    reserved
  2352.  7    LDataSize field in LookAhead structure supported
  2353.  6    raw send supported
  2354.  5    MLID needs to be polled by LSL
  2355.  4    reserved (0)
  2356.  3    multicasting is supported
  2357.  2    not currently used by DOS ODI, set to 0.
  2358.  1    network card uses DMA.
  2359.  0    RealDriverBit, always set to 1.
  2360.  
  2361. Bitfields for bus/multicast flags:
  2362. Bit(s)    Description    (Table 1534)
  2363.  10-9    specialized multicast support
  2364.     00 = Group addressing is default for medium
  2365.     01 = Invalid
  2366.     10 = Filter group address in MLID.
  2367.     11 = Adapter filters group address.
  2368.  2    supports Micro Channel cards
  2369.  1    supports ISA cards
  2370.  0    supports EISA cards
  2371.  
  2372. Bitfields for MLID sharing flags:
  2373. Bit(s)    Description    (Table 1535)
  2374.  8    NIC can share DMA2
  2375.  7    NIC can share DMA1
  2376.  6    NIC can share IRQ2
  2377.  5    NIC can share IRQ1
  2378.  4    NIC can share Memory2
  2379.  3    NIC can share Memory1
  2380.  2    NIC can share IO2
  2381.  1    NIC can share IO1
  2382.  0    MLID is currently shut down
  2383.  
  2384. Format of MLID Statistics Table:
  2385. Offset    Size    Description    (Table 1536)
  2386.  00h    BYTE    driver statistics table major version
  2387.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  2388.  02h    WORD    number of generic counters (typically 13)
  2389.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  2390.  08h    DWORD    TotalTxCount
  2391.  0Ch    DWORD    TotalRxCount
  2392.  10h    DWORD    NoECBAvailableCount
  2393.  14h    DWORD    TxTooBigCount
  2394.  18h    DWORD    TxTooSmallCount
  2395.  1Ch    DWORD    RxOverflowCount
  2396.  20h    DWORD    RxTooBigCount
  2397.  24h    DWORD    RxTooSmallCount
  2398.  28h    DWORD    TxMiscCount
  2399.  2Ch    DWORD    RxMiscCount
  2400.  30h    DWORD    TxRetryCount
  2401.  34h    DWORD    RxChecksumErrorCount
  2402.  38h    DWORD    RxMismatchCount
  2403.  3Ch    WORD    number of custom counters
  2404.  3Eh  N DWORDs    custom counters
  2405.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2406.     var    length-prepended and NULL terminated string for Counter 0
  2407.     ...
  2408.     var    length-prepended and NULL terminated string for Counter N-1
  2409.  
  2410. Format of bound stack info structure:
  2411. Offset    Size    Description    (Table 1537)
  2412.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  2413.  04h    DWORD    -> receive handler
  2414.  08h    DWORD    -> control handler
  2415.  
  2416. Format of stack info structure:
  2417. Offset    Size    Description    (Table 1538)
  2418.  00h    DWORD    -> receive handler
  2419.  04h    DWORD    -> control handler
  2420.  
  2421. Format of General Service Control Block:
  2422. Offset    Size    Description    (Table 1539)
  2423.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  2424.  04h    DWORD    -> entry point for general service handler
  2425.  08h    WORD    command code for this general service (8000h-FFFFh)
  2426. Note:    the control block must not be altered or deallocated until the general
  2427.       service is removed
  2428.  
  2429. Format of Lookahead structure:
  2430. Offset    Size    Description    (Table 1540)
  2431.  00h    DWORD    -> Media header
  2432.  04h    DWORD    -> lookahead buffer
  2433.  08h    WORD    length of lookahead buffer
  2434.  0Ah  6 BYTEs    protocol ID
  2435.  10h    WORD    logical board number
  2436.  12h    WORD    lookahead size
  2437.  
  2438. Format of ODI ECB:
  2439. Offset    Size    Description    (Table 1541)
  2440.  00h    DWORD    link to next ECB
  2441.  04h    DWORD    link to previous ECB
  2442.  08h    WORD    general status
  2443.         0000h received successfully
  2444.         8006h packet overflow
  2445.         8007h reception aborted (data not valid)
  2446.  0Ah    DWORD    -> event service routine or RETF (never 0000h:0000h)(see #1542)
  2447.  0Eh    WORD    protocol stack identifier
  2448.  10h  6 BYTEs    protocol ID (sending only)
  2449.  16h    WORD    MLID board number (sending only)
  2450.  18h  6 BYTEs    MAC destination address
  2451.  1Eh  4 BYTEs    driver workspace
  2452.  22h  4 BYTEs    protocol workspace
  2453.  26h    WORD    total length of sent buffer
  2454.  28h    WORD    fragment count
  2455.  2Ah  2 WORDs    segment,offset of first fragment buffer
  2456.  2Eh    WORD    length of first fragment buffer
  2457.     ...
  2458. SeeAlso: #1527
  2459.  
  2460. (Table 1542)
  2461. Values event service routine called with:
  2462.     ES:SI -> associated ODI ECB (see #1541)
  2463.     interrupts disabled
  2464. Return: DS,BP,SS,SP preserved
  2465.     interrupt disabled
  2466. Notes:    the service routine may invoke any IPX/ODI function except CloseSocket
  2467.     it is safe to send a packet and wait for completion if enough stack
  2468.       space is available
  2469. --------f-2FC000-----------------------------
  2470. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  2471.     AX = C000h
  2472. Return: AL = FFh if installed
  2473.        ES:DI -> signature string "FN32 32CHAR TSR"
  2474. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  2475. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  2476.       managing dictionary files in each directory which contains long
  2477.       filenames
  2478. --------M-2FC000-----------------------------
  2479. INT 2F - QMR - INSTALLATION CHECK
  2480.     AX = C000h
  2481. Return: AL = FFh if installed
  2482.         ES:DI -> signature string "QMR1!"
  2483. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  2484.       service interrupt (int 33h) and substitutes a fast software
  2485.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  2486. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2487. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  2488. --------V-2FC000-----------------------------
  2489. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  2490.     AX = C000h
  2491. Return: AL = FFh if installed
  2492.         BX = segment of resident code
  2493. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  2494.       Javurek
  2495. Range:    AH=C0h to AH=FFh, selected by scanning for a free multiplex number
  2496. Note:    the transient portion of VGAsave compares the first 38 bytes of the
  2497.       resident code (addressed through BX) against its own copy of the
  2498.       resident code to complete the installation check
  2499. SeeAlso: INT 14/AX=AA01h,INT 2F/AH=93h
  2500. Index:    screen saver;VGAsave
  2501. --------V-2FC000-----------------------------
  2502. INT 2F - AD-DOS - INSTALLATION CHECK
  2503.     AX = C000h
  2504. Return: AL = FFh if installed
  2505.         BX = 4144h ('AD')
  2506.         CX = 2D44h ('-D')
  2507.         DX = 4F53h ('OS')
  2508. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2509.       MS Windows
  2510. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2511. SeeAlso: AX=C001h,AX=C003h,AX=C005h,AX=C007h,AX=C009h,AX=C020h,INT 14/AX=AA01h
  2512. Index:    screen saver;AD-DOS
  2513. --------U-2FC000-----------------------------
  2514. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  2515.     AX = C000h
  2516. Return: AL = FFh if installed
  2517.         ES = segment of resident code
  2518. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  2519.       with 3-mode floppy drives to read Wang document diskettes
  2520. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2521. Note:    The installation check is completed by comparing the resident code
  2522.       with the copy in the transient program
  2523. --------i-2FC000-----------------------------
  2524. INT 2F O - ASPIHOOK.SYS - INSTALLATION CHECK
  2525.     AX = C000h
  2526. Return: AL = FFh if multiplex number in use
  2527.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  2528. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  2529.       ASPI host manager; it is part of the Personal Measure system
  2530.       activity monitor from Spirit of Performance, Inc.
  2531. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2532. SeeAlso: AX=C000h"PMEASURE"
  2533. --------i-2FC000-----------------------------
  2534. INT 2F - PMEASURE.EXE - INSTALLATION CHECK
  2535.     AX = C000h
  2536. Return: AL = FFh if multiplex number in use
  2537.         ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
  2538. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  2539.       is part of the Personal Measure system activity monitor from Spirit
  2540.       of Performance, Inc.
  2541. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2542. Note:    If a Personal Measure Hook Module, such as ASPIHOOK.SYS, is already
  2543.       installed, PMEASURE.EXE uses the next highest free multiplex number.
  2544. SeeAlso: AX=C000h"ASPIHOOK",AX=C000h"PERSONAL MEASURE"
  2545. --------i-2FC000-----------------------------
  2546. INT 2F - PERSONAL MEASURE - HOOK MODULE INSTALLATION CHECK
  2547.     AX = C000h
  2548. Return: AL = FFh if installed
  2549.     ES:DI -> signature string "PMEASUREHOOK"
  2550.     AX = C000 if not installed, per mux id conventions
  2551.     DH = major release number (binary)
  2552.     DL = minor release number (binary)
  2553. Program: The Personal Measure system activity monitor from Spirit of
  2554.       Performance, Inc. uses an extensible series of modules to hook
  2555.       into various operating system interfaces and monitor system calls.
  2556.       Current hook modules are ASPIHOOK.SYS for ASPI device activity
  2557.       and CDRHOOK.SYS for non-ASPI CD-ROM activity.     All hook modules
  2558.       share the same mux id.
  2559. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2560. SeeAlso: AX=C000h"PMEASURE.EXE",AX=C001h"PERSONAL MEASURE"
  2561. --------c-2FC000-----------------------------
  2562. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
  2563.     AX = C000h
  2564. Return: AL = FFh if installed
  2565.         SI = signature value 20D6h
  2566.         DI = signature value 8761h
  2567.         ES:BX -> configuration table (see #1543)
  2568.         CX = ??? (0300h)
  2569.         DX = ??? (0020h)
  2570. Program: PCACHE is the resident print spooler portion of PrintCache by
  2571.       LaserTools; it may use either memory or disk space to spool output
  2572. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2573. SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
  2574.  
  2575. Format of PrintCache configuration table:
  2576. Offset    Size    Description    (Table 1543)
  2577.  00h 26 BYTEs    ASCIZ signature string "TORQ Configuration Table: "
  2578.  1Ah  2 BYTEs    ???
  2579.  1Ch    DWORD    -> data table (see #1544)
  2580.  20h  4 BYTEs    ASCIZ version string ("3.1" for v3.1)
  2581.  24h  5 BYTEs    ???
  2582.  29h 12 BYTEs    ASCIZ version date string ("Aug 31 1993" for v3.1)
  2583.  35h    WORD    buffered port type (01h = LPT, 02h = COM)
  2584.  37h    WORD    buffered port BIOS port number
  2585.  39h  5 BYTEs    ASCIZ buffered port name ("LPTn" or "COMn")
  2586.  3Eh    WORD    physical port type (01h = LPT, 02h = COM)
  2587.  40h    WORD    physical port BIOS port number
  2588.  42h  5 BYTEs    ASCIZ physical port name ("LPTn" or "COMn")
  2589.  47h    BYTE    port driver IRQ
  2590.  48h 21 BYTEs    ???
  2591.  5Dh    WORD    buffer size in K
  2592.  5Fh 27 BYTEs    ???
  2593.  7Ah    BYTE    popup hotkey shift states (see INT 16/AH=02h)
  2594.  7Bh    BYTE    popup hotkey scan code (see INT 09h"IRQ1")
  2595.  7Ch  4 BYTEs    ???
  2596.  80h 20 BYTEs    ASCIZ printer type name
  2597.     ???
  2598.  
  2599. Format of PrintCache data table:
  2600. Offset    Size    Description    (Table 1544)
  2601.  00h  2 BYTEs    ???
  2602.  02h    DWORD    -> ??? entry point
  2603.     ???
  2604. --------U-2FC000-----------------------------
  2605. INT 2F - Frank Kintrup TSR Utilities - INSTALLATION CHECK
  2606.     AX = C000h
  2607. Return: AL = FFh if installed
  2608.         BX = program ID (see #1545)
  2609.         CX = 464Bh (signature "FK")
  2610.         DX = revision number (DH = major, DL = minor)
  2611.         ES = resident segment of TSR
  2612. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  2613. SeeAlso: AX=C001h"Kintrup",AX=C002h"Kintrup"
  2614.  
  2615. (Table 1545)
  2616. Values for Frank Kintrup TSR program ID:
  2617.  4153h    "AS"    ASCII.COM    ASCII table with paste function
  2618.  434Ch    "CL"    CLOCK.COM    clock with date/time display and alarm
  2619.  5043h    "PC"    PCALC.COM    programmer's calculator with paste function
  2620.  5343h    "SC"    SCRSAVE.COM    screen saver with mouse support and hotkey
  2621.  5544h    "UD"    UNDEL.COM    undelete program like SMARTCAN or DPROTECT
  2622. --------F-2FC000BX444B-----------------------
  2623. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  2624.     AX = C000h
  2625.     BX = 444Bh ('DK')
  2626.     CX = 4A4Eh ('AN')
  2627. Return: AL = status
  2628.         00h not installed, OK to install
  2629.         FFh installed
  2630.         BX = 646Bh ('dk')
  2631.         CX = 6A6Eh ('an')
  2632. Range:    AH=C0h to AH=FFh, selected automatically
  2633. SeeAlso: AH=C0h"MTEZ"
  2634. --------M-2FC001-----------------------------
  2635. INT 2F - QMR - REQUEST HARDWARE RESET
  2636.     AX = C001h
  2637. Return: ES = QMR code segment
  2638.     AL destroyed
  2639. Desc:    this function is used to force a full mouse reset when QMR is installed
  2640. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2641. --------V-2FC001ES0000-----------------------
  2642. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  2643.     AX = C001h
  2644.     ES = 0000h
  2645. Return: AL = 00h if successful
  2646.         ES = AD-DOS TSR Code Segment
  2647. SeeAlso: AX=C000h"AD-DOS"
  2648. Index:    screen saver;AD-DOS
  2649. --------c-2FC001-----------------------------
  2650. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
  2651.     AX = C001h
  2652. Return: AL = FFh if installed
  2653.         ES:BX -> ???
  2654.         ES:DX -> ???
  2655.         ES:SI -> ???
  2656.         ES:DI -> ??? (equivalent to AX=C002h)
  2657. SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
  2658. --------U-2FC001-----------------------------
  2659. INT 2F - Frank Kintrup TSR Utilities - CLOCK - DISABLE DISPLAY UPDATE
  2660.     AX = C001h
  2661. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  2662. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  2663. --------i-2FC001-----------------------------
  2664. INT 2F - PERSONAL MEASURE - PASS PARAMETERS TO HOOK MODULE(S)
  2665.     AX = C001h
  2666.     DX = segment of PMEASURE.EXE or 0000h
  2667.     BX = offset in PMEASURE.EXE or 0000h
  2668.     CX = offset in PMEASURE.EXE or 0000h
  2669. Return: None
  2670. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  2671.       is part of the Personal Measure system activity monitor from Spirit
  2672.       of Performance, Inc.    PMEASURE uses this call to inform its hook
  2673.       modules whether or not it is running and to pass information about
  2674.       shared data and procedures.
  2675. Warning: This information documents a function that is private to Personal
  2676.       Measure and is provided as information only.    It should NOT be called
  2677.       by any software other than Personal Measure.
  2678. SeeAlso: AX=C000h"PERSONAL MEASURE HOOK MODULE"
  2679. --------V-2FC002-----------------------------
  2680. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  2681.     AX = C002h
  2682. Return: AL = 00h if successful
  2683.         BX = status
  2684.         0000h no input since last check
  2685.         0001h new input available
  2686. Note:    this call also resets the new-input flag
  2687. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2688. Index:    screen saver;AD-DOS
  2689. --------M-2FC002-----------------------------
  2690. INT 2F - QMR - DISABLE QMR
  2691.     AX = C002h
  2692. Return: ES = QMR code segment
  2693.     AL destroyed
  2694. Desc:    this call temporarily disables QMR
  2695. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  2696. --------c-2FC002-----------------------------
  2697. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
  2698.     AX = C002h
  2699. Return: AX = ??? in K
  2700.     BX = size of print buffer in K
  2701. Program: PCACHE is the resident print spooler portion of PrintCache by
  2702.       LaserTools; it may use either memory or disk space to spool output
  2703. SeeAlso: AX=C000h"PCACHE"
  2704. --------U-2FC002-----------------------------
  2705. INT 2F - Frank Kintrup TSR Utilities - CLOCK - ENABLE DISPLAY UPDATE
  2706.     AX = C002h
  2707. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  2708. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  2709. --------V-2FC003-----------------------------
  2710. INT 2F - AD-DOS - SET MINUTES TO WAIT
  2711.     AX = C003h
  2712.     BX = minutes to wait before blanking screen
  2713. Return: AL = 00h if successful
  2714. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2715.       MS Windows
  2716. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2717. Note:    this call also resets the delay timer
  2718. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2719. Index:    screen saver;AD-DOS
  2720. --------M-2FC003-----------------------------
  2721. INT 2F - QMR - ENABLE QMR
  2722.     AX = C003h
  2723. Return: ES = QMR code segment
  2724.     AL destroyed
  2725. Desc:    this call enables QMR after it has been disabled
  2726. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2727. --------c-2FC003-----------------------------
  2728. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2729.     AX = C003h
  2730. Return: BX destroyed
  2731. SeeAlso: AX=C004h"PCACHE"
  2732. --------V-2FC004-----------------------------
  2733. INT 2F - AD-DOS - GET MINUTES TO WAIT
  2734.     AX = C004h
  2735. Return: AL = 00h if successful
  2736.         BX = minutes to wait before blanking screen
  2737. SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
  2738. Index:    screen saver;AD-DOS
  2739. --------c-2FC004-----------------------------
  2740. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2741.     AX = C004h
  2742. Return: BX destroyed
  2743. SeeAlso: AX=C003h"PCACHE"
  2744. --------V-2FC005-----------------------------
  2745. INT 2F - AD-DOS - SET BLANKER STATUS
  2746.     AX = C005h
  2747.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  2748. Return: AL = 00h if successful
  2749. SeeAlso: AX=C006h"AD-DOS"
  2750. Index:    screen saver;AD-DOS
  2751. --------c-2FC005-----------------------------
  2752. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2753.     AX = C005h
  2754.     ???
  2755. Return: BX destroyed
  2756.     ???
  2757. Program: PCACHE is the resident print spooler portion of PrintCache by
  2758.       LaserTools; it may use either memory or disk space to spool output
  2759. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2760. SeeAlso: AX=C000h"PCACHE"
  2761. --------V-2FC006-----------------------------
  2762. INT 2F - AD-DOS - GET BLANKER STATUS
  2763.     AX = C006h
  2764. Return: AL = 00h if successful
  2765.         BX = current state of screen blanker (0000h inactive, 0001h active)
  2766. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2767.       MS Windows
  2768. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2769. SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
  2770. Index:    screen saver;AD-DOS
  2771. --------c-2FC006-----------------------------
  2772. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2773.     AX = C006h
  2774.     ???
  2775. Return: BX destroyed
  2776.     ???
  2777. Note:    this function appears to be identical to AX=C007h
  2778. SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
  2779. --------V-2FC007-----------------------------
  2780. INT 2F - AD-DOS - SET HOT KEY
  2781.     AX = C007h
  2782.     BX = hot key
  2783.     CL = hot key shift status
  2784. Return: AL = 00h if successful
  2785. SeeAlso: AX=C008h"AD-DOS"
  2786. Index:    screen saver;AD-DOS
  2787. --------c-2FC007-----------------------------
  2788. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2789.     AX = C007h
  2790.     ???
  2791. Return: BX destroyed
  2792.     ???
  2793. Note:    this function appears to be identical to AX=C006h
  2794. SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
  2795. --------V-2FC008-----------------------------
  2796. INT 2F - AD-DOS - GET CURRENT HOT KEY
  2797.     AX = C008h
  2798. Return: AX = status
  2799.         0000h successful
  2800.         BX = Hot Key
  2801.         CL = Hot Key Shift Status
  2802.         0008h otherwise
  2803. SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
  2804. Index:    screen saver;AD-DOS
  2805. --------c-2FC008-----------------------------
  2806. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2807.     AX = C008h
  2808. Return: BX destroyed
  2809. SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
  2810. --------V-2FC009-----------------------------
  2811. INT 2F - AD-DOS - UNBLANK MONITOR
  2812.     AX = C009h
  2813. Return: AL = 00h if successful
  2814. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2815.       MS Windows
  2816. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2817. Note:    this function works by simulating keyboard activity
  2818. Index:    screen saver;AD-DOS
  2819. --------c-2FC009-----------------------------
  2820. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2821.     AX = C009h
  2822. Return: BX destroyed
  2823. Program: PCACHE is the resident print spooler portion of PrintCache by
  2824.       LaserTools; it may use either memory or disk space to spool output
  2825. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2826. SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
  2827. --------V-2FC00A-----------------------------
  2828. INT 2F - AD-DOS - ???
  2829.     AX = C00Ah
  2830. Return: AX = status
  2831.         0000h successful
  2832.         BH = ??
  2833.         BL = ??
  2834.         000Ah failed
  2835. Index:    screen saver;AD-DOS
  2836. --------c-2FC00A-----------------------------
  2837. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2838.     AX = C00Ah
  2839.     ???
  2840. Return: AH = bit flags
  2841.         bit 5: ???
  2842.     AL = bit flags
  2843.         bit 4: ???
  2844.         bit 3: ???
  2845.     BX destroyed
  2846.     ???
  2847. SeeAlso: AX=C000h"PCACHE"
  2848. --------V-2FC00B-----------------------------
  2849. INT 2F - AD-DOS - ???
  2850.     AX = C00Bh
  2851. Return: AX = status
  2852.         0000h successful
  2853.         000Bh failed
  2854. Index:    screen saver;AD-DOS
  2855. --------c-2FC00B-----------------------------
  2856. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  2857.     AX = C00Bh
  2858. Return: BX destroyed
  2859. SeeAlso: AX=C000h"PCACHE"
  2860. --------V-2FC00C-----------------------------
  2861. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  2862.     AX = C00Ch
  2863. Return: AX = status
  2864.         0000h successful
  2865.         000Ch failed
  2866. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2867.       MS Windows
  2868. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2869. Index:    screen saver;AD-DOS
  2870. --------c-2FC00C-----------------------------
  2871. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2872.     AX = C00Ch
  2873. Return: AX = ??? (0000h)
  2874.     BX = ??? (0000h)
  2875.     CX = ??? (0100h)
  2876.     DL = ???
  2877.     DH = ???
  2878. SeeAlso: AX=C000h"PCACHE"
  2879. --------c-2FC00D-----------------------------
  2880. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
  2881.     AX = C00Dh
  2882.     DL = ???
  2883. Return: BX destroyed
  2884. Program: PCACHE is the resident print spooler portion of PrintCache by
  2885.       LaserTools; it may use either memory or disk space to spool output
  2886. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2887. SeeAlso: AX=C000h"PCACHE"
  2888. --------V-2FC00E-----------------------------
  2889. INT 2F - AD-DOS - SET PASSWORD STATUS
  2890.     AX = C00Eh
  2891.     BX = new state (0000h disabled, 0001h enabled)
  2892. Return: ???
  2893. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
  2894. Index:    screen saver;AD-DOS
  2895. --------c-2FC00E-----------------------------
  2896. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
  2897.     AX = C00Eh
  2898.     ES:DX -> ???
  2899. Return: BX destroyed
  2900. Note:    ES:DX is stored internally if the variable is currently 0000h:0000h,
  2901.       but ignored if already set; a counter is incremented
  2902. SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
  2903. --------V-2FC00F-----------------------------
  2904. INT 2F - AD-DOS - GET PASSWORD STATUS
  2905.     AX = C00Fh
  2906. Return: BX = current state (0000h disabled, 0001h enabled)
  2907. SeeAlso: AX=C00Eh"AD-DOS"
  2908. Index:    screen saver;AD-DOS
  2909. --------c-2FC00F-----------------------------
  2910. INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
  2911.     AX = C00Fh
  2912. Return: BX destroyed
  2913. Note:    this function decrements the counter used by AX=C00Eh, and clears the
  2914.       internal pointer variable to 0000h:0000h when it reaches zero
  2915. SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
  2916. --------c-2FC010-----------------------------
  2917. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2918.     AX = C010h
  2919.     CX = index of ??? table (00h-02h, others treated as 00h)
  2920.     SI = offset into data table
  2921. Return:    AL = byte at specified offset into table
  2922.     BX destroyed
  2923. SeeAlso: AX=C000h"PCACHE"
  2924. --------c-2FC011-----------------------------
  2925. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2926.     AX = C011h
  2927. Return: AX = ??? (0007h)
  2928.     BX = ??? (0001h)
  2929.     CH = ???
  2930.     CL = ???
  2931. SeeAlso: AX=C000h"PCACHE"
  2932. --------c-2FC012-----------------------------
  2933. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2934.     AX = C012h
  2935. Return: AX = ???
  2936.     BX = ???
  2937.     CX = ???
  2938.     DX = ???
  2939. SeeAlso: AX=C000h"PCACHE"
  2940. --------c-2FC013-----------------------------
  2941. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2942.     AX = C013h
  2943.     ???
  2944. Return: BX destroyed
  2945.     ???
  2946. Program: PCACHE is the resident print spooler portion of PrintCache by
  2947.       LaserTools; it may use either memory or disk space to spool output
  2948. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2949. SeeAlso: AX=C000h"PCACHE"
  2950. --------c-2FC014-----------------------------
  2951. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2952.     AX = C014h
  2953.     ???
  2954. Return: BX destroyed
  2955.     ???
  2956. SeeAlso: AX=C000h"PCACHE"
  2957. --------c-2FC015-----------------------------
  2958. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2959.     AX = C015h
  2960.     ???
  2961. Return: BX destroyed
  2962.     ???
  2963. SeeAlso: AX=C000h"PCACHE"
  2964. --------c-2FC016-----------------------------
  2965. INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
  2966.     AX = C016h
  2967. Return: BX destroyed
  2968. SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
  2969. --------c-2FC017-----------------------------
  2970. INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
  2971.     AX = C017h
  2972. Return: BX destroyed
  2973. SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
  2974. --------c-2FC018-----------------------------
  2975. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2976.     AX = C018h
  2977.     ???
  2978. Return: BX destroyed
  2979.     ???
  2980. Note:    the first instruction of this function is an indirect jump which points
  2981.       at a RET by default
  2982. SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
  2983. --------c-2FC019-----------------------------
  2984. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2985.     AX = C019h
  2986.     ???
  2987. Return: BX destroyed
  2988.     ???
  2989. Note:    the first instruction of this function is an indirect jump which points
  2990.       at a RET by default
  2991. SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
  2992. --------c-2FC01A-----------------------------
  2993. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2994.     AX = C01Ah
  2995. Return: BX destroyed
  2996. SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
  2997. --------c-2FC01B-----------------------------
  2998. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2999.     AX = C01Bh
  3000. Return: BX destroyed
  3001. SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
  3002. --------c-2FC01C-----------------------------
  3003. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  3004.     AX = C01Ch
  3005.     ???
  3006. Return: AX = ???
  3007.     BX destroyed
  3008. SeeAlso: AX=C000h"PCACHE"
  3009. --------c-2FC01D-----------------------------
  3010. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  3011.     AX = C01Dh to C01Fh
  3012. Return: BX destroyed
  3013. Program: PCACHE is the resident print spooler portion of PrintCache by
  3014.       LaserTools; it may use either memory or disk space to spool output
  3015. Range:    AH=C0h to AH=FFh, selected by commandline switch
  3016. SeeAlso: AX=C000h"PCACHE"
  3017. --------V-2FC020-----------------------------
  3018. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  3019.     AX = C020h
  3020. Return: AL = 00h if successful
  3021.         BX = VxD API Status
  3022.         0000h no error
  3023.         0001h error
  3024.         0100h neither Windows 3.X enhanced mode nor Windows/386 2.x
  3025.               is running
  3026.         0200h VM API entry point not found (VxD not installed)
  3027. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  3028. Note:    this call resets the VxD API Status to zero
  3029. SeeAlso: AX=1602h,AX=1607h
  3030. Index:    screen saver;AD-DOS
  3031. --------V-2FC04E-----------------------------
  3032. INT 2F - Explosiv v2.00+ - NON-TSR EXECUTING CHECK
  3033.     AX = C04Eh
  3034. Return: AL = 4Fh if Explosiv is running but not memory-resident
  3035. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  3036.       by H&G Software (Reidar Gresseth and Chris Hook)
  3037. Range:    AH=C0h to AH=C9h, selected by configuration
  3038. SeeAlso: AX=C050h
  3039. Index:    screen saver;Explosiv
  3040. --------V-2FC050-----------------------------
  3041. INT 2F - Explosiv v2.00+ - INSTALLATION CHECK
  3042.     AX = C050h
  3043. Return: AL = 51h if installed
  3044.     ---v3.0+ ---
  3045.         BX = interval in clock ticks
  3046.         CH = animation display color (00h mono, 01h tinge, 02h color)
  3047.         CL = animation delay factor
  3048.         DH = animation parameters
  3049.         DL = INT 10 checking (00h on, 01h off)
  3050.         SI = number of bytes available for animation code
  3051.         DI = display type (00h VGA, 01h EGA, 02h CGA, 03h HGC, 04h MDA)
  3052. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  3053.       by H&G Software (Reidar Gresseth and Chris Hook)
  3054. Range:    AH=C0h to AH=C9h, selected by configuration
  3055. SeeAlso: AH=93h,AX=C000h"AD-DOS",AX=C04Eh,AX=C052h,AX=C054h"v3"
  3056. SeeAlso: INT 14/AX=AA01h
  3057. Index:    screen saver;Explosiv
  3058. --------V-2FC052-----------------------------
  3059. INT 2F - Explosiv v2.00+ - UNINSTALL
  3060.     AX = C052h
  3061.     DX:BX = address to return to on successful uninstall
  3062. Return: at specified address if successful
  3063.     AL = 53h on error
  3064. Note:    specified return address must have the segment of the caller's PSP
  3065. SeeAlso: AX=C050h
  3066. Index:    screen saver;Explosiv
  3067. --------V-2FC054-----------------------------
  3068. INT 2F - Explosiv v2.x - GET ANIMATION DELAY FACTOR
  3069.     AX = C054h
  3070. Return: AL = delay factor
  3071. SeeAlso: AX=C057h
  3072. Index:    screen saver;Explosiv
  3073. ----------2FC054-----------------------------
  3074. INT 2F - Explosiv v3.0+ - UPDATE PARAMETERS
  3075.     AX = C054h
  3076.     BX = new interval in clock ticks
  3077.     CH = animation display color (00h mono, 01h tinge, 02h color)
  3078.     CL = animation delay factor
  3079.     DH = animation parameters
  3080.     DL = INT 10 checking (00h on, 01h off)
  3081. SeeAlso: AX=C050h
  3082. --------V-2FC055-----------------------------
  3083. INT 2F - Explosiv v2.x - SET BLANKING INTERVAL
  3084.     AX = C055h
  3085.     BX = new interval in clock ticks
  3086. Index:    screen saver;Explosiv
  3087. --------V-2FC056-----------------------------
  3088. INT 2F - Explosiv v2.x - SET ANIMATION DISPLAY TYPE
  3089.     AX = C056h
  3090.     BL = animated display type (00h mono, 01h color)
  3091. SeeAlso: AX=C058h"v2.x"
  3092. Index:    screen saver;Explosiv
  3093. --------V-2FC056-----------------------------
  3094. INT 2F - Explosiv v3.0+ - ENABLE/DISABLE EXPLOSIV
  3095.     AX = C056h
  3096.     BX = new state
  3097.         0000h disabled
  3098.         0100h enabled
  3099.         0101h enabled, but never blank
  3100.         0102h enabled, always blank
  3101. --------V-2FC057-----------------------------
  3102. INT 2F - Explosiv v2.x - SET ANIMATION DELAY FACTOR
  3103.     AX = C057h
  3104.     BL = delay factor
  3105. SeeAlso: AX=C054h"v2.x"
  3106. Index:    screen saver;Explosiv
  3107. --------V-2FC058-----------------------------
  3108. INT 2F - Explosiv v2.x - SET ANIMATION PARAMETER
  3109.     AX = C058h
  3110.     BL = animation parameter
  3111. Note:    the animation parameter has different interpretations for each display
  3112. SeeAlso: AX=C056h"v2.x"
  3113. Index:    screen saver;Explosiv
  3114. ----------2FC058-----------------------------
  3115. INT 2F - Explosiv v3.0+ - LOAD NEW ANIMATION DISPLAY CODE
  3116.     AX = C058h
  3117.     BX = file handle for file containing display code
  3118.     CX = number of bytes to load
  3119.     DX = offset at which animation code should be loaded
  3120. Return: AL = status (see #1546)
  3121. Note:    if AL=00h-03h on return, the file will be closed
  3122.  
  3123. (Table 1546)
  3124. Values for Explosiv function status:
  3125.  00h    successful
  3126.  01h    code too large to available space
  3127.  02h    no data read, load aborted
  3128.  03h    incomplete load, default blanking display loaded instead
  3129.  58h    unexpected offset in DX
  3130. --------V-2FC059-----------------------------
  3131. INT 2F - Explosiv v2.x - DISABLE EXPLOSIV
  3132.     AX = C059h
  3133. Note:    clears flag set by AX=C05Ah
  3134. SeeAlso: AX=C05Ah
  3135. Index:    screen saver;Explosiv
  3136. --------V-2FC05A-----------------------------
  3137. INT 2F u - Explosiv v2.x - ENABLE EXPLOSIV
  3138.     AX = C05Ah
  3139.     BL = ???
  3140. Note:    sets flag cleared by AX=C059h then stores BL
  3141. SeeAlso: AX=C059h,AX=C05Bh
  3142. Index:    screen saver;Explosiv
  3143. --------V-2FC05B-----------------------------
  3144. INT 2F - Explosiv v2.x - CHANGE ANIMATION DISPLAY
  3145.     AX = C05Bh
  3146.     BL = animation display
  3147. Note:    this function fails silently if the requested display is not in memory
  3148. SeeAlso: AX=C05Ah,AX=C05Ch
  3149. Index:    screen saver;Explosiv
  3150. --------V-2FC05C-----------------------------
  3151. INT 2F - Explosiv v2.x - SET INT 10 CHECKING
  3152.     AX = C05Ch
  3153.     BL = new state of INT 10 checking (00h enabled, 01h disabled)
  3154. SeeAlso: AX=C05Bh
  3155. Index:    screen saver;Explosiv
  3156. --------N-2FC100-----------------------------
  3157. INT 2F U - Personal NetWare - STPIPX v1.00 - INSTALLATION CHECK
  3158.     AX = C100h
  3159. Return: AL = FFh if installed
  3160.         ES:SI -> signature string "STP-IPX$"
  3161.         BX = version??? (0001h for v1.00)
  3162.         DI corrupted
  3163. Note:    AH=C1h is the default value; STPIPX probably scans a range of
  3164.       multiplex numbers to find a free one, as LSL does
  3165. SeeAlso: AX=C000h"LSL",AX=C101h
  3166. ----------2FC101-----------------------------
  3167. INT 2F U - Personal NetWare - STPIPX v1.00 - UNINSTALL
  3168.     AX = C101h
  3169. Return: AL = status???
  3170.     BX corrupted
  3171. SeeAlso: AX=C101h
  3172. --------k-2FC300DX0000-----------------------
  3173. INT 2F U - SpaceManager - INSTALLATION CHECK
  3174.     AX = C300h
  3175.     DX = 0000h
  3176. Return: AL = FFh if any SpaceManager programs installed
  3177.         BX = 6F73h
  3178.         CX = 6F68h
  3179. Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
  3180.       Systems, Inc.
  3181. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  3182. SeeAlso: AX=C300h/DX=0666h
  3183. --------k-2FC300-----------------------------
  3184. INT 2F U - SpaceManager - INSTALLATION VERIFICATION
  3185.     AX = C300h
  3186.     DX = program identifier (see #1547) or 0666h for any SpaceManager prog
  3187.     BX = 4F53h ('OS')
  3188.     CX = 4F48h ('OH')
  3189. Return: AL = FFh if BX/CX as specified and specified program installed
  3190.         BX = 6F73h ('os')
  3191.         CX = 6F68h ('oh')
  3192. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  3193. Note:    this call is chained if BX,CX, or DX are not as specified above
  3194. SeeAlso: AX=C300h/DX=0000h
  3195.  
  3196. (Table 1547)
  3197. Values for SpaceManager program identifier:
  3198.  9000h    SMOUNT (SuperMount)
  3199.  9001h    SELECTC (SelectCompress)
  3200.  9002h    SUPERX (SuperExchange)
  3201.  9003h    FORTUNE (FortuneTeller)
  3202. --------k-2FC301-----------------------------
  3203. INT 2F U - SpaceManager - ???
  3204.     AX = C301h
  3205.     DX = program identifier (9000h,9001h,9003h) (see #1547)
  3206.     ???
  3207. Return: ???
  3208. --------k-2FC302-----------------------------
  3209. INT 2F U - SpaceManager - ENABLE PROGRAM
  3210.     AX = C302h
  3211.     DX = program identifier (9000h,9001h,9003h) (see #1547)
  3212. Return: AX destroyed
  3213. SeeAlso: AX=C303h,AX=C306h
  3214. --------k-2FC303-----------------------------
  3215. INT 2F U - SpaceManager - DISABLE PROGRAM
  3216.     AX = C303h
  3217.     DX = program identifier (9000h,9001h,9003h) (see #1547)
  3218. Return: AX destroyed
  3219. SeeAlso: AX=C302h,AX=C306h
  3220. --------k-2FC304-----------------------------
  3221. INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
  3222.     AX = C304h
  3223.     DX = program identifier (9000h,9001h,9003h) (see #1547)
  3224. Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
  3225.     AX destroyed
  3226. --------k-2FC305DX9003-----------------------
  3227. INT 2F U - SpaceManager - FORTUNE.EXE - NOP
  3228.     AX = C305h
  3229.     DX = 9003h
  3230. Return: AX destroyed
  3231. --------k-2FC305-----------------------------
  3232. INT 2F U - SpaceManager - ???
  3233.     AX = C305h
  3234.     DX = program identifier (9000h,9001h) (see #1547)
  3235.     ???
  3236. Return: ???
  3237. --------k-2FC306-----------------------------
  3238. INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
  3239.     AX = C306h
  3240.     DX = program identifier (9000h,9001h,9003h) (see #1547)
  3241. Return: AL = current state (00h disabled, FAh enabled)
  3242.     AH destroyed
  3243. SeeAlso: AX=C302h,AX=C303h
  3244. --------k-2FC307DX9001-----------------------
  3245. INT 2F U - SpaceManager - SELECTC - ???
  3246.     AX = C307h
  3247.     DX = 9001h
  3248.     BX = ???
  3249.     CX = ???
  3250.     ???
  3251. Return: ???
  3252. --------k-2FC308DX9001-----------------------
  3253. INT 2F U - SpaceManager - SELECTC - ???
  3254.     AX = C308h
  3255.     DX = 9001h
  3256.     ???
  3257. Return: ???
  3258. --------d-2FC64CBX5553-----------------------
  3259. INT 2F U - Smart Prompt - INSTALLATION CHECK
  3260.     AX = C64Ch
  3261.     BX = 5553h
  3262. Return: AX = 4CC6h if installed
  3263.     BX = 5355h if installed
  3264. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which forces
  3265.       an immediate flush of SmartDrive's (and compatible caches') buffers
  3266.       on returning to the DOS prompt
  3267. --------v-2FC900BP0000-----------------------
  3268. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  3269.     AX = C900h
  3270.     BP = 0000h
  3271. Return: AL = FFh if installed
  3272.         BP >= 0014h
  3273. Note:    called by TBSCANX
  3274. SeeAlso: AX=C987h,AX=CA00h
  3275. --------v-2FC987-----------------------------
  3276. INT 2F U - ThunderByte??? - DISINFECT FILE???
  3277.     AX = C987h
  3278.     BX:DX -> filename
  3279.     BX:CX -> virus name
  3280. Return: AX = status
  3281.         0000h successful???
  3282. Note:    called by TBSCANX
  3283. SeeAlso: AX=CA00h
  3284. --------r-2FC9FF-----------------------------
  3285. INT 2F C - StackMan - INSTALLATION BROADCAST
  3286.     AX = C9FFh
  3287.     BL = BCD version number
  3288.     CX = number of stacks
  3289.     DX = stack size in bytes
  3290. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  3291.       which functions as a replacement for the DOS STACK= command as well
  3292.       as permitting multiple TSRs to share a pool of stack space
  3293. Notes:    called by StackMan when it goes resident to inform interested TSRs that
  3294.       its API is available
  3295.     the installation check consists of testing for the string "STACKXXX" at
  3296.       offset 0Ah from the INT B4 handler
  3297. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  3298. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  3299. --------F-2FCA-------------------------------
  3300. INT 2F - FAXPLUS - FAX TSR
  3301.     AH = CAh
  3302.     ???
  3303. Return: ???
  3304. Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
  3305.       Veldman
  3306. SeeAlso: AH=2Ah"Gammafax"
  3307. --------v-2FCA00BX5442-----------------------
  3308. INT 2F - TBSCANX - INSTALLATION CHECK
  3309.     AX = CA00h
  3310.     BX = 5442h ('TB')
  3311. Return: AL = state
  3312.         00h not installed
  3313.         FFh installed
  3314.         BX = 7462h ('tb') if BX was 5442h on entry
  3315. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  3316. Note:    programs may perform virus checks on themselves, other program files,
  3317.       or their data files by invoking the TBSCANX API.
  3318. SeeAlso: AX=4653h,AX=C900h
  3319. --------v-2FCA01-----------------------------
  3320. INT 2F - TBSCANX - GET STATUS
  3321.     AX = CA01h
  3322. Return: AH = BCD version number (v2.2+)
  3323.         CAh for versions before 2.2
  3324.     AL = state (00h = disabled, 01h = enabled)
  3325.     CX = number of signatures which will be searched
  3326. ---v2.0---
  3327.     BX = EMS handle, 0000h if not using EMS
  3328. ---v2.3+---
  3329.     BX = segment of swap area, 0000h if not swapped
  3330.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  3331. SeeAlso: AX=CA02h
  3332. --------v-2FCA02-----------------------------
  3333. INT 2F - TBSCANX - SET STATE
  3334.     AX = CA02h
  3335.     BL = new state (00h = disabled, 01h = enabled)
  3336. SeeAlso: AX=CA01h
  3337. --------v-2FCA03-----------------------------
  3338. INT 2F - TBSCANX - SCAN BUFFER
  3339.     AX = CA03h
  3340.     CX = size of buffer
  3341.     DS:DX -> buffer containing data to scan
  3342. Return: CF clear if no virus signatures found
  3343.         BX,ES destroyed
  3344.     CF set if signature found
  3345.         ES:BX -> ASCIZ virus name (v2.3+)
  3346.         DS:DX -> ASCIZ virus name (v2.0)
  3347.     AX,CX,DX destroyed (v2.3+)
  3348.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  3349. SeeAlso: AX=CA04h
  3350. --------v-2FCA04-----------------------------
  3351. INT 2F - TBSCANX - SCAN FILE
  3352.     AX = CA04h
  3353.     DS:DX -> filename
  3354. Return: CF clear if no virus signatures found
  3355.         BX,ES destroyed
  3356.     CF set if signature found
  3357.         ES:BX -> ASCIZ virus name
  3358.     AX,CX,DX destroyed
  3359. Note:    this function requires at least 4K free memory
  3360. SeeAlso: AX=CA03h
  3361. --------U-2FCAFEBX0000-----------------------
  3362. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  3363.     AX = CAFEh
  3364.     BX = 0000h
  3365. Return: BX = segment of resident code if installed
  3366.         0000h if not installed
  3367. SeeAlso: AX=5453h,INT 2D"AMIS"
  3368. --------F-2FCB00-----------------------------
  3369. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  3370.     AX = CB00h
  3371. Return: AL = status
  3372.         00h not installed, OK to install
  3373.         01h not installed, not OK to install
  3374.         FFh installed
  3375. Note:    AH = CBh is the default identifier, but may be reconfigured
  3376. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
  3377. --------F-2FCB00BX4D53-----------------------
  3378. INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
  3379.     AX = CB00h
  3380.     BX = 4D53h ('MS')
  3381.     CX = 4949h ('II')
  3382. Return: AL = status
  3383.         00h not installed, OK to install
  3384.         01h not installed, not OK to install
  3385.         FFh installed
  3386.         BX = 6D73h ('ms')
  3387.         CX = 6969h ('ii')
  3388. Note:    this function is equivalent to the standard CASMGR installation check,
  3389.       but uses the additional magic values to identify which CAS is
  3390.       installed
  3391. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB0Eh,AX=CB16h
  3392. --------F-2FCB01-----------------------------
  3393. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  3394.     AX = CB01h
  3395.     DS:DX -> ASCIZ name of task control file
  3396. Return: AX >= 0: event handle
  3397.     AX < 0: two's complement of error code
  3398. Note:    files needed for an event must be kept until task is complete or error
  3399. SeeAlso: AX=CB0Bh,AX=CB15h
  3400.  
  3401. (Table 1548)
  3402. Values for CAS error code:
  3403.   (AH = class, AL = subcode, value passed back is 2's complement)
  3404.   Class 00h    --- FAX warnings
  3405.     Subcode 00h    no error
  3406.         02h    bad scanline count
  3407.         03h    page sent with errors, could not retransmit
  3408.         04h    received data lost
  3409.         05h    invalid or missing logo file
  3410.         06h    filename does not match nonstandard format (NSF) header
  3411.         07h    file size does not match NSF header
  3412.   Class 01h    --- DOS warnings (data was sent)
  3413.     Subcode 01h    invalid function
  3414.         05h    access denied
  3415.         06h    invalid handle
  3416.         others    see INT 21/AH=59h
  3417.   Class 02h    --- fatal errors (data not sent)
  3418.     Subcode 00h    multiplex handler failed
  3419.         01h    unknown command
  3420.         02h    bad event handle
  3421.         03h    FIND NEXT attempted before FIND FIRST
  3422.         04h    no more events
  3423.         07h    invalid queue type
  3424.         08h    bad control file
  3425.         09h    communication board busy
  3426.         0Ah    invalid command parameter
  3427.         0Bh    can't uninstall resident code
  3428.         0Ch    file exists
  3429.         80h    unknown task type
  3430.         81h    bad phone number
  3431.         82h    bad .PCX file header
  3432.         83h    unexpected EOF
  3433.         84h    unexpected disconnect
  3434.         85h    too many dialing retries
  3435.         86h    no file specified for send
  3436.         87h    communication board timeout
  3437.         88h    received too many pages (>1023) of data
  3438.         89h    manual connect initiated too long ago
  3439.         8Ah    hardware command set error
  3440.         8Bh    bad NonStandard Format (NSF) header file
  3441.   Class 03h    --- fatal DOS errors
  3442.     Subcode 02h    file not found
  3443.         03h    path not found
  3444.         others    see INT 21/AH=59h
  3445.   Class 04h    --- FAX errors
  3446.     Subcode 01h    remote unit not Group 3 compatible
  3447.         02h    remote unit did not send capabilities
  3448.         03h    other FAX machine incompatible
  3449.         04h    other FAX incapable of file transfers
  3450.         05h    exceeded retrain or FAX resend limit
  3451.         06h    line noise or failure to agree on bit rate
  3452.         07h    remote disconnected after receiving data
  3453.         08h    no response from remote after sending data
  3454.         09h    remote's capabilities incompatible
  3455.         0Ah    no dial tone (v1.2+)
  3456.         0Bh    invalid response from remote unit after sending data
  3457.         0Dh    phone line dead or remote unit disconnected
  3458.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  3459.         11h    invalid command from remote after receiving data
  3460.         15h    tried to receive from incompatible hardware
  3461.         5Ch    received data overflowed input buffer
  3462.         5Dh    remote unexpectedly stopped sending data
  3463.         5Eh    other FAX machine jammed (no data sent)
  3464.         5Fh    remote took too long to send fax scan line
  3465.         63h    can't get through to remote unit
  3466.         64h    user canceled event
  3467.   Class 05h    --- application-specific (v1.2+)
  3468.   ---Intel FAXPOP.EXE
  3469.     Subcode 00h    tried to send while in graphics mode
  3470.         01h    insufficient disk space
  3471.         02h    internal buffer overflow
  3472.   Class 06h    --- CAS implementation-specific (v1.2+)
  3473. --------F-2FCB02-----------------------------
  3474. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  3475.     AX = CB02h
  3476. Return: AX >= 0: event handle of aborted event
  3477.     AX < 0: error code (see #1548)
  3478. Note:    termination could take up to 30 seconds
  3479. SeeAlso: AX=CB08h,AX=CB10h
  3480. --------F-2FCB05-----------------------------
  3481. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  3482.     AX = CB05h
  3483.     CX = status of events to find
  3484.         0000h successful completion
  3485.         0001h waiting to be processed
  3486.         0002h number has been dialed
  3487.         0003h connection established, sending
  3488.         0004h connection established, receiving
  3489.         0005h event aborted
  3490.         FFFFh find any event, regardless of status
  3491.         other negative values, match error code
  3492.     DH = direction
  3493.         00h chronological order, earliest to latest
  3494.         01h reverse chronological order, latest to earliest
  3495.     DL = queue to search
  3496.         00h task queue
  3497.         01h receive queue
  3498.         02h log queue
  3499. Return: AX = 0000h successful
  3500.         BX = event handle for found event
  3501.     AX < 0       error code (see #1548)
  3502. SeeAlso: AX=CB06h,AX=CB07h
  3503. --------F-2FCB06-----------------------------
  3504. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  3505.     AX = CB06h
  3506.     DL = queue to search
  3507.         00h task queue
  3508.         01h receive queue
  3509.         02h log queue
  3510. Return: AX = 0000h successful
  3511.         BX = event handle for found event
  3512.     AX < 0       error code (see #1548)
  3513. Note:    direction of search is same as preceding FIND FIRST call
  3514. SeeAlso: AX=CB05h
  3515. --------F-2FCB07-----------------------------
  3516. INT 2F - Communicating Applications Specification - OPEN FILE
  3517.     AX = CB07h
  3518.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  3519.     CX = receive file number (ignored for task queue and log queue)
  3520.         0000h  open receive control file
  3521.         N       open Nth received data file
  3522.     DL = queue
  3523.         00h task queue
  3524.         01h receive queue control file or received file, as given by CX
  3525.         02h log queue
  3526.         03h group file in task queue (v1.2+)
  3527.         04h group file in log queue (v1.2+)
  3528. Return: AX = 0000h successful
  3529.         BX = DOS file handle for requested file
  3530.     AX < 0       error code (see #1548)
  3531. Note:    the returned file handle has been opened in read-only mode and should
  3532.       be closed with INT 21/AH=3Eh after use
  3533. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  3534. --------F-2FCB08-----------------------------
  3535. INT 2F - Communicating Applications Specification - DELETE FILE
  3536.     AX = CB08h
  3537.     BX = event handle
  3538.     CX = receive file number
  3539.         0000h delete ALL received files and receive control file
  3540.         N      delete Nth received file
  3541.     DL = queue
  3542.         00h delete control file in task queue and corresponding group file
  3543.           if it exists
  3544.         01h delete file in receive queue, as given by CX
  3545.         02h delete control file in log queue (individual deletions not
  3546.           recommended, to maintain integrity of log) and corresponding
  3547.           group file if it exists
  3548. Return: AX = 0000h successful
  3549.     AX < 0       error code (see #1548)
  3550. SeeAlso: AX=CB02h,AX=CB09h
  3551. --------F-2FCB09-----------------------------
  3552. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  3553.     AX = CB09h
  3554.     DL = queue
  3555.         00h delete all control files in task queue, including all group
  3556.           files
  3557.         01h delete all files in receive queue
  3558.         02h delete all control files in log queue, including all group
  3559.           files
  3560. Return: AX = 0000h successful
  3561.     AX < 0       error code (see #1548)
  3562. SeeAlso: AX=CB08h
  3563. --------F-2FCB0A-----------------------------
  3564. INT 2F - Communicating Applications Specification - GET EVENT DATE
  3565.     AX = CB0Ah
  3566.     BX = event handle
  3567.     DL = queue
  3568.         00h task queue
  3569.         01h receive queue
  3570.         02h log queue
  3571. Return: AX = 0000h successful
  3572.         CX = year
  3573.         DH = month
  3574.         DL = day
  3575.     AX < 0       error code (see #1548)
  3576. SeeAlso: AX=CB0Bh,AX=CB0Ch
  3577. --------F-2FCB0B-----------------------------
  3578. INT 2F - Communicating Applications Specification - SET TASK DATE
  3579.     AX = CB0Bh
  3580.     BX = event handle (task event only)
  3581.     CX = year
  3582.     DH = month
  3583.     DL = day
  3584. Return: AX = 0000h successful
  3585.     AX < 0       error code (see #1548)
  3586. Note:    setting a task's date and time to before the current date and time
  3587.       causes it to execute immediately
  3588. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  3589. --------F-2FCB0C-----------------------------
  3590. INT 2F - Communicating Applications Specification - GET EVENT TIME
  3591.     AX = CB0Ch
  3592.     BX = event handle
  3593.     DL = queue
  3594.         00h task queue
  3595.         01h receive queue
  3596.         02h log queue
  3597. Return: AX = 0000h successful
  3598.         CH = hour
  3599.         CL = minute
  3600.         DH = second
  3601.         DL = 00h
  3602.     AX < 0       error code (see #1548)
  3603. SeeAlso: AX=CB0Ah,AX=CB0Dh
  3604. --------F-2FCB0D-----------------------------
  3605. INT 2F - Communicating Applications Specification - SET TASK TIME
  3606.     AX = CB0Dh
  3607.     BX = event handle (task events only)
  3608.     CH = hour
  3609.     CL = minute
  3610.     DH = second
  3611.     DL unused
  3612. Return: AX = 0000h successful
  3613.     AX < 0       error code (see #1548)
  3614. Note:    setting a task's date and time to before the current date and time
  3615.       causes it to execute immediately
  3616. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  3617. --------F-2FCB0E-----------------------------
  3618. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  3619.     AX = CB0Eh
  3620.     DS:DX -> 256-byte buffer
  3621. Return: AX = 0000h successful
  3622.         DS:DX buffer filled
  3623.     AX < 0       error code (see #1548)
  3624.  
  3625. Format of CAS external data block:
  3626. Offset    Size    Description    (Table 1549)
  3627.  00h    BYTE    CAS major version
  3628.  01h    BYTE    CAS minor version
  3629.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  3630.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  3631.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  3632.  60h 32 BYTEs    ASCIZ default sender name
  3633.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  3634.  95h 107 BYTEs    reserved
  3635. --------F-2FCB0F-----------------------------
  3636. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  3637.     AX = CB0Fh
  3638.     DL = subfunction
  3639.         00h get current autoreceive state
  3640.         01h set autoreceive state
  3641.         DH = number of rings before answer, 00h = never
  3642. Return: AX = 0000h autoreceive disabled
  3643.     AX = N       number of rings before answer
  3644.     AX < 0       error code (see #1548)
  3645. --------F-2FCB10-----------------------------
  3646. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  3647.     AX = CB10h
  3648.     DS:DX -> 512-byte buffer
  3649. Return: AX = 0000h successful
  3650.         BX = event handle of current event or negative error code if
  3651.               no current event
  3652.         buffer filled
  3653.     AX < 0       error code (see #1548)
  3654. SeeAlso: AX=CB02h,AX=CB0Dh
  3655.  
  3656. (Table 1550)
  3657. Values for CAS event type:
  3658.  00h    send
  3659.  01h    receive
  3660.  02h    polled send
  3661.  03h    polled receive
  3662.  04h to 7Fh reserved
  3663.  FFh    serious hardware error
  3664.  
  3665. Format of CAS status area:
  3666. Offset    Size    Description    (Table 1551)
  3667.  00h    BYTE    event type (see #1550)
  3668.  01h    BYTE    transfer type
  3669.         00h 200x200 dpi, FAX mode
  3670.         01h 100x200 dpi, FAX mode
  3671.         02h file transfer mode
  3672.         03h to 7Fh reserved
  3673.  02h    WORD    event status (see #1552)
  3674.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  3675.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  3676.  08h    WORD    number of files to transfer, max 7FFFh
  3677.  0Ah    WORD    offset of file transfer record
  3678.  0Ch 47 BYTEs    ASCIZ phone number to call
  3679.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  3680.  7Bh    BYTE    reserved (00h)
  3681.  7Ch    BYTE    connect time, seconds
  3682.  7Dh    BYTE    connect time, minutes
  3683.  7Eh    BYTE    connect time, hours
  3684.  7Fh    DWORD    total number of pages in all files
  3685.  83h    DWORD    pages already transmitted
  3686.  87h    WORD    number of files already transmitted
  3687.  89h    BYTE    cover page flag
  3688.         00h don't transmit cover page
  3689.         01h transmit cover page
  3690.         02h to 7Fh reserved
  3691.  8Ah    WORD    total number of transmission errors
  3692.  8Ch 78 BYTEs    reserved (zeros)
  3693.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  3694.  EFH 32 BYTEs    ASCIZ destination name
  3695. 10Fh 32 BYTEs    ASCIZ sender name
  3696. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  3697. 17Fh 128 BYTEs    file transfer record for current event (see #1553)
  3698.  
  3699. (Table 1552)
  3700. Values for CAS event status:
  3701.  0000h    completed successfully
  3702.  0001h    waiting
  3703.  0002h    number dialed
  3704.  0003h    connected, sending
  3705.  0004h    connected, receiving
  3706.  0005h    aborted
  3707.  0006h to 007Fh reserved
  3708.  0080h to 7FFFh application-specific events
  3709.  8000h to FFFFh error codes
  3710.  
  3711. Format of CAS file transfer record:
  3712. Offset    Size    Description    (Table 1553)
  3713.  00h    BYTE    file type (ignored unless FAX)
  3714.         00h ASCII
  3715.         01h PCX
  3716.         02h DCX
  3717.         03h to 7Fh reserved
  3718.  01h    BYTE    text size for ASCII FAX file
  3719.         00h = 80 columns by 66 lines (11 inches)
  3720.         01h = 132 columns by 88 lines (11 inches)
  3721.         02h to 7Fh reserved
  3722.  02h    BYTE    status of file
  3723.         00h untouched
  3724.         01h opened
  3725.         02h moved
  3726.         03h deleted
  3727.         04h not yet received
  3728.         05h to 7Fh reserved
  3729.  03h    DWORD    bytes already transmitted
  3730.  07h    DWORD    file size in bytes
  3731.  0Bh    WORD    pages alread transmitted
  3732.  0Dh    WORD    number of pages in file
  3733.  0Fh 80 BYTEs    ASCIZ filename
  3734.  5Fh    BYTE    1/8 inch page length
  3735.         if page length below set to 01h through 7Fh, this value
  3736.           specifies additional 1/8 inch increments to page length
  3737.  60h    BYTE    page length
  3738.         00h = 11 inches
  3739.         01h to 7Fh = page length is this number of inches plus value of
  3740.               1/8 inch field above
  3741.         80h to FEh reserved
  3742.         FFh = ASCII pages ending with formfeed
  3743.  61h 31 BYTEs    reserved (zeros)
  3744. --------F-2FCB11-----------------------------
  3745. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  3746.     AX = CB11h
  3747.     DL = queue to get status of
  3748.         00h task queue
  3749.         01h receive queue
  3750.         02h log queue
  3751.         03h send events (v1.2+)
  3752.         04h receive events (v1.2+)
  3753. Return: AX >= 0     total number of changes made to queue, modulo 32768
  3754.         BX = number of control files currently in queue
  3755.         CX = number of received files (zero for task and log queues)
  3756.     AX < 0    error code (see #1548)
  3757. SeeAlso: AX=CB12h
  3758. --------F-2FCB11DL03-------------------------
  3759. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  3760.     AX = CB11h
  3761.     DL = 03h
  3762. Return: AX = number of successful sends since resident manager started
  3763.     BX = number of unsuccessful sends, including warnings
  3764. SeeAlso: AX=CB11h/DL=04h
  3765. --------F-2FCB11DL04-------------------------
  3766. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  3767.     AX = CB11h
  3768.     DL = 04h
  3769. Return: AX = number of received file events since resident manager started
  3770.     BX = number of received FAX events
  3771. SeeAlso: AX=CB11h/DL=03h
  3772. --------F-2FCB12-----------------------------
  3773. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  3774.     AX = CB12h
  3775.     DS:DX -> 128-byte status buffer (see #1554,#1556)
  3776. Return: AX = 0000h successful
  3777.         DS:DX buffer filled with hardware-dependent status information
  3778.        < 0       error code (see #1548)
  3779. SeeAlso: AX=CB10h,AX=CB11h
  3780.  
  3781. Format of status buffer for Intel Connection CoProcessor:
  3782. Offset    Size    Description    (Table 1554)
  3783.  00h    BYTE    Connection CoProcessor connection status flags (see #1557)
  3784.  01h    BYTE    number of kilobytes of free buffer space
  3785.  02h    BYTE    page buffer status
  3786.         bit 7: Connection CoProcessor has documents to send
  3787.         bits 6-0: number of pages in buffer
  3788.  03h    BYTE    number of retries left for dialing number
  3789.  04h    BYTE    page number to retransmit
  3790.  05h    BYTE    communications status (see #1558)
  3791.  06h    BYTE    baud rate (see #1555)
  3792.  07h  3 BYTEs    reserved
  3793.  0Ah    BYTE    Connection CoProcessor hardware status (see #1559)
  3794.  0Bh    BYTE    Connection CoProcessor switch states (see #1560)
  3795.  0Ch    BYTE    communications flags (see #1561)
  3796.  0Dh    BYTE    reserved
  3797.  0Eh    WORD    error count (only valid while busy, reset when idle)
  3798.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  3799.  14h    BYTE    'A' if Connection CoProcessor board present
  3800.  15h  9 BYTEs    reserved
  3801.  1Eh 21 BYTEs    ASCIZ CCITT identification
  3802.  33h 77 BYTEs    reserved
  3803. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3804.       by examining the byte at offset 14h
  3805.  
  3806. Bitfields for Connection CoProcessor baud rate:
  3807. Bit(s)    Description    (Table 1555)
  3808.  7    reserved
  3809.  6-4    baud rate
  3810.     000 = 300 baud    (V.21 SDLC or HDLC mode)
  3811.     100 = 2400 baud (V.27 ter)
  3812.     101 = 4800 baud (V.27 ter)
  3813.     110 = 7200 baud (V.29)
  3814.     111 = 9600 baud (V.29)
  3815.  3-0    reserved, should be 0110
  3816.  
  3817. Format of status buffer for Intel SatisFAXtion board:
  3818. Offset    Size    Description    (Table 1556)
  3819.  00h    BYTE    SatisFAXtion connection status flags (see #1562)
  3820.  01h    BYTE    SatisFAXtion board state (see #1563)
  3821.  02h    BYTE    number of KB free in buffer
  3822.  03h    BYTE    number of pages or files in buffer
  3823.  04h    BYTE    number of redials remaining on current number
  3824.  05h    BYTE    FAX page number to retransmit
  3825.  06h    BYTE    current page/file in block transfer
  3826.  07h    BYTE    number of rings received (only if auto-answer enabled)
  3827.  08h    WORD    error count
  3828.  0Ah    DWORD    length of file being transferred
  3829.  0Eh  6 BYTEs    reserved
  3830.  14h    BYTE    'B' if SatisFAXtion board present
  3831.  15h 13 BYTEs    ASCIZ transfer agent name
  3832.  22h  5 BYTEs    ASCIZ transfer agent version number
  3833.  27h 13 BYTEs    ASCIZ resident loader name
  3834.  34h  5 BYTEs    ASCIZ resident loader version number
  3835.  39h 21 BYTEs    ASCIZ remote CSID
  3836.  4Eh 13 BYTEs    ASCIZ resident manager name
  3837.  5Bh  5 BYTEs    ASCIZ resident manager version number
  3838.  60h 32 BYTEs    reserved
  3839. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3840.       by examining the byte at offset 14h
  3841.  
  3842. Bitfields for Connection CoProcessor connection status flags:
  3843. Bit(s)    Description    (Table 1557)
  3844.  7    hardware busy sending or receiving
  3845.  6    last page of data
  3846.  5    no data on current page
  3847.  4    retransmit request for current page being transmitted
  3848.  3    NSF (nonstandard file) mode active
  3849.  2-0    reserved
  3850.  
  3851. Bitfields for communications status:
  3852. Bit(s)    Description    (Table 1558)
  3853.  7    originating call
  3854.  6    FAX message to be sent
  3855.  5    on line
  3856.  4    ring detected and receive enabled
  3857.  3    buffer dumped on receive
  3858.  2-0    hardware sequence state
  3859.     000 idle
  3860.     001 dial
  3861.     010 answer
  3862.     011 transmit
  3863.     100 receive
  3864.     101 pre-message
  3865.     110 post-message
  3866.     111 disconnect
  3867.  
  3868. Bitfields for Connection CoProcessor hardware status:
  3869. Bit(s)    Description    (Table 1559)
  3870.  7    modem option installed
  3871.  6    Connection CoProcessor has control of DAA (not latched)
  3872.  5    on line (not latched)
  3873.  4    ring detected (not latched)
  3874.  3    data in command buffer (not latched)
  3875.  2    set if using DMA channel 1, clear if using DMA channel 3
  3876.  1    line length compensation 1 set (not latched)
  3877.  0    line length compensation 0 set (not latched)
  3878.  
  3879. Bitfields for Connection CoProcessor switch states:
  3880. Bit(s)    Description    (Table 1560)
  3881.  7    reserved
  3882.  6    unused
  3883.  5    spare switch open
  3884.  4    FAX ADR1 switch open
  3885.  3    FAX ADR0 switch open
  3886.  2    alternate interrupt switch open
  3887.  1    COM SEL 1 switch open
  3888.  0    COM SEL 0 switch open
  3889. Note:    valid combinations of 0-2 are
  3890.     000  COM2 IRQ3 IObase 2F8h
  3891.     001  COM1 IRQ4 IObase 3F8h
  3892.     010  COM4 IRQ3 IObase 2E8h
  3893.     011  COM3 IRQ4 IObase 3E8h
  3894.     110  COM4 IRQ2 IObase 2E8h
  3895.     111  COM3 IRQ5 IObase 3E8h
  3896.  
  3897. Bitfields for communications flags:
  3898. Bit(s)    Description    (Table 1561)
  3899.  7    reserved
  3900.  6    auxiliary relay forced ON
  3901.  5    modem select relay forced ON
  3902.  4    offhook relay forced ON
  3903.  3    9600 bps enabled
  3904.  2    7200 bps enabled
  3905.  1    4800 bps enabled
  3906.  0    2400 bps enabled
  3907.  
  3908. Bitfields for SatisFAXtion connection status flags:
  3909. Bit(s)    Description    (Table 1562)
  3910.  7    busy in T.30 CCITT fax protocol
  3911.  6    data on current page/file (only used for block xfers)
  3912.  5    retransmission of last page requested
  3913.  4    in file transfer mode
  3914.  3    data in buffer
  3915.  2    data buffer dumped on receive
  3916.  1    200x100 dpi resolution instead of 200x200 dpi
  3917.  0    data modem in use, FAX image modem not available
  3918.  
  3919. Bitfields for SatisFAXtion board state:
  3920. Bit(s)    Description    (Table 1563)
  3921.  7    reserved
  3922.  6    handset jack active, data and FAX modems not available
  3923.  5-3    current rate
  3924.     000  300 bps (V.21 HDLC)
  3925.     100 2400 bps (V.27 ter)
  3926.     101 4800 bps (V.27 ter)
  3927.     110 7200 bps (V.29)
  3928.     111 9600 bps (V.29)
  3929.  2-0    T.30 CCITT protocol state
  3930.     000 idle
  3931.     001 dialing
  3932.     010 answering
  3933.     011 transmitting
  3934.     100 receiving
  3935.     101 pre-message
  3936.     110 post-message
  3937.     111 disconnect
  3938. --------F-2FCB13DL00-------------------------
  3939. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  3940.     AX = CB13h
  3941.     DL = 00h
  3942. Return: AX = 0040h in progress
  3943.        >= 0       passed
  3944.        < 0       hardware-dependent failure code (see #1564,#1565)
  3945. SeeAlso: AX=CB13h/DL=01h
  3946.  
  3947. Bitfields for Intel Connection CoProcessor failure codes:
  3948. Bit(s)    Description    (Table 1564)
  3949.  3    9600 bps FAX modem module failed
  3950.  2    SDLC chip failed
  3951.  1    RAM failed
  3952.  0    ROM checksum failed
  3953.  
  3954. Bitfields for Intel SatisFAXtion failure codes:
  3955. Bit(s)    Description    (Table 1565)
  3956.  1    2400 bps data modem failed
  3957.  0    9600 bps FAX modem failed
  3958. --------F-2FCB13DL01-------------------------
  3959. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  3960.     AX = CB13h
  3961.     DL = 01h
  3962. Return: AX = 0000h successfully started
  3963.     AX < 0       error code (see #1548)
  3964. SeeAlso: AX=CB13h/DL=00h
  3965. --------F-2FCB14-----------------------------
  3966. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  3967.     AX = CB14h
  3968.     BX = event handle
  3969.     CX = receive file number
  3970.         0001h first received file
  3971.         N      Nth received file
  3972.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  3973. Return: AX = 0000h successful
  3974.     AX < 0       error code (see #1548)
  3975. --------F-2FCB15-----------------------------
  3976. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  3977.     AX = CB15h
  3978.     DS:DX -> variable-length data area (see #1566)
  3979. Return: AX >= 0 event handle
  3980.     AX < 0    error code (see #1548)
  3981. SeeAlso: AX=CB01h
  3982.  
  3983. Format of CAS file submission data area:
  3984. Offset    Size    Description    (Table 1566)
  3985.  00h    BYTE    transfer type
  3986.         00h = 200x200 dpi, fax mode
  3987.         01h = 100x200 dpi, fax mode
  3988.         02h = file transfer mode
  3989.         03h to 7Fh reserved
  3990.  01h    BYTE    text size
  3991.         00h = 80 columns
  3992.         01h = 132 columns
  3993.         02h to 7Fh reserved
  3994.  02h    WORD    time to send (DOS packed time, see #0780 at INT 21/AX=5700h)
  3995.  04h    WORD    date to send (DOS packed date, see #0781 at INT 21/AX=5700h)
  3996.  06h 32 BYTEs    ASCIZ destination name
  3997.  26h 80 BYTEs    ASCIZ name of file to send
  3998.  76h 47 BYTEs    ASCIZ phone number to dial
  3999.  A5h 64 BYTEs    ASCIZ application-specific tag string
  4000.  E5h    BYTE    reserved (00h)
  4001.  E6h    BYTE    cover page
  4002.         00h don't send cover page
  4003.         01h send cover page
  4004.         02h to 7Fh reserved
  4005.  E7h 23 BYTEs    reserved (zeros)
  4006.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  4007.         set to 01h)
  4008. --------F-2FCB16BX1234-----------------------
  4009. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  4010.     AX = CB16h
  4011.     BX = 1234h
  4012.     CX = 5678h
  4013.     DX = 9ABCh
  4014. Return: AX = 0000h successful
  4015.     AX < 0       error code
  4016. Note:    the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
  4017. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h
  4018. Index:    uninstall;CAS Manager
  4019. --------F-2FCB17-----------------------------
  4020. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  4021.     AX = CB17h
  4022.     BX = event handle
  4023.     CL = cover page status
  4024.         00h not read
  4025.         01h read by user
  4026. Return: AX = 0000h successful
  4027.     AX < 0       error code
  4028. --------F-2FCB80-----------------------------
  4029. INT 2F - Intel SatisFAXtion CASMGR - ???
  4030.     AX = CB80h
  4031.     ???
  4032. Return: ???
  4033. --------F-2FCB81-----------------------------
  4034. INT 2F - Intel SatisFAXtion CASMGR - ???
  4035.     AX = CB81h
  4036.     ???
  4037. Return: ???
  4038. --------F-2FCB82-----------------------------
  4039. INT 2F - Intel SatisFAXtion CASMGR - ???
  4040.     AX = CB82h
  4041.     ???
  4042. Return: ???
  4043. --------F-2FCBDCBL56-------------------------
  4044. INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
  4045.     AX = CBDCh
  4046.     BL = 56h
  4047.     BH = line number (starts with 1)
  4048.     CX:DX -> 32-byte status buffer or 80 character string
  4049. Return: AX = number of cards installed, or FFFFh on error
  4050. Program: Comwave manufacturers the Microfax line of fax cards which are a high-
  4051.       performance multi-card FAX solution for OEMs.
  4052. Note:    defaults to AH=CBh but can be changed
  4053. SeeAlso: AX=CBDDh,AX=DA00h
  4054. --------F-2FCBDDBL56-------------------------
  4055. INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
  4056.     AX = CBDDh
  4057.     BL = 56h
  4058.     BH = ?
  4059.     CX:DX -> command to execute
  4060. Return: AX = status
  4061.         0000h success
  4062.         FFFFh on error
  4063. SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
  4064. --------c-2FCC--SI5453-----------------------
  4065. INT 2F U - PC-Kwik Programs - API
  4066.     AH = CCh
  4067.     SI = 5453h or 7473h
  4068.     AL = function number (at least 00h,01h,04h,05h,07h,80h)
  4069.     DL = program identifier (see #1567)
  4070. Return: SI = 7473h
  4071.     other registers vary by function
  4072. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  4073.       thus supports this call
  4074. SeeAlso: INT 21/AH=2Bh/CX=4358h
  4075.  
  4076. (Table 1567)
  4077. Values for PC-Kwik program identifier:
  4078.  00h    all installed PowerPak programs
  4079.  01h    SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
  4080.  02h    PCKSPL (print spooler)
  4081.  04h    PCKSCRN (screen accelerator)
  4082.  05h    PCKKEY (keyboard enhancer)
  4083.  06h    PCKRAMD (RAM disk)
  4084.  08h    PCKWIK.SYS
  4085.  10h    PCKCDROM (CD-ROM support for SUPERPCK)
  4086. --------N-2FCC00-----------------------------
  4087. INT 2F - Tsoft NFSDRVR - INSTALLATION CHECK
  4088.     AX = CC00h
  4089. Return: AX = 7777h
  4090.     BX = ???
  4091.     CX = ???
  4092.     DX = ???
  4093.     ES = data segment of resident portion
  4094. SeeAlso: AX=CC01h,AX=CC06h
  4095. --------N-2FCC01-----------------------------
  4096. INT 2F - Tsoft NFSDRVR - ???
  4097.     AX = CC01h
  4098.     ???
  4099. Return: ???
  4100. SeeAlso: AX=CC00h
  4101. --------N-2FCC02-----------------------------
  4102. INT 2F - Tsoft NFSDRVR - ???
  4103.     AX = CC02h
  4104.     ???
  4105. Return: ???
  4106. SeeAlso: AX=CC00h
  4107. --------N-2FCC03-----------------------------
  4108. INT 2F - Tsoft NFSDRVR - ???
  4109.     AX = CC03h
  4110.     ???
  4111. Return: ???
  4112. SeeAlso: AX=CC00h
  4113. --------N-2FCC04-----------------------------
  4114. INT 2F - Tsoft NFSDRVR - ???
  4115.     AX = CC04h
  4116.     ???
  4117. Return: ???
  4118. SeeAlso: AX=CC00h
  4119. --------N-2FCC05-----------------------------
  4120. INT 2F - Tsoft NFSDRVR - ???
  4121.     AX = CC05h
  4122.     ???
  4123. Return: ???
  4124. SeeAlso: AX=CC00h
  4125. --------N-2FCC06-----------------------------
  4126. INT 2F - Tsoft NFSDRVR - ???
  4127.     AX = CC06h
  4128.     ???
  4129. Return: ???
  4130. SeeAlso: AX=CC00h
  4131. ----------2FCD00-----------------------------
  4132. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  4133.     AX = CD00h
  4134. Return: AL = state
  4135.         00h not installed, OK to install
  4136.         01h not installed, not OK to install
  4137.         FFh installed
  4138. SeeAlso: AX=CD02h"Image"
  4139. --------P-2FCD00-----------------------------
  4140. INT 2F - LaserPort Interface - INSTALLATION CHECK
  4141.     AX = CD00h
  4142. Return: AL = status
  4143.         FFh installed
  4144. SeeAlso: AX=CD0Fh"LaserPort"
  4145. --------U-2FCD00-----------------------------
  4146. INT 2F - SWELL.EXE - INSTALLATION CHECK
  4147.     AX = CD00h
  4148. Return: AX = 00FFh installed
  4149.         BH = major version
  4150.         BL = minor version
  4151. Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
  4152.       process with INT 21/AH=4Bh
  4153. ----------2FCD01-----------------------------
  4154. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  4155.     AX = CD01h
  4156.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  4157. Return: AL = status
  4158.         00h successful
  4159.         CX:BX -> internal character device name
  4160.         80h error
  4161. --------U-2FCD01-----------------------------
  4162. INT 2F - SWELL.EXE - SUSPEND ONCE
  4163.     AX = CD01h
  4164. Return: AX = 0000h
  4165. SeeAlso: AX=CD02h"SWELL"
  4166. ----------2FCD02-----------------------------
  4167. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  4168.     AX = CD02h
  4169. Return: AL = status
  4170.         00h/01h successful
  4171.         BH = major version number (BCD)
  4172.         BL = minor version number (BCD)
  4173.         80h error
  4174. Note:    if return AL = 01h, the IPI supports network redirection
  4175. SeeAlso: AX=CD00h"Image"
  4176. --------U-2FCD02-----------------------------
  4177. INT 2F - SWELL.EXE - SUSPEND
  4178.     AX = CD02h
  4179. Return: AX = 0000h
  4180. SeeAlso: AX=CD03h"SWELL"
  4181. ----------2FCD03-----------------------------
  4182. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  4183.     AX = CD03h
  4184.     BX = scan line
  4185.     CX = requested density in dots per inch (300, 600, or 1200)
  4186. Return: AL = status (see also AX=CD04h"Image")
  4187.         00h successful
  4188.         CX = density at which scan line was mapped
  4189.         ES:DI -> start of scan line
  4190.         80h unsuccessful
  4191.         81h scan line out of range
  4192.         82h unsupported scan line density
  4193.         83h out of memory
  4194. SeeAlso: AX=CD04h"Image"
  4195. --------U-2FCD03-----------------------------
  4196. INT 2F - SWELL.EXE - ACTIVATE
  4197.     AX = CD03h
  4198. Return: AX = 0000h
  4199. SeeAlso: AX=CD02h"SWELL"
  4200. ----------2FCD04-----------------------------
  4201. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  4202.     AX = CD04h
  4203.     CX:BX -> structure (see #1569)
  4204. Return: AL = status (see #1568)
  4205. SeeAlso: AX=CD03h"Image"
  4206.  
  4207. (Table 1568)
  4208. Values for IPI function status:
  4209.  00h    successful
  4210.  80h    unsuccessful
  4211.  81h    scan line out of range
  4212.  82h    unsupported scan line density
  4213.  83h    out of memory
  4214.  84h    unrecognized source
  4215.  85h    initialization error
  4216.  
  4217. Format of structure:
  4218. Offset    Size    Description    (Table 1569)
  4219.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  4220.  02h    DWORD    pointer to image data
  4221.  06h    WORD    scan line on which to place
  4222.  08h    WORD    bit offset from start of scan line at which to place
  4223.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  4224.  0Ch    WORD    width in bits of data
  4225.  0Eh    WORD    source logical page number
  4226.  10h    WORD    source handle (only if source in expanded memory)
  4227.  12h    WORD    source offset (only if source in expanded memory)
  4228. --------U-2FCD04-----------------------------
  4229. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  4230.     AX = CD04h
  4231. Return: AX = 0000h
  4232. SeeAlso: AX=CD05h"SWELL"
  4233. ----------2FCD05-----------------------------
  4234. INT 2F - Intel Image Processing Interface - PRINT PAGE
  4235.     AX = CD05h
  4236. Return: AL = status (00h,80h) (see #1568)
  4237. Note:    page image is retained, so multiple calls will print multiple copies of
  4238.       the page
  4239. SeeAlso: AX=CD06h"Image"
  4240. --------U-2FCD05-----------------------------
  4241. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  4242.     AX = CD05h
  4243. Return: AX = 0000h
  4244. SeeAlso: AX=CD04h"SWELL"
  4245. ----------2FCD06-----------------------------
  4246. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  4247.     AX = CD06h
  4248. Return: AL = status (00h,80h) (see #1568)
  4249. Note:    palette is reset to default
  4250. SeeAlso: AX=CD09h"Image"
  4251. --------U-2FCD06-----------------------------
  4252. INT 2F - SWELL.EXE - UNINSTALL
  4253.     AX = CD06h
  4254. Return: AX = status
  4255.         0000h uninstalled
  4256.         8002h programs still swapped, not uninstalled
  4257. ----------2FCD07-----------------------------
  4258. INT 2F - Intel Image Processing Interface - reserved
  4259.     AX = CD07h
  4260. SeeAlso: AX=CD00h"Image"
  4261. --------U-2FCD07-----------------------------
  4262. INT 2F - SWELL.EXE - GET INFO
  4263.     AX = CD07h
  4264.     ES:BX -> 32-byte buffer for info (see #1570)
  4265. Return: AX = status
  4266.         0000h successful
  4267.         ES:BX buffer filled
  4268.         8001h buffer wrong size
  4269.  
  4270. Format of SWELL.EXE info buffer:
  4271. Offset    Size    Description    (Table 1570)
  4272.  00h    WORD    20h  (total size of buffer)
  4273.  02h    BYTE    suspend-once mode active if nonzero
  4274.  03h    BYTE    00h active, 01h suspended
  4275.  04h    BYTE    00h quiet, 01h verbose
  4276.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  4277.  06h 26 BYTEs    unused???
  4278. ----------2FCD08-----------------------------
  4279. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  4280.     AX = CD08h
  4281.     CX:BX -> structure (see #1571)
  4282. Return: AL = status (00h,80h-85h) (see #1568)
  4283. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  4284.  
  4285. Format of IPI screen image structure:
  4286. Offset    Size    Description    (Table 1571)
  4287.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  4288.  02h    DWORD    pointer to image data
  4289.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  4290.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  4291.  0Ah    WORD    left cropping (currently must be zero)
  4292.  0Ch    WORD    top cropping (currently must be zero)
  4293.  0Eh    WORD    width (currently must be 8000h)
  4294.  10h    WORD    height (currently must be 8000h)
  4295.  12h    WORD    horizontal size of image in 1200 dpi units
  4296.  14h    WORD    vertical size of image in 1200 dpi units
  4297.  16h    WORD    aspect ratio (currently reserved)
  4298.  18h    WORD    initialization flag (if 01h, initialization is performed)
  4299.  1Ah    WORD    pixels per line of source data
  4300.  1Ch    WORD    number of scan lines in source data
  4301.  1Eh    WORD    number of scan lines in packet
  4302.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  4303.  22h    WORD    pixels per byte (1,2,4, or 8)
  4304.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  4305.  26h    WORD    source page number (if in expanded memory)
  4306.  28h    WORD    source handle (if in expanded memory)
  4307.  2Ah    WORD    source offset (if in expanded memory)
  4308. --------U-2FCD08-----------------------------
  4309. INT 2F - SWELL.EXE - UNUSED
  4310.     AX = CD08h
  4311. Return: AX = FFFFh (error)
  4312. ----------2FCD09-----------------------------
  4313. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  4314.     AX = CD09h
  4315.     CX:BX -> structure (see #1572)
  4316. Return: AL = status (00h,80h) (see #1568)
  4317. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  4318.  
  4319. Format of IPI load screen structure:
  4320. Offset    Size    Description    (Table 1572)
  4321.  00h    BYTE    style
  4322.         44h ('D') diamond style
  4323.         4Ch ('L') line style
  4324.  01h    BYTE    reserved (00h)
  4325.  02h    WORD    frequency in lines per inch [sic]
  4326.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  4327.  04h    WORD    screen angle in degrees (-360 to 360)
  4328.         currently coerced to nearest of -45, 0, 45, or 90
  4329. --------U-2FCD09-----------------------------
  4330. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  4331.     AX = CD09h
  4332. Return: AX = 0000h
  4333. SeeAlso: AX=CD0Ah"SWELL"
  4334. ----------2FCD0A-----------------------------
  4335. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  4336.     AX = CD0Ah
  4337.     CX:BX -> palette structure (see #1573)
  4338. Return: AL = status (00h,80h) (see #1568)
  4339. SeeAlso: AX=CD09h"Image Processing"
  4340.  
  4341. Format of IPI palette structure:
  4342. Offset    Size    Description    (Table 1573)
  4343.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  4344.  01h    2**N    palette translation values, one per possible pixel value
  4345. --------U-2FCD0A-----------------------------
  4346. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  4347.     AX = CD0Ah
  4348. Return: AX = 0000h
  4349. SeeAlso: AX=CD09h"SWELL"
  4350. --------P-2FCD0F-----------------------------
  4351. INT 2F - LaserPort Interface - EXECUTE FUNCTION
  4352.     AX = CD0Fh
  4353.     BL = function
  4354.         01h enable
  4355.         02h disable
  4356.         03h ???
  4357. Return: AL = status
  4358.         00h success
  4359. SeeAlso: AX=CD00h"LaserPort"
  4360. --------K-2FCF00-----------------------------
  4361. INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
  4362.     AX = CF00h
  4363. Return: AL = FFh if installed
  4364. Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
  4365. Note:    values in AL other than 00h cause an immediate return without modifying
  4366.       any registers
  4367. --------G-2FD000-----------------------------
  4368. INT 2F C - MDEBUG display driver - GET DRIVER STATUS
  4369.     AX = D000h
  4370. Return: CF set on error
  4371.         all other registers must be unchanged)
  4372.     CF clear if successful
  4373.         AL = FFh
  4374.         AH = driver semaphor
  4375.         00h driver is not active
  4376.         01h driver is active
  4377.         BX = CS of the driver
  4378.         CX = driver version (CH = major, CL = minor, must be >= 013Ch)
  4379.         DL = buffer semaphor
  4380.         00h driver is not pending
  4381.         01h driver is pending between functions 02h and 03h
  4382.         DH = show semaphor
  4383.         00h driver is not pending
  4384.         01h driver is pending between functions 04h and 05h
  4385. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  4386.       Schemmer, including a memory monitor, an interpreter and a
  4387.       disassembler
  4388. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  4389. Notes:    MDEBUG can use any two consecutive multiplex numbers between C0h and
  4390.       FFh; the default is D0h for the display driver and D1h for the
  4391.       command driver (see INT 60/AH=00h"MDEBUG" for the actual multiplex
  4392.       numbers used)
  4393.     this function MUST be reentrant, as MDEBUG calls it after every popup
  4394.       before any other actions.  The handler should not change any
  4395.       registers if the display is in an unsupported mode or in a mode
  4396.       MDEBUG supports itself, e.g. a normal text mode with at least 80x25
  4397.       characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
  4398.       not call any of the other functions for this popup session.
  4399.     MDEBUG will not call the other functions if the returned version is
  4400.       less than the actual version of MDEBUG.
  4401.     if the driver is reentrant, DL and DH should be 00h
  4402. SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
  4403. --------M-2FD000-----------------------------
  4404. INT 2F - ZWmous - INSTALLATION CHECK
  4405.     AX = D000h
  4406. Return: AX = 5A57h ("ZW") if installed
  4407.         BX = segment of resident code
  4408. Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
  4409.       with many non-mouse applications by entering the letter under the
  4410.       mouse cursor on button presses
  4411. SeeAlso: INT 33/AX=0003h
  4412. --------N-2FD000-----------------------------
  4413. INT 2F - Lotus CD/Networker - INSTALLATION CHECK
  4414.     AX = D000h
  4415. Return: AL = FFh if CD/Networker TSR is loaded
  4416.     BX = 4D44h ("MD") signature
  4417.     CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
  4418.     DX = bitmap identifying all loaded CD/Networker TSRs.
  4419. Notes:    INT 2F/AH=D0h is used by CD/Networker to communicate between a
  4420.       resident redirector TSR and a transient program that controls the
  4421.       TSR's CD-ROM drive emulation (volume attachments, caching, etc).
  4422.     At present there is only one CD/Networker TSR; the bitmap always = 4.
  4423. SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
  4424. --------G-2FD001-----------------------------
  4425. INT 2F C - MDEBUG display driver - INITIALIZE DRIVER
  4426.     AX = D001h
  4427. Return: CF set on error
  4428.     AL = driver semaphor
  4429.     AH = buffer semaphor
  4430. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  4431. Notes:    MDEBUG calls this function after every successful call of the function
  4432.       00h. The function should reset all internal data and the status of
  4433.       the driver. If this function returns an error, MDEBUG will not call
  4434.       the other functions in this popup session.
  4435.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  4436.       FFh; the default is D0h for the display driver and D1h for the
  4437.       command driver
  4438. SeeAlso: AX=D000h
  4439. --------G-2FD002-----------------------------
  4440. INT 2F C - MDEBUG display driver - SAVE GRAPHIC DATA
  4441.     AX = D002h
  4442. Return: CF set on error
  4443.     CF clear if successful
  4444.         display memory saved and display switched to one of the text modes
  4445.           02h, 03h or 07h.
  4446. Note:    MDEBUG calls this function only once every popup session before
  4447.       displaying its windows.
  4448. SeeAlso: AX=D000h,AX=D003h
  4449. --------N-2FD002BX4D44-----------------------
  4450. INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
  4451.     AX = D002h
  4452.     BX = 4D44h
  4453.     DX = bitmap identifying one loaded CD/Networker TSR
  4454. Return: ES:DI -> data area owned by TSR
  4455. Note:    the format of the data area changes with each minor revision, so it
  4456.       cannot be counted on
  4457. SeeAlso: AX=D000h"Lotus"
  4458. --------G-2FD003-----------------------------
  4459. INT 2F C - MDEBUG display driver - RESTORE GRAPHIC DATA
  4460.     AX = D003h
  4461. Return: CF set on error
  4462.     CF clear if successful
  4463.         display restored to the mode it was in before calling AX=D002h and
  4464.           the display memory is restored
  4465. Note:    MDEBUG calls this function only once every popup session just before
  4466.      it exits to normal DOS.
  4467. SeeAlso: AX=D000h,AX=D002h
  4468. --------G-2FD004-----------------------------
  4469. INT 2F - MDEBUG display driver - SHOW SAVED DATA
  4470.     AX = D004h
  4471. Return: CF set on error
  4472.     CF clear if successful
  4473.         display switched to mode it was in before calling AX=D002h and the
  4474.           display memory is restored
  4475. Note:    This function needn't save the display memory before changing it.
  4476. SeeAlso: AX=D000h,AX=D005h
  4477. --------G-2FD005-----------------------------
  4478. INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
  4479.     AX = D005h
  4480. Return: CF set on error
  4481.     CF clear if successful
  4482.         display restored to mode it was in before calling AX=D004h
  4483. Note:    This function needn't save or change the display memory
  4484. SeeAlso: AX=D000h,AX=D004h
  4485. --------G-2FD0-------------------------------
  4486. INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
  4487.     AH = D0h
  4488.     AL = 06h-7Fh
  4489. Note:    these functions are reserved for future use
  4490. --------G-2FD0-------------------------------
  4491. INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
  4492.     AH = D0h
  4493.     AL = 80h-FFh
  4494. Note:    these functions numbers are reserved for user defined features (e.g.
  4495.       communication between the transient und resident parts of the driver)
  4496. --------G-2FD100-----------------------------
  4497. INT 2F C - MDEBUG command driver - GET STATUS
  4498.     AX = D100h
  4499.     BX = version of MDEBUG (BH = major, BL = minor)
  4500.     CX = command driver counter
  4501. ---v1.60+---
  4502.     DS:SI -> MDEBUG identification table (see #1574)
  4503.     ES = segment of display memory used by MDEBUG
  4504.     DI = size of video mode used by MDEBUG
  4505.         (high byte = lines, low byte = columns)
  4506. Return: DL = FFh
  4507.     BX = version number of the driver if it is less than the version in BX,
  4508.           else unchanged
  4509.     CX incremented
  4510. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  4511.       Schemmer, including a memory monitor, an interpreter, and a
  4512.       disassembler
  4513. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  4514. Notes:    called by MDEBUG at start of popup session; if the version number
  4515.       returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
  4516.       not call any of the other functions during this popup session
  4517.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  4518.       FFh; the default is D0h for the display driver and D1h for the
  4519.       command driver (see INT 60/AH=00h"MDEBUG" for the multiplex numbers
  4520.       actually used)
  4521.     this function must end with a far call to the old INT 2F handler after
  4522.       changing the registers
  4523.     this function MUST be reentrant
  4524.     command drivers must also declare the following data at the given
  4525.       offsets in the code segment
  4526.         100h  3 BYTEs    JMP-command in .COM-files
  4527.         103h    BYTE    NOP-command (90h)
  4528.         104h 26 BYTEs    signature "Kommandotreiber für MDEBUG"
  4529.         11Eh 12 BYTEs    name of driver, e.g. "MDHISDRV.COM"
  4530.                 each driver must have a unique name
  4531.     MDEBUG will pass every key and command to the command driver(s) before
  4532.       checking for a valid internal command
  4533. SeeAlso: AX=D000h,AX=D101h
  4534.  
  4535. Format of MDEBUG identification table:
  4536. Offset    Size    Description    (Table 1574)
  4537.  -2    WORD    entry offset
  4538.  00h    WORD    CS of MDEBUG
  4539.  02h    DWORD    old INT 08h vector
  4540.  06h    DWORD    old INT 09h vector
  4541.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  4542.  0Eh    BYTE    length of version string
  4543.  0Fh  N BYTEs    version string
  4544. --------G-2FD101-----------------------------
  4545. INT 2F - MDEBUG command driver - INITIALIZE DRIVER
  4546.     AX = D101h
  4547.     CX = command driver counter
  4548. Return: DL = status
  4549.         FFh if successful
  4550.         CX incremented
  4551.         else error: all registers unchanged
  4552. Note:    this function must end with a  far call to the old INT 2F handler after
  4553.       changing the registers
  4554.     this function must be reentrant
  4555. --------G-2FD102-----------------------------
  4556. INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
  4557.     AX = D102h
  4558.     BL = first character of the interpreter command
  4559.     BH = last character of the interpreter command (or blank)
  4560.     DS:SI -> parameter for the interpreter command as ASCIZ string
  4561.     DS:DI -> MDEBUG data structure (see #1576)
  4562. Return: AL = FFh
  4563.     CF set on error
  4564.         AH = error number (see #1575)
  4565.         DS:SI -> ASCIZ error message (max 30 characters) if AH=0Ch
  4566.     CF clear if successful
  4567.         AH = return code
  4568.         00h continue processing the command line
  4569.         01h leave MDEBUG popup session
  4570.         02h leave MDEBUG popup session and automatically popup again
  4571.               if the InDOS flag is zero
  4572.         03h not used (same as 00h)
  4573.         04h not used (same as 00h)
  4574.         05h put new command line into the input buffer,
  4575.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  4576.         06h process new command line
  4577.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  4578.            else unknown status, but continue processing commmand line
  4579. Note:    this function must end with a far call to the old INT 2F handler (with
  4580.       registers unchanged) if the driver does not support the interpreter
  4581.       command in BX.  Otherwise, the driver must not chain to the old
  4582.       INT 2F.
  4583.  
  4584. (Table 1575)
  4585. Values for MDEBUG error number:
  4586.  01h    syntax error
  4587.  02h    first shell of the command.com is activ
  4588.  03h    Esc pressed
  4589.  04h    break pressed
  4590.  05h    DOS is busy
  4591.  06h    command ended
  4592.  07h    division by zero
  4593.  08h    invalid display driver
  4594.  09h    invalid command driver
  4595.  0Ah    error 8 and 9
  4596.  0Bh    unknown error
  4597.  0Ch    new error
  4598.  else    unknown error
  4599.  
  4600. Format of MDEBUG data structure:
  4601. Offset    Size    Description    (Table 1576)
  4602.  00h    WORD    register SE
  4603.  02h    WORD    register OF
  4604.  04h    WORD    register FS
  4605.  06h    WORD    register FO
  4606.  08h    WORD    register AX
  4607.  0Ah    WORD    register BX
  4608.  0Ch    WORD    register CX
  4609.  0Eh    WORD    register DX
  4610.  10h    WORD    register SI
  4611.  12h    WORD    register DI
  4612.  14h    WORD    register DS
  4613.  16h    WORD    register ES
  4614.  18h    WORD    register BP
  4615.  1Ah    WORD    register SS
  4616.  1Ch    WORD    register SP
  4617.  1Eh    WORD    register FL (flags)
  4618.  20h    WORD    register R0
  4619.  22h    WORD    register R1
  4620.  24h    WORD    register R2
  4621.  26h    WORD    register R3
  4622.  28h    WORD    register R4
  4623.  2Ah    WORD    register R5
  4624.  2Ch    WORD    register R6
  4625.  2Eh    WORD    register R7
  4626.  30h    WORD    register R8
  4627.  32h    WORD    register CS, return-address
  4628.  34h    WORD    register IP, return-address
  4629.  36h    DWORD    saved pointer to data for key <F6> (v1.60)
  4630.         saved monitor address (v1.70)
  4631.  3Ah 12 WORDs    saved register values on last popup entry (for <F8> key)
  4632.         (original register values at popup entry of MDEBUG)
  4633.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4634.  52h 12 WORDs    saved register values on last popup exit (for <SHIFT-F8> key)
  4635.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4636.  6Ah    DWORD    address of the DOS-invars-table
  4637.  6Eh    DWORD    address of the InDOS flag
  4638.  72h    WORD    offset of the register which is used for the segment of the
  4639.           first monitor window
  4640.  74h    WORD    offset of the register which is used for the offset of the
  4641.           first monitor window
  4642.  76h    WORD    name of the register which is used for the segment of the
  4643.           first monitor segment
  4644.  78h    WORD    name of the register which is used for the offset of the first
  4645.           monitor window
  4646.  7Ah    WORD    pseudo register 1
  4647.  7Ch    WORD    pseudo register 2
  4648. --------G-2FD103-----------------------------
  4649. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
  4650.     AX = D103h
  4651.     BX = key code (like result of an interrupt 16h call)
  4652.     CX = cursor position
  4653.         0000h in the ASCII column of the monitor
  4654.         0001h in one of the hex fields of the monitor
  4655.     DS:SI -> MDEBUG data structure (see #1576)
  4656.     ES:DI -> actual byte in the monitor
  4657. Return: AL = FFh
  4658.     AH = return code
  4659.         00h key processed, read next key
  4660.         01h leave MDEBUG popup session
  4661.         02h leave MDEBUG popup session and automatically popup again if DOS
  4662.           is not busy
  4663.         03h signal an error (beep)
  4664.         04h driver has redefined the key, proceed with the new key
  4665.         BX = new key code
  4666.         MDEBUG will not pass the new key to the command driver(s)
  4667.        else treat like code 00h
  4668. Note:    this function must end with a far call to the old INT 2F handler (with
  4669.       registers unchanged) if the driver does not support the key in BX.
  4670.       Otherwise, the driver must not chain to the old INT 2F.
  4671. SeeAlso: AX=D104h
  4672. --------G-2FD104-----------------------------
  4673. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
  4674.     AX = D104h
  4675.     DS:SI -> MDEBUG data structure (see #1576)
  4676. Return: AL = FFh
  4677.     AH = return code
  4678.         00h key processed, read next key
  4679.         01h leave MDEBUG popup session
  4680.         02h leave MDEBUG popup session and automactically popup again if
  4681.           DOS is not busy
  4682.         03h signal an error (beep)
  4683.         04h driver has redefined the key, proceed with the new key
  4684.         BX = new key code
  4685.         MDEBUG won't pass the new key to the command driver(s)
  4686.         05h put new command line into the input buffer
  4687.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4688.         06h process new command line
  4689.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4690.        else treat like code 00h
  4691. Note:    this function must end with a far call to the old INT 2F handler if the
  4692.       driver does not support the key in BX.  Otherwise, the driver must
  4693.       not chain to the old INT 2F.
  4694. SeeAlso: AX=D103h
  4695. --------G-2FD1-------------------------------
  4696. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4697.     AH = D1h
  4698.     AL = 05h-0Ah
  4699. Note:    these functions are reserved for future use
  4700. --------G-2FD110-----------------------------
  4701. INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
  4702.     AX = D110h
  4703. Return: DL = FFh
  4704.     ES:BX -> next program in the chain for INT 2F
  4705.     CX = code segment of this driver
  4706.     DI = offset of driver identification table (see #1577) (v1.60+)
  4707. Notes:    only called by the transient part of the driver
  4708.     must be reentrant and the driver must not chain this function to the
  4709.       old INT 2F
  4710.  
  4711. Format of the MDEBUG driver identification table:
  4712. Offset    Size    Description    (Table 1577)
  4713.  00h  26 BYTEs     signature "Kommandotreiber für MDEBUG"
  4714.                          ^- Note: ASCII 129,German U-umlaut
  4715.  27h  12 BYTEs     name of driver, e.g. "MDHISDRV.COM"
  4716.          each driver must have a unique name
  4717. --------G-2FD111-----------------------------
  4718. INT 2F - MDEBUG command driver - START DRIVER
  4719.     AX = D111h
  4720. Return: DL = FFh
  4721. Notes:    only called by the transient part of the driver to inform the resident
  4722.       part that it is installed
  4723.     the function must be reentrant and the driver mustn't chain this
  4724.       function to the old INT 2F
  4725. SeeAlso: AX=D101h,AX=D112h
  4726. --------G-2FD112-----------------------------
  4727. INT 2F - MDEBUG command driver - END DRIVER
  4728.     AX = D112h
  4729. Return: DL = FFh
  4730. Notes:    only called by the transient part of the driver to inform the resident
  4731.       part that it will be released after this function
  4732.     the function must be reentrant and the driver mustn't chain this
  4733.       function to the old INT 2F
  4734. SeeAlso: AX=D101h,AX=D111h
  4735. --------G-2FD1-------------------------------
  4736. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4737.     AH = D1h
  4738.     AL = 13h-7Fh
  4739. Note:    these functions are reserved for future use
  4740. --------G-2FD1-------------------------------
  4741. INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
  4742.     AH = D1h
  4743.     AL = 80h-FFh
  4744. Note:    these functions are reserved for user defined features (e.g.
  4745.       communication between the transient und resident parts of the driver)
  4746. --------U-2FD200-----------------------------
  4747. INT 2F - PCL-838.EXE - INSTALLATION CHECK
  4748.     AX = D200h
  4749. Return: AL = FFh if installed??? (documented as AX = return value)
  4750. Program: PCL-838 is a resident utility for controlling a stepmotor adapter
  4751.       board by Advantec
  4752. SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
  4753. --------Q-2FD200BX5144-----------------------
  4754. INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
  4755.     AX = D200h
  4756.     BX = 5144h ("QD")
  4757.     CX = 4D45h ("ME")
  4758.     DX = 4D30h ("M0")
  4759. Return: AL = FFh installed
  4760.     if BX,CX,DX registers were as specified on entry:
  4761.         BX = 4D45h ("ME")
  4762.         CX = 4D44h ("MD")
  4763.         DX = 5652h ("VR")
  4764. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4765. Notes:    the Quarterdeck RPCI (Resident Program Communication Interface) is
  4766.       supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
  4767.     for AL <> 0, if the BX/CX/DX values don't match the identifier of a
  4768.       Quarterdeck product, it just chains to the previous INT 2F handler
  4769. SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
  4770. SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
  4771. --------U-2FD201-----------------------------
  4772. INT 2F - PCL-838.EXE - UNINSTALL
  4773.     AX = D201h
  4774. Return: AX = return value
  4775. SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
  4776. --------m-2FD201BX4849-----------------------
  4777. INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
  4778.     AX = D201h
  4779.     BX = 4849h ("HI")
  4780.     CX = 4D45h ("ME")
  4781.     DX = 4D51h ("MQ")
  4782. Return: BX = 4F4Bh ("OK")
  4783.     ES:DI -> HIMEM entry point
  4784. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4785. SeeAlso: AX=D200h,AX=D201h/BX=5145h
  4786. --------m-2FD201BX4849-----------------------
  4787. INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
  4788.     AX = D201h
  4789.     BX = 4849h ("HI")
  4790.     CX = 5241h ("RA")
  4791.     DX = 4D30h ("M0")
  4792. Return: BX = 4F4Bh ("OK")
  4793.     CX = segment of start of HIRAM chain
  4794.     DX = reserved block owner (QEMM/QRAM code segment)
  4795. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4796. Note:    the HIRAM memory chain has the same format as the regular DOS 4.0
  4797.       memory chain (see INT 21/AH=52h), except that XMS Upper Memory Blocks
  4798.       have the block header program name field set to "UMB"; blocks whose
  4799.       "owner" field is set to the reserved segment returned in DX are
  4800.       locked-out regions such as video memory and ROMs.
  4801. SeeAlso: AX=12FFh/BX=0006h,AX=D200h
  4802. --------G-2FD201BX4D41-----------------------
  4803. INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
  4804.     AX = D201h
  4805.     BX = 4D41h ("MA")
  4806.     CX = 4E49h ("NI")
  4807.     DX = 4645h ("FE")
  4808. Return: BX = 5354h ("ST") if installed
  4809. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4810. SeeAlso: AX=D200h
  4811. --------E-2FD201BX4D45-----------------------
  4812. INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
  4813.     AX = D201h
  4814.     BX = 4D45h ("ME")
  4815.     CX = 5155h ("QU")
  4816.     DX = 5044h ("PD")
  4817. Return: AL = FFh
  4818.     BX = 4F4Bh ("OK")
  4819. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4820. Note:    this function is called by QEMM 6.03
  4821.     performs a variety of actions before setting return registers
  4822. SeeAlso: AX=D200h
  4823. --------m-2FD201BX5145-----------------------
  4824. INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
  4825.     AX = D201h
  4826.     BX = 5145h ("QE")
  4827.     CX = 4D4Dh ("MM")
  4828.     DX = 3432h ("42")
  4829. Return: BX = 4F4Bh ("OK")
  4830.     ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
  4831. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4832. Note:    this call is not available under QEMM v6.00 unless Windows3 support
  4833.       has been disabled with the NW3 switch to QEMM386.SYS
  4834. SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
  4835. --------V-2FD201BX5649-----------------------
  4836. INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
  4837.     AX = D201h
  4838.     BX = 5649h ("VI")
  4839.     CX = 4452h ("DR")
  4840.     DX = 414Dh ("AM")
  4841. Return: BX = 4F4Bh ("OK")
  4842.     ES:DI -> VIDRAM entry point
  4843. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4844. SeeAlso: AX=D200h
  4845.  
  4846. (Table 1578)
  4847. Call VIDRAM entry point with:
  4848.     AH = 00h get status
  4849.         Return: AL = VIDRAM state (see #1579)
  4850.             BL = extra RAM status
  4851.                 00h VIDRAM does not use extra RAM
  4852.                 01h VIDRAM uses EMS as extra RAM
  4853.                 02h VIDRAM uses EGA as extra RAM
  4854.             BH = feature flags (see #1580)
  4855.             CL = current monitor (01h = mono, 80h = color)
  4856.             SI = current top of memory (paragraph)
  4857.             DI = segment of start of HiRAM chain
  4858.     AH = 01h setup
  4859.         AL = VIDRAM state (see #1579)
  4860.         BL = extra RAM status (see above)
  4861.         BH = feature flags (see #1580)
  4862.         CL = monitor (01h = monochrome, 80h = color)
  4863.         SI = new top of memory (paragraph)
  4864.         DI = segment of start of HiRAM chain
  4865.     AH = 02h get end address of VIDRAM code
  4866.         Return: ES:DI -> VIDRAM partial map context (see #1581,#1582)
  4867. Return: CF set on error
  4868.     CF clear if successful
  4869.  
  4870. (Table 1579)
  4871. Values for VIDRAM state:
  4872.  00h    off
  4873.  01h    no EGA graphics
  4874.  02h    no graphics at all
  4875.  
  4876. Bitfields for VIDRAM feature flags:
  4877. Bit(s)    Description    (Table 1580)
  4878.  0    override enabled
  4879.  1    mapped memory detected in A000h-B000h range
  4880.  2    top of memory not at 640K
  4881.  3    MDA detected
  4882.  4    high RAM exists in video area
  4883.  5    mapped memory detected in video area
  4884.  6-7    reserved???
  4885.  
  4886. Format of VIDRAM partial map context (EMS 3.2):
  4887. Offset    Size    Description    (Table 1581)
  4888.  00h    BYTE    EMS version ID (32h)
  4889.  01h    WORD    EMM handle for this entry
  4890.  03h    BYTE    number of frames
  4891.  04h    BYTE    first page frame
  4892.  05h    WORD    offset from ES to previously saved map
  4893.  
  4894. Format of VIDRAM partial map context (EMS 4.0):
  4895. Offset    Size    Description    (Table 1582)
  4896.  00h    BYTE    EMS version ID (40h)
  4897.  01h    WORD    mappable segment count
  4898.  03h  N WORD    mappable segments
  4899.     WORD    offset to previously saved map???
  4900. --------U-2FD202-----------------------------
  4901. INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
  4902.     AX = D202h
  4903.     CX:BX -> parameter table
  4904. Return: AX = return value
  4905. SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
  4906. --------R-2FD300BX4562-----------------------
  4907. INT 2F U - TeleReplica - INSTALLATION CHECK
  4908.     AX = D300h
  4909.     BX = 4562h
  4910.     CX = 2745h
  4911.     DX = serial port I/O base address??? (03F8h for v3.9)
  4912. Return: SI = segment of resident code
  4913.     AX = 251Dh
  4914.     BX = DF21h
  4915.     CX = F321h
  4916.     DX = ???
  4917. --------R-2FD3CB-----------------------------
  4918. INT 2F U - LapLink Quick Connect v6 - API
  4919.     AX = D3CBh
  4920.     CX = function
  4921.         0002h get ???
  4922.         Return: BX:AX -> ???
  4923.             CL = ???
  4924.             CH = ???
  4925.             DX = ???
  4926.             DI = COM1 I/O port???
  4927.             SI = COM2 I/O port???
  4928.         0003h initialization???
  4929.         0004h ???
  4930.         0005h initialization???
  4931.         0006h reset/clear ???
  4932.         Return: AX = 0000h
  4933.             ES:DI -> next byte after ??? cleared by this call
  4934.         0007h initialization???
  4935.         0008h uninstall
  4936.         Return: BX = status
  4937.                 0000h successful
  4938.                 FFFFh incomplete, stub remains in memory
  4939. Return: CX = 534Bh (except function 0002h)
  4940. Index:    uninstall;LapLink Quick Connect
  4941. --------l-2FD44D-----------------------------
  4942. INT 2F - 4DOS.COM v2.1+ - API
  4943.     AX = D44Dh
  4944.     BH = function
  4945.         00h installation check
  4946.         Return: AX = 44DDh
  4947.             BL = major version number
  4948.             BH = minor version number
  4949.             CX = PSP segment address for current invocation
  4950.             DL = 4DOS shell number (0 for the first (root) shell,
  4951.                   updated each time a new copy is loaded)
  4952.         01h (internal, v2.1-3.03) terminate current copy of 4DOS
  4953.         Return: nothing
  4954.         (internal, v4.0) ???
  4955.         Return: AX = 44DDh
  4956.             ES:BX -> data area (see #1583)
  4957.         02h ???
  4958.         DX = ???
  4959.     ---v2.1-3.03 only---
  4960.         03h EXEC program
  4961.         CX:DX -> EXEC record (see #1584)
  4962.         FEh deallocate shell number (passed through to root shell)
  4963.         ???
  4964.         FFh allocate shell number (passed through to root shell)
  4965. Note:    bug in v3.00 will crash system if unrecognized value in BH
  4966. SeeAlso: AX=D44Eh,AX=E44Dh,INT 21/AX=4403h
  4967. Index:    installation check;4DOS|installation check;NDOS
  4968.  
  4969. Format of 4DOS v4.0 data area:
  4970. Offset    Size    Description    (Table 1583)
  4971.  00h  2 BYTEs    ???
  4972.  06h    WORD    XMS handle for swapping
  4973.     ???
  4974.  
  4975. Format of 4DOS EXEC record:
  4976. Offset    Size    Description    (Table 1584)
  4977.  00h    WORD    offset of ASCIZ program name in same segment as EXEC record
  4978.  02h    WORD    offset of DOS commandline in same segment as EXEC record
  4979.  04h    WORD    segment of environment for child process (see INT 21/AH=26h)
  4980. --------l-2FD44E-----------------------------
  4981. INT 2F C - 4DOS v3.0+ - AWAITING USER INPUT
  4982.     AX = D44Eh
  4983. ---4DOS v3.01+---
  4984.     BX = condition
  4985.         0000h 4DOS is ready to display prompt
  4986.         0001h 4DOS has displayed the prompt, about to accept user input
  4987. Return: the handler must preserve SI, DI, BP, SP, DS, ES, and SS
  4988. Note:    v3.00 only makes the call corresponding to BX=0001h, does not set BX
  4989. SeeAlso: AX=D44Dh
  4990. --------K-2FD44FBX0000-----------------------
  4991. INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  4992.     AX = D44Fh
  4993.     BX = 0000h
  4994. Return: AX = 44DDh if installed
  4995. SeeAlso: AX=D44Fh/BX=0001h
  4996. --------K-2FD44FBX0001-----------------------
  4997. INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  4998.     AX = D44Fh
  4999.     BX = 0001h
  5000.     CX = number of keystrokes (01h-FFh)
  5001.     DS:DX -> keystroke list (one word per keystroke)
  5002. Return: AX = status
  5003.         0000h successful
  5004.         nonzero failed
  5005.     BX,CX,DX destroyed
  5006. Notes:    the keystrokes are the exact values to return from subsequent calls to
  5007.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  5008.         0000h causes subfunctions 01h and 11h to indicate an empty
  5009.               keyboard buffer
  5010.         FFFFh is followed by a word indicating the number of clock
  5011.               ticks to delay before the next faked keystroke
  5012.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  5013.       invocation, and does not range-check CX; it will overwrite memory
  5014.       following the resident portion if CX is greater than 100h.
  5015. SeeAlso: AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
  5016. --------G-2FD600-----------------------------
  5017. INT 2F - HEART.COM - INSTALLATION CHECK
  5018.     AX = D600h
  5019. Return: AX = 0303h (two hearts) if installed
  5020.         ES:DI -> buffer (see #1585)
  5021. Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
  5022. Notes:    Once the host program has identified the address of the data area, it
  5023.       can change this to indicate safe/critical, alternate colours, etc.
  5024.     The entries for the color table are in char/attrib form.  Every two
  5025.       entries form a pair which is alternated between 68 times a minute.
  5026.       The first half of the table is for color videos, the second mono.
  5027.       Within each half, the first half is for the safe chars, and the
  5028.       second for the critical chars.
  5029.  
  5030. Format of HEART.COM buffer:
  5031. Offset    Size    Description    (Table 1585)
  5032.  00h  8 WORDs    table of colors/attributes (see notes above)
  5033.  10h    BYTE    flags
  5034.         bit 0: program is in critical section, so flash double
  5035.               exclamation mark
  5036.         bit 1: program is in safe code, so flash the heart character
  5037.  11h    WORD    position of heartbeat on screen, normally 009Eh (last column
  5038.         of second line)
  5039. --------T-2FD600-----------------------------
  5040. INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
  5041.     AX = D600h
  5042. Return: AL = D6h if installed
  5043. Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
  5044.       is a programmer's text editor by Greenview Data.
  5045. SeeAlso: AX=D601h,AX=D602h
  5046. --------T-2FD601-----------------------------
  5047. INT 2F U - VEDIT VSWAP - ???
  5048.     AX = D601h
  5049.     BL = subfunction number???
  5050. Return: BL = return code ???
  5051.     ES = resident portion's data??? segment
  5052.     DX = resident portion's code segment
  5053. SeeAlso: AX=D600h"VSWAP"
  5054. --------T-2FD602-----------------------------
  5055. INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
  5056.     AX = D602h
  5057.     other registers set as for INT 21/AX=4B00h
  5058. Return: CF set on error
  5059.         AL = error code
  5060.         82h = failure due to ???
  5061.     CF clear on success
  5062. SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
  5063. --------N-2FD701BX0000-----------------------
  5064. INT 2F - Banyan VINES v4+ - GET BANV INTERRUPT NUMBER
  5065.     AX = D701h
  5066.     BX = 0000h
  5067. Return: AX = 0000h if installed
  5068.         BX = interrupt number (60h to 66h)
  5069.        nonzero not present
  5070. Note:    if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
  5071.       necessary to examine the four bytes preceding the handlers for
  5072.       INT 60 through INT 66 for the string "BANV"
  5073. SeeAlso: AX=D702h,AX=D703h,AX=D704h
  5074. --------N-2FD702-----------------------------
  5075. INT 2F U - Banyan VINES v4+ - PCPRINT interface
  5076.     AX = D702h
  5077.     BX = function
  5078.     ???
  5079. Return: ???
  5080. SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
  5081. --------N-2FD703-----------------------------
  5082. INT 2F U - Banyan VINES v4+ - MAIL interface
  5083.     AX = D703h
  5084.     BX = function
  5085.     ???
  5086. Return: ???
  5087. SeeAlso: AX=D702h,AX=D704h
  5088. --------N-2FD704-----------------------------
  5089. INT 2F U - Banyan VINES v4+ - Streettalk Directory Assistance interface
  5090.     AX = D704h
  5091.     BX = function
  5092.     ???
  5093. Return: ???
  5094. SeeAlso: AX=D703h,INT 61/AX=0007h/BX=0002h"Banyan",INT 61/AX=0007h/BX=0008h
  5095. --------N-2FD800-----------------------------
  5096. INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
  5097.     AX = D800h
  5098. Return: AL = FFh if installed
  5099.         DX = version number (0100h for v1.0, 0101h for v1.1)
  5100.         BX = data segment of resident copy
  5101.         ES:DI -> private API entry point (see #1586)
  5102.         SI = segment of resident code
  5103. SeeAlso: AX=7A00h,AX=D880h
  5104.  
  5105. (Table 1586)
  5106. Call CLIENT API entry point with:
  5107.     BX = function
  5108.         0000h get ???
  5109.         Return: DX = CLIENT version??? (0101h for v1.1)
  5110.             ES:BX -> ??? data
  5111.         0001h ???
  5112.         0002h ???
  5113.         0003h ???
  5114.         0004h ???
  5115.         0005h ???
  5116.         DL = ???
  5117.         ???
  5118.         Return: ???
  5119.         0006h get module name???
  5120.         ES:DI -> 16-byte buffer
  5121.         Return: CX = ???
  5122.             ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
  5123.         0007h ???
  5124.         DX:CX = ???
  5125.         ???
  5126.         Return: ???
  5127.         0008h ???
  5128.         0009h ???
  5129.         DL = ???
  5130.         ES:DI -> 16-byte buffer for ???
  5131.         Return: CF clear if successful
  5132.                 AX = 0000h
  5133.                 CX = 0000h
  5134.                 SI,DI destroyed
  5135.             CF set on error
  5136.                 AX = error code 4903h
  5137.         000Ah ???
  5138.         AH = subfunction
  5139.             00h get ???
  5140.             01h clear/set ??? flag
  5141.             AL = new state (00h cleared, 01h set)
  5142.             02h set ???
  5143.             DX = new value of ???
  5144.         Return: DX = old value of ???
  5145.         000Bh ???
  5146.         AX = ???
  5147.         ???
  5148.         Return: ???
  5149.         000Ch ???
  5150.         AX = ???
  5151.         ???
  5152.         Return: ???
  5153.         000Dh ???
  5154.         AX = ???
  5155.         ???
  5156.         Return: ???
  5157.         000Eh get original INT 17
  5158.         Return: CF clear
  5159.             ES:BX -> original INT 17
  5160.         000Fh ???
  5161.         0010h ???
  5162.         AX = ???
  5163.         ???
  5164.         Return: ???
  5165.         0011h get ???
  5166.         Return: CF clear
  5167.             DL = ???
  5168.         0012h get ???
  5169.         AL = index of ???
  5170.         ES:DI -> 10-byte buffer for ???
  5171.         Return: CF clear if successful
  5172.                 ES:DI buffer filled
  5173.                 AX,CX destroyed
  5174.             CF set on error
  5175.                 AX = error code (4907h if AL out of range)
  5176.         0013h get ???
  5177.         Return: CF clear
  5178.             DH = ???
  5179.             DL = ???
  5180.         0014h ???
  5181.         DL = ???
  5182.         ???
  5183.         Return: CF clear if successful
  5184.                 ???
  5185.             CF set on error
  5186.                 AX = error code 8056h
  5187.         0015h ???
  5188.         DX = ???
  5189.         Return: ES:DI -> ???
  5190.         other
  5191.         Return: CF set
  5192.             AX = 0001h (invalid function)
  5193. --------N-2FD856-----------------------------
  5194. INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
  5195.     AX = D856h
  5196. Return: AX = 0001h if supported???
  5197.     BX = ??? (0004h for v1.1)
  5198.     CX = ??? (0F20h for v1.1)
  5199.     DS = segment of resident code
  5200.     ES = data segment of resident copy
  5201. Note:    this function is also supported by Personal NetWare SERVER, bundled
  5202.       with Novell DOS 7
  5203. --------N-2FD880-----------------------------
  5204. INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
  5205.     AX = D880h
  5206. Return: AL = FFh if installed
  5207.         DX = version number (0100h for v1.0, 0101h for v1.1)
  5208.         BX = data segment of resident copy
  5209.         CL = current state (00h SERVER is disabled, 01h SERVER is active)
  5210.         ES:DI -> private API entry point (see #1587)
  5211.         SI = ??? (offset of configuration info?)
  5212. Note:    this function is also supported by Personal NetWare SERVER, but DI is
  5213.       not set; instead, ES:SI points at the API entry point
  5214. SeeAlso: AX=7A00h,AX=D800h,INT 2A/AX=D852h
  5215.  
  5216. (Table 1587)
  5217. Call SERVER API entry point with:
  5218.     BX = function
  5219.         0000h ???
  5220.         ???
  5221.         Return: ???
  5222.         Note: closes open files by calling INT 21/AH=3Eh
  5223.         0001h get connection information
  5224.         DX = connection number (0001h-max connections)
  5225.         ES:DI -> 28-byte buffer for connection information
  5226.         Return: CF clear if successful
  5227.                 ES:DI buffer filled
  5228.             CF set on error
  5229.                 AX = FFFFh
  5230.     ---Personal NetWare only---
  5231.         0002h ???
  5232.         0003h ???
  5233.         0004h ???
  5234.         0005h ???
  5235.         0006h ???
  5236.         0007h ???
  5237.         other
  5238.         Return: CF set
  5239.             AX = 0001h (invalid function)
  5240. --------d-2FD8C0-----------------------------
  5241. INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
  5242.     AX = D8C0h
  5243. Return: AL = FFh if installed
  5244.         CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
  5245.         DH = major version??? (01h for v1.1)
  5246.         DL = minor version??? (01h for v1.1)
  5247.         ES:DI -> private API entry point (see #1588)
  5248. Program: NLCACHE is a disk cache included with NetWare Lite
  5249. SeeAlso: AX=D800h,AX=D880h
  5250.  
  5251. (Table 1588)
  5252. Call NLCACHE/NWCACHE API entry point with:
  5253.     BX = function
  5254.         0000h ???
  5255.         ???
  5256.         Return: CF clear if successful
  5257.                 AX = 0000h
  5258.                 ???
  5259.             CF set on error
  5260.                 AX = error code
  5261.         0001h (NWCACHE only) ???
  5262.         ES:DI -> buffer for ???
  5263.         Return: ???
  5264.         other
  5265.         Return: CF set
  5266.             AX = 0001h (invalid function)
  5267. --------F-2FDA00-----------------------------
  5268. INT 2F - ZyXEL ZFAX - INSTALLATION CHECK
  5269.     AX = DA00h
  5270. Return: AH = enabled state (00h = enabled, 01h = disabled)
  5271.     AL = 5Ah installed
  5272. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  5273.       fax modems.
  5274. Note:    This function, and the other DAxxh functions, may apply only to version
  5275.       1 of the software; see AX=DB00h for the version 2 installation check
  5276. SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h,AX=DB00h
  5277. --------F-2FDA01-----------------------------
  5278. INT 2F - ZyXEL ZFAX - UNINSTALL
  5279.     AX = DA01h
  5280. Return: AL = 00h Success
  5281.          01h Failure
  5282. SeeAlso: AX=DA00h,AX=DB01h
  5283. --------F-2FDA02-----------------------------
  5284. INT 2F - ZyXEL ZFAX - DISABLE
  5285.     AX = DA02h
  5286. Return: AL = 00h
  5287. SeeAlso: AX=DA03h,AX=DB02h
  5288. --------F-2FDA03-----------------------------
  5289. INT 2F - ZyXEL ZFAX - ENABLE
  5290.     AX = DA03h
  5291. Return: AL = 00h
  5292. SeeAlso: AX=DA02h,AX=DB03h
  5293. --------G-2FDA55-----------------------------
  5294. INT 2F U - TRAP.COM - INSTALLATION CHECK
  5295.     AX = DA55h
  5296.     DL = interrupt number
  5297.     DH = ???
  5298. Return: if installed
  5299.         AH = interrupt number
  5300.         AL = ???
  5301.         ES:BX -> ???
  5302. Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
  5303. Note:    a separate copy of TRAP is loaded for each interrupt to be traced; thus
  5304.       the interrupt number is part of the installation check
  5305. --------N-2FDAB2-----------------------------
  5306. INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
  5307.     AX = DAB2h
  5308. Return: AX = 00FFh if installed
  5309.         BX:CX -> MIB table
  5310. Program: BWSNMP is part of the BW-NFS package
  5311. SeeAlso: INT 62/AH=00h"ETHDEV"
  5312. --------F-2FDB00-----------------------------
  5313. INT 2F - ZyXEL ZFAX v2+ - INSTALLATION CHECK
  5314.     AX = DB00h
  5315. Return:    AL = 5Bh if installed (v2.x)
  5316.         ES:BX -> ???
  5317.     AX = 00DBh if installed (v3)
  5318.         ES:BX -> ZFAX configuration table (see #1589)
  5319. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  5320.       fax modems.
  5321. SeeAlso: AX=CBDCh,AX=DA00h,AX=DB01h,AX=DB02h,AX=DB03h
  5322.  
  5323. Format of ZFAX Configuration Table:
  5324. Offset    Size    Description    (Table 1589)
  5325.  00h    WORD    version number (0300h for v3.0)
  5326.  02h    BYTE    reserved
  5327.  03h 70 BYTEs    ZFAX working path
  5328.  49h 128 BYTEs    path to external editor
  5329.  C9h 128 BYTEs    path to external terminal emulator
  5330. 149h 128 BYTEs    path to Ring Shell
  5331. 1C9h 128 BYTEs    path to DOS Shell
  5332. 249h 128 BYTEs    path to Data Shell
  5333. 2C9h 70 BYTEs    path to Chinese font
  5334. 30Fh    BYTE    printer type (see #1590)
  5335. 310h    BYTE    printer port (00h = LPT1, etc.)
  5336. 311h    BYTE    type of graphics adapter
  5337.         (00h auto-detect, 01h VGA, 02h EGA, 03h CGA, 04h Hercules)
  5338. 312h    BYTE    display type
  5339.         (00h auto-detect, 01h LCD, 02h color, 03h mono)
  5340. 313h    BYTE    scan code for ZFAX hotkey
  5341. 314h    BYTE    shift mask for ZFAX hotkey
  5342. 315h    BYTE    tone/pulse dialing (00h tone, 01h pulse)
  5343. 316h    BYTE    Caller ID (00h disabled, 01h enabled)
  5344. 317h    BYTE    Distinctive Ring (00h disabled, 01h enabled)
  5345. 318h    BYTE    normal ring answer type (see #1591)
  5346. 319h    BYTE    Ring 1 answer type (see #1591)
  5347. 31Ah    BYTE    Ring 2 answer type (see #1591)
  5348. 31Bh    BYTE    Ring 3 answer type (see #1591)
  5349. 31Ch    BYTE    COM port for modem
  5350. 31Dh    BYTE    speaker volume (00h-07h)
  5351. 31Eh    BYTE    modem dial timer, seconds
  5352. 31Fh    WORD    user-defined COM port I/O address
  5353. 321h    BYTE    user-defined COM port IRQ number
  5354. 322h 81 BYTEs    dial prefix string
  5355. 373h 79 BYTEs    dial postfix string
  5356. 3C2h    BYTE    ring count until automatic answer
  5357. 3C3h    BYTE    retry count on busy signal
  5358. 3C4h    BYTE    redial delay in seconds
  5359. 3C5h    WORD    system password
  5360. 3C7h    BYTE    reserved
  5361. 3C8h    BYTE    voice file compression format
  5362.         00h CELP at 9600bps
  5363.         01h two-bit ADPCM at 19200bps
  5364.         03h three-bit ADPCM at 28800bps
  5365. 3C9h    BYTE    voice system: DTMF 0 action (see #1592)
  5366. 3CAh    BYTE    voice system: DTMF 1 action
  5367. 3CBh    BYTE    voice system: DTMF 2 action
  5368. 3CCh    BYTE    voice system: DTMF 3 action
  5369. 3CDh    BYTE    voice system: DTMF 4 action
  5370. 3CEh    BYTE    voice system: DTMF 5 action
  5371. 3CFh    BYTE    voice system: DTMF 6 action
  5372. 3D0h    BYTE    voice system: DTMF 7 action
  5373. 3D1h    BYTE    voice system: DTMF 8 action
  5374. 3D2h    BYTE    voice system: DTMF 9 action (see #1592)
  5375. 3D3h    WORD    reserved
  5376. 3D5h 25 BYTEs    local FAX ID to display on page header
  5377. 3EEh 20 BYTEs    local FAX ID sent to remote FAX
  5378. 402h    BYTE    FAX page size
  5379.         00h A4 (210x297mm)
  5380.         01h B4 (250x353mm)
  5381.         02h A3 (297x420mm)
  5382. 403h    BYTE    FAX resolution
  5383.         00h normal (3.85 pixels/mm)
  5384.         01h high (7.7 pixels/mm)
  5385. 404h    BYTE    FAX coding scheme
  5386.         00h 1-D, modified Huffman coding
  5387.         01h 2-D, modified READ coding
  5388. 405h    BYTE    left margin for text in millimeters
  5389. 406h    BYTE    vertical insertion for text in mm (0-20)
  5390. 407h    BYTE    horizontal insertion in mm (0-20)
  5391. 408h    BYTE    maximum text lines per page
  5392. 409h    BYTE    text type (00h ASCII, 01h WordStar-formatted)
  5393. 40Ah    BYTE    PCX image resize (00h disabled, 01h enabled)
  5394. 40Bh    BYTE    AutoPrint (00h disabled, 01h enabled)
  5395. 40Ch    BYTE    cover page (00h disabled, 01h enabled)
  5396. 40Dh 81 BYTEs    cover page logo filename
  5397. 45Eh 65 BYTEs    cover page sender name
  5398. 49Fh    BYTE    print capture (00h disabled, 01h enabled)
  5399. 4A0h    BYTE    send immediately (00h disabled, 01h enabled)
  5400. 4A1h    BYTE    print capture printer port
  5401. 4A2h    BYTE    print capture timer in seconds
  5402. 4A3h    BYTE    scan code for print capture hotkey
  5403. 4A4h    BYTE    shift mask for print capture hotkey
  5404. 4A5h    BYTE    DataShell type
  5405.         00h internal Zmodem, 01h Data Shell, 02h disable
  5406. 4A6h    BYTE    video I/O type
  5407.         00h auto-detect, 01h use BIOS, 02h direct writes
  5408. 4A7h    BYTE    call transfer digits
  5409. 4A8h    WORD    voice recorder maximum time in seconds (0-999)
  5410.  
  5411. (Table 1590)
  5412. Values for ZFAX printer type:
  5413.  00h    EPSON FX (9 pins)
  5414.  01h    EPSON LQ (24 pins)
  5415.  02h    HP Laser Jet II, letter size
  5416.  03h    HP Laser Jet II, legal size
  5417.  04h    HP Laser Jet II, A4 size
  5418.  05h    HP Laser Jet III, letter size
  5419.  06h    HP Laser Jet III, legal size
  5420.  07h    HP Laser Jet III, A4 size
  5421.  
  5422. (Table 1591)
  5423. Values for Ring Answer Type:
  5424.  00h    voice system
  5425.  01h    FAX only
  5426.  02h    Data Shell
  5427.  03h    Ring Shell
  5428.  04h    DOS Shell
  5429.  05h    ignore
  5430.  
  5431. (Table 1592)
  5432. Values for DTMF action:
  5433.  00h    none
  5434.  01h    page operator
  5435.  02h    FaxBack
  5436.  03h    announcement
  5437.  04h    call transfer
  5438.  05h    receive FAX
  5439.  06h    receive data
  5440.  07h    voice mailbox
  5441.  08h    DOS Shell Out
  5442.  09h    Data Shell Out
  5443. --------F-2FDB01-----------------------------
  5444. INT 2F - ZyXEL ZFAX v2+ - UNINSTALL
  5445.     AX = DB01h
  5446. Return: AX = status
  5447.         0000h successful
  5448.         0001h ZFAX is busy
  5449.         0002h another program resident above ZFAX
  5450. Note:    this function unhooks the vectors taken by the ZFAX TSR if they have
  5451.       not been hooked by other TSRs and releases the TSR's memory
  5452.     ZFAX v2.x crashes the contributor's machine when this function is
  5453.       called
  5454. SeeAlso: AX=DA01h,AX=DB00h
  5455. --------F-2FDB02-----------------------------
  5456. INT 2F - ZyXEL ZFAX v2.x - DISABLE
  5457.     AX = DB02h
  5458. Return: AL = 00h
  5459. SeeAlso: AX=DA02h,AX=DB00h,AX=DB03h
  5460. --------F-2FDB03-----------------------------
  5461. INT 2F - ZyXEL ZFAX v2.x - ENABLE
  5462.     AX = DB03h
  5463. Return: AL = 00h
  5464. SeeAlso: AX=DA03h,AX=DB00h,AX=DB02h
  5465. --------F-2FDB10-----------------------------
  5466. INT 2F - ZyXEL ZFAX v3 - EXECUTE ZFAX MAIN MENU
  5467.     AX = DB10h
  5468. --------F-2FDB11-----------------------------
  5469. INT 2F - ZyXEL ZFAX v3 - SEND FAX
  5470.     AX = DB11h
  5471.     DS:SI -> filename including path
  5472.     DS:BX -> remote FAX number
  5473. Return:    AX = status (see #1593)
  5474. SeeAlso: AX=DB12h,AX=DB13h,AX=DB14h,AX=DB20h,AX=DB21h
  5475.  
  5476. (Table 1593)
  5477. Values for ZFAX status:
  5478.  00h    OK
  5479.  01h    invalid DOS function
  5480.  02h    file not found
  5481.  03h    path not found
  5482.  04h    no file handle available
  5483.  05h    access denied by DOS
  5484.  06h    invalid handle
  5485.  07h    disk full
  5486.  10h    printer error
  5487.  11h    no graphics font
  5488.  12h    no ZFAX font
  5489.  20h    DCD dropped while sending
  5490.  21h    not ZyXEL modem
  5491.  22h    busy
  5492.  23h    no response from COM port
  5493.  24h    no carrier
  5494.  25h    no dial tone
  5495.  26h    no answer
  5496.  27h    no response
  5497.  28h    failed to send FAX
  5498.  30h    user aborted
  5499.  40h    critical error on disk
  5500.  50h    parameter error
  5501. --------F-2FDB12-----------------------------
  5502. INT 2F - ZyXEL ZFAX v3 - PRINT FAX
  5503.     AX = DB12h
  5504.     DS:SI -> filename, including path
  5505. Return: AX = status
  5506. SeeAlso: AX=DB11h,AX=DB13h,AX=DB14h
  5507. --------F-2FDB13-----------------------------
  5508. INT 2F - ZyXEL ZFAX v3 - CONVERT FAX
  5509.     AX = DB13h
  5510.     DS:SI -> source filename, including path
  5511.     DS:BX -> destination filename, including path
  5512.     CX = destination file format
  5513.         00h FAX, 01h PCX, 02h TIFF, 03h PRN
  5514. Return: AX = status
  5515. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h,AX=DB22h
  5516. --------F-2FDB14-----------------------------
  5517. INT 2F - ZyXEL ZFAX v3 - VIEW FAX
  5518.     AX = DB14h
  5519.     DS:SI -> source filename, including path
  5520. Return: AX = status
  5521. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h
  5522. --------F-2FDB20-----------------------------
  5523. INT 2F - ZyXEL ZFAX v3 - POLL FAX
  5524.     AX = DB20h
  5525.     DS:SI -> remote FAX number
  5526. Return: AX = status
  5527. SeeAlso: AX=DB11h,AX=DB21h
  5528. --------F-2FDB21-----------------------------
  5529. INT 2F - ZyXEL ZFAX v3 - SEND VOICE
  5530.     AX = DB21h
  5531.     DS:SI -> filename including path
  5532.     DS:BX -> remote phone number
  5533. Return:    AX = status
  5534. SeeAlso: AX=DB11h,AX=DB20h,AX=DB22h,AX=DB23h,AX=DB24h
  5535. --------F-2FDB22-----------------------------
  5536. INT 2F - ZyXEL ZFAX v3 - CONVERT VOICE FILE
  5537.     AX = DB22h
  5538.     DS:SI -> source filename, including path
  5539.     DS:BX -> destination filename, including path
  5540.     CX = destination format
  5541.         00h two-bit ADPCM, 01h three-bit ADPCM, 02h VOC
  5542. Return:    AX = status
  5543. SeeAlso: AX=DB13h,AX=DB20h,AX=DB21h,AX=DB23h
  5544. --------F-2FDB23-----------------------------
  5545. INT 2F - ZyXEL ZFAX v3 - RECORD VOICE FILE
  5546.     AX = DB23h
  5547.     DS:SI -> destination filename, including path
  5548.     CX = recording channel (0 = telephone line, 1 = microphone/speaker)
  5549.     DX = voice file format
  5550.         00h CELP, 01h two-bit ADPCM, 02h three-bit ADPCM
  5551. Return: AX = status
  5552. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  5553. --------F-2FDB24-----------------------------
  5554. INT 2F - ZyXEL ZFAX v3 - PLAY VOICE FILE
  5555.     AX = DB24h
  5556.     DS:SI -> name of voice file, including path
  5557.     CX = playback channel (0 = telephone line, 1 = microphone/speaker)
  5558. Return: AX = status
  5559. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  5560. --------F-2FDB25-----------------------------
  5561. INT 2F - ZyXEL ZFAX v3 - ANSWER MODEM WITH VOICE SYSTEM
  5562.     AX = DB25h
  5563. Return: AX = status
  5564. SeeAlso: AX=DB21h,AX=DB22h,AX=DB26h,AX=DB27h,AX=DB28h
  5565. --------F-2FDB26-----------------------------
  5566. INT 2F - ZyXEL ZFAX v3 - DIAL PHONE
  5567.     AX = DB26h
  5568.     DS:SI -> remote phone number
  5569. Return: AX = status
  5570. SeeAlso: AX=DB25h
  5571. --------F-2FDB27-----------------------------
  5572. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX - ANSWER MODEM AND SET TO FAX MODE
  5573.     AX = DB27h
  5574. Return: AX = status
  5575. SeeAlso: AX=DB25h,AX=DB28h
  5576. --------F-2FDB28-----------------------------
  5577. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX DATA - ANSWER MODEM IN MULTI-AUDIO MODE
  5578.     AX = DB28h
  5579. Return: AX = status
  5580. SeeAlso: AX=DB25h,AX=DB27h,AX=DB31h
  5581. --------F-2FDB31-----------------------------
  5582. INT 2F - ZyXEL ZFAX v3 - SEND DATA - DIAL NUMBER AND UPLOAD FILE WITH ZMODEM
  5583.     AX = DB31h
  5584.     DS:SI -> source file name, including path
  5585.     DS:BX -> remote data number
  5586. Return: AX = status
  5587. SeeAlso: AX=DB00h,AX=DB28h
  5588. --------F-2FDB40-----------------------------
  5589. INT 2F - ZyXEL ZFAX v3 - INTERNAL TERMINAL
  5590.     AX = DB40h
  5591. Return: AX = status
  5592. SeeAlso: AX=DB00h
  5593. --------K-2FDC00-----------------------------
  5594. INT 2F - GOLD.COM - INSTALLATION CHECK
  5595.     AX = DC00h
  5596. Return: AL = state
  5597.         00h not installed
  5598.         FFh installed
  5599. Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the code
  5600.       for F1; the purpose is to improve Kermit's VTxxx emulation
  5601. --------K-2FDC01-----------------------------
  5602. INT 2F - GOLD.COM - GET STATE
  5603.     AX = DC01h
  5604. Return: AL = status
  5605.         00h off
  5606.         01h on
  5607. SeeAlso: AX=DC00h,AX=DC02h
  5608. --------K-2FDC02-----------------------------
  5609. INT 2F - GOLD.COM - SET STATE
  5610.     AX = DC02h
  5611.     DL = new state
  5612.         00h off
  5613.         01h on
  5614. Return: AL = 00h (OK)
  5615. SeeAlso: AX=DC01h
  5616. --------t-2FDD-------------------------------
  5617. INT 2F - CappaCom programs - API
  5618.     AH = DDh
  5619.     AL = 00h general installation check
  5620.         Return: AL = FFh if any CappaCom programs are resident
  5621.     AL = FEh get info
  5622.         Return: ES:BX -> TSR info list (see #1594)
  5623.     AL = program identifier
  5624.         BH = function
  5625.         FDh get version
  5626.             Return: BX = version
  5627.         FFh installation check
  5628.             Return: AL = FFh if installed
  5629.                 BX = version
  5630.                 ES = segment of resident code
  5631.         others vary by program
  5632. Return: AL = status
  5633.         bit 7 set on error
  5634.         AL = 81h unknown function
  5635. Note:    CappaCom was originally SoftCom but changed its name due to a trademark
  5636.       conflict
  5637. Index:    installation check;SoftCom programs
  5638. Index:    installation check;CappaCom programs
  5639.  
  5640. Format of CappaCom TSR info list:
  5641. Offset    Size    Description    (Table 1594)
  5642.  00h  9 BYTEs    blank-padded ASCIZ program name
  5643.  09h    BYTE    program ID
  5644.  0Ah    WORD    program's PSP segment
  5645.  0Ch    WORD    program version (major in high byte)
  5646.  0Eh    DWORD    pointer to next item in info list or 0000h:0000h
  5647.  12h    BYTE    number of interrupts hooked
  5648.  13h  5 BYTEs    interrupt numbers hooked by program
  5649.  18h  8 BYTEs    reserved
  5650. ----------2FDD-------------------------------
  5651. INT 2F - MIXFIX.EXE - API
  5652.     AH = DDh
  5653.     AL = function
  5654.         00h installation check
  5655.         Return: AX = 00DDh if installed
  5656.                 BX = version (BH = major, BL = minor)
  5657.         41h/61h get From: address
  5658.         Return: AX = 0001h
  5659.             ES:BX -> ASCIZ 4d address of mail sender ("1:2/3.4")
  5660.         49h/69h get To: address
  5661.         Return: AX = 0001h
  5662.             ES:BX -> ASCIZ 4d address of recipient ("1:2/3.4")
  5663.         4Ah/6Ah get subject of mail
  5664.         Return: AX = 0001h
  5665.             ES:BX -> ASCIZ subject of handled mail
  5666.         4Dh/6Dh get mail name
  5667.         Return: AX = 0001h
  5668.             ES:BX -> ASCIZ full name of current mail file
  5669.         4Eh/6Eh get From: field
  5670.         Return: AX = 0001h
  5671.             ES:BX -> ASCIZ From: field of mail (mail sender's name)
  5672. Program: MIXFIX by "KIV without Co" is a FidoNet mail robot which may execute
  5673.       other programs for mail handling.  The called programs may use the
  5674.       services described here to retrieve information about the mail being
  5675.       handled.
  5676. Index: installation check;MIXFIX.EXE
  5677. --------d-2FDD--BX7844-----------------------
  5678. INT 2F - xDISK v3.32+ - INSTALLATION CHECK
  5679.     AH = DDh
  5680.     BX = 7844h ('xD')
  5681.     CX = 4953h ('IS')
  5682.     DX = 4B3Fh ('K?')
  5683.     AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
  5684.     ES:DI -> 25-byte data buffer (see #1595)
  5685. Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
  5686.        BX = 87BBh
  5687.        DX = B4C0h
  5688.        ES:DI buffer filled
  5689.     CX,CF destroyed
  5690. SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
  5691.  
  5692. Format of xDISK data buffer:
  5693. Offset    Size    Description    (Table 1595)
  5694.  00h    DWORD    pointer to ASCIZ driver signature "xDISK unit: X"
  5695.  04h    BYTE    flag: 01h if disk linked to DOS, 00h if unlinked
  5696.  05h    BYTE    flag: 01h if write protected, 00h if not
  5697.  06h    BYTE    flag: 01h if root directory full, 00h if not
  5698.  07h    BYTE    flag: 01h if free space uncompacted, 00h if compacted
  5699.  08h    BYTE    resizing state: 00h not resizable, 01h resized, 80h resizable
  5700.  09h    BYTE    flag: 01h inelastic resizable disk, 00h elastic
  5701.  0Ah  2 BYTEs    reserved
  5702.  0Ch    BYTE    flag: 01h collapsed disk, 00h not collapsed
  5703.  0Dh    BYTE    flag: 01h using all EMS, 00h some EMS free
  5704.  0Eh    BYTE    flag: 01h password enabled, 00h disabled
  5705.  0Fh    BYTE    flag: 01h password audio feedback, 00h no feedback
  5706.  10h    BYTE    flag: 01h password video feedback, 00h no feedback
  5707.  11h    BYTE    flag: 01h confirm changes, 00h no confirmation
  5708.  12h    BYTE    flag: 01h terse display, 00h verbose display
  5709.  13h    BYTE    flag: 01h click speaker on disk access, 00h no click
  5710.  14h    BYTE    flag: 01h flash icon on disk access, 00h no icon flash
  5711.  15h    BYTE    FAT entry size: 00h 12-bit, FFh 16-bit
  5712.  16h    WORD    count of open files in RAM disk
  5713.  18h    BYTE    unused
  5714. --------Q-2FDE00BX4456-----------------------
  5715. INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
  5716.     AX = DE00h
  5717.     BX = 4456h ("DV")
  5718.     CX = 5844h ("XD")
  5719.     DX = 4931h ("I1")
  5720. Return: AL = FFh if installed (even if other registers do not match)
  5721.     if BX,CX, and DX were as specified on entry,
  5722.         BX = 4845h ("HE")
  5723.         CX = 5245h ("RE")
  5724.         DX = 4456h ("DV")
  5725. Range:    AH=C0h to AH=FFh, selected by scanning AH=DEh-FFh, then AH=C0h-DDh
  5726. Note:    the XDI handler should not issue any DOS or BIOS calls, nor should it
  5727.       issue DESQview API calls other than those allowed from hardware ints
  5728. SeeAlso: AX=DE02h,INT 15/AX=5400h
  5729. --------Q-2FDE01-----------------------------
  5730. INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
  5731.     AX = DE01h
  5732.     BX = driver ID
  5733.     other registers as needed by driver
  5734. Notes:    XDI drivers should pass this call through to previous handler if ID
  5735.       does not match
  5736.     DESQview never calls this function
  5737. --------Q-2FDE01BX4450-----------------------
  5738. INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
  5739.     AX = DE01h
  5740.     BX = 4450h ("DP")
  5741.     CX = 4D49h ("MI")
  5742.     DX = 3039h ("09")
  5743. Return: AL = FFh if installed
  5744.         BX = 4D42h ("MB")
  5745.         CX = 4921h ("I!")
  5746.         DX = 8F4Fh
  5747.         ES:DI -> filename of DPMI host overlay
  5748. Note:    the installation check consists of testing for the existence of the
  5749.       character device QDPMI$$$
  5750. SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
  5751. Index:    installation check;QDPMI
  5752. --------U-2FDE01BX5242-----------------------
  5753. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
  5754.     AX = DE01h
  5755.     BX = 5242h ("RB")
  5756.     CX:DX = program identifier
  5757.         656F7000h ("eop",0) for DVeop
  5758. Return: AX = 5242h ("RB") if installed
  5759.         ES:BX -> data or entry point
  5760.         CX = version number (CH = major, CL = minor)
  5761.  
  5762. (Table 1596)
  5763. Call DVeop entry point with:
  5764.     ES:DI -> callback address or 0000h:0000h to remove callback
  5765. Return: AX = status
  5766.         0000h failed (callback table full or attempted to remove non-
  5767.           existent callback)
  5768.         0001h successful
  5769.         ES:DI -> chaining address
  5770.     BX,CX,DX destroyed
  5771. Notes:    the callback function is called with a simulated interrupt when the
  5772.       DESQview window containing it is closed; it should perform all
  5773.       necessary cleanup and then perform a FAR jump to the chaining address
  5774.       or an IRET if the chaining address is 0000h:0000h
  5775.     if the program wishes to remove itself before the window is closed, it
  5776.       should call the DVeop entry point with the previously returned
  5777.       chaining address and ignore the returned chaining address.
  5778. --------U-2FDE01BX7474-----------------------
  5779. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
  5780.     AX = DE01h
  5781.     BX = 7474h
  5782.     CL = function
  5783.         00h installation check
  5784.         Return: AL = FFh
  5785.         01h get process handle
  5786.         DX = keys on Open Window menu (DL = first, DH = second)
  5787.         Return: AX = process handle or 0000h if not running
  5788.         02h (v1.3+) set TMAN handle
  5789.         DX = TMAN process handle
  5790.         03h (v1.3+) set open keys to ignore on next CL=01h call
  5791.         DX = keys on Open Window menu (DL = first, DH = second)
  5792. Return: BX = 4F4Bh ("OK")
  5793.     DL destroyed
  5794. Note:    DVTXDI is distributed as part of the shareware products DVTree (DOS
  5795.      shell/DESQview process manager) and DVTMAN by Mike Weaver
  5796. Index:    installation check;DVTXDI
  5797. --------U-2FDE01BX7575-----------------------
  5798. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
  5799.     AX = DE01h
  5800.     BX = 7575h
  5801.     CX = function
  5802.         0000h installation check
  5803.         Return: AX = 00FFh if installed
  5804.         0001h turn on notification (currently unused)
  5805.         Return: AX = 0001h
  5806.         0002h turn off notification (currently unused)
  5807.         Return: AX = 0001h
  5808.         0003h get process information
  5809.         Return: AX = status
  5810.                 0000h failed
  5811.                 0001h successful
  5812.                 BX = last instantaneous time slice
  5813.                     in 1/100s (v1.10)
  5814.                     in 1/18s (v1.11+)
  5815.                 CX = number of processes
  5816.                 DX = number of "(starting)" records (v2.00+)
  5817.                 SI = number of records in process info array
  5818.                       (v2.00+) (always 15 for v1.x)
  5819.                 ES:DI -> process info array (see #1597,#1598)
  5820.         0004h get version
  5821.         Return: AH = major version
  5822.             AL = minor version
  5823.         0005h (v1.10+) get time since DESQview started
  5824.         Return: DX:AX = 1/100s since DV start (v1.10)
  5825.             DX:AX = 1/18s since DV start (v1.11+)
  5826.         0006h (v1.10+) get number of task switches
  5827.         Return: DX:AX = total task switches
  5828.             CX = task switches in last instantaneous interval
  5829. Notes:    DVSIXDI is part of the DVSI (DESQview System Information) package by
  5830.       Daniel J. Bodoh
  5831.     for v1.00, function 0003h allocates common memory, which the caller
  5832.       must deallocate after reading the process information; only the
  5833.       currently used records are placed in the buffer
  5834.     for v1.10+, function 0003h merely returns a pointer to the internal
  5835.       array of process information; the caller should make a copy of the
  5836.       array while inside a critical section (see INT 15/AX=101Bh).    Only
  5837.       those records with bit 7 of the first byte set are valid.
  5838. Index:    installation check;DVSIXDI
  5839.  
  5840. Format of DVSIXDI v1.00 information for one process:
  5841. Offset    Size    Description    (Table 1597)
  5842.  00h    BYTE    flags
  5843.         bit 7: process slot is valid
  5844.  01h    WORD    offset into DESQVIEW.DVO of program's record if started from
  5845.           Open Windows menu, else undefined
  5846.  03h    WORD    Switch Windows window number
  5847.  05h    WORD    segment of process handle
  5848.  07h    WORD    number of tasks owned by process
  5849.  09h    WORD    mapping context of process (see INT 15/AX=1016h)
  5850.  0Bh    DWORD    hook for other programs
  5851.  
  5852. Format of DVSIXDI v1.10-v2.00 information for one process:
  5853. Offset    Size    Description    (Table 1598)
  5854.  00h    BYTE    process flags (see #1599)
  5855.  01h    WORD    Open Window keys
  5856.  03h    WORD    Switch Windows number
  5857.  05h    WORD    segment of process handle
  5858.  07h    WORD    number of tasks for process
  5859.  09h    WORD    process mapping context
  5860.  0Bh    DWORD    time process started (relative to start of DESQview)
  5861.  0Fh    DWORD    time process last got CPU (relative to start of DESQview)
  5862.  13h    DWORD    time process last gave up CPU (relative to start of DESQview)
  5863.  17h    DWORD    total CPU time since process started
  5864.  1Bh    DWORD    CPU time at start of current instantaneous interval
  5865.  1Fh    DWORD    CPU time in current instantaneous interval
  5866.  23h    DWORD    hook for other programs
  5867. Note:    all times are in 1/100s for v1.10, in 1/18s for v1.11+
  5868.  
  5869. Bitfields for DVSIXDI process flags:
  5870. Bit(s)    Description    (Table 1599)
  5871.  7    valid record
  5872.  6    (v2.00+) record is allocated; if bit 7 clear, process is "(starting)"
  5873.       and only offsets 01h and 09h are valid
  5874.  5    (v2.00+) this app currently owns the CPU
  5875.  4    reserved (0)
  5876.  3    DESQview system task
  5877.  2    reserved (0)
  5878.  1    task has keyboard (currently unused)
  5879.  0    task swapped out (currently unused)
  5880. --------Q-2FDE01BXFFFE-----------------------
  5881. INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
  5882.     AX = DE01h
  5883.     BX = FFFEh
  5884.     CX = 4D47h ("MG")
  5885.     DX = 0052h (0,"R")
  5886. Return: AL = FFh
  5887.     DX = 584Dh
  5888. --------Q-2FDE02-----------------------------
  5889. INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
  5890.     AX = DE02h
  5891.     BX = mapping context of DESQview
  5892.     DX = handle of DESQview system task
  5893. Note:    driver should pass this call to previous handler after doing its work
  5894. SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
  5895. --------Q-2FDE03-----------------------------
  5896. INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
  5897.     AX = DE03h
  5898.     BX = mapping context of DESQview
  5899.     DX = handle of DESQview system task
  5900. Notes:    driver should pass this call to previous handler before doing its work
  5901.     DESQview makes this call when it is exiting, but before unhooking any
  5902.       interrupt vectors
  5903. SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
  5904. --------Q-2FDE04-----------------------------
  5905. INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
  5906.     AX = DE04h
  5907.     BX = mapping context of new process (see INT 15/AX=1016h)
  5908.     DX = handle of process
  5909. Return: nothing
  5910. Notes:    XMS XDI handler (installed by default) allocates a 22-byte record
  5911.       (see #1600) from "common" memory to control access to XMS memory
  5912.     all DOS, BIOS, and DV API calls are valid in handler
  5913.     driver should pass this call to previous handler after processing it
  5914. SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
  5915.  
  5916. Format of XMS XDI structure:
  5917. Offset    Size    Description    (Table 1600)
  5918.  00h    DWORD    pointer to 10-byte record???
  5919.  04h    DWORD    pointer to next XMS XDI structure
  5920.  08h    WORD    mapping context
  5921.  0Ah    BYTE    ???
  5922.  0Bh  5 BYTEs    XMS entry point to return for INT 2F/AX=4310h
  5923.         (FAR jump to next field)
  5924.  10h  6 BYTEs    FAR handler for XMS driver entry point
  5925.         (consists of a FAR CALL followed by RETF)
  5926. --------Q-2FDE05-----------------------------
  5927. INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
  5928.     AX = DE05h
  5929.     BX = mapping context of process (see INT 15/AX=1016h)
  5930.     DX = handle of last task in process
  5931. Return: nothing
  5932. Notes:    XMS XDI handler releases the structure allocated by AX=DE04h
  5933.     driver should pass this call to previous handler before processing it
  5934.     all DOS, BIOS, and DV API calls except those generating a task switch
  5935.       are valid in handler
  5936. SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
  5937. --------Q-2FDE06-----------------------------
  5938. INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
  5939.     AX = DE06h
  5940.     BX = mapping context of process containing task
  5941.     DX = handle of new task
  5942. Notes:    driver should pass this call to previous handler after processing it
  5943.     all DOS, BIOS, and DV API calls are valid in handler
  5944. --------Q-2FDE07-----------------------------
  5945. INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
  5946.     AX = DE07h
  5947.     BX = mapping context of process containing task
  5948.     DX = handle of task
  5949. Notes:    driver should pass this call to previous handler before processing it
  5950.     all DOS, BIOS, and DV API calls except those generating a task switch
  5951.       are valid in handler
  5952. SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
  5953. --------Q-2FDE08-----------------------------
  5954. INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
  5955.     AX = DE08h
  5956.     BX = mapping context of task being switched from (see INT 15/AX=1016h)
  5957.     DX = handle of task being switched from
  5958. Notes:    invoked prior to task swap, interrupts, etc
  5959.     driver should pass this call to previous handler after processing it
  5960. SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
  5961. --------Q-2FDE09-----------------------------
  5962. INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
  5963.     AX = DE09h
  5964.     BX = mapping context of task being switched to (see INT 15/AX=1016h)
  5965.     DX = handle of task being switched to
  5966. Notes:    state is restored except for interrupts
  5967.     driver should pass this call to previous handler before processing it
  5968. SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
  5969. --------Q-2FDE0A-----------------------------
  5970. INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
  5971.     AX = DE0Ah
  5972.     BX = mapping context of task receiving focus
  5973.     DX = handle of running task
  5974. Notes:    driver should pass this call to previous handler before processing it
  5975.     this call often occurs inside a keyboard interrupt
  5976.     DV 2.42 does not provide this call to XDI handlers running inside a
  5977.       window; instead, it directly calls the INT 2F handler which was
  5978.       active at the time DV started
  5979. SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
  5980. --------Q-2FDE0B-----------------------------
  5981. INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
  5982.     AX = DE0Bh
  5983.     BX = mapping context of DESQview system task
  5984.     CX = number of system memory paragraphs required for the use of all
  5985.           XDI drivers (DV will add this to system memory in DVP buffer)
  5986.     DX = handle of DESQview system task
  5987.     SI = mapping context of new process if it starts
  5988.     ES:DI -> DVP buffer
  5989. Return: CX incremented as needed
  5990. Notes:    once DV invokes this function, the DVP buffer contents may be changed
  5991.     driver should pass this call to previous handler before processing it
  5992. --------Q-2FDE0C-----------------------------
  5993. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
  5994.     AX = DE0Ch
  5995.     BX = mapping context of task being swapped out (see INT 15/AX=1016h)
  5996.     DX = handle of DESQview system task
  5997. Note:    driver should pass this call to previous handler after processing it
  5998. --------Q-2FDE0D-----------------------------
  5999. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
  6000.     AX = DE0Dh
  6001.     BX = mapping context of process just swapped in (see INT 15/AX=1016h)
  6002.     DX = handle of DESQview system task
  6003. Note:    driver should pass this call to previous handler before processing it
  6004. --------Q-2FDE0E-----------------------------
  6005. INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
  6006.     AX = DE0Eh
  6007.     BX = mapping context of DESQview system task
  6008.     DX = handle of DESQview system task
  6009.     SI = mapping context of failed process (same as for call to AX=DE0Bh)
  6010. Note:    driver should pass this call to previous handler after processing it
  6011. --------Q-2FDE0F-----------------------------
  6012. INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
  6013.     AX = DE0Fh
  6014. Note:    DESQview 2.50+ calls this function just before it completes its
  6015.       initialization.  At the time of the call, DESQview has not yet
  6016.       changed any interrupt vectors
  6017. SeeAlso: AX=DE02h
  6018. --------Q-2FDE10-----------------------------
  6019. INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
  6020.     AX = DE10h
  6021.     BX = mapping context of process (see INT 15/AX=1016h)
  6022.     DX = task handle of process
  6023. Note:    DESQview 2.50+ calls this function before it frees the task; it is
  6024.       similar to AX=DE07h but allows the XDI handler to make calls which
  6025.       cause context switches
  6026. SeeAlso: AX=DE06h,AX=DE07h
  6027. --------c-2FDF00-----------------------------
  6028. INT 2F - HyperWare programs - INSTALLATION CHECK
  6029.     AX = DF00h
  6030.     BX = product code (see #1601)
  6031.     CX = 0000h
  6032.     DX = 0000h
  6033. Return: AL = status
  6034.         00h not installed
  6035.         FFh multiplex number in use
  6036.         CX = 5948h ('YH') if selected product installed
  6037.         ---HyperDisk---
  6038.         BX = code segment of resident portion
  6039.         DX = HyperDisk local data version
  6040. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  6041. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  6042. SeeAlso: INT 13/AX=8EEDh
  6043. Index:    installation check;HyperDisk|installation check;HyperStb
  6044. Index:    installation check;HyperKey|installation check;HyperScreen
  6045. Index:    HyperDisk;installation check|HyperStb;installation check
  6046. Index:    HyperKey;installation check|HyperScreen;installation check
  6047.  
  6048. (Table 1601)
  6049. Values for HyperWare product code:
  6050.  4248h    ('BH') HyperStb
  6051.  4448h    ('DH') HyperDisk v4.20+
  6052.  4B48h    ('KH') HyperKey
  6053.  5348h    ('SH') HyperScreen
  6054. ----------2FDF00BX5445-----------------------
  6055. INT 2F U - TELTSR.COM - INSTALLATION CHECK
  6056.     AX = DF00h
  6057.     BX = 5445h ('TE')
  6058.     CX = 4C54h ('LT')
  6059.     DX = 5352h ('SR')
  6060. Return: BX = 5454h ('TT') if installed
  6061.     CX = 494Eh ('IN') if installed
  6062.     DX = 5454h ('ST') if installed
  6063. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  6064. Range:    AH=???h to ???h, selected automatically
  6065. SeeAlso: AX=DF01h"TELTSR",AX=DF02h"TELTSR"
  6066. --------c-2FDF01BX4448-----------------------
  6067. INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
  6068.     AX = DF01h
  6069.     BX = 4448h ('DH')
  6070. Return: AX = 0000h if function supported
  6071.         BX = number of cache buffers in use
  6072.         CX = number of cache buffers which have been modified
  6073.         DL = caching flags (see #1602)
  6074. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  6075. SeeAlso: AX=DF00h,AX=DF02h
  6076.  
  6077. Bitfields for HyperDisk caching flags:
  6078. Bit(s)    Description    (Table 1602)
  6079.  0    staged writes enabled for floppy disks
  6080.  1    staged writes enabled for hard disks
  6081.  2    writes verified on floppy disks
  6082.  3    writes verified on hard disks
  6083.  4    reserved (0)
  6084.  5    reserved (0)
  6085.  6    floppy caching enabled
  6086.  7    all caching functions enabled
  6087. ----------2FDF01-----------------------------
  6088. INT 2F U - TELTSR.COM - ???
  6089.     AX = DF01h
  6090.     ???
  6091. Return: ???
  6092. SeeAlso: AX=DF00h"TELTSR",AX=DF02h"TELTSR"
  6093. --------c-2FDF02BX4448-----------------------
  6094. INT 2F - HyperDisk v4.50+ - SET CACHE STATE
  6095.     AX = DF02h
  6096.     BX = 4448h ('DH')
  6097.     DL = new caching flags (see #1602)
  6098. Return: AX = 0000h if supported
  6099.         BX = number of cache buffers in use
  6100.         CX = number of cache buffers which have been modified
  6101.         DL = previous caching flags (see #1602)
  6102. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  6103. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  6104. SeeAlso: AX=DF00h,AX=DF01h
  6105. ----------2FDF02-----------------------------
  6106. INT 2F U - TELTSR.COM - ???
  6107.     AX = DF02h
  6108.     ???
  6109. Return: ???
  6110. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  6111. SeeAlso: AX=DF00h"TELTSR",AX=DF01h"TELTSR"
  6112. --------U-2FE000-----------------------------
  6113. INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
  6114.     AX = E000h
  6115. Return: AX = 4A52h ("JR") if present
  6116. Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
  6117.       apparent DOS version analogously to MS-DOS SETVER
  6118. Note:    this installation check differs from the usual one of returning AL=FFh
  6119. SeeAlso: AX=E001h,INT 21/AH=52h
  6120. --------K-2FE000DX5354-----------------------
  6121. INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
  6122.     AX = E000h
  6123.     DX = 5354h ("ST")
  6124. Return: AL = FFh if installed
  6125.         BX = version (BH = major, BL = BCD minor)
  6126.         DX = segment of resident code
  6127. Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
  6128. --------U-2FE001-----------------------------
  6129. INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
  6130.     AX = E001h
  6131. Return: AH = major version
  6132.     AL = minor version
  6133. SeeAlso: AX=E000h
  6134. --------U-2FE002-----------------------------
  6135. INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
  6136.     AX = E002h
  6137. Return: AL = FFh if successful
  6138.         BH = major DOS version
  6139.         BL = minor DOS version
  6140.         CH = DOS version flag
  6141.         CL = OEM number
  6142.         DH = major DR-DOS version number (FFh if unknown)
  6143.         DL = minor DR-DOS version number (FFh if unknown)
  6144. SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
  6145. --------U-2FE003-----------------------------
  6146. INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
  6147.     AX = E003h
  6148.     BH = new major DOS version
  6149.     BL = new minor DOS version
  6150.     CH = new DOS version flag
  6151.     CL = new DOS revision number
  6152.     DH = new OEM number
  6153. SeeAlso: AX=E002h
  6154. --------U-2FE004-----------------------------
  6155. INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
  6156.     AX = E004h
  6157. Return: AL = FFh if successful
  6158. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  6159. --------U-2FE005-----------------------------
  6160. INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
  6161.     AX = E005h
  6162. Return: AL = FFh if successful
  6163. SeeAlso: AX=E000h,AX=E004h,AX=E006h
  6164. --------U-2FE006-----------------------------
  6165. INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
  6166.     AX = E006h
  6167. Return: AL = FFh if successful
  6168.         BL = status
  6169.         01h resident and active
  6170.         02h resident and inactive
  6171. --------U-2FE007-----------------------------
  6172. INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
  6173.     AX = E007h
  6174. Return: AL = FFh if successful
  6175.         BL = status
  6176.         00h if TaskMAX not loaded before SETDRVER
  6177.         FFh if TaskMAX was loaded before SETDRVER
  6178. SeeAlso: AX=E003h
  6179. --------U-2FE0-------------------------------
  6180. INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
  6181.     AH = E0h
  6182.     AL = 08h-10h
  6183. --------K-2FE100-----------------------------
  6184. INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
  6185.     AX = E100h
  6186. Return: AX = 0001h if installed
  6187.         DS:SI -> ASCIZ hotkey name
  6188.         DS:DI -> ASCIZ recording filename
  6189. Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
  6190.       by P2 Enterprises
  6191. SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
  6192. Index:    hotkeys;Phantom2
  6193. --------K-2FE101-----------------------------
  6194. INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
  6195.     AX = E101h
  6196.     BX = function mask (see #1603)
  6197.     CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
  6198.     DS:DX -> ASCIZ filespec if BX bit 7 set
  6199. SeeAlso: AX=E100h
  6200. Index:    hotkeys;Phantom2
  6201.  
  6202. Bitfields for Phantom2 function mask:
  6203. Bit(s)    Description    (Table 1603)
  6204.  0    record
  6205.  1    play
  6206.  2    QuickPlay
  6207.  3    loop
  6208.  4    mode display toggle
  6209.  5    sound toggle
  6210.  6    set hotkey
  6211.  7    set filespec
  6212. --------K-2FE102-----------------------------
  6213. INT 2F - Phantom2 v1.1+ - UNINSTALL
  6214.     AX = E102h
  6215. Return: AX = status
  6216.         0001h removal successful
  6217.         0002h not installed as TSR
  6218.         FFFFh disabled but not removed
  6219. SeeAlso: AX=E100h
  6220. --------K-2FE103-----------------------------
  6221. INT 2F - Phantom2 v2.8 - SET ??? FLAG
  6222.     AX = E103h
  6223. Return: AX = 0001h
  6224. SeeAlso: AX=E100h
  6225. --------y-2FE200-----------------------------
  6226. INT 2F - SecureDevice - LOGIN TO DRIVE
  6227.     AX = E200h
  6228.     DL = drive number (0 = A:)
  6229.     DS:SI -> 104-byte key
  6230. Return: AL = status
  6231.         00h unable to determine key's validity
  6232.         01h key is valid
  6233.         FFh key is invalid
  6234. Program: SecureDevice is a copylefted device driver by Max Loewenthal and
  6235.       Arthur Helwig which turns one or more disk files into encrypted
  6236.       logical drives
  6237. SeeAlso: AX=E201h,AX=E203h,AX=E209h
  6238. --------y-2FE201-----------------------------
  6239. INT 2F - SecureDevice - GET INFORMATION
  6240.     AX = E201h
  6241.     DX = driver index (0000h = first loaded)
  6242. Return: AL = number of volumes handled by driver
  6243.     DL = drive number of first volume (00h = A:)
  6244. SeeAlso: AX=E200h,AX=E203h,AX=E209h
  6245. --------y-2FE203-----------------------------
  6246. INT 2F - SecureDevice - DESTROY PASSWORD (LOGOUT FROM DRIVE)
  6247.     AX = E203h
  6248.     DL = drive number (00h = A:) or FFh for all drives
  6249. Return: nothing
  6250. SeeAlso: AX=E200h,AX=E209h
  6251. --------y-2FE209DX0000-----------------------
  6252. INT 2F - SecureDevice - INSTALLATION CHECK
  6253.     AX = E209h
  6254.     DX = 0000h
  6255. Return: AX = 1DEAh if installed
  6256.         DX = number of drivers installed
  6257. --------K-2FE300-----------------------------
  6258. INT 2F - ANARKEY.COM - INSTALLATION CHECK
  6259.     AX = E300h
  6260. Return: AL = state
  6261.         00h not installed
  6262.         FEh if installed but suspended (v3.0+)
  6263.         FFh installed
  6264. Program: ANARKEY.COM is a commandline recall program by Steven Calwas
  6265. Range:    AH=C0h to AH=FFh, selected by commandline switch
  6266. SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
  6267. SeeAlso: AX=E307h,INT 66"Newkey"
  6268. --------V-2FE300-----------------------------
  6269. INT 2F - Blank - INSTALLATION CHECK
  6270.     AX = E300h
  6271. Return: AL = FFh if installed
  6272.         ES = resident code segment
  6273. Program: Blank is a shareware screen blanker by Yonah Schmeidler
  6274. Note:    AH=E3h is the default, which may be reconfigured by the installation
  6275.       program in the registered version
  6276. SeeAlso: AH=93h,AX=C050h,INT 14/AX=AA01h
  6277. Index:    screen saver;Blank
  6278. --------K-2FE301-----------------------------
  6279. INT 2F U - ANARKEY.COM v2+ - GET ???
  6280.     AX = E301h
  6281. Return: DX:BX -> ??? (see #1604,#1605)
  6282. SeeAlso: AX=E300h
  6283.  
  6284. Format of returned data structure for ANARKEY v2.0:
  6285. Offset    Size    Description    (Table 1604)
  6286.  -7   7 BYTEs    signature ('ANARKEY')
  6287.  00h    WORD    ??? (I see 0001h in v2.0)
  6288.  02h    WORD    ??? (I see 0001h in v2.0)
  6289.  04h    WORD    ??? (I see 0 in v2.0)
  6290.  06h    WORD    PSP segment of next program loaded
  6291.  
  6292. Format of returned data structure for ANARKEY v3+:
  6293. Offset    Size    Description    (Table 1605)
  6294.  -1    BYTE    multiplex number
  6295.  00h    WORD    ??? (I see 0001h in v3.0-4.0)
  6296.  02h    WORD    ??? (I see 0001h in v3.0-4.0)
  6297.  04h    BYTE    ??? (I see 0 in v3.0-4.0)
  6298.  05h    WORD    PSP segment of next program loaded
  6299. --------K-2FE302-----------------------------
  6300. INT 2F U - ANARKEY.COM v3+ - ???
  6301.     AX = E302h
  6302.     BL = ???
  6303. Return: ???
  6304. SeeAlso: AX=E300h
  6305. --------K-2FE303-----------------------------
  6306. INT 2F U - ANARKEY.COM v3+ - ANARKMD API
  6307.     AX = E303h
  6308.     BL = function
  6309.         01h toggle insert mode
  6310.         02h display contents of history buffer
  6311.         03h write history buffer to file
  6312.         ES:DX -> file name
  6313.         04h clear history buffer
  6314.         05h undefine all aliases
  6315.         06h show aliases
  6316.         07h list programs using Unix switchar
  6317.         08h jump to bottom of history buffer
  6318.         09h (v4.0) add string to history buffer
  6319.         ES:DX -> ASCIZ string
  6320.         0Ah (v4.0) ???
  6321.         ES:DX -> ???
  6322.         0Bh (v4.0) copy string to edit buffer for use as next input line
  6323.         ES:DX -> ASCIZ string
  6324.         0Ch (v4.0) ???
  6325.         0Dh (v4.0) copy ??? to ???
  6326.         0Eh (v4.0) ???
  6327.         0Fh (v4.0) ???
  6328.         10h (v4.0) set ??? flag
  6329.         11h (v4.0) display error message about running in EMS under Windows
  6330. Return: ???
  6331. SeeAlso: AX=E300h
  6332. --------K-2FE304-----------------------------
  6333. INT 2F U - ANARKEY.COM v2+ - ???
  6334.     AX = E304h
  6335.     BL = ???
  6336. Return: ???
  6337. SeeAlso: AX=E300h
  6338. --------K-2FE305-----------------------------
  6339. INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
  6340.     AX = E305h
  6341.     BL = new state
  6342.         01h suspended
  6343.         00h enabled
  6344. SeeAlso: AX=E300h
  6345. --------K-2FE306-----------------------------
  6346. INT 2F U - ANARKEY.COM v4.0 - GET ???
  6347.     AX = E306h
  6348. Return: AX = ???
  6349. SeeAlso: AX=E300h
  6350. --------K-2FE307-----------------------------
  6351. INT 2F U - ANARKEY.COM v4.0 - GET ???
  6352.     AX = E307h
  6353. Return: AX = ???
  6354.     BL = ???
  6355. SeeAlso: AX=E300h
  6356. --------l-2FE44D-----------------------------
  6357. INT 2F - NDOS - API
  6358.     AX = E44Dh
  6359. Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
  6360.       Norton Utilities
  6361. Note:    as NDOS is a licensed version of 4DOS v3.03, the API is identical to
  6362.       that for 4DOS, except that AH=E4h instead of D4h and the installation
  6363.       check returns AX=44EEh instead of AX=44DDh
  6364. SeeAlso: AX=D44Dh,AX=E44Eh
  6365. --------l-2FE44E-----------------------------
  6366. INT 2F C - NDOS - AWAITING USER INPUT
  6367.     AX = E44Eh
  6368.     BX = condition
  6369.         0000h NDOS is ready to display prompt
  6370.         0001h NDOS has displayed the prompt, about to accept user input
  6371. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  6372. SeeAlso: AX=E44Dh
  6373. --------E-2FED00-----------------------------
  6374. INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
  6375.     AX = ED00h
  6376.     BL = DOS extender ID (see #1606)
  6377. Return: AL = status
  6378.         00h not installed
  6379.         FFh installed
  6380.         SI = 5048h ("PH")
  6381.         DI = 4152h ("AR")
  6382.         CH = major version number
  6383.         CL = minor version number
  6384.         DX = flags
  6385.             bit 0: running under DPMI
  6386.             bit 1: running under Phar Lap VMM
  6387.         if running under DPMI:
  6388.             BX = DPMI version (BH = major, BL = minor)
  6389. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
  6390.  
  6391. (Table 1606)
  6392. Values for Phar Lap DOS extender ID:
  6393.  01h    286dosx v1.3+ (Software Development Kit)
  6394.  02h    286dosx v1.3+ (Run-Time Kit)
  6395.  03h    386dosx v4.0+ (SDK)
  6396.  04h    386dosx v4.0+ (RTK)
  6397. --------E-2FED03-----------------------------
  6398. INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
  6399.     AX = ED03h
  6400.     CX = real-mode code segment
  6401.     DX = real-mode data segment
  6402. Return: CF clear if successful
  6403.         CX = protected-mode code segment selector
  6404.         DX = protected-mode data segment selector
  6405.         ES:DI -> real-mode entry point for calling protected-mode functions
  6406.               (see INT 21/AX=250Dh)
  6407.     CF set on error
  6408.         AX = error code
  6409.         0008h unable to allocate LDT descriptors
  6410. --------E-2FED80-----------------------------
  6411. INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
  6412.     AX = ED80h
  6413.     BL = DOS extender ID (see #1606)
  6414.     SI = 5048h ("PH")
  6415.     DI = 4152h ("AR")
  6416.     ???
  6417. Return: ???
  6418. --------y-2FEE00-----------------------------
  6419. INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
  6420.     AX = EE00h
  6421. Return: AL = FFh if installed
  6422. Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
  6423. SeeAlso: INT 21/AH=40h"NB.SYS"
  6424. --------U-2FEE00-----------------------------
  6425. INT 2F - XVIEW - INSTALLATION CHECK
  6426.     AX = EE00h
  6427. Return: AX = 00FFh if installed
  6428. Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
  6429. --------N-2FEE00-----------------------------
  6430. INT 2F - WEB v4.02 - INSTALLATION CHECK
  6431.     AX = EE00h
  6432. Return: AL = status
  6433.         00h not installed
  6434.         FFh installed
  6435. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6436. SeeAlso: AH=EEh"WEB",AX=EEF0h
  6437. --------U-2FEE01-----------------------------
  6438. INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
  6439.     AX = EE01h
  6440.     DS:DX -> ASCIZ string containing case-insensitive keyword to look up
  6441. Return: AX = status (see #1607)
  6442. Note:    the specified keyword should be a hyperlink in the _IndexPage of some
  6443.       database; the current database is searched first
  6444. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
  6445.  
  6446. (Table 1607)
  6447. Values for XVIEW function status:
  6448.  0000h    successful
  6449.  00F1h    unknown subfunction
  6450.  00F2h    unable to pop up
  6451. --------U-2FEE02-----------------------------
  6452. INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
  6453.     AX = EE02h
  6454.     DX = physical page number or anchor page number (see #1608)
  6455. Return: AX = status (see #1607)
  6456. Note:    physical page numbers are assigned by the hypertext compiler, and
  6457.       will change if a page is inserted in the middle
  6458. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
  6459.  
  6460. (Table 1608)
  6461. Values for XVIEW anchor page number:
  6462.  FFEAh    _Credits
  6463.  FFECh    _SearchTopics
  6464.  FFEDh    _SearchText
  6465.  FFF0h    _ManualList
  6466.  FFF5h    _HelpOnHelp
  6467.  FFF8h    _HomePage
  6468.  FFF9h    _IndexPage
  6469. --------U-2FEE03-----------------------------
  6470. INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
  6471.     AX = EE03h
  6472.     DS:DX -> data packet (see #1609)
  6473. Return: AX = status (see #1607)
  6474. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
  6475.  
  6476. Format of XVIEW data packet:
  6477. Offset    Size    Description    (Table 1609)
  6478.  00h    DWORD    -> ASCIZ database filespec (0000h:0000h for current database)
  6479.  04h    DWORD    -> ASCIZ text to look up or 0000h:0000h
  6480.  08h    WORD    page number (0000h if keyword used)
  6481.  0Ah  6 BYTEs    reserved
  6482. --------U-2FEE04-----------------------------
  6483. INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
  6484.     AX = EE04h
  6485. Return: AX = status (see #1607)
  6486. Note:    equivalent to the action taken when the user presses the Alt-L hotkey
  6487. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
  6488. --------U-2FEE05-----------------------------
  6489. INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
  6490.     AX = EE05h
  6491. Return: AX = status (see #1607)
  6492. Note:    equivalent to the action taken when the user presses the Alt-H hotkey
  6493. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
  6494. --------U-2FEE06-----------------------------
  6495. INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
  6496.     AX = EE06h
  6497. Return: AX = status (see also AX=EE01h)
  6498.         0001h specified filename is not an xText database
  6499.         0002h no databases found
  6500.         0003h bad data in file
  6501.         0004h memory shortage
  6502.         0005h unable to open the requested file
  6503.         0007h invalid page number for file
  6504. Note:    although this call is not required, the exit code can alert the
  6505.       caller to problems; if the call is not made, the program should
  6506.       enforce a delay of about 1/2 second to allow the viewer to pop up,
  6507.       and should not get keyboard input or attempt disk accesses during
  6508.       the delay
  6509. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
  6510. --------N-2FEE-------------------------------
  6511. INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
  6512.     AH = EEh
  6513.     AL = module ID (see #1610)
  6514. Return: AX = 0000h if installed
  6515.         ES:DI -> far entry point for module-specific API calls
  6516.           (see #1611,#1612,#1613,#1614,#1615)
  6517. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6518. SeeAlso: AX=EE00h"WEB"
  6519.  
  6520. (Table 1610)
  6521. Values for WEB module ID:
  6522.  10h    server module (SERVER.EXE)
  6523.  20h    client module (CLIENT.EXE)
  6524.  30h    mail module (MAIL.EXE)
  6525.  40h    spooler (PCSPOOL.EXE)
  6526.  50h    kernel module (KERNEL.EXE)
  6527.  60h    SAP module (KERNEL.EXE)
  6528.  70h    resident station manager (SM.EXE)
  6529.  90h    router module (ROUTER.EXE)
  6530.  
  6531. (Table 1611)
  6532. Call server module entry point with:
  6533.     BX = function
  6534.         0000h remove server module
  6535.         Return: AX = status (0000h if successful, else WEB error code)
  6536.         0001h create SYSINFO file
  6537.         Note:    the SYSINFO file is used by the station manager when
  6538.               displaying info for a particular station
  6539.         0002h get server object table
  6540.         Return: CX = number of server objects
  6541.             ES:DI -> server object table
  6542.         Note:    server objects include drives and devices that the
  6543.               server module controls
  6544.         0003h get server variables
  6545.         Return: ES:DI -> server variables
  6546.  
  6547. (Table 1612)
  6548. Call client module entry point with:
  6549.     BX = function
  6550.         0000h remove client module
  6551.         Return: AX = status (0000h if successful, else WEB error code)
  6552.         0001h decrement client-only flag
  6553.         0002h increment client-only flag
  6554.         0005h set device capture
  6555.         Note:    decrements DeviceOutput flag, telling the spooler that
  6556.               it may trap device output again
  6557.         0006h clear device capture
  6558.         Note:    increments DeviceOutput flag, telling the spooler that
  6559.               it should not trap device output (this is used
  6560.               internally by the spooler to prevent it from trapping
  6561.               its own output)
  6562.         0007h get client debug pointer
  6563.         Return: ES:DI -> client debug data structure (see #1616)
  6564.         0008h get root drive
  6565.         Return: AL = WEB startup drive
  6566.         0009h get maximum possible drive/device redirections
  6567.         Return: AL = maximum drive redirections
  6568.             CH = maximum LPTx redirections
  6569.             CL = maximum COMx redirections
  6570.         000Ah suspend client
  6571.         Return: AX = previous value of Suspend flag
  6572.         000Bh resume client
  6573.         Return: AX = previous value of Suspend flag
  6574.         000Ch get instance data
  6575.         CX = maximum number of structures in array
  6576.         ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
  6577.               (see #1617)
  6578.         Return: CX = number of structures actually returned
  6579.         Note:    used internally by WEB4WIN
  6580.  
  6581. (Table 1613)
  6582. Call mail module entry point with:
  6583.     BX = function
  6584.         0000h remove mail module
  6585.         Return: AX = status (0000h successful, else WEB error code)
  6586.         0001h set mail poll
  6587.         Note:    schedules the WEB mail module
  6588.         0002h set mail notify
  6589.         Note:    sets the Notify flag, which determines whether the
  6590.               user will be notified when mail is received
  6591.         0003h clear mail notify
  6592.         Note:    clears the Notify flag, which determines whether the
  6593.               user will be notified when mail is received
  6594.         0004h check whether new mail has arrived
  6595.         Return: AL = new mail status
  6596.                 00h no new mail since last call
  6597.                 else new mail has arrived
  6598.         Note:    also clears the new-mail flag after retrieving it
  6599.         0005h send notify
  6600.         ES:DI -> name of WEB user to be notified
  6601.         0006h get post office
  6602.         Return: ES:DI -> full network path of Post Office subdirectory
  6603.  
  6604. (Table 1614)
  6605. Call spooler entry point with:
  6606.     BX = function
  6607.         0000h remove PCSpool module
  6608.         Return: AX = status (0000h successful, else WEB error code)
  6609.         0001h set spooler poll
  6610.         Note:    schedules the WEB spooler
  6611.         0002h check spooler changed
  6612.         Return:    AX = 0000h
  6613.         Note:    this call is a NOP in current versions of WEB
  6614.  
  6615. (Table 1615)
  6616. Call kernel entry point with:
  6617.     BX = function
  6618.         0000h remove kernel module
  6619.         Return: AX = status (0000h successful, else WEB error code)
  6620.         0001h set kernel ^S filter
  6621.         DL = new state (00h don't filter ^S, nonzero do filter)
  6622.         0002h get kernel data area
  6623.         Return: ES:DI -> kernel data area
  6624.         0003h display dialog box
  6625.         CL = dialog box type
  6626.             00h password
  6627.             01h E-Note received notification
  6628.             02h Novell login
  6629.             03h general notification
  6630.         DL = number of rows to display
  6631.         ES:SI -> array of far pointers to rows to be displayed
  6632.         ES:DI -> Pascal-style input buffer
  6633.         Return: AX = status (0000h successful, else error code)
  6634.         0004h kernel service events
  6635.         0005h get kernel's in-critical-section flag
  6636.         Return: ES:DI -> kernel InCriticalSection flag
  6637.         0006h schedule DOS event
  6638.         AL = directive
  6639.             00h do not ignore WEB ExtraBusy flag
  6640.             01h ignore ExtraBusy flag
  6641.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  6642.         ES:SI -> WEB AES Event Control Block (ECB) (see #1618)
  6643.         Notes:    the WEB Asynchronous Event Scheduler is similar to the
  6644.               one used by IPX; this call schedules a special ECB
  6645.               to be executed at a later time.  Unlike IPX ECBs,
  6646.               the timeout must be set explicitly by the caller
  6647.             this function also calls function 0004h
  6648.         0007h check busy
  6649.         AL = directive
  6650.             00h do not ignore WEB ExtraBusy flag
  6651.             01h ignore ExtraBusy flag
  6652.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  6653.         Return: AX = status (0000h not busy, else busy)
  6654.         0008h set keyboard intercept
  6655.         Note:    currently a NOP which returns immediately
  6656.         0009h get keyboard intercept
  6657.         Note:    currently a NOP which returns immediately
  6658.         000Ah get dialog flags
  6659.         Return: ES:DI -> kernel dialog flags (see #1619)
  6660.         000Bh get network path
  6661.         Return: ES:DI -> fully-qualified network path of file where
  6662.                 the screen is stored on Dialog calls
  6663.         000Ch kernel alternate dialog
  6664.         CL = dialog box type
  6665.             00h password
  6666.             01h E-Note received notification
  6667.             02h Novell login
  6668.             03h general notification
  6669.         DL = number of rows to display
  6670.         ES:SI -> array of far pointers to rows to be displayed
  6671.         ES:DI -> Pascal-style input buffer
  6672.         Return: AX = status (0000h successful, else error code)
  6673.         Note:    this function is identical to function 0003h except
  6674.               that it does not notify WEB4WIN of the impending
  6675.               dialog request
  6676.         000Dh get machine/operating system type
  6677.         Return: AX = machine/operating system type
  6678.                 01h IBM PC, MS-DOS
  6679.                 02h IBM PC, DOSV (Japanese)
  6680.                 03h NEC PC-9800, JDOS (Japanese)
  6681.                 04h IBM PC, Korean DBC DOS
  6682.  
  6683. Format of client debug data structure:
  6684. Offset    Size    Description    (Table 1616)
  6685.  00h    WORD    total files
  6686.  02h    WORD    files free
  6687.  04h    WORD    no files
  6688.  06h    WORD    minimum files
  6689.  08h    WORD    total FCBs
  6690.  0Ah    WORD    total safe FCBs
  6691.  0Ch    WORD    FCBs in use
  6692.  0Eh    WORD    wrong FCB
  6693.  10h    WORD    compressed
  6694.  12h    WORD    retransmits
  6695.  
  6696. Format of WIN_INSTANCE_DATA structure:
  6697. Offset    Size    Description    (Table 1617)
  6698.  00h    DWORD    real-mode pointer to data to be instanced
  6699.  04h    WORD    size of data to be instanced
  6700.  
  6701. Format of WEB AES Event Control Block:
  6702. Offset    Size    Description    (Table 1618)
  6703.  00h    DWORD    link address
  6704.  04h    WORD    ESR address
  6705.  08h    BYTE    InUse flag
  6706.  09h    BYTE    completion code
  6707.  0Ah  3 BYTEs    reserved
  6708.  0Dh    WORD    timeout
  6709.  0Fh    BYTE    IgnoreExtra flag
  6710.  10h    WORD    PSP
  6711.  12h    DWORD    DTA
  6712.  16h    WORD    AX value for DOS critical information
  6713.  18h    WORD    BX value for DOS critical information
  6714.  1Ah    WORD    CX value for DOS critical information
  6715.  1Ch    WORD    DX value for DOS critical information
  6716.  
  6717. (Table 1619)
  6718. Values for kernel dialog flags:
  6719.  01h    dialog will timeout
  6720.  02h    display stars instead of entered keystrokes
  6721. --------N-2FEEF0-----------------------------
  6722. INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
  6723.     AX = EEF0h
  6724.     BX = notification function ID (see #1620)
  6725. Return: varies by notification function
  6726. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6727. Note:    the notification functions are used internally by WEB modules to notify
  6728.       other modules and external programs of actions or event, and should
  6729.       never be called by an application
  6730. SeeAlso: AX=EE00h"WEB"
  6731.  
  6732. (Table 1620)
  6733. Values for WEB Notification Function ID:
  6734.  00h    node added
  6735.  01h    node deleted
  6736.  02h    dial attempt
  6737.  03h    dial failed
  6738.  04h    file close
  6739.  05h    close connection
  6740.  07h    check Windows mode
  6741.  20h    link up
  6742.  21h    link down
  6743. --------K-2FF000-----------------------------
  6744. INT 2F U - 4MAP - INSTALLATION CHECK
  6745.     AX = F000h
  6746. Return: AX = 00FFh
  6747. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  6748. Note:    returns AX=00FFh for any value of AL not listed here
  6749. SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
  6750. --------K-2FF001-----------------------------
  6751. INT 2F U - 4MAP - GET KEY MAPPINGS
  6752.     AX = F001h
  6753. Return: ES:BX -> key mappings
  6754. SeeAlso: AX=F000h
  6755. --------K-2FF002-----------------------------
  6756. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  6757.     AX = F002h
  6758.     BL = character to insert
  6759. Return: AX = status
  6760.         0000h successful
  6761.         0001h buffer full
  6762. SeeAlso: AX=F000h,AX=F003h
  6763. --------K-2FF003-----------------------------
  6764. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  6765.     AX = F003h
  6766.     BL = character to insert
  6767. Return: AX = status
  6768.         0000h successful
  6769.         0001h buffer full
  6770. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  6771. SeeAlso: AX=F000h,AX=F002h
  6772. --------m-2FF1-------------------------------
  6773. INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
  6774.     AH = F1h
  6775.     AL <> F1h
  6776. Return: AL = F1h if installed
  6777. Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
  6778.       popup TSRs to be loaded but swapped out to disk, EMS, or XMS.     One
  6779.       TSR at a time is brought back into memory at the user's request.
  6780. --------E-2FF100-----------------------------
  6781. INT 2F - DOS EXTENDER INSTALLATION CHECK
  6782.     AX = F100h
  6783. Return: AL = FFh if DOS extender present
  6784.         SI = 444Fh ("DO")
  6785.         DI = 5358h ("SX")
  6786. Note:    supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
  6787. SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  6788. --------W-2FF200-----------------------------
  6789. INT 2F - WINX - INSTALLATION CHECK
  6790.     AX = F200h
  6791. Return: AX = 00FFh if installed
  6792. Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
  6793.       launch Windows applications from a DOS Box; it was published in
  6794.       "DOS and Windows Protected Mode-Programming with DOS Extenders"
  6795.       (Addison-Wesley) and should not be confused with the Windows driver
  6796.       of the same name which is part of the DESQview/X package
  6797. --------W-2FF201-----------------------------
  6798. INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
  6799.     AX = F201h
  6800. Return: AX = status
  6801.         FFFFh if WINX is busy processing a different request
  6802.         0000h if successful
  6803.         BX:CX = address of server buffer (see #1621)
  6804.  
  6805. Format of WINX server buffer:
  6806. Offset    Size    Description    (Table 1621)
  6807.  00h    BYTE    command/status
  6808.         00h buffer available
  6809.         01h buffer contains result
  6810.         02h change directory
  6811.         03h execute program
  6812.         FFh terminate windows portion of WINX
  6813.  01h  ? BYTEs    command (03h) or directory (02h)
  6814.   or
  6815.  01h    DWORD    result (01h)
  6816. --------W-2FF202-----------------------------
  6817. INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
  6818.     AX = F202h
  6819.     BX:CX -> directory
  6820. Return: AX = status
  6821.         FFFFh if WINX is busy processing a different request
  6822.         0000h if successful
  6823. SeeAlso: AX=F200h,AX=F203h
  6824. --------W-2FF203-----------------------------
  6825. INT 2F - WINX - EXECUTE COMMAND
  6826.     AX = F203h
  6827.     BX:CX -> command
  6828. Return: AX = status
  6829.         0000h if successful
  6830.         FFFFh if WINX is busy processing a different request
  6831. SeeAlso: AX=F200h,AX=F202h
  6832. --------G-2FF400-----------------------------
  6833. INT 2F - FINDIRQ.COM - INSTALLATION CHECK
  6834.     AX = F400h
  6835. Return: AL = 01h if installed
  6836. Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
  6837.       of PC Magazine; when run as a TSR it can determine which IRQs are
  6838.       used only when a device is active
  6839. SeeAlso: AX=F401h
  6840. --------G-2FF401CX5121-----------------------
  6841. INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
  6842.     AX = F401h
  6843.     CX = 5121h ('Q!')
  6844. Return: AX:DX -> hooked interrupt table (see #1622)
  6845. SeeAlso: AX=F400h
  6846.  
  6847. Format of FINDIRQ hooked interrupt table:
  6848. Offset    Size    Description    (Table 1622)
  6849.  00h    BYTE    1Ch
  6850.  01h    DWORD    FINDIRQ's INT 1C handler
  6851.  05h    DWORD    original INT 1C handler
  6852.  09h    BYTE    28h
  6853.  0Ah    DWORD    FINDIRQ's INT 28 handler
  6854.  0Eh    DWORD    original INT 28 handler
  6855.  12h    BYTE    2Fh
  6856.  13h    DWORD    FINDIRQ's INT 2F handler
  6857.  17h    DWORD    original INT 2F handler
  6858. --------d-2FF700-----------------------------
  6859. INT 2F - AUTOPARK.COM - INSTALLATION CHECK
  6860.     AX = F700h
  6861. Return: AL = state
  6862.         00h not installed
  6863.         FFh installed
  6864. Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
  6865. --------d-2FF701-----------------------------
  6866. INT 2F - AUTOPARK.COM - SET PARKING DELAY
  6867.     AX = F701h
  6868.     BX:CX = 32-bit count of 55ms timer ticks
  6869. --------d-2FF800CX4455-----------------------
  6870. INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
  6871.     AX = F800h
  6872.     CX = 4455h ("DU")
  6873.     DL = 45h ("E")
  6874. Return: AL = FFh if installed
  6875.         ES:BX -> ASCII signature "Universal Data Exchange"
  6876. Program: SuperStor is a disk-compression program by Addstor.
  6877. Note:    returns AX=0001h if AL is not 00h or 01h
  6878. SeeAlso: AX=1001h,AX=F801h
  6879. --------d-2FF801CX4455-----------------------
  6880. INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
  6881.     AX = F801h
  6882.     CX = 4455h ("DU")
  6883.     DL = 45h ("E")
  6884.     ES:BX = return address if successful
  6885. Return: at specified address if successfully removed from memory
  6886.     else
  6887.         AL = error code
  6888.         ???
  6889. Program: SuperStor is a disk-compression program by Addstor.
  6890. Note:    returns AX=0001h if AL is not 00h or 01h
  6891. SeeAlso: AX=1001h,AX=F800h
  6892. --------*-2FFB-------------------------------
  6893. INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
  6894.     AH = FBh
  6895. SeeAlso: AX=FB42h/BX=0001h
  6896. --------a-2FFB00-----------------------------
  6897. INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
  6898.     AX = FB00h
  6899. Return: AX = 00FFh if installed
  6900. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6901. SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
  6902. --------U-2FFB00-----------------------------
  6903. INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
  6904.     AX = FB00h
  6905. Return: AX = FFFFh if installed
  6906.         BX = version (BCD, BH=major, BL=minor)
  6907. SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
  6908. --------a-2FFB01-----------------------------
  6909. INT 2F U - AutoBraille v1.1A - ???
  6910.     AX = FB01h
  6911.     ???
  6912. Return: ???
  6913. --------U-2FFB01-----------------------------
  6914. INT 2F U - Jot-It! v1.50 - GET USER NAME
  6915.     AX = FB01h
  6916. Return: DX:BX -> ASCIZ user name
  6917. SeeAlso: AX=FB02h"Jot-It"
  6918. --------a-2FFB02-----------------------------
  6919. INT 2F U - AutoBraille v1.1A - ???
  6920.     AX = FB02h
  6921. Return: AH = ???
  6922.     AL = ???
  6923. --------U-2FFB02-----------------------------
  6924. INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
  6925.     AX = FB02h
  6926. Return: DX:BX -> ASCIZ name of directory in which messages are stored
  6927. SeeAlso: AX=FB01h"Jot-It"
  6928. --------a-2FFB03-----------------------------
  6929. INT 2F U - AutoBraille v1.1A - GET NEXT ???
  6930.     AX = FB03h
  6931. Return: AX = ???
  6932. --------U-2FFB03-----------------------------
  6933. INT 2F U - Jot-It! v1.50 - UNINSTALL
  6934.     AX = FB03h
  6935. Return: resident code removed from memory
  6936. Note:    CAUTION: NO checks are performed to ensure that the interrupt vectors
  6937.       being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
  6938. SeeAlso: AX=FB00h"Jot-It"
  6939. --------a-2FFB-------------------------------
  6940. INT 2F U - AutoBraille v1.1A - SET ???
  6941.     AH = FBh
  6942.     AL = 04h-08h
  6943. Return: AX = 0000h
  6944. --------a-2FFB-------------------------------
  6945. INT 2F U - AutoBraille v1.1A - SET ???
  6946.     AH = FBh
  6947.     AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
  6948. Return: ???
  6949. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6950. --------a-2FFB-------------------------------
  6951. INT 2F U - AutoBraille v1.1A - SET ???
  6952.     AH = FBh
  6953.     AL = 10h-1Fh
  6954.     ???
  6955. Return: ???
  6956. --------a-2FFB20-----------------------------
  6957. INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
  6958.     AX = FB20h
  6959.     BL = flags to set
  6960. SeeAlso: AX=FB21h"AutoBraille"
  6961. --------a-2FFB21-----------------------------
  6962. INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
  6963.     AX = FB21h
  6964.     BL = flags to clear
  6965. SeeAlso: AX=FB20h"AutoBraille"
  6966. --------a-2FFB22-----------------------------
  6967. INT 2F U - AutoBraille v1.1A - SET ???
  6968.     AX = FB22h
  6969.     BL = ???
  6970. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6971. --------a-2FFB28-----------------------------
  6972. INT 2F U - AutoBraille v1.1A - ???
  6973.     AX = FB28h
  6974.     BX = ???
  6975.     ???
  6976. Return: ???
  6977. SeeAlso: AX=FB29h"AutoBraille"
  6978. --------a-2FFB29-----------------------------
  6979. INT 2F U - AutoBraille v1.1A - ???
  6980.     AX = FB29h
  6981.     BX = ???
  6982.     ???
  6983. Return: ???
  6984. SeeAlso: AX=FB28h"AutoBraille"
  6985. --------a-2FFB-------------------------------
  6986. INT 2F U - AutoBraille v1.1A - SET ???
  6987.     AH = FBh
  6988.     AL = 2Bh-34h
  6989.     BX = ???
  6990. --------a-2FFB35-----------------------------
  6991. INT 2F U - AutoBraille v1.1A - SET ???
  6992.     AX = FB35h
  6993.     BL = ???
  6994. --------a-2FFB36-----------------------------
  6995. INT 2F U - AutoBraille v1.1A - SET ???
  6996.     AX = FB36h
  6997.     BL = ???
  6998. --------a-2FFB37-----------------------------
  6999. INT 2F U - AutoBraille v1.1A - SET ???
  7000.     AX = FB37h
  7001.     BL = ???
  7002. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  7003. --------E-2FFB42BX0001-----------------------
  7004. INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
  7005.     AX = FB42h
  7006.     BX = 0001h
  7007. Return: AX = version number??? (AL=major, AH=minor)
  7008.     CX = next-selector increment
  7009. ---BC2.0---
  7010.     ES:BX -> 80-byte buffer for ???
  7011.     DX = DPMI version
  7012. ---BC3.0---
  7013.     BX = ??? (0000h)
  7014.     DX = ???
  7015.     ES:SI -> list of valid selectors ???
  7016. Notes:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  7017.       as version 1.000, while the version distributed with BC++ 3.0
  7018.       identifies itself as version 1.0; the former is 10864 bytes, the
  7019.       latter 22180 bytes.  The BC2.0 version is a DPMI loader, while
  7020.       the BC3.0 version also adds a DPMI host and DOS extender
  7021.     the BC++ 2.0 version displays an error message if called with BX
  7022.       values other than 0001h-0008h
  7023. SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
  7024. --------E-2FFB42BX0002-----------------------
  7025. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
  7026.     AX = FB42h
  7027.     BX = 0002h
  7028.     CX = size in bytes
  7029.     DX = bit flags
  7030.         bit 2: set to allocate DOS memory, clear for DPMI memory
  7031.     SI = selector of descriptor to be modified to access allocated memory
  7032.     DI = selector of a second descriptor to be modified
  7033. Return: AX = ??? or 0000h on error
  7034.     CX:DX = linear base address of DPMI memory block
  7035.     SI:DI = handle for DPMI memory block or FFFFh:FFFFh
  7036.     ???
  7037. Note:    two segment descriptors may be set if a code and an aliased data
  7038.       segment are required; if only one descriptor is needed, SI should
  7039.       equal DI on entry
  7040. BUG:    when allocating DOS memory, the code computes the linear address by
  7041.       multiplying the segment number by 4 rather than shifting by 4
  7042. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  7043. --------E-2FFB42BX0002-----------------------
  7044. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
  7045.     AX = FB42h
  7046.     BX = 0002h
  7047.     ES:SI -> memory block info (see #1623)
  7048. Return: ???
  7049. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  7050.       as version 1.000, while the version distributed with BC++ 3.0
  7051.       identifies itself as version 1.0; the former is 10864 bytes, the
  7052.       latter 22180 bytes.
  7053. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  7054.  
  7055. Format of DPMILOAD memory block info:
  7056. Offset    Size    Description    (Table 1623)
  7057.  00h    WORD    flags
  7058.         bit 0: set if data segment rather than code segment
  7059.         bit 1: information valid
  7060.         bit 2: set if DOS memory block rather than DPMI memory block
  7061.         bit 4: ???
  7062.         bit 15: set if no LDT selectors for memory block???
  7063.  02h    DWORD    block size in bytes
  7064. ---DPMI memory block---
  7065.  06h    DWORD    DPMI memory block handle
  7066. ---DOS memory block---
  7067.  06h    WORD    real-mode segment of memory block
  7068.  08h    WORD    selector of memory block
  7069. ---
  7070.  0Ah    DWORD    linear address of memory
  7071.  0Eh    WORD    memory operation error code
  7072.         0008h no more free LDT descriptors
  7073. ---if flags bit 0 clear---
  7074.  10h    WORD    code segment selector for memory block or 0000h or FFFFh
  7075.  12h    WORD    data alias selector for memory block or 0000h or FFFFh
  7076. ---if flags bit 0 set---
  7077.  10h    WORD    data segment selector for memory block or 0000h or FFFFh
  7078.  12h    WORD    unused???
  7079. --------E-2FFB42BX0003-----------------------
  7080. INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
  7081.     AX = FB42h
  7082.     BX = 0003h
  7083. Return: DX:AX = size of largest free block in paragraphs
  7084.         0000h:0000h on error (BC3.0 version only)
  7085. Note:    AX and DX are destroyed on error, but no other error indicator is
  7086.       returned, under the BC++ 2.0 version of DPMILOAD
  7087. SeeAlso: AX=FB42h/BX=0002h
  7088. --------E-2FFB42BX0004-----------------------
  7089. INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
  7090.     AX = FB42h
  7091.     BX = 0004h
  7092.     DS:DX -> ASCIZ filename of protected-mode executable
  7093. Return: CX = selector of ??? or 0000h
  7094. ---BC3.0---
  7095.     DX = status (0000h,FFF4h,others???) (see #1624)
  7096. Note:    the filename may also be terminated by a CR rather than a NUL under the
  7097.       BC++ 3.0 version of DPMILOAD
  7098.  
  7099. (Table 1624)
  7100. Values for DPMILOAD function status:
  7101.  0000h    successful
  7102.  0001h    ??? failure
  7103.  0002h    invalid selector
  7104.  0004h    unknown error
  7105.  0008h    no more LDT descriptors available???
  7106.  FFDEh    unable to set descriptor
  7107.  FFDFh    unable to get segment base address
  7108.  FFE0h    ???
  7109.  FFF2h    invalid parameter value
  7110.  FFF4h    component of filename too long (name not in 8.3 format)
  7111.  FFF5h    pathname too long (>79 chars)
  7112.  FFF6h    ???
  7113.  FFF8h    ???
  7114.  FFF9h    index out of range
  7115.  FFFAh    ???
  7116.  FFFCh    invalid access to code segment???
  7117.  FFFEh    ???
  7118.  FFFFh    general error
  7119. --------E-2FFB42BX0005-----------------------
  7120. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
  7121.     AX = FB42h
  7122.     BX = 0005h
  7123.     CX = selector of DPMILOAD data (see #1625)
  7124.     DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
  7125. Return: DX = status (see #1624)
  7126.         0000h successful
  7127.         AX:BX -> ??? FAR function (called with two words on top of stk)
  7128.         else
  7129.         BX destroyed
  7130. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
  7131.  
  7132. Format of DPMILOAD data:
  7133. Offset    Size    Description    (Table 1625)
  7134.  00h 12 BYTEs    ???
  7135.  0Ch    WORD    ??? bit flags
  7136.  0Eh 14 BYTEs    ???
  7137.  1Ch    WORD    number of memory control records
  7138.  1Eh 25 BYTEs    ???
  7139.  37h    BYTE    ??? bit flags
  7140.         bit 4: data valid???
  7141.  38h  4 BYTEs    ???
  7142.  3Ch    WORD    ???
  7143.  3Eh 12 BYTEs    ???
  7144.  46h    BYTE    ??? counter
  7145.  47h    BYTE    ???
  7146.  48h    BYTE    ???
  7147.  49h    BYTE    ???
  7148.  4Ah    WORD    ???
  7149.  4Ch  2 BYTEs    ???
  7150.  4Eh    WORD    offset of array of 64-byte memory control records
  7151.  52h    WORD    offset of name list (see #1626)
  7152.  54h  4 BYTEs    ???
  7153.  58h    WORD    offset of array of 6-byte objects
  7154.  5Ah  8 BYTEs    ???
  7155.  62h  9 BYTEs    ASCIZ name for ???
  7156.  6Bh  9 BYTEs    ASCIZ name for ???
  7157.     ???
  7158.  
  7159. Format of name list entry [array]:
  7160. Offset    Size    Description    (Table 1626)
  7161.  00h    BYTE    length of name (00h if end of array)
  7162.  01h  N BYTEs    name
  7163.  N+1    WORD    1-based index into array of unknown 6-byte objects
  7164.  
  7165. Format of 6-byte objects:
  7166. Offset    Size    Description    (Table 1627)
  7167.  00h    BYTE    ???
  7168.  01h    BYTE    ???
  7169.  02h    BYTE    ???
  7170.  03h    BYTE    1-based index of memory control record
  7171.  04h    WORD    ???
  7172.  
  7173. Format of memory control record:
  7174. Offset    Size    Description    (Table 1628)
  7175.  00h 20 BYTEs    memory block info (see #1623)
  7176.  14h  6 BYTEs    ???
  7177.  1Ah    BYTE    ???
  7178.  1Bh  2 BYTEs    ???
  7179.  1Dh    BYTE    ??? bit flags
  7180.  1Eh 14 BYTEs    ???
  7181.  2Ch    DWORD    pointer to ??? memory control record or 0000h:0000h
  7182.  30h    DWORD    pointer to ??? memory control record or 0000h:0000h
  7183.  34h    DWORD    pointer to next??? memory control record or 0000h:0000h
  7184.  38h    DWORD    pointer to prev??? memory control record or 0000h:0000h
  7185.  3Ch  4 BYTEs    ???
  7186. Note:    the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
  7187.       the pointers at offsets 34h and 38h
  7188. --------E-2FFB42BX0006-----------------------
  7189. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
  7190.     AX = FB42h
  7191.     BX = 0006h
  7192.     CX = selector of DPMILOAD data (see #1625)
  7193.     DX = 1-based index into array of ??? 6-byte objects
  7194. Return: DX = status (see #1624)
  7195.         0000h successful
  7196.         AX:BX -> ??? FAR function (called with two words on top of stk)
  7197.         else
  7198.         BX destroyed
  7199. SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
  7200. --------E-2FFB42BX0007-----------------------
  7201. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
  7202.     AX = FB42h
  7203.     BX = 0007h
  7204.     CX = selector of ???
  7205. Return: ???
  7206. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  7207.       as version 1.000, while the version distributed with BC++ 3.0
  7208.       identifies itself as version 1.0; the former is 10864 bytes, the
  7209.       latter 22180 bytes.
  7210. --------E-2FFB42BX0007-----------------------
  7211. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7212.     AX = FB42h
  7213.     BX = 0007h
  7214.     CX = selector of DPMILOAD data (see #1625)
  7215.     ???
  7216. Return: DX = status (see #1624)
  7217.         0000h successful
  7218.         AX = ???
  7219. --------E-2FFB42BX0008-----------------------
  7220. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  7221.     AX = FB42h
  7222.     BX = 0008h
  7223.     CX = bit flags
  7224.         bit 2: set if DPMI memory, clear if DOS memory
  7225.     DX = selector of DOS memory block
  7226.     SI:DI = handle of DPMI memory block
  7227. Return: DX = 0000h on error, unchanged if succcessful
  7228. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  7229.       as version 1.000, while the version distributed with BC++ 3.0
  7230.       identifies itself as version 1.0; the former is 10864 bytes, the
  7231.       latter 22180 bytes.
  7232. SeeAlso: AX=FB42h/BX=0002h
  7233. --------E-2FFB42BX0008-----------------------
  7234. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  7235.     AX = FB42h
  7236.     BX = 0008h
  7237.     ES:SI -> memory block info (see #1623)
  7238. Return: ???
  7239. SeeAlso: AX=FB42h/BX=0009h
  7240. --------E-2FFB42BX0009-----------------------
  7241. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
  7242.     AX = FB42h
  7243.     BX = 0009h
  7244.     ES:SI -> memory block info (see #1623)
  7245.     ???
  7246. Return: ???
  7247. SeeAlso: AX=FB42h/BX=0008h"3.0"
  7248. --------E-2FFB42BX000A-----------------------
  7249. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
  7250.     AX = FB42h
  7251.     BX = 000Ah
  7252.     CX = 0001h
  7253.     DX = ???
  7254.     SI = ???
  7255. Return: after user exits subshell
  7256. Notes:    this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
  7257.       function is not available in protected mode.
  7258.     the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
  7259.       version also adds a DPMI host and DOS extender.
  7260. SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
  7261. --------E-2FFB42BX000B-----------------------
  7262. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
  7263.     AX = FB42h
  7264.     BX = 000Bh
  7265. --------E-2FFB42BX000C-----------------------
  7266. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
  7267.     AX = FB42h
  7268.     BX = 000Ch
  7269.     ES:SI -> memory block info ??? (see #1623)
  7270. Return: DX = status???
  7271. SeeAlso: AX=FB42h/BX=000Fh
  7272. --------E-2FFB42BX000D-----------------------
  7273. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
  7274.     AX = FB42h
  7275.     BX = 000Dh
  7276.     CX = number of words to copy from protected-mode to real mode stack
  7277.     DL = interrupt number
  7278.     DH = flags
  7279.         bit 0: reset the interrupt controller and A20 line
  7280.     ES:DI -> real-mode call structure (see INT 31/AX=0300h)
  7281. Return: CX = status
  7282.         0000h successful
  7283.         0001h failed
  7284. SeeAlso: INT 31/AX=0300h
  7285. --------E-2FFB42BX000E-----------------------
  7286. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  7287.     AX = FB42h
  7288.     BX = 000Eh
  7289.     DS:DX -> ASCIZ or CR-terminated name of ???
  7290. Return: CX = selector of DPMILOAD data (see #1625) corresponding to name,
  7291.           0000h on error
  7292. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
  7293. --------E-2FFB42BX000F-----------------------
  7294. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
  7295.     AX = FB42h
  7296.     BX = 000Fh
  7297.     ES:SI -> memory block info (see #1623)
  7298. Return: ???
  7299. SeeAlso: AX=FB42h/BX=000Ch
  7300. --------E-2FFB42BX0010-----------------------
  7301. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
  7302.     AX = FB42h
  7303.     BX = 0010h
  7304.     DX = segment number
  7305. Return: CX = status (0000h,0008h) (see also AX=FB42h/BX=0004h)
  7306.         0000h successful
  7307.         DX = selector number for descriptor
  7308.         0008h failed
  7309. SeeAlso: AX=FB42h/BX=0023h
  7310. --------E-2FFB42BX0011-----------------------
  7311. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7312.     AX = FB42h
  7313.     BX = 0011h
  7314.     CX = selector of DPMILOAD data (see #1625)
  7315.     ???
  7316. Return: DX = status (0000h,0002h,FFFEh) (see also #1624)
  7317.         0000h successful
  7318.         AX:BX -> ??? name
  7319.         FFFEh ??? error
  7320. --------E-2FFB42BX0012-----------------------
  7321. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7322.     AX = FB42h
  7323.     BX = 0012h
  7324.     CX = selector for ???
  7325. Return: CX = selector for ???
  7326. --------E-2FFB42BX0013-----------------------
  7327. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7328.     AX = FB42h
  7329.     BX = 0013h
  7330.     CX = selector of DPMILOAD data (see #1625)
  7331.     DX = 1-based index of ???
  7332. Return: CX = status (0000h,0002h,FFF9h) (see also #1624)
  7333.         0000h successful
  7334.         BX = ??? or 0000h
  7335.         FFF9h ??? error
  7336. --------E-2FFB42BX0014-----------------------
  7337. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
  7338.     AX = FB42h
  7339.     BX = 0014h
  7340.     CX = 0001h
  7341. Return: BX = 0000h if installed
  7342. Note:    unlike most of the DPMILOAD functions, this call is available only in
  7343.       real or V86 mode
  7344. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
  7345. --------E-2FFB42BX0015-----------------------
  7346. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
  7347.     AX = FB42h
  7348.     BX = 0015h
  7349.     CX = 0001h
  7350. Return: ???
  7351. Note:    unlike most of the DPMILOAD functions, this call is available only in
  7352.       real or V86 mode
  7353. SeeAlso: AX=FB42h/BX=000Ah
  7354. --------E-2FFB42BX0016-----------------------
  7355. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7356.     AX = FB42h
  7357.     BX = 0016h
  7358.     CX = selector of DPMILOAD data (see #1625)
  7359. Return: DX = status (see also AX=FB42h/BX=0004h)
  7360.         0000h successful
  7361.         CX = ???
  7362. --------E-2FFB42BX0017-----------------------
  7363. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7364.     AX = FB42h
  7365.     BX = 0017h
  7366.     CX = ???
  7367.     DX = ???
  7368.     ???
  7369. Return: DX = status (0000h,0001h) (see #1624)
  7370. --------E-2FFB42BX0018-----------------------
  7371. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
  7372.     AX = FB42h
  7373.     BX = 0018h
  7374.     CX = ???
  7375. --------E-2FFB42BX0019-----------------------
  7376. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7377.     AX = FB42h
  7378.     BX = 0019h
  7379.     CX = selector for ???
  7380.     ???
  7381. Return: DX = status (see also AX=FB42h/BX=0004h)
  7382.         0000h successful
  7383.         CX = selector for ???
  7384. --------E-2FFB42BX001A-----------------------
  7385. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7386.     AX = FB42h
  7387.     BX = 001Ah
  7388.     CX = selector for ???
  7389.     ???
  7390. Return: DX = status (see also AX=FB42h/BX=0004h)
  7391.         0000h successful
  7392.         0004h failed
  7393.     CX:BX -> ???
  7394. --------E-2FFB42BX001B-----------------------
  7395. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7396.     AX = FB42h
  7397.     BX = 001Bh
  7398.     CX = selector of DPMILOAD data (see #1625)
  7399.     DX = offset of ???
  7400. Return: DX = status (0000h,0002h) (see also #1624)
  7401.         0000h successful
  7402.         BX = selector for ???
  7403.         CX = selector for ???
  7404. --------E-2FFB42BX001C-----------------------
  7405. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7406.     AX = FB42h
  7407.     BX = 001Ch
  7408.     ES = selector for DPMILOAD data (see #1625)
  7409.     CX = 1-based index of ???
  7410.     DX = 1-based index of ???
  7411. Return: DX = status (0000h,0002h,FFF9h) (see #1624)
  7412. --------E-2FFB42BX001D-----------------------
  7413. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7414.     AX = FB42h
  7415.     BX = 001Dh
  7416. Return: CX:DX = ???
  7417. --------E-2FFB42BX001E-----------------------
  7418. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7419.     AX = FB42h
  7420.     BX = 001Eh
  7421.     CX = ???
  7422.     ???
  7423. Return: DX = status (see also AX=FB42h/BX=0004h)
  7424.         0000h successful
  7425.         FFF7h ??? error
  7426.     CX:BX -> ???
  7427. --------E-2FFB42BX001F-----------------------
  7428. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  7429.     AX = FB42h
  7430.     BX = 001Fh
  7431.     DS:DX -> 8-character name of ???
  7432.     ???
  7433. Return: CX = selector of DPMILOAD data (see #1625) for ???
  7434.         0000h on error
  7435. SeeAlso: AX=FB42h/BX=000Eh
  7436. --------E-2FFB42BX0020-----------------------
  7437. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
  7438.     AX = FB42h
  7439.     BX = 0020h
  7440. Return: DX = ??? (always 0000h)
  7441. --------E-2FFB42BX0021-----------------------
  7442. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
  7443.     AX = FB42h
  7444.     BX = 0021h
  7445.     CL = exception number (00h-1Fh)
  7446. Return: DX = status (see also AX=FB42h/BX=0004h)
  7447.         0000h successful
  7448.         AX:BX = selector:offset of handler
  7449.         FFF2h unable to get exception handler vector
  7450. SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
  7451. --------E-2FFB42BX0022-----------------------
  7452. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
  7453.     AX = FB42h
  7454.     BX = 0022h
  7455.     CL = exception number (00h-1Fh)
  7456.     SI:DX = selector:offset of new handler
  7457. Return: DX = status (0000h,0004h,FFF2h) (see #1624)
  7458. SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
  7459. --------E-2FFB42BX0023-----------------------
  7460. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
  7461.     AX = FB42h
  7462.     BX = 0023h
  7463.     CX = selector
  7464. Return: DX = status (see also AX=FB42h/BX=0004h)
  7465.         0000h successful
  7466.         CX = real-mode segment number
  7467.         FFF2h descriptor has invalid base address for real-mode segment
  7468. SeeAlso: AX=FB42h/BX=0010h
  7469. --------E-2FFB42BX0024-----------------------
  7470. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
  7471.     AX = FB42h
  7472.     BX = 0024h
  7473.     CL = interrupt number
  7474. Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
  7475.     AX:BX = selector:offset of handler
  7476. SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
  7477. --------E-2FFB42BX0025-----------------------
  7478. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
  7479.     AX = FB42h
  7480.     BX = 0025h
  7481.     CL = interrupt number
  7482.     SI:DX = selector:offset of new handler
  7483. Return: DX = status (0000h,0004h,FFF2h) (see #1624)
  7484. SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
  7485. --------E-2FFB42BX0026-----------------------
  7486. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7487.     AX = FB42h
  7488.     BX = 0026h
  7489.     CX = selector of DPMILOAD data (see #1625)
  7490.     DX = 1-based index of ???
  7491.     ???
  7492. Return: DX = status (0000h,0002h,FFF9h) (see #1624)
  7493.         0000h successful
  7494.         BX = offset of ??? within data structure
  7495. --------E-2FFB42BX0027-----------------------
  7496. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7497.     AX = FB42h
  7498.     BX = 0027h
  7499.     CX = selector of DPMILOAD data (see #1625)
  7500.     DX = offset of ???
  7501. Return: DX = status (see also AX=FB42h/BX=0004h)
  7502.         0000h successful
  7503.         BX = ???
  7504. --------E-2FFB42BX0080-----------------------
  7505. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  7506.     AX = FB42h
  7507.     BX = 0080h
  7508.     ???
  7509. Return: AX = ???
  7510.     ???
  7511. --------E-2FFB42BX0081-----------------------
  7512. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  7513.     AX = FB42h
  7514.     BX = 0081h
  7515.     ???
  7516. Return: AX = ???
  7517.     ???
  7518. --------E-2FFB42BX1001-----------------------
  7519. INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
  7520.     AX = FB42h
  7521.     BX = 1001h
  7522. Return: BX = 0000h
  7523. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
  7524. --------E-2FFB42BX1002-----------------------
  7525. INT 2F U - Borland RTM.EXE 1.0 - ???
  7526.     AX = FB42h
  7527.     BX = 1002h
  7528.     ???
  7529. Return: ???
  7530. SeeAlso: AX=FB42h/BX=1001h
  7531. --------E-2FFB42BX1003-----------------------
  7532. INT 2F U - Borland RTM.EXE 1.0 - ???
  7533.     AX = FB42h
  7534.     BX = 1003h
  7535.     ???
  7536. Return: ???
  7537. SeeAlso: AX=FB42h/BX=1001h
  7538. --------E-2FFB43-----------------------------
  7539. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
  7540.     AX = FB43h
  7541.     BX = subfunction (at least 0000h-000Eh)
  7542. Notes:    this function is only present in protected mode; it does nothing but
  7543.       an immediate IRET
  7544.     DPMILOAD.EXE itself calls various subfunctions:
  7545.         subfunction 0004h is called with CX=selector of ???, DI=selector
  7546.           of DPMILOAD data
  7547.         subfunction 0008h is called with CX=selector of DPMILOAD data
  7548. SeeAlso: AX=FB42h/BX=0001h
  7549. --------G-2FFB43BX0100-----------------------
  7550. INT 2F PU - Borland TDX - INSTALLATION CHECK
  7551.     AX = FB43h
  7552.     BX = 0100h
  7553. Return: BX = FB43h if loaded
  7554. Program: TDX is Borland's Turbo Debugger variant for DPMI programs
  7555. Note:    Borland Pascal 7 DPMI programs use this call to check whether they
  7556.       should install their own stack and general protection exception
  7557.       handlers, or allow TDX to handle those exceptions
  7558. --------a-2FFB64-----------------------------
  7559. INT 2F U - AutoBraille v1.1A - GET ???
  7560.     AX = FB64h
  7561. Return: AX = ??? (0006h seen)
  7562. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  7563. --------E-2FFBA1BX0081-----------------------
  7564. INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
  7565.     AX = FBA1h
  7566.     BX = 0081h
  7567.     ES:DI -> 16-byte buffer
  7568. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  7569. Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
  7570. Note:    TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
  7571.       extender was moved into DPMILOAD.
  7572. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
  7573. SeeAlso: INT 21/AX=4403h"TKERNEL"
  7574. --------E-2FFBA1BX0082-----------------------
  7575. INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
  7576.     AX = FBA1h
  7577.     BX = 0082h
  7578.     ES:DI -> response buffer (see #1629)
  7579. Return: ES:DI buffer filled
  7580. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  7581.  
  7582. Format of TKERNEL response buffer:
  7583. Offset    Size    Description    (Table 1629)
  7584.  00h  4 BYTEs    signature "IABH"
  7585.  04h    DWORD    pointer to FAR extender entry point (see #1630)
  7586.  
  7587. (Table 1630)
  7588. Call TKERNEL entry point with:
  7589.     AX = function number
  7590.         0000h initialize???
  7591.         STACK:    WORD  ???
  7592.         Return: AX = status???
  7593.             STACK unchanged
  7594.         0001h get version???
  7595.         Return: AX = 0200h for v2.0.34
  7596.         0002h get ???
  7597.         Return: AX = ??? (011Eh or 0182h seen)
  7598.         0003h load protected-mode executable
  7599.         STACK:    DWORD -> ASCIZ filename of executable
  7600.             DWORD    ???
  7601.             DWORD -> program arguments (counted string plus CR)
  7602.             DWORD -> environment for protected-mode executable
  7603.                 (terminated with two consecutive NULs)
  7604.             DWORD -> WORD buffer for ???
  7605.         Return: AX = status???
  7606.             STACK unchanged
  7607.         0004h get descriptor
  7608.         STACK:    WORD    selector for which to get descriptor
  7609.             WORD    segment number (when running in real mode)
  7610.             DWORD -> buffer for descriptor
  7611.         Return: CF clear if successful
  7612.                 buffer filled
  7613.             CF set on error
  7614.                 AX destroyed???
  7615.             STACK unchanged
  7616.         0005h ???
  7617.         STACK:    WORD    selector for ???
  7618.             WORD    subfunction number???
  7619.                 0000h run previously-loaded program???
  7620.                 0001h ??? (similar to 0000h)
  7621.                 0002h
  7622.                 0003h
  7623.                 0005h ??? (similar to 0000h and 0001h)
  7624.         Return: AX = status???
  7625.             STACK unchanged
  7626.         0006h ???
  7627.         STACK:    WORD ???
  7628.             DWORD -> WORD (call) max iterations of ???
  7629.                       (return) remaining iterations
  7630.         Return: AX = ???
  7631.             STACK unchanged
  7632.         0007h unused
  7633.         Return: AX = 0001h
  7634.         0008h unused
  7635.         Return: AX = 0001h
  7636.         0009h copy protected-mode memory into conventional memory
  7637.         STACK:    WORD    selector for source segment
  7638.             WORD    segment of source if in real mode???
  7639.             DWORD    offset of source
  7640.             WORD    number of bytes to copy
  7641.             DWORD -> low-memory destination
  7642.         Return: AX = status
  7643.             STACK unchanged
  7644.         000Ah copy conventional memory into protected-mode memory
  7645.         STACK:    WORD    selector for destination segment
  7646.             WORD    segment of destination if in real mode???
  7647.             DWORD    offset of destination
  7648.             WORD    number of bytes to copy
  7649.             DWORD -> low-memory source
  7650.         Return: AX = status
  7651.             STACK unchanged
  7652.         000Bh get ??? pointers
  7653.         STACK:    WORD desired pointer
  7654.                 0000h get ???
  7655.                 0002h get protected-mode CR3
  7656.                 0003h get 4K page table buffer pointer
  7657.                 else Return: DX:AX = FFFFh:FFFFh
  7658.         Return: DX:AX = requested pointer
  7659.             STACK unchanged
  7660.         000Ch set ??? pointers
  7661.         STACK:    WORD desired pointer
  7662.                 0000h set ???
  7663.                 0002h set protected-mode CR3
  7664.                 0003h set 4K page table buffer pointer
  7665.                 else ignore
  7666.             DWORD new value for pointer
  7667.         Return: STACK unchanged
  7668.         000Dh get ??? pointers
  7669.         STACK:    WORD desired pointer
  7670.                 0000h get ???
  7671.                 0001h get ???
  7672.                 0002h get ???
  7673.                 0003h get ???
  7674.                 0004h get ???
  7675.                 0005h get ???
  7676.                 0006h get ???
  7677.                 0007h get ???
  7678.                 else Return: DX:AX = FFFFh:FFFFh
  7679.         Return: DX:AX = desired pointer
  7680.             STACK unchanged
  7681.         000Eh set ??? pointer
  7682.         STACK:    WORD desired pointer
  7683.                 0000h set ???
  7684.                 0001h set ???
  7685.                 0002h set ???
  7686.                 0003h set ???
  7687.                 0004h set ???
  7688.                 0005h set ???
  7689.                 0006h set ???
  7690.                 0007h set ???
  7691.                 else Return: DX:AX = FFFFh:FFFFh
  7692.         Return: STACK unchanged
  7693.         000Fh get ???
  7694.         Return: AX = ??? (seen 0008h)
  7695.         0010h get ???
  7696.         Return: AX = ???
  7697.         0011h determine whether selector is valid
  7698.         STACK:    WORD    possible selector
  7699.         Return: AX = selector or 0000h if invalid
  7700.             STACK unchanged
  7701.         0012h get physical address
  7702.         STACK:    WORD    selector for desired segment
  7703.             WORD    segment number if in real mode
  7704.             DWORD    offset within segment
  7705.         Return: DX:AX = 32-bit physical address or 00000000h on error
  7706.             BX destroyed
  7707.             STACK unchanged
  7708.         0013h ???
  7709.         Note:    normally jumps to code for function 0012h
  7710.         0014h copy protected-mode memory to conventional memory, with ???
  7711.         STACK:    WORD    selector for source segment
  7712.             WORD    segment of source if in real mode???
  7713.             DWORD    offset of source
  7714.             WORD    number of bytes to copy
  7715.             DWORD -> low-memory destination
  7716.         Return: AX = status???
  7717.             STACK unchanged
  7718.         0015h copy conventional memory to protected-mode memory, with ???
  7719.         STACK:    WORD    selector for destination segment
  7720.             WORD    segment of destination if in real mode???
  7721.             DWORD    offset of destination
  7722.             WORD    number of bytes to copy
  7723.             DWORD -> low-memory source
  7724.         Return: AX = status???
  7725.             STACK unchanged
  7726.         0016h set ??? pointer
  7727.         STACK:    WORD    unused
  7728.             DWORD -> ??? or 0000h:0000h
  7729.         Return: AX = 0000h
  7730.             STACK unchanged
  7731.         0017h allocate real-mode procedure???
  7732.         STACK:    DWORD    ASCIZ name of procedure
  7733.             DWORD ???
  7734.             DWORD    address of subroutine to invoke
  7735.         Return: AX = status
  7736.                 0032h procedure by that name exists
  7737.                 0033h no more real-mode procedures available
  7738.             DX destroyed
  7739.             STACK unchanged
  7740.         0018h unused
  7741.         Return: AX = 0001h
  7742.         0019h get parameter block
  7743.         Return: DX:AX -> parameter block (format unknown at this time,
  7744.                   but 92h bytes)
  7745.                   (preceded by signature "!!PARAM-BLOCK!!")
  7746.         001Ah get ???
  7747.         Return: AX = ??? (0148h seen)
  7748.         001Bh free real-mode procedure???
  7749.         STACK:    DWORD -> ASCIZ name of procedure
  7750.         Return: ???
  7751.             STACK unchanged
  7752.         001Ch check whether packets from protected mode task pending
  7753.         Return: AX = 0001h if packets pending, 0000h if not
  7754.         001Dh set ???
  7755.         STACK:    DWORD ??? or 0000h:0000h
  7756.         Return: AX,BX destroyed
  7757.             STACK unchanged
  7758.         001Eh ???
  7759.         STACK:    WORD ??? (high byte ignored)
  7760.             DWORD -> data structure (see below)
  7761.         Return: AX,BX,CX,DX destroyed
  7762.             data structure updated
  7763.             STACK unchanged
  7764.         Format of data structure:
  7765.         Offset    Size    Description
  7766.          00h  2 BYTEs    unused
  7767.          02h    WORD    ???
  7768.          04h    WORD    ???
  7769.          06h    WORD    ???
  7770.          08h  2 BYTEs    unused
  7771.          0Ah    WORD    ???
  7772.          0Ch    WORD    (call) ???
  7773.                 (return) offset of this data structure (BUG?)
  7774.         001Fh set ???
  7775.         STACK:    WORD ??? (set to 0001h if zero)
  7776.         Return: AX destroyed
  7777.             STACK unchanged
  7778.         0020h ???
  7779.         STACK:    DWORD -> ??? (8 bytes of data)
  7780.         Return: AX = ???
  7781.             STACK unchanged
  7782.         0021h ???
  7783.         STACK:    DWORD -> ??? (8 bytes of data)
  7784.             WORD    ???
  7785.             WORD    ???
  7786.         Return: AX = ???
  7787.             STACK unchanged
  7788.         0022h ???
  7789.         STACK:    DWORD -> ??? (8 bytes of data)
  7790.             DWORD -> 4-byte buffer for results
  7791.         Return: AX = ???
  7792.             STACK unchanged
  7793.         0023h ???
  7794.         STACK:    DWORD -> ??? (8 bytes of data)
  7795.         Return: AX = ???
  7796.             STACK unchanged
  7797.         0024h set ???
  7798.         STACK:    WORD ???
  7799.         Return: AX destroyed
  7800.             STACK unchanged
  7801.         0025h get ???
  7802.         Return: AX = ??? (value set with func 0024h)
  7803.         0026h BUG: jumps to hyperspace due to fencepost error
  7804.         FFFFh set DOS memory management functions
  7805.         BX:SI -> FAR routine for allocating DOS memory
  7806.               (called with AH=48h,BX=number of paragraphs to alloc;
  7807.               returns CF clear, AX=segment of allocated memory, or
  7808.                   CF set on error)
  7809.         CX:DI -> FAR routine for freeing DOS memory
  7810.               (called with AH=49h,ES=segment of block to free;
  7811.               returns CF set on error, AX=error code)
  7812.         Note: each of these pointers normally points at INT 21/RETF
  7813.         other Return: AX = 0001h
  7814. Note:    BX may be destroyed by any of the API calls
  7815. --------E-2FFBA1BX0084-----------------------
  7816. INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
  7817.     AX = FBA1h
  7818.     BX = 0084h
  7819.     ES:DI -> response buffer (see #1631)
  7820. Return: ES:DI buffer filled
  7821. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  7822.  
  7823. Format of TKERNEL response buffer:
  7824. Offset    Size    Description    (Table 1631)
  7825.  00h  4 BYTEs    signature "IABH"
  7826.  04h    WORD    success indicator
  7827.         0001h failed (INT 2F hooked by another program)
  7828.         unchanged if successful
  7829.  06h    WORD    segment of ???
  7830.  08h    WORD    segment of ??? memory block to free if nonzero
  7831.  0Ah    WORD    segment of ??? memory block to free if nonzero
  7832. --------s-2FFBFBES0000-----------------------
  7833. INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
  7834.     AX = FBFBh
  7835.     ES = 0000h
  7836. Return: ES nonzero if installed
  7837.         ES:BX -> entry point data structure (see #1632)
  7838. SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
  7839.  
  7840. Format of SoundBlaster entry point data structure:
  7841. Offset    Size    Description    (Table 1632)
  7842.  00h  3 BYTEs    signature "FB "
  7843.  03h    BYTE    driver major version number???
  7844.  04h    DWORD    speech driver entry point (see #1633)
  7845.  08h 24 BYTEs    ???
  7846.  20h  ? BYTEs    data buffer for calling speech driver
  7847.  
  7848. (Table 1633)
  7849. Call SoundBlaster speech driver entry point with:
  7850.     AL = function
  7851.         07h speak a string
  7852.         data buffer (see #1632) contains:
  7853.             BYTE  length of string
  7854.               N BYTEs string to speak
  7855. --------N-2FFE00BX4454-----------------------
  7856. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  7857.     AX = FE00h
  7858.     BX = 4454h ("DT")
  7859.     CX = 4B52h ("KR")
  7860.     DX = 4E4Dh ("NM")
  7861. Return: AL = FFh if installed
  7862.        BX = 524Eh ("RM")
  7863.        CX = 4D44h ("MD")
  7864.        DX = 544Bh ("TK")
  7865. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7866. SeeAlso: AX=FE08h
  7867. --------N-2FFE00BX4454-----------------------
  7868. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  7869.     AX = FE00h
  7870.     BX = 4454h ("DT")
  7871.     CX = 4B52h ("KR")
  7872.     DX = 544Dh ("TM")
  7873. Return: AL = FFh if installed
  7874.        BX = 5254h ("RT")
  7875.        CX = 4D44h ("MD")
  7876.        DX = 544Bh ("TK")
  7877. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7878. SeeAlso: AX=FE08h
  7879. --------U-2FFE00DI4E55-----------------------
  7880. INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
  7881.     AX = FE00h
  7882.     DI = 4E55h ("NU")
  7883.     SI = TSR identifier (see #1634)
  7884. Return: SI = TSR reply
  7885.         lowercase version of SI on entry (i.e. SI OR 2020h)
  7886.     AH = status
  7887.         00h installed but disabled internally
  7888.         01h installed and enabled
  7889.     AL = installed product
  7890.         00h NCACHE-x or DISKREET
  7891.         01h SPEEDRV / FILESAVE / EP / DISKMON v6+ installed
  7892.         02h NCACHE2 / SMARTCAN
  7893.         45h DISKMON v5 installed
  7894.     BX = length of *.INI file (DISKMON and FILESAVE/EP/SMARTCAN only)
  7895.           (see #1635,#1636)
  7896.     CX = segment of resident portion
  7897.         FFFFh if completely loaded high (NCACHE)
  7898. ---FILESAVE/EP---
  7899.     DL = ??? (apparently always 00h)
  7900. ---DISKMON---
  7901.     DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6] / 1C26h [v7])
  7902. Notes:    the value returned in CX is incorrect for NCACHE 6.00
  7903.     all Norton Caches install as SMARTAAR drivers like SMARTDRV v3
  7904.     NCACHE2 and SPEEDRV both support the SMARTDRV v4+ installation check
  7905. SeeAlso: AX=4A10h/BX=0000h,AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
  7906. SeeAlso: INT 21/AX=4402h"SMARTDRV"
  7907.  
  7908. (Table 1634)
  7909. Values for Norton Utilities TSR identifier:
  7910.  4346h    ("CF") NCACHE-F (v5) / NCACHE (v6) / NCACHE2 (v7) / SPEEDRV
  7911.  4353h    ("CS") NCACHE-S (v5 only)
  7912.  4443h    ("DC") DISKREET
  7913.  444Dh    ("DM") DISKMON
  7914.  4653h    ("FS") FILESAVE (v5) / EP (v6) / SMARTCAN (v7)
  7915.  
  7916. Format of DISKMON.INI file:
  7917. Offset    Size    Description    (Table 1635)
  7918. -6Ch 108 BYTEs    (in memory copy only)
  7919.         list of filenames which are always protected:
  7920.           IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
  7921.           MIO.SYS/IO.BIN, COMMAND.COM
  7922.  00h    BYTE    ??? always 01h
  7923.  01h    BYTE    disk light (00h off, 01h on)
  7924.  02h    BYTE    disk protection (00h off, 01h on)
  7925.  03h    BYTE    protected areas
  7926.         01h system area
  7927.         02h files
  7928.         03h system area and files
  7929.         04h entire disk
  7930.  04h    BYTE    floppy access (00h not allowed, 01h allowed)
  7931.  05h 27 BYTEs    filename extension list (9 entries)
  7932.         (lowercase, blank padded or = 000000h)
  7933.  20h 240 BYTEs    filename list (20 entries)
  7934.         (lowercase, name and extension blank padded, with '.')
  7935. Note:    CX:0508h -> copy in installed TSR (v5)
  7936.     CX:052Fh -> copy in installed TSR (v6)
  7937.     CX:04E0h -> copy in installed TSR (v7)
  7938.  
  7939. Format of FILESAVE.INI / EP.INI / SMARTCAN.INI file:
  7940. Offset    Size    Description    (Table 1636)
  7941.  00h 26 BITs    drive list (bit set: file protection on, cleared: off):
  7942.  00h    BYTE    drives    A: - H:
  7943.  01h    BYTE    drives    I: - P:
  7944.  02h    BYTE    drives    Q: - X:
  7945.  03h    BYTE    drives    Y: - Z:
  7946.  04h    BYTE    which files to protect
  7947.         00h all files
  7948.         01h all files with extension in list
  7949.         02h all files except those with extension in list
  7950.  05h 27 BYTEs    filename extension list (9 entries, uppercase, ASCIZ)
  7951.  20h    BYTE    include files with archive bit clear (00h no, 01h yes)
  7952.  21h    WORD    number of days after which files are purged (0 = never)
  7953.  23h    WORD    max kilobytes of erased file space to hold (0 = all)
  7954. Note:    CX:03D2h -> copy in installed TSR (v5)
  7955.     CX:03F5h -> copy in installed TSR (v6)
  7956.     CX:0434h -> copy in installed TSR (v7)
  7957. --------U-2FFE01DI4E55-----------------------
  7958. INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
  7959.     AX = FE01h
  7960.     DI = 4E55h ("NU")
  7961.     SI = TSR identifier (see #1634)
  7962. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7963.     AX = status
  7964.         0002h successful (DISKMON, FILESAVE, EP)
  7965.         FE00h successful (NCACHE-x, DISKREET)
  7966. Notes:    if the enable/disable calls are used on DISKMON or NCACHE-x, the status
  7967.       report generated by the programs still indicates the previous state,
  7968.       and DISKMON.INI is not updated
  7969.     apparently has no effect on DISKREET
  7970. SeeAlso: AX=FE00h,AX=FE02h
  7971. --------U-2FFE02DI4E55-----------------------
  7972. INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
  7973.     AX = FE02h
  7974.     DI = 4E55h ("NU")
  7975.     SI = TSR identifier (see #1634)
  7976. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7977.     AX = status
  7978.         0004h successful (DISKMON, FILESAVE)
  7979.         FE00h successful (NCACHE-x, DISKREET)
  7980. Notes:    (see also AX=FE01h)
  7981.     this function appears to be unsafe, as the cache buffers are not
  7982.       flushed
  7983. SeeAlso: AX=FE00h,AX=FE01h
  7984. --------U-2FFE03DI4E55-----------------------
  7985. INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
  7986.     AX = FE03h
  7987.     DI = 4E55h ("NU")
  7988.     SI = TSR identifier (see #1634)
  7989. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7990.     AX = status
  7991.         0006h successful???
  7992. Notes:    only supported by DISKMON, FILESAVE, and NCACHE-x
  7993.     useful for flushing NCACHE before rebooting
  7994. SeeAlso: AX=FE00h,AX=FE10h
  7995. --------U-2FFE04DI4E55-----------------------
  7996. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  7997.     AX = FE04h
  7998.     DI = 4E55h ("NU")
  7999.     SI = TSR identifier (see #1634)
  8000. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  8001.     AX = status
  8002.         0008h successful???
  8003. SeeAlso: AX=FE00h
  8004. --------U-2FFE05DI4E55-----------------------
  8005. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  8006.     AX = FE05h
  8007.     DI = 4E55h ("NU")
  8008.     SI = TSR identifier (see #1634)
  8009. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  8010.     AX = status
  8011.         000Ah successful???
  8012. Note:    reportedly dangerous
  8013. SeeAlso: AX=FE00h
  8014. --------N-2FFE08-----------------------------
  8015. INT 2F - PC-NFS ??? - GET ???
  8016.     AX = FE08h
  8017. Return: ES:BX -> ???
  8018. Notes:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  8019.     both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
  8020.       to AX=FE00h/DX=544Dh support this function
  8021. SeeAlso: AX=FE00h/BX=4454h
  8022. --------U-2FFE10DI4E55-----------------------
  8023. INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
  8024.     AX = FE10h
  8025.     DI = 4E55h ("NU")
  8026.     SI = TSR identifier (see #1634)
  8027. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  8028.     AX = status
  8029. Note:    probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
  8030.       detected
  8031. SeeAlso: AX=FE03h
  8032. --------N-2FFF00-----------------------------
  8033. INT 2F - Topware Network Operating System - INSTALLATION CHECK
  8034.     AX = FF00h
  8035. Return: AL = status
  8036.         00h not installed, OK to install
  8037.         01h not installed, not OK to install
  8038.         FFh installed
  8039. SeeAlso: AX=FF01h,AX=FF02h,AX=FF10h,INT 21/AX=FF02h,INT 7A"Topware"
  8040. --------N-2FFF01-----------------------------
  8041. INT 2F - Topware Network Operating System - GET VERSION
  8042.     AX = FF01h
  8043. Return: AX = version
  8044. SeeAlso: AX=FF00h,AX=FF02h
  8045. --------N-2FFF02-----------------------------
  8046. INT 2F - TopWare Network OS v5.10+ - GET TopNet VERSION STRING
  8047.     AX = FF02h
  8048. Return: ES:BX -> version string
  8049. SeeAlso: AX=FF00h,AX=FF01h
  8050. --------N-2FFF10-----------------------------
  8051. INT 2F - TopWare Network OS v5.10+ - TopTerm - INSTALLATION CHECK
  8052.     AX = FF10h
  8053. Return: AL = status (00h not installed, 01h installed)
  8054. SeeAlso: AX=FF00h,AX=FF11h,AX=FF12h,AX=FF13h
  8055. --------N-2FFF11-----------------------------
  8056. INT 2F - TopWare Network OS v5.10+ - TopTerm - ENABLE KEYBOARD SERVICE
  8057.     AX = FF11h
  8058. Note:    this function is only available on workstations, not on the server
  8059. SeeAlso: AX=FF10h,AX=FF12h
  8060. --------N-2FFF12-----------------------------
  8061. INT 2F - TopWare Network OS v5.10+ - TopTerm - DISABLE KEYBOARD SERVICE
  8062.     AX = FF12h
  8063. Note:    this function is only available on workstations, not on the server
  8064. SeeAlso: AX=FF10h,AX=FF11h
  8065. --------N-2FFF13-----------------------------
  8066. INT 2F - TopWare Network OS v5.10+ - TopTerm - SET INSTALLATION FLAG
  8067.     AX = FF13h
  8068.     CL = new state (00h off, 01h on)
  8069. SeeAlso: AX=FF10h
  8070. --------N-2FFF14-----------------------------
  8071. INT 2F - TopWare Network OS v5.10+ - START BACKGROUND RECEIVE VIDEO DATA
  8072.     AX = FF14h
  8073. Note:    this function is only available on workstations, not on the server
  8074. SeeAlso: AX=FF10h,AX=FF15h
  8075. --------N-2FFF15-----------------------------
  8076. INT 2F - TopWare Network OS v5.10+ - END BACKGROUND RECEIVE VIDEO DATA
  8077.     AX = FF15h
  8078. Note:    this function is only available on workstations, not on the server
  8079. SeeAlso: AX=FF10h,AX=FF14h
  8080. --------N-2FFF16-----------------------------
  8081. INT 2F - TopWare Network OS v5.10+ - SET CONTROL NUMBER OF "SHOW" SCREEN
  8082.     AX = FF16h
  8083.     BL = which to set (00h TopShow, FFh TopTerm)
  8084.     CX = destination screen
  8085.         0000h all stations
  8086.         0000h-00FFh (TopTerm only) send to group CL
  8087.         8001h-80FEh send to station CL
  8088. SeeAlso: AX=FF18h
  8089. --------N-2FFF18-----------------------------
  8090. INT 2F - TopWare Network OS v5.10+ - SEND FULL SCREEN OF DATA FOR TopShow
  8091.     AX = FF18h
  8092. SeeAlso: AX=FF00h,AX=FF16h,AX=FF27h
  8093. --------N-2FFF23-----------------------------
  8094. INT 2F - TopWare Network OS v5.10+ - CLOSE SPOOL FILES AND START PRINTING
  8095.     AX = FF23h
  8096. SeeAlso: AX=FF00h
  8097. --------N-2FFF27-----------------------------
  8098. INT 2F - TopWare Network OS v5.10+ - GET "SHOW" TYPE
  8099.     AX = FF27h
  8100. Return: AL = type (00h complete version, 01h simple version)
  8101.     BL = "show" functions flag (00h disabled, 01h enabled)
  8102. SeeAlso: AX=FF16h,AX=FF18h
  8103. --------!---Section--------------------------
  8104.