home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / INTER35B.ZIP / INTERRUP.I < prev    next >
Encoding:
Text File  |  1993-06-05  |  349.7 KB  |  9,868 lines

  1. Interrupt List, part 9 of 9
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. --------d-67---------------------------------
  4. INT 67 - Adaptec controllers - DRIVE 1 DATA
  5. Note:    this vector stores the last four bytes of the parameter table for
  6.       hard disk 1
  7. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  8. --------d-67---------------------------------
  9. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  10. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  11. --------I-67---------------------------------
  12. INT 67 - Sangoma CCPOP 3270 resident module
  13. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  14. --------U-67---------------------------------
  15. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  16. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  17.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  18. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  19.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  20.       the signature value 434Ch:4F4Bh ('CLOK')
  21. --------N-6700-------------------------------
  22. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  23.     AH = 00h
  24.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  25. Return: AL = status
  26.         00h successful
  27.         01h invalid function
  28.         02h semaphore already locked
  29.         03h unable to lock semaphore
  30.         04h semaphore space exhausted
  31.     AH = semaphore owner if status=02h
  32. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  33. --------N-6701-------------------------------
  34. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  35.     AH = 01h
  36.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  37. Return: AL = status (see AH=00h)
  38.     AH = semaphore owner if status=02h
  39. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  40. --------N-6702-------------------------------
  41. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  42.     AH = 02h
  43.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  44. Return: AL = status (see AH=00h)
  45.     AH = semaphore owner if status=02h
  46. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  47. --------m-673F--CX5145-----------------------
  48. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  49.     AH = 3Fh
  50.     CX = 5145h ("QE")
  51.     DX = 4D4Dh ("MM")
  52. Return: AH = 00h if installed
  53.         ES:DI -> QEMM API entry point
  54. Notes:    if no other program has hooked INT 67, an alternate installation
  55.       check is to test for the string
  56.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  57.       handler's segment; the word at offset 12h contains the offset in
  58.       the handler's segment of the API entry point
  59.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  60.       the alternate QEMM installation check and entry point functions 00h,
  61.       02h, and 03h; version 4D only provides the signature string if the
  62.       commandline argument "DV" is provided
  63.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  64.       recognize the returned entry point as providing QEMM's capabilities
  65.       because a) only functions 0Ch (different from QEMM 0Ch) and
  66.             1000h-1009h are supported,
  67.           b) status is returned as for EMS functions, not QEMM funcs
  68.           c) the protected-mode entry point returned by function 1000h
  69.             only supports functions    0Ch, 1004h, 1005h, and 100Ah
  70.     the string check mentioned above is not supported by 386MAX
  71. SeeAlso: AH=DDh,AX=5BF0h,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h"QEMM"
  72. SeeAlso: INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  73.  
  74. Call QEMM entry point with:
  75.     AH = 00h get QEMM state
  76.         Return: CF clear
  77.             AL = QEMM state
  78.                 bit 0 set if QEMM turned OFF
  79.                 bit 1 set if in "Auto" mode
  80.     AH = 01h set QEMM state
  81.         AL = new state
  82.             bit 0 set: place QEMM in OFF state
  83.         Return: CF clear if successful
  84.             CF set on error
  85.     AH = 02h get ???
  86.         Return: CF clear
  87.             AX = segment of ??? data structure
  88.             Data Structure
  89.             Offset    Size    Description
  90.              00h    DWORD    page table entry for ???
  91.                 ???
  92.     AH = 03h get QEMM version
  93.         Return: CF clear
  94.             AX = BX = version in BCD
  95.         Notes:    the official docs only state that the version is
  96.               returned in BX
  97.             MICEMM returns AX=0001h, BX unchanged
  98.     AH = 04h allocate 4K page and set AUTO/ON mode
  99.         Return: CF clear if successful
  100.                 DX = page number of a 4K page
  101.             CF set if unable to allocate page
  102.         Note:    QEMM mode unchanged if not AUTO/OFF
  103.     AH = 05h free 4K page and turn QEMM off
  104.         DX = page number returned by function 04h
  105.         Return: CF clear
  106.         Note:    QEMM mode unchanged if not AUTO/ON
  107.     AH = 06h make new mapping context???
  108.         DX = page number of 4K page to hold page table
  109.         Return: CF clear
  110.         Note:    copies page table into given page and then sets ???
  111.               page table entry to point at copy
  112.     AH = 07h get mapping context
  113.         Return: CF clear
  114.             DX = page number of page table for current mapping
  115.                 context
  116.     AH = 08h set mapping context???
  117.         DX = linear page number of page table
  118.         Return: CF clear
  119.     AH = 09h get linear page number for page table entry
  120.         CX = page table index
  121.         Return: CF clear
  122.             DX = linear page number
  123.     AH = 0Ah set linear page number for page table entry
  124.         CX = page table index
  125.         DX = linear page number
  126.         Return: CF clear
  127.     AH = 0Bh map 4K pages
  128.         BX = number of pages
  129.         CX = first page number (must be 0100h to allocate HMA)
  130.         DX = EMS handle (memory belonging to EMS handle will be mapped
  131.             into the address space beginning with the first page
  132.             allocated to the handle)
  133.         Return: AH = 00h
  134.     AH = 0Ch get available memory
  135.         Return: CF clear
  136.             BX = 0001h
  137.             CX = total 4K pages???
  138.             DX = number of 4K pages free
  139.     AH = 0Dh ??? (related to callbacks)
  140.         AL = 00h/01h/02h ???
  141.         Return: CF clear
  142.     AH = 0Eh set ??? callbacks
  143.         DS:BX -> FAR routine for ???
  144.         ES:DX -> FAR routine for ???
  145.         Return: CF clear
  146.         Note:    DS:BX callback should return BX=???; ES:DX is called
  147.               with BX=???, and should set the ??? from which the
  148.               other handler read the value of BX.  BH and BL
  149.               appear to be separate values.
  150.     AH = 0Fh unmap 4K pages
  151.         CX = first page number
  152.         DX = number of pages
  153.         Return: CF clear
  154.             AL = 00h/01h if ???
  155.         Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  156.               simulate a disabled A20
  157.     AX = 1000h get protected-mode interface
  158.         DS:SI -> 16-byte buffer for two GDT entries
  159.         ES:DI -> buffer for 4K page table
  160.         Return: CF clear
  161.             EAX = offset of protected-mode API entry point
  162.             DS:SI buffer filled with two GDT descriptors
  163.                 first is QEMM code segment, second is data???
  164.             ES:DI buffer filled with 4K page table
  165.             DI points to first unused page table entry
  166.         SeeAlso: INT 67/AX=DE01h
  167.     AX = 1001h get CPU debug registers
  168.         ES:DI -> buffer for debug registers (8 DWORDs)
  169.         Return: CF clear
  170.             BL = INT01 handling (see function 1002h)
  171.             ES:DI buffer filled
  172.     AX = 1002h set CPU debug registers
  173.         BL = INT01 handling
  174.             00h     reflect all debugging exceptions as V86-mode INT 01's
  175.             else convert debugging exceptions other than single-step
  176.                into V86-mode INT 03's, single-step to INT 01's
  177.         ES:DI -> buffer containing debug registers (8 DWORDs)
  178.         Return: CF clear
  179.         Notes:    identical to INT 67/AX=DE09h if BL=01h
  180.             the INT01 handling flag is set to 01h by the general-
  181.               protection violation handler for certain privileged
  182.               instructions
  183.     AX = 1003h get machine status word CR0
  184.         Return: CF clear
  185.             EAX = contents of CR0
  186.         SeeAlso: INT 67/AX=DE07h
  187.     AX = 1004h allocate a 4K page
  188.         Return: CF clear if successful
  189.                 EDX = linear address of allocated page
  190.             CF set on error
  191.         SeeAlso: INT 67/AX=DE04h
  192.     AX = 1005h free 4K page
  193.         EDX = linear address of page to free
  194.         Return: CF clear
  195.         SeeAlso: INT 67/AX=DE05h
  196.     AX = 1006h NOP
  197.         Return: CF set
  198.     AX = 1007h get maximum physical memory address
  199.         Return: CF clear
  200.             EDX = physical address of highest 4K memory page
  201.         SeeAlso: INT 67/AX=DE02h
  202.     AX = 1008h get physical address of page in first megabyte
  203.         CX = page number (linear address shifted right 12 bits)
  204.         Return: CF clear
  205.             EDX = linear address of page
  206.         SeeAlso: function 1F00h
  207.     AX = 1009h switch to protected mode
  208.         ESI = linear address in first megabyte of system reg values
  209.             (see INT 67/AX=DE0Ch)
  210.         interrupts disabled
  211.         Return: interrupts disabled
  212.             GDTR, IDTR, LDTR, TR loaded
  213.             SS:ESP must have at least 16 bytes space, and the
  214.                 entry point is required to set up a new stack
  215.                 before enabling interrupts
  216.             EAX, ESI, DS, ES, FS, GS destroyed
  217.     AX = 100Ah switch back to virtual-86 mode
  218.         DS = selector for data segment from function 1000h
  219.         SS:ESP in first megabyte of linear memory
  220.         interrupts disabled
  221.         STACK:    QWORD  return address from FAR call to 32-bit segment
  222.             DWORD  EIP
  223.             DWORD  CS
  224.             DWORD  reserved for EFLAGS
  225.             DWORD  ESP
  226.             DWORD  SS
  227.             DWORD  ES
  228.             DWORD  DS
  229.             DWORD  FS
  230.             DWORD  GS
  231.         will switch to virtual86 mode with interrupts disabled, all
  232.           segment registers loaded, and EAX destroyed.
  233.     AH = 11h get memory type map
  234.         AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  235.             by QEMM 6.00)
  236.         ES:DI -> 256-byte buffer for memory types
  237.         Return: CF clear
  238.             BL = ???
  239.             ES:DI buffer filled
  240.         Note:    each byte of the buffer corresponds to a 4K page, and
  241.               contains the type of that page: 00h = mappable,
  242.               02h = mapped ROM, 03h = high RAM, 04h = excluded,
  243.               05h = video, 06h = ROM, 07h = adapter ROM,
  244.               08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  245.               0Bh = conventional
  246.     AH = 12h get HIRAM chain
  247.         Return: CF clear
  248.             BX = segment of first MCB in high memory
  249.                 0000h if no high memory
  250.     AX = 1300h VIDRAMEGA???
  251.         BL = 00h copy ???
  252.              nonzero copy ??? (reverse)
  253.         Return: CF clear
  254.             AL = 00h if all pages clean
  255.                = 01h if any page dirty
  256.     AX = 1301h check if ???
  257.         DX:DI = start address of range to check ???
  258.         CX = length of range
  259.         Return: CF clear
  260.             CX = ??? (0000h or 1000h)
  261.     AX = 1302h ???
  262.         BL = ???
  263.         BH = ???
  264.         CX = ???
  265.         SI = offset of ???
  266.         DI = offset of ???
  267.         ???
  268.         Return: CF clear
  269.             ???
  270.         Note:    disables certain interrupts at the two 8259 PICs during
  271.               execution; also modifies CRT controller during
  272.               execution under certain circumstances
  273.     AX = 1303h EMS allocation???
  274.         BX = number of pages (less 1) of EMS to allocate
  275.         Return: CF clear if successful
  276.                 DX = EMS handle
  277.             CF set on error
  278.     AX = 1304h EMS deallocation
  279.         DX = EMS handle
  280.         Return: CF clear
  281.     AX = 1305h ???
  282.         CX = ???
  283.         Return: CF clear
  284.         Note:    disables certain interrupts at the two 8259 PICs during
  285.               execution (see AX=130Ch)
  286.     AX = 1306h set DESQview critical section counter address
  287.         ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  288.         Return: CF clear
  289.         Note:    also sets pointer in low-memory part of QEMM to current
  290.               value of INT 15 if ES:BX not 0000h:0000h
  291.     AX = 1307h ???
  292.         Return: CF clear
  293.         Note:    disables certain interrupts at the two 8259 PICs during
  294.               execution (see AX=130Ch)
  295.     AX = 1308h ???
  296.         BL = ??? (zero/nonzero)
  297.         Return: CF clear
  298.     AX = 1309h Hercules mode-change support
  299.         ES:BX -> new address for Hercules mode-change callback
  300.         Return: CF clear
  301.         Note:    the callback function is called whenever the CRTC mode
  302.               register is written, with AL set to the value written
  303.     AX = 130Ah virtualize EGA/VGA I/O ports 03C8h/03C9h???
  304.         CX:DX -> buffer for storing CRTC register contents???
  305.             or 0000h:0000h to disable
  306.         Return: CF clear
  307.     AX = 130Bh ???
  308.         BL = ???
  309.         Return: CF clear
  310.             ???
  311.     AX = 130Ch set interrupts to mask
  312.         BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  313.             AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  314.         Return: CF clear
  315.     AX = 130Dh ???
  316.         ???
  317.         Return: CF clear
  318.         Note:    disables certain interrupts at the two 8259 PICs during
  319.               execution (see AX=130Ch)
  320.     AX = 130Eh ??? (modifies CRT controller setup)
  321.         ???
  322.         Return: CF clear
  323.     AX = 130Fh reset ???
  324.         Return: CF clear
  325.     AX = 1310h ???
  326.         ???
  327.         Return: CF clear
  328.         Note:    disables certain interrupts at the two 8259 PICs during
  329.               execution (see AX=130Ch)
  330.     AX = 1311h set ???
  331.         BL = ???
  332.         Return: CF clear
  333.     AX = 1312h (v6.02) NOP???
  334.         Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  335.     AX = 1400h ???
  336.         ES:DI -> ??? data structure (at least 24 bytes)
  337.         BL = ???
  338.         Return: AX = ???
  339.         Data structure
  340.         Offset    Size    Description
  341.          00h    WORD    ???
  342.          02h    DWORD    far pointer to ???
  343.          06h    DWORD    far pointer to ??? pointer array (see below)
  344.          0Ah    DWORD    far pointer to ???
  345.          0Eh    DWORD    ???
  346.          12h    WORD    segment of ???
  347.          14h    DWORD    far pointer to ???
  348.         Pointer array
  349.         Offset    Size    Description
  350.          00h    WORD    number of pointers to follow
  351.          02h  N DWORDs    far pointers to ???
  352.         Note: QEMM converts the pointers into linear addresses in place
  353.     AX = 1401h ???
  354.         Return: CF clear
  355.             ???
  356.     AX = 1402h ???
  357.         BL = function
  358.             00h NOP
  359.             01h ???
  360.             02h ???
  361.             other ???
  362.         ES:DI -> ???
  363.         Return: CF clear
  364.             ???
  365.         Data structure
  366.         Offset    Size    Description
  367.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  368.          02h    WORD    segment of ??? (word at X:0124h set to this)
  369.          04h    WORD    number of paragraphs of ???
  370.          06h  3 WORDs    ??? (copied to X:0000h)
  371.          0Ch    WORD    ???
  372.     AX = 1403h add ??? to list and ??? (execute func 1406h)
  373.         ES:DI -> ??? structure added to end of ??? list
  374.             (at least 31 bytes, DWORD at offset 06h used for
  375.              storing pointer to next struc, WORD at offset 00h
  376.              seems to be a key or index)
  377.         Return: CF clear
  378.     AX = 1404h NOP
  379.     AX = 1405h remove ??? from ??? list
  380.         BX = key???
  381.         Return: CF clear
  382.     AX = 1406h ???
  383.         ???
  384.         Return: CF clear
  385.             ???
  386.     AX = 1407h ???
  387.         ???
  388.         Return: CF clear
  389.             ???
  390.     AX = 1408h ???
  391.         ???
  392.         Return: CF clear
  393.             ???
  394.     AX = 1409h ???
  395.         ???
  396.         Return: CF clear
  397.             ???
  398.     AX = 140Ah ???
  399.         BX = ???
  400.         Return: CF clear
  401.             ???
  402.     AX = 140Bh ???
  403.         BX = ???
  404.         Return: CF clear
  405.             SI = segment of 256-byte buffer???
  406.     AH = 15h ???
  407.         ES:BX -> ??? or 0000h:0000h
  408.         Return: CF clear
  409.      ---QEMM v5.00+ ---
  410.     AX = 1600h get memory access status
  411.         ES:DI -> 256-byte buffer
  412.         Return: ES:DI buffer filled
  413.         Note:    each byte of the buffer indicates the status of a 4K
  414.               page (bit 0 set if read, bit 1 set if written)
  415.     AX = 1601h set memory access status
  416.         ES:DI -> 256-byte buffer containing access statuses (see above)
  417.     AH = 17h get memory usage statistics
  418.         ES:DI -> 81-byte buffer for memory statistics (see below)
  419.         Return: CF clear
  420.      ---QEMM v5.11+ ---
  421.     AH = 18h check whether conventional memory mapped into address range
  422.         ES:BX = starting address
  423.         CX = number of 4K pages
  424.         Return: CF clear
  425.             AL = 00h one or more pages is remapped
  426.                  01h all pages in range are conventional memory
  427.                 (physical address == virtual address)
  428.     AH = 19h NOP
  429.         Return: CF set
  430.     AH = 1Ah I/O port access
  431.         AL = subfunction
  432.             00h get byte from I/O port
  433.             Return: BL = port value
  434.             01h send byte to I/O port
  435.             BL = value to send
  436.             02h send byte to I/O port, get byte from following port
  437.             BH = value to send
  438.             Return: BL = value read
  439.             03h send bytes to two consecutive I/O ports
  440.             BH = value for first I/O port (DX)
  441.             BL = value for second I/O port (DX+1)
  442.         DX = port number
  443.         Return: CF clear
  444.     AH = 1Bh MS Windows 3.x support
  445.         AL = subfunction
  446.             00h get EMM Import Structure address
  447.             ES:DI -> buffer for EMM import data structure
  448.             Return: CF set on error
  449.                 CF clear if successful
  450.             EMM Import data structure:
  451.             Offset    Size    Description
  452.              00h    DWORD    physical address of EMM import struct
  453.              04h    BYTE    major version (v6.00 sets to 01h)
  454.              05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  455.             SeeAlso: INT 21/AX=4402h"QEMM-386 v6+"
  456.             01h ???
  457.             Return: CF set on error
  458.                 CF clear if successful
  459.             02h ???
  460.             Return: CF set on error
  461.                 CF clear if successful
  462.             03h MS Windows initializing
  463.             CX = segment from which Windows init broadcast made???
  464.             DL = Windows startup flags???
  465.             DI = Windows version number (major in upper byte)
  466.             Return: ???
  467.             SeeAlso: INT 2F/AX=1605h
  468.             04h MS Windows terminating
  469.             Return: CF clear
  470.             05h determine whether program is driver???
  471.             DS:DX -> ASCIZ filename
  472.             Return: CF clear
  473.                 AL = 01h if string ends in ".DRV"
  474.                    = FFh if string ends in "GDI.EXE"
  475.                    = 00h otherwise
  476.             06h ???
  477.             CX = length of data pointed at by DS:DX
  478.             DS:DX -> ???
  479.             Return: CF clear
  480.             07h BUG: QEMM 6.00-6.03 accept this and branch randomly
  481.             else Return: CF set
  482.     AH = 1Ch protected-mode hardware interrupt handlers ???
  483.         AL = subfunction
  484.             00h restore??? IRQ0-7 handlers
  485.             01h set??? IRQ0-7 handlers
  486.             ES:DI -> 8 DWORDs containing ???
  487.             02h restore??? IRQ8-15 handlers
  488.             03h set??? IRQ8-15 handlers
  489.             ES:DI -> 8 DWORDs containing ???
  490.         BUG: although the jump table only contains four entries,
  491.             QEMM 6.00 will attempt to use it for any value of
  492.             AL between 00h and 2Ah, thus branching unpredictably
  493.             for AL=04h-2Ah
  494.      ---QEMM v6.00+ ---
  495.     AH = 1Dh Stealth interrupts
  496.         AL = subfunction
  497.             00h switch to pre-Stealth interrupt vector table
  498.             Note:    also switches VGA Save table pointer
  499.                   (0040h:00A8h)    and overwrites the vectors
  500.                   currently assigned for use by the two
  501.                   interrupt controllers (see INT 67/AX=DE0Ah)
  502.                   with the vectors for INT 08-0F and 70-77 (to
  503.                   avoid crashing the system).
  504.             01h restore user interrupt vector table
  505.             Notes:    interrupts should be disabled around the
  506.                   AX=1D00h and AX=1D01h calls because QEMM does
  507.                   not modify the memory maps to map in ROM, so
  508.                   an interrupt could be disastrous
  509.                 clears any pending IRQ7 at end of function
  510.             else
  511.             Return: CF set
  512.     AH = 1Eh Stealth information
  513.         AL = subfunction
  514.             00h get Stealth configuration
  515.             Return: BL = flags
  516.                     bit 0: conventional memory sorted
  517.                     bit 1: conventional memory filled
  518.                     bit 2: ???
  519.                     bit 3: ???
  520.                     bit 4: expanded memory is in use
  521.                     bit 5: ???
  522.                 BH = ??? (always 00h for v6.00)
  523.                 CL = stealth type (00h none,46h Frame,4Dh Map)
  524.                 CH = ??? (zero/nonzero important)
  525.                 DX = ??? (always 0000h for v6.00)
  526.                 SI = ??? (always 0000h for v6.00)
  527.                 DI = ??? (always 0000h for v6.00)
  528.             01h get number of Stealth'ed ROMs
  529.             Return: CF clear
  530.                 BX = number of Stealth'ed ROMs
  531.             02h get Stealth'ed ROM info
  532.             ES:DI -> buffer for Stealth ROM info (see below)
  533.             Return: CF clear
  534.                 BX = number of Stealth'ed ROMs
  535.                 ES:DI buffer filled
  536.             else
  537.             Return: CF set
  538.     AH = 1Fh page table manipulation
  539.         AL = subfunction
  540.             00h get page table entry
  541.             CX = page number
  542.             Return: EDX = page table entry
  543.                 CF clear
  544.             01h set page table entry
  545.             CX = page number
  546.             EDX = page table entry
  547.             Return: CF clear
  548.             SeeAlso: function 1008h
  549.             else
  550.             Return: CF set
  551.     AH = 20h asynchronous disk access support???
  552.         AL = subfunction
  553.             00h get ???
  554.             Return: CF clear
  555.                 BL = flags
  556.                     bit 7: ??? (set if Stealth:F or :M active)
  557.                     bit 0: ???
  558.             01h set ???
  559.             BL = ??? (bit 0 only)
  560.             Return: CF clear
  561.             else
  562.             Return: CF set
  563.     AH = 21h Stealth support
  564.         AL = subfunction
  565.             00h copy data from Stealthed address space
  566.             DS:SI -> start address of hidden memory to copy
  567.             ES:DI -> buffer for copied data
  568.             ECX = number of bytes to copy
  569.             Return: CF clear if successful
  570.                 CF set on error (DS:SI < C000h:0000h or
  571.                          DS:SI + ECX > 1M)
  572.             else
  573.             Return: CF set
  574.     ---QEMM v6.03+ ---
  575.     AH = 22h DESQview/X support
  576.         AL = subfunction
  577.             00h get ???
  578.             Return: CF clear
  579.                 ES:DI -> ???
  580.             01h set ???
  581.             ES:DI -> ??? or 0000h:0000h
  582.             Return: CF clear if successful
  583.                 CF set on error
  584.     ---QEMM v6.04 only---
  585.     AH = 23h ???
  586.         AL = subfunction
  587.             00h get ???
  588.                 BX = which ??? to get (must be 0000h for v6.04)
  589.             Return: CF clear if successful
  590.                     ES:DI -> ???
  591.                 CF set on error
  592.             01h set ???
  593.                 BX = which ??? to set (must be 0000h for v6.04)
  594.             ES:DI -> ???
  595.             Return: CF clear if successful
  596.                 CF set on error
  597.             02h clear specified ???
  598.                 BX = which ??? to clear (must be 0000h for v6.04)
  599.             Return: CF clear if successful
  600.                 CF set on error
  601.             FFh clear all ???
  602.             else
  603.                 Return: CF set
  604.     other
  605.         Return: CF set
  606.  
  607. Format of QEMM 6.0 memory statistics:
  608. Offset    Size    Description
  609.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  610.  01h    DWORD    initial conventional memory in bytes
  611.  05h    DWORD    initial extended memory in bytes
  612.  09h    DWORD    initial expanded memory in bytes
  613.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  614.  11h    DWORD    Unavailable conventional memory in bytes
  615.  15h    DWORD    Unavailable extended memory in bytes
  616.  19h    DWORD    Unavailable expanded memory in bytes
  617.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  618.         Add to offset 49h for Total unavailable top/shadow.
  619.  21h    DWORD    QEMM code size in bytes
  620.  25h    DWORD    QEMM data size in bytes
  621.  29h    DWORD    bytes used for TASKS=
  622.  2Dh    DWORD    DMA buffer size
  623.  31h    DWORD    bytes used for MAPS=
  624.  35h    DWORD    bytes of high RAM
  625.  39h    DWORD    bytes used by mapped ROMs
  626.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  627.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  628.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  629.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  630.         Add to offset 1Dh for Total unavailable top/shadow.
  631.  4Dh    DWORD    conventional memory overhead in bytes
  632.         (set to 0 by QEMM.COM prior to call)
  633.  
  634. Format of Stealth ROM info [array]:
  635. Offset    Size    Description
  636.  00h    WORD    starting segment of ROM
  637.  02h    WORD    length of ROM in paragraphs
  638. --------m-6740-------------------------------
  639. INT 67 - LIM EMS - GET MANAGER STATUS
  640.     AH = 40h
  641. Return: AH = status (00h,80h,81h,84h) (see below)
  642. Note:    this call can be used only after establishing that the EMS driver is in
  643.       fact present
  644. SeeAlso: AH=3Fh,AX=FFA5h
  645.  
  646. Values for EMS function status:
  647.  00h successful
  648.  80h internal error
  649.  81h hardware malfunction
  650.  83h invalid handle
  651.  84h undefined function requested by application
  652.  85h no more handles available
  653.  86h error in save or restore of mapping context
  654.  87h insufficient memory pages in system
  655.  88h insufficient memory pages available
  656.  89h zero pages requested
  657.  8Ah invalid logical page number encountered
  658.  8Bh invalid physical page number encountered
  659.  8Ch page-mapping hardware state save area is full
  660.  8Dh save of mapping context failed
  661.  8Eh restore of mapping context failed
  662.  8Fh undefined subfunction
  663.  90h undefined attribute type
  664.  91h feature not supported
  665.  92h successful, but a portion of the source region has been overwritten
  666.  93h length of source or destination region exceeds length of region
  667.      allocated to either source or destination handle
  668.  94h conventional and expanded memory regions overlap
  669.  95h offset within logical page exceeds size of logical page
  670.  96h region length exceeds 1M
  671.  97h source and destination EMS regions have same handle and overlap
  672.  98h memory source or destination type undefined
  673.  9Ah specified DMA register set not supported
  674.  9Bh all DMA register sets currently allocated
  675.  9Ch alternate DMA sets not supported
  676.  9Dh undefined or unallocated DMA register set
  677.  9Eh dedicated DMA channels not supported
  678.  9Fh specified dedicated DMA channel not supported
  679.  A0h no such handle name
  680.  A1h a handle found had no name, or duplicate handle name
  681.  A2h attempted to wrap around 1M conventional address space
  682.  A3h source array corrupted
  683.  A4h operating system denied access
  684. --------m-6741-------------------------------
  685. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  686.     AH = 41h
  687. Return: AH = 00h function successful
  688.         BX = segment of page frame
  689.     AH = error code (see AH=40h)
  690. SeeAlso: AH=58h,AH=68h
  691. --------m-6742-------------------------------
  692. INT 67 - LIM EMS - GET NUMBER OF PAGES
  693.     AH = 42h
  694. Return: AH = 00h function successful
  695.         BX = number of unallocated pages
  696.         DX = total number of pages
  697.     AH = error code (see AH=40h)
  698. SeeAlso: INT 2F/AX=2702h
  699. --------m-6743-------------------------------
  700. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  701.     AH = 43h
  702.     BX = number of logical pages to allocate
  703. Return: AH = status
  704.         00h function successful
  705.         DX = handle
  706.         80h internal error
  707.         81h hardware malfunction
  708.         84h undefined function requested
  709.         85h no more handles available
  710.         87h more pages requested than physically exist
  711.         88h more pages requested than currently available
  712.         89h zero pages requested
  713. SeeAlso: AH=45h
  714. --------m-6744-------------------------------
  715. INT 67 - LIM EMS - MAP MEMORY
  716.     AH = 44h
  717.     AL = physical page number (0-3)
  718.     BX = logical page number
  719.     DX = handle
  720. Return: AH = status
  721.         00h function successful
  722.         80h internal error
  723.         81h hardware malfunction
  724.         83h invalid handle
  725.         84h undefined function requested
  726.         8Ah invalid logical page number
  727.         8Bh illegal physical-page number
  728. SeeAlso: AH=69h
  729. --------m-6745-------------------------------
  730. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  731.     AH = 45h
  732.     DX = EMM handle
  733. Return: AH = status
  734.         00h successful
  735.         80h internal error
  736.         81h hardware malfunction
  737.         83h invalid handle
  738.         84h undefined function requested
  739.         86h error in save or restore of mapping context
  740. SeeAlso: AH=43h
  741. --------m-6746-------------------------------
  742. INT 67 - LIM EMS - GET EMM VERSION
  743.     AH = 46h
  744. Return: AH = status
  745.         00h successful
  746.         AL = EMM version number
  747.         80h internal error
  748.         81h hardware malfunction
  749.         84h undefined function requested
  750. --------m-6747-------------------------------
  751. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  752.     AH = 47h
  753.     DX = handle
  754. Return: AH = status
  755.         00h successful
  756.         80h internal error
  757.         81h hardware malfunction
  758.         83h invalid handle
  759.         84h undefined function requested
  760.         8Ch page-mapping hardware state save area is full
  761.         8Dh save of mapping context failed
  762. SeeAlso: AH=48h
  763. --------m-6748-------------------------------
  764. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  765.     AH = 48h
  766.     DX = handle
  767. Return: AH = status
  768.         00h successful
  769.         80h internal error
  770.         81h hardware malfunction
  771.         83h invalid handle
  772.         84h undefined function requested
  773.         8Eh restore of mapping context failed
  774. SeeAlso: AH=47h
  775. --------m-6749-------------------------------
  776. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  777.     AH = 49h
  778. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  779. --------m-674A-------------------------------
  780. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  781.     AH = 4Ah
  782. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  783. --------m-674B-------------------------------
  784. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  785.     AH = 4Bh
  786. Return: AH = status
  787.         00h successful
  788.         BX = number of EMM handles
  789.         80h internal error
  790.         81h hardware malfunction
  791.         83h invalid handle
  792.         84h undefined function requested
  793. --------m-674C-------------------------------
  794. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  795.     AH = 4Ch
  796.     DX = EMM handle
  797. Return: AH = status
  798.         00h successful
  799.         BX = number of logical pages
  800.         80h internal error
  801.         81h hardware malfunction
  802.         83h invalid handle
  803.         84h undefined function requested
  804. SeeAlso: AH=4Dh
  805. --------m-674D-------------------------------
  806. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  807.     AH = 4Dh
  808.     ES:DI -> array to receive information
  809. Return: AH = status
  810.         00h successful
  811.         BX = number of active EMM handles
  812.         array filled with 2-word entries, consisting of a handle
  813.           and the number of pages allocated to that handle
  814.         80h internal error
  815.         81h hardware malfunction
  816.         84h undefined function requested
  817. SeeAlso: AH=4Ch
  818. --------m-674E-------------------------------
  819. INT 67 - LIM EMS - GET OR SET PAGE MAP
  820.     AH = 4Eh
  821.     AL = 00h if getting mapping registers
  822.          01h if setting mapping registers
  823.          02h if getting and setting mapping registers at once
  824.          03h if getting size of page-mapping array
  825.     DS:SI -> array holding information (AL=01/02)
  826.     ES:DI -> array to receive information (AL=00/02)
  827. Return: AH = status
  828.         00h successful
  829.         AL = bytes in page-mapping array (AL=03h only)
  830.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  831.         80h internal error
  832.         81h hardware malfunction
  833.         84h undefined function requested
  834.         8Fh undefined subfunction parameter
  835.         A3h contents of source array corrupted (EMS 4.0?)
  836. Note:    this function was designed to be used by multitasking operating systems
  837.       and should not ordinarily be used by appplication software.
  838. SeeAlso: AH=4Fh
  839. --------m-674F-------------------------------
  840. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  841.     AH = 4Fh
  842.     AL = subfunction
  843.         00h get partial page map
  844.            DS:SI -> structure containing list of segments whose mapping
  845.             contexts are to be saved
  846.            ES:DI -> array to receive page map
  847.         01h set partial page map
  848.            DS:SI -> structure containing saved partial page map
  849.         02h get size of partial page map
  850.            BX = number of mappable segments in the partial map to be saved
  851. Return: AH = status
  852.         00h successful
  853.         80h internal error
  854.         81h hardware malfunction
  855.         84h undefined function requested
  856.         8Bh one of specified segments is not mappable
  857.         8Fh undefined subfunction parameter
  858.         A3h contents of partial page map corrupted or count of mappable
  859.         segments exceeds total number of mappable segments in system
  860.     AL = size of partial page map for subfunction 02h
  861. SeeAlso: AH=4Eh
  862. --------m-6750-------------------------------
  863. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  864.     AH = 50h
  865.     AL = subfunction
  866.         00h use physical page numbers
  867.         01h use segment addresses
  868.     DX = handle
  869.     CX = number of entries in array
  870.     DS:SI -> mapping array (see below)
  871. Return: AH = status
  872.         00h successful
  873.         80h internal error
  874.         81h hardware malfunction
  875.         83h invalid handle
  876.         84h undefined function requested
  877.         8Ah one or more logical pages are invalid
  878.         8Bh one or more physical pages are invalid
  879.         8Fh invalid subfunction
  880. SeeAlso: AH=40h
  881.  
  882. Format of mapping array entry:
  883. Offset    Size    Description
  884.  00h    WORD    logical page number or FFFFh to unmap physical page
  885.  02h    WORD    physical page number or segment address
  886. --------m-6751-------------------------------
  887. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  888.     AH = 51h
  889.     DX = handle
  890.     BX = number of pages to be allocated to handle
  891. Return: BX = actual number of pages allocated to handle
  892.     AH = status
  893.         00h successful
  894.         80h internal error
  895.         81h hardware malfunction
  896.         83h invalid handle
  897.         84h undefined function requested
  898.         87h more pages requested than present in system
  899.         88h more pages requested than currently available
  900. --------m-6752-------------------------------
  901. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  902.     AH = 52h
  903.     AL = subfunction
  904.         00h get handle attributes
  905.         Return: AL = attribute
  906.                 00h handle is volatile
  907.                 01h handle is nonvolatile
  908.         01h set handle attributes
  909.         BL = new attribute (see returned AL)
  910.         02h get attribute capability
  911.         Return: AL = attribute capability
  912.                 00h only volatile handles supported
  913.                 01h both volatile and non-volatile supported
  914.     DX = handle
  915. Return:    AH = status
  916.         00h successful
  917.         80h internal error
  918.         81h hardware malfunction
  919.         83h invalid handle
  920.         84h undefined function requested
  921.         8Fh undefined subfunction
  922.         90h undefined attribute type
  923.         91h feature not supported
  924. SeeAlso: AH=53h
  925. --------m-6753-------------------------------
  926. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  927.     AH = 53h
  928.     AL = subfunction
  929.         00h get handle name
  930.            ES:DI -> 8-byte buffer for handle name
  931.         01h set handle name
  932.            DS:SI -> 8-byte handle name
  933.     DX = handle
  934. Return: AH = status
  935.         00h successful
  936.         80h internal error
  937.         81h hardware malfunction
  938.         83h invalid handle
  939.         84h undefined function requested
  940.         8Fh undefined subfunction
  941.         A1h duplicate handle name
  942. SeeAlso: AH=52h
  943. --------m-6754-------------------------------
  944. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  945.     AH = 54h
  946.     AL = subfunction
  947.         00h get handle directory
  948.            ES:DI -> buffer for handle directory (see below)
  949.         01h search for named handle
  950.            DS:SI -> 8-byte name
  951.         02h get total number of handles
  952. Return: AL = number of entries in handle directory (subfunction 00h)
  953.     DX = value of named handle (subfunction 01h)
  954.     BX = total number of handles (subfunction 02h)
  955.     AH = status
  956.         00h successful
  957.         80h internal error
  958.         81h hardware malfunction
  959.         84h undefined function requested
  960.         8Fh undefined subfunction
  961.         A0h no such handle name
  962.         A1h a handle found had no name
  963.  
  964. Format of handle directory entry:
  965. Offset    Size    Description
  966.  00h    WORD    handle
  967.  02h  8 BYTEs    handle's name
  968. --------m-6755-------------------------------
  969. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  970.     AH = 55h
  971.     AL = subfunction
  972.         00h physical page numbers provided by caller
  973.         01h segment addresses provided by caller
  974.     DX = handle
  975.     DS:SI -> structure containing map and jump address
  976. Return: (at target address unless error)
  977.     AH = status
  978.         00h successful
  979.         80h internal error
  980.         81h hardware failure
  981.         83h invalid handle
  982.         84h undefined function requested
  983.         8Ah invalid logical page number encountered
  984.         8Bh invalid physical page number encountered
  985.         8Fh invalid subfunction
  986. SeeAlso: AH=56h
  987. --------m-6756-------------------------------
  988. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  989.     AH = 56h
  990.     AL = subfunction
  991.         00h physical page numbers provided by caller
  992.         DX = handle
  993.         DS:SI -> structure containing page map and call address
  994.         01h segment addresses provided by caller
  995.         DX = handle
  996.         DS:SI -> structure containing page map and call address
  997.         02h get page map stack space required
  998.         Return: BX = stack space required
  999. Return: (if successful, the target address is called.  Use a RETF to return and
  1000.      restore mapping context)
  1001.     AH = status (see AH=55h)
  1002. SeeAlso: AH=55h
  1003. --------m-6757-------------------------------
  1004. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  1005.     AH = 57h
  1006.     AL = subfunction
  1007.         00h move memory region
  1008.         01h exchange memory region
  1009.     DS:SI -> structure describing source and destination (see below)
  1010. Return: AH = status
  1011.         00h successful
  1012.         80h internal error
  1013.         81h hardware failure
  1014.         83h invalid handle
  1015.         84h undefined function requested
  1016.         8Ah invalid logical page number encountered
  1017.         8Fh undefined subfunction
  1018.         92h successful, but a portion of the source region has been
  1019.         overwritten
  1020.         93h length of source or destination region exceeds length of region
  1021.         allocated to either source or destination handle
  1022.         94h conventional and expanded memory regions overlap
  1023.         95h offset within logical page exceeds size of logical page
  1024.         96h region length exceeds 1M
  1025.         97h source and destination EMS regions have same handle and overlap
  1026.         98h memory source or destination type undefined
  1027.         A2h attempted to wrap around 1M conventional address space
  1028. Note:    source and destination may overlap for a move, in which case the copy
  1029.       direction is chosen such that the destination receives an intact copy
  1030.       of the source region
  1031.  
  1032. Format of EMS copy data:
  1033. Offset    Size    Description
  1034.  00h    DWORD    region length in bytes
  1035.  04h    BYTE    source memory type
  1036.         00h conventional
  1037.         01h expanded
  1038.  05h    WORD    source handle (0000h if conventional memory)
  1039.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  1040.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  1041.  0Bh    BYTE    destination memory type
  1042.         00h conventional
  1043.         01h expanded
  1044.  0Ch    WORD    destination handle
  1045.  0Eh    WORD    destination initial offset
  1046.  10h    WORD    destination initial segment or page
  1047. --------m-6758-------------------------------
  1048. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  1049.     AH = 58h
  1050.     AL = subfunction
  1051.         00h get mappable physical address array
  1052.         ES:DI -> buffer to be filled with array
  1053.         01h get number of entries in m.p.a. array
  1054. Return: CX = number of entries in array
  1055.     AH = status
  1056.         00h successful
  1057.         80h internal error
  1058.         81h hardware failure
  1059.         84h undefined function requested
  1060.         8Fh undefined subfunction
  1061. Note:    the returned array for subfunction 00h is filled in physical segment
  1062.       address order
  1063.  
  1064. Format of mappable physical address entry:
  1065. Offset    Size    Description
  1066.  00h    WORD    physical page segment
  1067.  02h    WORD    physical page number
  1068. --------m-675857-----------------------------
  1069. INT 67 U - NETROOM??? - ???
  1070.     AX = 5857h
  1071.     BX = function??? (0057h,0059h,0159h seen)
  1072.     ???
  1073. Return: ???
  1074. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  1075.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  1076.       AX=580xh or AX=5857h/BX=0x59h should be used
  1077. SeeAlso: AX=5BF0h
  1078. --------m-6759-------------------------------
  1079. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  1080.     AH = 59h
  1081.     AL = subfunction
  1082.         00h get hardware configuration array
  1083.         ES:DI -> buffer to be filled with array (see below)
  1084.         01h get unallocated raw page count
  1085.         Return: BX = unallocated raw pages
  1086.             DX = total raw pages
  1087. Return:    AH = status (see also AH=58h"EMS 4.0")
  1088.         A4h access denied by operating system
  1089. Note:    subfunction 00h is for use by operating systems only, and can be
  1090.       enabled or disabled at any time by the operating system
  1091.  
  1092. Format of hardware configuration array:
  1093. Offset    Size    Description
  1094.  00h    WORD    size of raw EMM pages in paragraphs
  1095.  02h    WORD    number of alternate register sets
  1096.  04h    WORD    size of mapping-context save area in bytes
  1097.  06h    WORD    number of register sets assignable to DMA
  1098.  08h    WORD    DMA operation type
  1099.         0000h DMA with alternate register sets
  1100.         0001h only one DMA register set
  1101. --------m-675A-------------------------------
  1102. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  1103.     AH = 5Ah
  1104.     AL = subfunction
  1105.         00h allocate standard pages
  1106.         01h allocate raw pages
  1107.     BX = number of pages to allocate
  1108. Return: DX = handle
  1109.     AH = status
  1110.         00h successful
  1111.         80h internal error
  1112.         81h hardware failure
  1113.         84h undefined function requested
  1114.         85h no more handles available
  1115.         87h insufficient memory pages in system
  1116.         88h insufficient memory pages available
  1117.         8Fh undefined subfunction
  1118. --------m-675B-------------------------------
  1119. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  1120.     AH = 5Bh
  1121.     AL = subfunction
  1122.         00h get alternate map register set
  1123.         Return: BL = current active alternate map register set number
  1124.             ES:DI -> map register context save area if BL=00h
  1125.         01h set alternate map register set
  1126.         BL = new alternate map register set number
  1127.         ES:DI -> map register context save area if BL=0
  1128.         02h get alternate map save array size
  1129.         Return: DX = array size in bytes
  1130.         03h allocate alternate map register set
  1131.         Return: BL = number of map register set; 00h = not supported
  1132.         04h deallocate alternate map register set
  1133.         BL = number of alternate map register set
  1134. Return: AH = status
  1135.         00h successful
  1136.         80h internal error
  1137.         81h hardware malfunction
  1138.         84h undefined function requested
  1139.         8Fh undefined subfunction
  1140.         9Ah specified alternate map register set not supported
  1141.         9Bh all alternate map register sets currently allocated
  1142.         9Ch alternate map register sets not supported
  1143.         9Dh undefined or unallocated alternate map register set
  1144.         A3h source array corrupted
  1145.         A4h operating system denied access
  1146. Note:    this function is for use by operating systems only, and can be
  1147.       enabled or disabled at any time by the operating system
  1148. --------m-675B-------------------------------
  1149. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  1150.     AH = 5Bh
  1151.     AL = subfunction
  1152.         05h allocate DMA register set
  1153.         Return: BL = DMA register set number, 00h if not supported
  1154.         06h enable DMA on alternate map register set
  1155.            BL = DMA register set number
  1156.            DL = DMA channel number
  1157.         07h disable DMA on alternate map register set
  1158.            BL = DMA register set number
  1159.         08h deallocate DMA register set
  1160.            BL = DMA register set number
  1161. Return: AH = status
  1162.         00h successful
  1163.         80h internal error
  1164.         81h hardware malfunction
  1165.         84h undefined function requested
  1166.         8Fh undefined subfunction
  1167.         9Ah specified DMA register set not supported
  1168.         9Bh all DMA register sets currently allocated
  1169.         9Ch alternate DMA sets not supported
  1170.         9Dh undefined or unallocated DMA register set
  1171.         9Eh dedicated DMA channels not supported
  1172.         9Fh specified dedicated DMA channel not supported
  1173.         A3h source array corrupted
  1174.         A4h operating system denied access
  1175. Note:    this function is for use by operating systems only, and can be
  1176.       enabled or disabled at any time by the operating system
  1177. --------m-675BE0-----------------------------
  1178. INT 67 - MICEMM v4D - GET LINEAR ADDRESS OF MEMORY
  1179.     AX = 5BE0h
  1180.     ES:BX -> memory for which to get linear address
  1181. Return: AH = 00h
  1182.     DX:CX = linear address of physical memory corresponding to ES:BX
  1183. SeeAlso: AX=5BF0h,AX=5BF1h
  1184. --------m-675BF0-----------------------------
  1185. INT 67 - MICEMM v4D, NETROOM - INSTALLATION CHECK
  1186.     AX = 5BF0h
  1187. Return: AH = 00h if MICEMM or NETROOM present
  1188.         BX = code segment of driver
  1189. Note:    MICEMM is the Micronics Expanded Memory Manager
  1190. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  1191. --------m-675BF1-----------------------------
  1192. INT 67 - MICEMM v4D - GET MEMORY TYPES
  1193.     AX = 5BF1h
  1194.     ES:BX -> 256-byte buffer for memory types
  1195. Return: AH = 00h
  1196.     ES:BX buffer filled
  1197. Note:    each byte in the buffer specifies the type of a 4K page of memory:
  1198.         00h unused
  1199.         02h DOS extension
  1200.         04h shadowed ROM
  1201.         08h mappable EMS
  1202.         10h page frame
  1203.         20h ROM
  1204.         40h reserved (video memory, etc)
  1205.         80h RAM
  1206. SeeAlso: AX=5BE0h,AX=5BF0h
  1207. --------m-675C-------------------------------
  1208. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  1209.     AH = 5Ch
  1210. Return: AH = status
  1211.         00h successful
  1212.         80h internal error
  1213.         81h hardware malfunction
  1214.         84h undefined function requested
  1215. --------m-675D-------------------------------
  1216. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  1217.     AH = 5Dh
  1218.     AL = subfunction
  1219.         00h enable OS Function Set
  1220.         01h disable OS Function Set
  1221.         02h return access key (resets memory manager, returns access key at
  1222.         next invocation)
  1223.     BX,CX = access key returned by first invocation
  1224. Return: BX,CX = access key, returned only on first invocation of function
  1225.     AH = status (see also AH=5Ch)
  1226.         8Fh undefined subfunction
  1227.         A4h operating system denied access
  1228. --------m-6760-------------------------------
  1229. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  1230.     AH = 60h
  1231.     ES:DI -> buffer
  1232. Return: AH = status (see also AH=40h)
  1233.     AL = number of entries
  1234.     buffer at ES:DI filled
  1235. --------m-6761-------------------------------
  1236. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  1237.     AH = 61h
  1238.     ???
  1239. Return: ???
  1240. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  1241.       ensuring that the cache accurately reflects what the processor would
  1242.       see without the cache.
  1243. --------m-6768-------------------------------
  1244. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  1245.     AH = 68h
  1246.     ES:DI -> buffer
  1247. Return: AH = status (see also AH=40h)
  1248.     AL = number of entries
  1249.     buffer at ES:DI filled
  1250. Note:    equivalent to LIM 4.0 function 58h
  1251. --------m-6769-------------------------------
  1252. INT 67 - EEMS - MAP PAGE INTO FRAME
  1253.     AH = 69h
  1254.     AL = frame number
  1255.     BX = page number
  1256.     DX = handle
  1257. Return: AH = status (see also AH=40h)
  1258. Note:    similar to EMS function 44h
  1259. SeeAlso: AH=44h,AH=50h,AH=6Ah
  1260. --------m-676A-------------------------------
  1261. INT 67 - EEMS - PAGE MAPPING
  1262.     AH = 6Ah
  1263.     AL = subfunction
  1264.         00h save partial page map
  1265.         CH = first page frame
  1266.         CL = number of frames
  1267.         ES:DI -> buffer which is to be filled
  1268.         01h restore partial page map
  1269.         CH = first page frame
  1270.         CL = number of frames
  1271.         DI:SI -> previously saved page map
  1272.         02h save and restore partial page map
  1273.         CH = first page frame
  1274.         CL = number of frames
  1275.         ES:DI = buffer for current page map
  1276.         DI:SI = new page map
  1277.         03h get size of save array
  1278.         CH = first page frame
  1279.         CL = number of frames
  1280.         Return: AL = size of array in bytes
  1281.         04h switch to standard map register setting
  1282.         05h switch to alternate map register setting
  1283.         06h deallocate pages mapped to frames in conventional memory
  1284.         CH = first page frame
  1285.         CL = number of frames
  1286. Return: AH = status (see also AH=40h)
  1287. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  1288.       specified
  1289. SeeAlso: AH=69h
  1290. --------m-676B-------------------------------
  1291. INT 67 - DESQview 2.42-2.53 - BUG
  1292.     AH = 6Bh
  1293. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  1294.       function due to a fencepost error
  1295. --------m-67DD-------------------------------
  1296. INT 67 - Quadtel QMAPS - API
  1297.     AH = DDh
  1298.     AL = function
  1299.     ???
  1300. Return: ???
  1301. Notes:    details are not yet available
  1302.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  1303.       supports this API
  1304. SeeAlso: AH=3Fh,AX=FFA5h
  1305. --------E-67DE00-----------------------------
  1306. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  1307.     AX = DE00h
  1308. Return: AH = 00h    VCPI is present
  1309.         BH = major version number
  1310.         BL = minor version number
  1311.     AH nonzero  VCPI not present
  1312. SeeAlso: INT 2F/AX=1687h
  1313. --------E-67DE01-----------------------------
  1314. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  1315.     AX = DE01h
  1316.     ES:DI -> 4K page table buffer
  1317.     DS:SI -> three descriptor table entries in GDT
  1318.         first becomes code segment descriptor, other two for use by
  1319.         main control program
  1320. Return: AH = 00h successful
  1321.         DI -> first unused page table entry in buffer
  1322.         EBX -> protected mode entry point in code segment
  1323.     AH = nonzero  failed
  1324. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  1325.       AX=DE0Ch (in each case, all other registers as appropriate for
  1326.       the function)
  1327. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  1328.  
  1329. QEMM v6.03 protected mode entry point may also be called with:
  1330.     AX = DF00h ???
  1331.         ???
  1332.         Return: ???
  1333.     AX = DF01h ???
  1334.         ???
  1335.         Return: ???
  1336. --------E-67DE02-----------------------------
  1337. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  1338.     AX = DE02h
  1339. Return: AH = 00h  successful
  1340.         EDX = physical address of highest 4K memory page
  1341.     AH nonzero: failed
  1342. SeeAlso: AH=3Fh
  1343. --------E-67DE03-----------------------------
  1344. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  1345.     AX = DE03h
  1346. Return: AH = 00h  successful
  1347.         EDX = number of free 4K pages
  1348.     AH nonzero: failed
  1349. Notes:    returns total number of pages available to ALL tasks in system
  1350.     also available in protected mode by calling the protected-mode VCPI
  1351.       entry point
  1352. SeeAlso: AX=DE04h
  1353. --------E-67DE04-----------------------------
  1354. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  1355.     AX = DE04h
  1356. Return: AH = 00h successful
  1357.         EDX = physical address of allocated page
  1358.     AH nonzero: failed
  1359. Notes:    the client program is responsible for freeing all memory allocated
  1360.       with this call before terminating
  1361.     also available in protected mode by calling the protected-mode VCPI
  1362.       entry point
  1363. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  1364. --------E-67DE05-----------------------------
  1365. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  1366.     AX = DE05h
  1367.     EDX = physical address of 4K page
  1368. Return: AH = 00h successful
  1369.     AH nonzero: failed
  1370. Note:    also available in protected mode by calling the protected-mode VCPI
  1371.       entry point
  1372. SeeAlso: AH=3Fh,AX=DE04h
  1373. --------E-67DE06-----------------------------
  1374. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  1375.     AX = DE06h
  1376.     CX = page number (linear address shifted right 12 bits)
  1377. Return: AH = 00h successful
  1378.         EDX = physical address of page
  1379.     AH nonzero: invalid page number (AH = 8Bh recommended)
  1380. --------E-67DE07-----------------------------
  1381. INT 67 - Virtual Control Program Interface - READ CR0
  1382.     AX = DE07h
  1383. Return: AH = 00h
  1384.     EBX = value of Control Register 0
  1385. SeeAlso: AH=3Fh,AX=DE07h
  1386. --------E-67DE08-----------------------------
  1387. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  1388.     AX = DE08h
  1389.     ES:DI -> array of 8 DWORDs
  1390. Return: AH = 00h
  1391.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  1392. SeeAlso: AH=3Fh,AX=DE09h
  1393. --------E-67DE09-----------------------------
  1394. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  1395.     AX = DE09h
  1396.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  1397. Return: AH = 00h
  1398. Note:    values for DR4 and DR5 ignored
  1399. SeeAlso: AH=3Fh,AX=DE08h
  1400. --------E-67DE0A-----------------------------
  1401. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  1402.     AX = DE0Ah
  1403. Return: AH = 00h successful
  1404.         BX = first vector used by master 8259 (IRQ0)
  1405.         CX = first vector used by slave 8259 (IRQ8)
  1406.     AH nonzero: failed
  1407. Note:    CX is undefined in systems without a slave 8259
  1408. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  1409. --------E-67DE0B-----------------------------
  1410. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  1411.     AX = DE0Bh
  1412.     BX = first vector used by master 8259
  1413.     CX = first vector used by slave 8259
  1414.     interrupts disabled
  1415. Return: AH = 00h successful
  1416.     AH nonzero: failed 
  1417. Notes:    This call merely informs the server that the client has changed the
  1418.       interrupt mappings.  The client may not change the mappings if they
  1419.       have already been changed by the server or another client, and is
  1420.       responsible for restoring the original mappings before terminating.
  1421. SeeAlso: AX=DE0Ah
  1422. --------E-67DE0C-----------------------------
  1423. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  1424.     AX = DE0Ch
  1425.     ESI = linear address in first megabyte of values for system registers
  1426.     interrupts disabled
  1427. Return: interrupts disabled
  1428.     GDTR, IDTR, LDTR, TR loaded
  1429.     SS:ESP must have at least 16 bytes space, and the entry point is
  1430.         required to set up a new stack before enabling interrupts
  1431.     EAX, ESI, DS, ES, FS, GS destroyed
  1432. SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
  1433.  
  1434. Note:    in protected mode, calling the protected-mode VCPI entry point with 
  1435.       AX = DE0Ch
  1436.       DS = segment selector mapping entire linear address space obtained
  1437.         via AX=DE01h
  1438.       SS:ESP in first megabyte of linear memory
  1439.       STACK:QWORD  return address from FAR call to 32-bit segment
  1440.         DWORD  EIP
  1441.         DWORD  CS
  1442.         DWORD  reserved for EFLAGS
  1443.         DWORD  ESP
  1444.         DWORD  SS
  1445.         DWORD  ES
  1446.         DWORD  DS
  1447.         DWORD  FS
  1448.         DWORD  GS
  1449.       and interrupts disabled, will switch to virtual86 mode with
  1450.       interrupts disabled, all segment registers loaded, and EAX destroyed.
  1451.  
  1452. Format of system register values for switch to protected mode:
  1453. Offset    Size    Description
  1454.  00h    DWORD    value for CR3
  1455.  04h    DWORD    linear address in first megabyte of value for GDTR
  1456.  08h    DWORD    linear address in first megabyte of value for IDTR
  1457.  0Ch    WORD    value for LDTR
  1458.  0Eh    WORD    value for TR
  1459.  10h    PWORD    CS:EIP of protected mode entry-point
  1460. --------m-67FFA5-----------------------------
  1461. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  1462.     AX = FFA5h
  1463. Return: AX = 845Ah if loaded
  1464.         BX:CX -> API entry point
  1465. Notes:    this call is available even if EMM386 is not providing EMS
  1466.     if no other program has hooked INT 67, an alternate installation
  1467.       check is to search for the string
  1468.       "MICROSOFT EXPANDED MEMORY MANAGER 386" early in the INT 67
  1469.       handler's segment, usually at offset 14h; the word immediately
  1470.       preceding this string contains the offset of the API entry point
  1471. SeeAlso: AH=3Fh,INT 21/AX=4402h"EMM386.EXE"
  1472.  
  1473. Call API entry point with:
  1474.     AH = 00h get memory manager's status
  1475.         Return: AH = status
  1476.             bit 0: not active (OFF)
  1477.             bit 1: in "Auto" mode
  1478.     AH = 01h set memory manager's state
  1479.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  1480.     AH = 02h Weitek coprocessor support
  1481.         AL = subfunction
  1482.         00h get Weitek support state
  1483.             Return: AL = status
  1484.                 bit 0: Weitek coprocessor is present
  1485.                 bit 1: Weitek support is enabled
  1486.         01h turn on Weitek support
  1487.         02h turn off Weitek support
  1488.      --- v4.20-4.41 only ---
  1489.     AH = 03h Windows support???
  1490.         AL = subfunction (00h, 01h)
  1491.     AH = 04h print copyright notice to standard output
  1492.          (using INT 21/AH=09h)
  1493.     AH = 05h print available report
  1494.          (the one shown when running EMM386 from the DOS prompt)
  1495. --------I-68---------------------------------
  1496. INT 68 - Sangoma CCPOP 3270 resident module
  1497. SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
  1498. --------N-6801--SF1B00-----------------------
  1499. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DISPLAY
  1500.     AH = 01h subfn 1B00h
  1501.     DS:DX -> control block
  1502. Return: control block updated
  1503. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2B00h
  1504.  
  1505. Format of control block:
  1506. Offset    Size    Description
  1507.  00h 12 BYTEs    reserved
  1508.  0Ch    WORD    1B00h (verb "DISPLAY")
  1509.  0Eh  6 BYTEs    00h
  1510.  14h    DWORD    (big-endian) return code (see below)
  1511.  18h    WORD    00h
  1512.  1Ah  8 BYTEs    (big-endian) logical unit ID
  1513.  22h  8 BYTEs    (big-endian) partner logical unit name
  1514.  2Ah  8 BYTEs    (big-endian) mode name
  1515.  32h    BYTE    logical unit session limit
  1516.  33h    BYTE    partner logical unit session limit
  1517.  34h    BYTE    node maximum negotiable session limit
  1518.  35h    BYTE    current session limit
  1519.  36h    BYTE    minimum negotiated winner limit
  1520.  37h    BYTE    maximum negotiated loser limit
  1521.  38h    BYTE    active session count
  1522.  39h    BYTE    active CONWINNER session count
  1523.  3Ah    BYTE    active CONLOSER session count
  1524.  3Bh    BYTE    session termination count
  1525.  3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
  1526.         bit 6: SESSION_TERMINATION_SOURCE_DRAIN
  1527.  
  1528. Values for return code:
  1529.      0000h    successful
  1530.      0001h    BAD_TP_ID
  1531.      0002h    BAD_CONV_ID
  1532.      0003h    bad logical unit ID
  1533.      0008h    no physical unit attached
  1534.      0110h    bad state
  1535.      01B1h    BAD_PART_LUNAME
  1536.      01B2h    bad mode name
  1537.      0201h    physical unit already active
  1538.      0211h    logical unit already active
  1539.      0212h    BAD_PART_SESS
  1540.      0213h    BAD_RU_SIZES
  1541.      0214h    BAD_MODE_SESS
  1542.      0216h    BAD_PACING_CNT
  1543.      0219h    EXTREME_RUS
  1544.      021Ah    SNASVCMG_1
  1545.      0223h    SSCP_CONNECTED_LU
  1546.      0230h    invalid change
  1547.      0243h    too many TPs
  1548.      0272h    adapter close failure
  1549.      0281h    GET_ALLOC_BAD_TYPE
  1550.      0282h    unsuccessful
  1551.      0283h    DLC failure
  1552.      0284h    unrecognized DLC
  1553.      0286h    duplicate DLC
  1554.      0301h    SSCP_PU_SESSION_NOT_ACTIVE
  1555.      0302h    data exceeds RU size
  1556.      0401h    invalid direction
  1557.      0402h    invalid type
  1558.      0403h    segment overlap
  1559.      0404h    invalid first character
  1560.      0405h    table error
  1561.      0406h    conversion error
  1562.      F0010000h    APPC disabled
  1563.      F0020000h    APPC busy
  1564.      F0030000h    APPC abended
  1565.      F0040000h    incomplete
  1566. --------N-6801--SF2000-----------------------
  1567. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH PHYSICAL UNIT
  1568.     AH = 01h subfn 2000h
  1569.     DS:DX -> control block
  1570. Return: control block updated
  1571. SeeAlso: AH=01h/SF=2100h,AH=01h/SF=2B00h
  1572.  
  1573. Format of control block:
  1574. Offset    Size    Description
  1575.  00h 12 BYTEs    reserved
  1576.  0Ch    WORD    2000h (verb "Attach Physical Unit")
  1577.  0Eh  6 BYTEs    00h
  1578.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  1579.  18h    WORD    00h
  1580.  1Ah    BYTE    version
  1581.  1Bh    BYTE    release
  1582.  1Ch  8 BYTEs    (big-endian) net name
  1583.  24h  8 BYTEs    (big-endian) physical unit name
  1584.  2Ch  8 BYTEs    00h
  1585.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  1586.          (see also AH=01h/SF=2100h)
  1587.  38h    DWORD    00h
  1588.  3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
  1589.         01h RETURN_CONTROL: INCOMPLETE
  1590. --------N-6801--SF2100-----------------------
  1591. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH LOGICAL UNIT
  1592.     AH = 01h subfn 2100h
  1593.     DS:DX -> control block
  1594. Return: control block updated
  1595. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2200h,AH=01h/SF=2B00h
  1596.  
  1597. Format of control block:
  1598. Offset    Size    Description
  1599.  00h 12 BYTEs    reserved
  1600.  0Ch    WORD    2100h (verb "Attach Logical Unit")
  1601.  0Eh  6 BYTEs    00h
  1602.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  1603.  18h    WORD    70  offset to partner logical unit record
  1604.  1Ah  8 BYTEs    (big-endian) logical unit name
  1605.  22h  8 BYTEs    (big-endian) logical unit ID
  1606.  2Ah    BYTE    logical unit local address
  1607.  2Bh    BYTE    logical unit session limit
  1608.  2Ch    DWORD    pointer to CREATE_TP_EXIT routine,
  1609.         FFFFFFFFh = reject incoming ALLOCATEs
  1610.         00000000h = queue ALLOCATEs
  1611.  30h    DWORD    00h
  1612.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  1613.  38h    DWORD    00h
  1614.  3Ch    BYTE    maximum TPs
  1615.  3Dh    BYTE    queue depth
  1616.  3Eh    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
  1617.  42h    DWORD    00h
  1618.  46h    WORD    total length of partner records
  1619.     for each partner logical unit:
  1620.     WORD    length of this partner logical unit record
  1621.     WORD    42  offset to mode records
  1622.       8 BYTEs    (big-endian) partner logical unit name
  1623.     BYTE    partner logical unit security capabilities
  1624.         bit 7: already verified
  1625.         bit 6: conversation level security
  1626.         bit 5: session level security
  1627.     BYTE    partner logical unit session limit
  1628.     WORD    partner logical unit maximum MC_SEND_LL
  1629.       8 BYTEs    (big-endian) partner logical unit DLC name
  1630.     BYTE    partner logical unit adapter number
  1631.      17 BYTEs    (counted string) partner logical unit adapter address
  1632.     WORD    total length of mode records
  1633.    for each mode:
  1634.     WORD    16  length of this mode record
  1635.       8 BYTEs    (big-endian) mode name
  1636.     WORD    RU_SIZE high bound
  1637.     WORD    RU_SIZE low bound
  1638.     BYTE    mode maximum negotiable session limit
  1639.     BYTE    pacing size for receive
  1640.  
  1641. Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
  1642. pointers are called by pushing the DWORD pointer to the verb on the stack and
  1643. then performing a FAR call.
  1644.  
  1645. Format of ACCESS_LU_LU_PW verb:
  1646. Offset    Size    Description
  1647.  00h 12 BYTEs    reserved
  1648.  0Ch    WORD    1900h (verb "ACCESS_LU_LU_PW")
  1649.  0Eh  8 BYTEs    (big-endian) logical unit ID
  1650.  16h  8 BYTEs    (big-endian) logical unit name
  1651.  1Eh  8 BYTEs    (big-endian) partner logical unit name
  1652.  26h 17 BYTEs    (counted string) partner fully qualified logical unit name
  1653.  37h    BYTE    password available (0=no, 1=yes)
  1654.  38h  8 BYTEs    password
  1655.  
  1656. Format of CREATE_TP verb:
  1657. Offset    Size    Description
  1658.  00h 12 BYTEs    reserved
  1659.  0Ch    WORD    2300h (verb "CREATE_TP")
  1660.  0Eh  6 BYTEs    00h
  1661.  14h    DWORD    (big-endian) sense code
  1662.         00000000h    Ok
  1663.         080F6051h    SECURITY_NOT_VALID
  1664.         084B6031h    TP_NOT_AVAIL_RETRY
  1665.         084C0000h    TP_NOT_AVAIL_NO_RETRY
  1666.         10086021h    TP_NAME_NOT_RECOGNIZED
  1667.         10086034h    CONVERSATION_TYPE_MISMATCH
  1668.         10086041h    SYNC_LEVEL_NOT_SUPPORTED
  1669.  18h  8 BYTEs    (big-endian) TP ID
  1670.  20h  8 BYTEs    (big-endian) logical unit ID
  1671.  28h    DWORD    (big-endian) conversation ID
  1672.  2Ch    BYTE    0 basic conversation, 1 mapped conversation
  1673.  2Dh    BYTE    0 no sync level, 1 confirm
  1674.  2Eh    BYTE    reserved
  1675.  2Fh 65 BYTEs    (counted string) transaction program name
  1676.  70h  6 BYTEs    00h
  1677.  76h    WORD    length of ERROR_LOG_DATA to return
  1678.  78h    DWORD    pointer to ERROR_LOG_DATA buffer
  1679.  7Ch  8 BYTEs    (big-endian) partner logical unit name
  1680.  84h 18 BYTEs    (counted string) partner fully qualified logical unit name
  1681.  96h  8 BYTEs    (big-endian) mode name
  1682.  9Eh 12 BYTEs    00h
  1683.  AAh 11 BYTEs    (counted string) password
  1684.  B5h 11 BYTEs    (counted string) user ID
  1685.  C0h    BYTE    0 verification should be performed
  1686.         1 already verified
  1687.  
  1688. Format of SYSLOG verb:
  1689. Offset    Size    Description
  1690.  00h 12 BYTEs    reserved
  1691.  0Ch    WORD    2600h (verb "SYSLOG")
  1692.  0Eh 10 BYTEs    00h
  1693.  18h    WORD    (big-endian) type
  1694.  1Ah    DWORD    (big-endian) subtype
  1695.  1Eh    DWORD    pointer to ADDITIONAL_INFO
  1696.  22h    DWORD    (big-endian) conversation ID
  1697.  26h  8 BYTEs    (big-endian) TP ID
  1698.  2Eh  8 BYTEs    (big-endian) physical unit or logical unit name
  1699.  36h    WORD    length of data
  1700.  38h    DWORD    pointer to data
  1701.  3Ch    BYTE    00h
  1702. --------N-6801--SF2200-----------------------
  1703. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH LOGICAL UNIT
  1704.     AH = 01h subfn 2200h
  1705.     DS:DX -> control block
  1706. Return: control block updated
  1707. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2700h
  1708.  
  1709. Format of control block:
  1710. Offset    Size    Description
  1711.  00h 12 BYTEs    reserved
  1712.  0Ch    WORD    2200h (verb "Detach Logical Unit")
  1713.  0Eh  6 BYTEs    00h
  1714.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  1715.  18h  8 BYTEs    (big-endian) logical unit ID
  1716.  20h    BYTE    00h
  1717. --------N-6801--SF2700-----------------------
  1718. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH PHYSICAL UNIT
  1719.     AH = 01h subfn 2700h
  1720.     DS:DX -> control block
  1721. Return: control block updated
  1722. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2200h
  1723.  
  1724. Format of control block:
  1725. Offset    Size    Description
  1726.  00h 12 BYTEs    reserved
  1727.  0Ch    WORD    2700h (verb "Detach Physical Unit")
  1728.  0Eh  6 BYTEs    00h
  1729.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  1730.  18h    BYTE    00h  type: hard
  1731.         01h  type: soft
  1732. --------N-6801--SF2B00-----------------------
  1733. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ACTIVATE DLC
  1734.     AH = 01h subfn 2B00h
  1735.     DS:DX -> control block
  1736. Return: control block updated
  1737. SeeAlso: AH=01h/SF=1B00h,AH=01h/SF=2000h
  1738.  
  1739. Format of control block:
  1740. Offset    Size    Description
  1741.  00h 12 BYTEs    reserved
  1742.  0Ch    WORD    2B00h (verb "Activate DLC")
  1743.  0Eh  6 BYTEs    00h
  1744.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  1745.  18h  8 BYTEs    (big-endian) DLC name
  1746.  20h    BYTE    adapter number
  1747. --------N-6802--SF0100-----------------------
  1748. INT 68 - APPC/PC - CONNECTION CONTROL - ALLOCATE
  1749.     AH = 02h subfn 0100h
  1750.     DS:DX -> control block
  1751. Return: control block updated
  1752. SeeAlso: AH=02h/SF=0500h
  1753.  
  1754. Format of control block:
  1755. Offset    Size    Description
  1756.  00h 12 BYTEs    reserved
  1757.  0Ch    WORD    0100h (verb "Allocate" or "MC_Allocate")
  1758.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  1759.         0 if basic verb
  1760.  0Fh  5 BYTEs    reserved (0)
  1761.  14h    WORD    (big-endian) primary return code (see below)
  1762.  16h    DWORD    (big-endian) error code (see below)
  1763.  1Ah  8 BYTEs    (big-endian) TP_ID
  1764.  22h    DWORD    (big-endian) conversation ID
  1765.  26h    BYTE    (MC_Allocate only) 0 basic conversation
  1766.                    1 mapped conversation
  1767.  27h    BYTE    00h SYNC_LEVEL = none
  1768.         01h SYNC_LEVEL = confirm
  1769.  28h    WORD    0000h
  1770.  2Ah    BYTE    00h RETURN_CONTROL: when session allocated
  1771.         01h RETURN_CONTROL: immediate
  1772.         02h RETURN_CONTROL: when session free
  1773.  2Bh  8 BYTEs    00h
  1774.  33h  8 BYTEs    (big-endian) partner logical unit name
  1775.  3Bh  8 BYTEs    (big-endian) mode name
  1776.  43h 65 BYTEs    (counted string) TP name
  1777.  84h    BYTE    00h security: none
  1778.         01h security: same
  1779.         02h security: pgm
  1780.  85h 11 BYTEs    00h
  1781.  90h 11 BYTEs    (counted string) password
  1782.  9Bh 11 BYTEs    (counted string) user ID
  1783.  A6h    WORD    PIP_DATA length
  1784.  A8h    DWORD    pointer to PIP_DATA
  1785.  
  1786. Values for primary return code:
  1787.  0000h    successful
  1788.  0001h    parameter check
  1789.  0002h    state check
  1790.  0003h    allocation error
  1791.  0005h    deallocate abended
  1792.  0006h    deallocate abended program
  1793.  0007h    deallocate abended SVC
  1794.  0008h    deallocate abended timer
  1795.  0009h    deallocate normal return
  1796.  000Ah    data posting blocked
  1797.  000Bh    posting not active
  1798.  000Ch    PROG_ERROR_NO_TRUNC
  1799.  000Dh    PROG_ERROR_TRUNC
  1800.  000Eh    PROG_ERROR_PURGING
  1801.  000Fh    CONV_FAILURE_RETRY
  1802.  0010h    CONV_FAILURE_NO_RETRY
  1803.  0011h    SVC_ERROR_NO_TRUNC
  1804.  0012h    SVC_ERROR_TRUNC
  1805.  0013h    SVC_ERROR_PURGING
  1806.  0014h    unsuccessful
  1807.  0018h    CNOS partner logical unit reject
  1808.  0019h    conversation type mixed
  1809.  F001h    APPC disabled
  1810.  F002h    APPC busy
  1811.  F003h    APPC abended
  1812.  F004h    incomplete
  1813.  
  1814. Values for error code:
  1815.  0001h bad TP ID
  1816.  0002h bad conversation ID
  1817.  0004h allocation error, no retry
  1818.  0005h allocation error, retry
  1819.  0006h data area crosses segment boundary
  1820.  0010h bad TPN length
  1821.  0011h bad CONV length
  1822.  0012h bad SYNC level
  1823.  0013h bad security selection
  1824.  0014h bad return control
  1825.  0015h SEC_TOKENS too big
  1826.  0016h PIP_LEN incorrect
  1827.  0017h no use of SNASVCMG
  1828.  0018h unknown partner mode
  1829.  0031h confirm: SYNC_NONE
  1830.  0032h confirm: bad state
  1831.  0033h confirm: NOT_LL_BDY
  1832.  0041h confirmed: bad state
  1833.  0051h deallocate: bad type
  1834.  0052h deallocate: flush bad state
  1835.  0053h deallocate: confirm bad state
  1836.  0055h deallocate: NOT_LL_BDY
  1837.  0057h deallocate: log LL_WRONG
  1838.  0061h flush: not send state
  1839.  0091h post on receipt: invalid length
  1840.  0092h post on receipt: not in receive state
  1841.  0093h post on receipt: bad fill
  1842.  00A1h prepare to receive:invalid type
  1843.  00A2h prepare to receive: unfinished LL
  1844.  00A3h prepare to receive: not in send state
  1845.  00B1h receive and wait: bad state
  1846.  00B2h receive and wait: NOT_LL_BDY
  1847.  00B5h receive and wait: bad fill
  1848.  00C1h receive immediate: not in receive state
  1849.  00C4h receive immediate: bad fill
  1850.  00E1h request to send: not in receive state
  1851.  00F1h send data: bad LL
  1852.  00F2h send data: not in send state
  1853.  0102h send error: log LL wrong
  1854.  0103h send error: bad type
  1855.  0121h test: invalid type
  1856.  0122h test: not in receive state
  1857. --------N-6802--SF0300-----------------------
  1858. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRM
  1859.     AH = 02h subfn 0300h
  1860.     DS:DX -> control block
  1861. Return: control block updated
  1862. SeeAlso: AH=02h/SF=0400h
  1863.  
  1864. Format of control block:
  1865. Offset    Size    Description
  1866.  00h 12 BYTEs    reserved
  1867.  0Ch    WORD    0300h (verb "Confirm" or "MC_Confirm")
  1868.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  1869.         0 if basic verb
  1870.  0Fh  5 BYTEs    reserved (0)
  1871.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  1872.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  1873.  1Ah  8 BYTEs    (big-endian) TP_ID
  1874.  22h    DWORD    (big-endian) conversation ID
  1875.  26h    BYTE    request to send received (0=no, 1=yes)
  1876. --------N-6802--SF0400-----------------------
  1877. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRMED
  1878.     AH = 02h subfn 0400h
  1879.     DS:DX -> control block
  1880. Return: control block updated
  1881. SeeAlso: AH=02h/SF=0300h
  1882.  
  1883. Format of control block:
  1884. Offset    Size    Description
  1885.  00h 12 BYTEs    reserved
  1886.  0Ch    WORD    0400h (verb "Confirmed" or "MC_Confirmed")
  1887.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  1888.         0 if basic verb
  1889.  0Fh  5 BYTEs    reserved (0)
  1890.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  1891.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  1892.  1Ah  8 BYTEs    (big-endian) TP_ID
  1893.  22h    DWORD    (big-endian) conversation ID
  1894. --------N-6802--SF0500-----------------------
  1895. INT 68 - APPC/PC - CONNECTION CONTROL - DEALLOCATE
  1896.     AH = 02h subfn 0500h
  1897.     DS:DX -> control block
  1898. Return: control block updated
  1899. SeeAlso: AH=02h/SF=0100h,AH=02h/SF=0300h
  1900.  
  1901. Format of control block:
  1902. Offset    Size    Description
  1903.  00h 12 BYTEs    reserved
  1904.  0Ch    WORD    0500h (verb "Deallocate" or "MC_Deallocate")
  1905.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  1906.         0 if basic verb
  1907.  0Fh  5 BYTEs    reserved (0)
  1908.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  1909.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  1910.  1Ah  8 BYTEs    (big-endian) TP_ID
  1911.  22h    DWORD    (big-endian) conversation ID
  1912.  26h    BYTE    00h
  1913.  27h    BYTE    type 0 SYNC_LEVEL
  1914.              1 FLUSH
  1915.              2 ABEND_PROC
  1916.              3 ABEND_SVC
  1917.              4 ABEND_TIMER
  1918.              5 ABEND
  1919.  28h    WORD    (MC_Deallocate only) length of error log data
  1920.  2Ah    DWORD    (MC_Deallocate only) pointer to error log data
  1921. --------N-6802--SF0600-----------------------
  1922. INT 68 - APPC/PC - CONNECTION CONTROL - FLUSH
  1923.     AH = 02h subfn 0600h
  1924.     DS:DX -> control block
  1925. Return: control block updated
  1926. SeeAlso: AH=02h/SF=0300h
  1927.  
  1928. Format of control block:
  1929. Offset    Size    Description
  1930.  00h 12 BYTEs    reserved
  1931.  0Ch    WORD    0600h (verb "Flush" or "MC_Flush")
  1932.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  1933.         0 if basic verb
  1934.  0Fh  5 BYTEs    reserved (0)
  1935.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  1936.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  1937.  1Ah  8 BYTEs    (big-endian) TP_ID
  1938.  22h    DWORD    (big-endian) conversation ID
  1939. --------N-6802--SF0700-----------------------
  1940. INT 68 - APPC/PC - CONNECTION CONTROL - GET ATTRIBUTES
  1941.     AH = 02h subfn 0700h
  1942.     DS:DX -> control block
  1943. Return: control block updated
  1944. SeeAlso: AH=02h/SF=0300h
  1945.  
  1946. Format of control block:
  1947. Offset    Size    Description
  1948.  00h 12 BYTEs    reserved
  1949.  0Ch    WORD    0700h (verb "Get_Attributes" or "MC_Get_Attributes")
  1950.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  1951.         0 if basic verb
  1952.  0Fh  5 BYTEs    reserved (0)
  1953.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  1954.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  1955.  1Ah  8 BYTEs    (big-endian) TP_ID
  1956.  22h    DWORD    (big-endian) conversation ID
  1957.  26h  8 BYTEs    (big-endian) logical unit ID
  1958.  2Eh    BYTE    00h
  1959.  2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
  1960.  30h  8 BYTEs    (big-endian) mode name
  1961.  38h  8 BYTEs    (big-endian) own net name
  1962.  40h  8 BYTEs    (big-endian) own logical unit name
  1963.  48h  8 BYTEs    (big-endian) partner logical unit name
  1964.  50h 18 BYTEs    (counted string) partner's fully qualified logical unit name
  1965.  62h    BYTE    00h
  1966.  63h 11 BYTEs    (counted string) user ID
  1967. --------N-6802--SF0800-----------------------
  1968. INT 68 - APPC/PC - CONNECTION CONTROL - GET CONVERSATION TYPE
  1969.     AH = 02h subfn 0800h
  1970.     DS:DX -> control block
  1971. Return: control block updated
  1972. SeeAlso: AH=02h/SF=0300h
  1973.  
  1974. Format of control block:
  1975. Offset    Size    Description
  1976.  00h 12 BYTEs    reserved
  1977.  0Ch    WORD    0800h (verb "Get_Type")
  1978.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  1979.         0 if basic verb
  1980.  0Fh  5 BYTEs    reserved (0)
  1981.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  1982.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  1983.  1Ah  8 BYTEs    (big-endian) TP_ID
  1984.  22h    DWORD    (big-endian) conversation ID
  1985.  26h    BYTE    (return) type (0=basic conversation, 1=mapped conversation)
  1986. --------N-6802--SF0900-----------------------
  1987. INT 68 - APPC/PC - CONNECTION CONTROL - POST ON RECEIPT
  1988.     AH = 02h subfn 0900h
  1989.     DS:DX -> control block
  1990. Return: control block updated
  1991. SeeAlso: AH=02h/SF=0A00h
  1992.  
  1993. Format of control block:
  1994. Offset    Size    Description
  1995.  00h 12 BYTEs    reserved
  1996.  0Ch    WORD    0900h (verb "Post_on_Receipt")
  1997.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  1998.         0 if basic verb
  1999.  0Fh  5 BYTEs    reserved (0)
  2000.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  2001.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  2002.  1Ah  8 BYTEs    (big-endian) TP_ID
  2003.  22h    DWORD    (big-endian) conversation ID
  2004.  26h    WORD    maximum length
  2005.  28h    BYTE    fill (0=buffer, 1=LL)
  2006. --------N-6802--SF0A00-----------------------
  2007. INT 68 - APPC/PC - CONNECTION CONTROL - PREPARE TO RECEIVE
  2008.     AH = 02h subfn 0A00h
  2009.     DS:DX -> control block
  2010. Return: control block updated
  2011. SeeAlso: AH=02h/SF=0900h,AH=02h/SF=0B00h
  2012.  
  2013. Format of control block:
  2014. Offset    Size    Description
  2015.  00h 12 BYTEs    reserved
  2016.  0Ch    WORD    0A00h (verb "Prepare_to_Receive" or "MC_Prepare_to_Receive")
  2017.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2018.         0 if basic verb
  2019.  0Fh  5 BYTEs    reserved (0)
  2020.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  2021.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  2022.  1Ah  8 BYTEs    (big-endian) TP_ID
  2023.  22h    DWORD    (big-endian) conversation ID
  2024.  26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
  2025.  27h    BYTE    locks (0=short, 1=long)
  2026. --------N-6802--SF0B00-----------------------
  2027. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE AND WAIT
  2028.     AH = 02h subfn 0B00h
  2029.     DS:DX -> control block
  2030. Return: control block updated
  2031. SeeAlso: AH=02h/SF=0C00h,AH=02h/SF=0F00h
  2032.  
  2033. Format of control block:
  2034. Offset    Size    Description
  2035.  00h 12 BYTEs    reserved
  2036.  0Ch    WORD    0B00h (verb "Receive_and_Wait" or "MC_Receive_and_Wait")
  2037.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2038.         0 if basic verb
  2039.  0Fh  5 BYTEs    reserved (0)
  2040.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  2041.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  2042.  1Ah  8 BYTEs    (big-endian) TP_ID
  2043.  22h    DWORD    (big-endian) conversation ID
  2044.  26h    BYTE    what received
  2045.         00h data
  2046.         01h data complete
  2047.         02h data incomplete
  2048.         03h confirm
  2049.         04h confirm send
  2050.         05h confirm deallocate
  2051.         06h send
  2052.  27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
  2053.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  2054.  29h    WORD    maximum length
  2055.  2Bh    WORD    data length
  2056.  2Dh    DWORD    pointer to data
  2057. --------N-6802--SF0C00-----------------------
  2058. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE IMMEDIATE
  2059.     AH = 02h subfn 0C00h
  2060.     DS:DX -> control block
  2061. Return: control block updated
  2062. SeeAlso: AH=02h/SF=0B00h,AH=02h/SF=0F00h
  2063.  
  2064. Format of control block:
  2065. Offset    Size    Description
  2066.  00h 12 BYTEs    reserved
  2067.  0Ch    WORD    0C00h (verb "Receive_Immediate" or "MC_Receive_Immediate")
  2068.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2069.         0 if basic verb
  2070.  0Fh  5 BYTEs    reserved (0)
  2071.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  2072.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  2073.  1Ah  8 BYTEs    (big-endian) TP_ID
  2074.  22h    DWORD    (big-endian) conversation ID
  2075.  26h    BYTE    what received
  2076.         00h data
  2077.         01h data complete
  2078.         02h data incomplete
  2079.         03h confirm
  2080.         04h confirm send
  2081.         05h confirm deallocate
  2082.         06h send
  2083.  27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
  2084.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  2085.  29h    WORD    maximum length
  2086.  2Bh    WORD    data length
  2087.  2Dh    DWORD    pointer to data
  2088. --------N-6802--SF0E00-----------------------
  2089. INT 68 - APPC/PC - CONNECTION CONTROL - REQUEST TO SEND
  2090.     AH = 02h subfn 0E00h
  2091.     DS:DX -> control block
  2092. Return: control block updated
  2093. SeeAlso: AH=02h/SF=0F00h,AH=02h/SF=1000h
  2094.  
  2095. Format of control block:
  2096. Offset    Size    Description
  2097.  00h 12 BYTEs    reserved
  2098.  0Ch    WORD    0E00h (verb "Request_to_Send" or "MC_Request_to_Send")
  2099.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2100.         0 if basic verb
  2101.  0Fh  5 BYTEs    reserved (0)
  2102.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  2103.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  2104.  1Ah  8 BYTEs    (big-endian) TP_ID
  2105.  22h    DWORD    (big-endian) conversation ID
  2106. --------N-6802--SF0F00-----------------------
  2107. INT 68 - APPC/PC - CONNECTION CONTROL - SEND DATA
  2108.     AH = 02h subfn 0F00h
  2109.     DS:DX -> control block
  2110. Return: control block updated
  2111. SeeAlso: AH=02h/SF=0E00h,AH=02h/SF=1000h
  2112.  
  2113. Format of control block:
  2114. Offset    Size    Description
  2115.  00h 12 BYTEs    reserved
  2116.  0Ch    WORD    0F00h (verb "Send_Data" or "MC_Send_Data")
  2117.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2118.         0 if basic verb
  2119.  0Fh  5 BYTEs    reserved (0)
  2120.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  2121.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  2122.  1Ah  8 BYTEs    (big-endian) TP_ID
  2123.  22h    DWORD    (big-endian) conversation ID
  2124.  26h    BYTE    request to send received (0=no, 1=yes)
  2125.  27h    BYTE    00h
  2126.  28h    WORD    data length
  2127.  2Ah    DWORD    pointer to data
  2128. --------N-6802--SF1000-----------------------
  2129. INT 68 - APPC/PC - CONNECTION CONTROL - SEND ERROR
  2130.     AH = 02h subfn 1000h
  2131.     DS:DX -> control block
  2132. Return: control block updated
  2133. SeeAlso: AH=02h/SF=0F00h
  2134.  
  2135. Format of control block:
  2136. Offset    Size    Description
  2137.  00h 12 BYTEs    reserved
  2138.  0Ch    WORD    1000h (verb "Send_Error" or "MC_Send_Error")
  2139.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2140.         0 if basic verb
  2141.  0Fh  5 BYTEs    reserved (0)
  2142.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  2143.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  2144.  1Ah  8 BYTEs    (big-endian) TP_ID
  2145.  22h    DWORD    (big-endian) conversation ID
  2146.  26h    BYTE    request to send received (0=no, 1=yes)
  2147.  27h    BYTE    type (0=program, 1=SVC)
  2148.  28h    DWORD    00h
  2149.  2Ch    WORD    (MC_Send_Error only) LOG_DATA length
  2150.  2Eh    DWORD    (MC_Send_Error only) pointer to LOG_DATA
  2151. --------N-6802--SF1200-----------------------
  2152. INT 68 - APPC/PC - CONNECTION CONTROL - TEST
  2153.     AH = 02h subfn 1200h
  2154.     DS:DX -> control block
  2155. Return: control block updated
  2156. SeeAlso: AH=02h/SF=1300h
  2157.  
  2158. Format of control block:
  2159. Offset    Size    Description
  2160.  00h 12 BYTEs    reserved
  2161.  0Ch    WORD    1200h (verb "Test" or "MC_Test")
  2162.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2163.         0 if basic verb
  2164.  0Fh  5 BYTEs    reserved (0)
  2165.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  2166.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  2167.  1Ah  8 BYTEs    (big-endian) TP_ID
  2168.  22h    DWORD    (big-endian) conversation ID
  2169.  26h    BYTE    (MC_Test only) test (0=posted, 1=request_to_send received)
  2170.         Note: error code has different interpretations for:
  2171.             0 posted data
  2172.             1 posted not data (primary return code = 0)
  2173.             1 bad TP_ID (primary return code = 1)
  2174. --------N-6802--SF1300-----------------------
  2175. INT 68 - APPC/PC - CONNECTION CONTROL - WAIT
  2176.     AH = 02h subfn 1300h
  2177.     DS:DX -> control block
  2178. Return: control block updated
  2179. SeeAlso: AH=02h/SF=1200h
  2180.  
  2181. Format of control block:
  2182. Offset    Size    Description
  2183.  00h 12 BYTEs    reserved
  2184.  0Ch    WORD    1300h (verb "Wait")
  2185.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2186.         0 if basic verb
  2187.  0Fh  5 BYTEs    reserved (0)
  2188.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  2189.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  2190.  1Ah  8 BYTEs    (big-endian) TP_ID
  2191.  22h    DWORD    (big-endian) conversation ID
  2192.  26h    BYTE    number of conversations to wait on
  2193.         Note: error codes have interpretations as for AH=02h/SF=1200h
  2194. --------N-6803--SF2400-----------------------
  2195. INT 68 - APPC/PC - TP STARTED
  2196.     AH = 03h subfn 2400h
  2197.     DS:DX -> control block (see below)
  2198. Return: control block updated
  2199.  
  2200. Format of control block:
  2201. Offset    Size    Description
  2202.  00h 12 BYTEs    reserved
  2203.  0Ch    WORD    2400h (verb "TP Started")
  2204.  0Eh  6 BYTEs    00h
  2205.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  2206.  18h    WORD    00h
  2207.  1Ah  8 BYTEs    (big-endian) logical unit ID
  2208.  22h  8 BYTEs    (big-endian) TP ID
  2209. --------N-6803--SF2800-----------------------
  2210. INT 68 - APPC/PC - GET ALLOCATE
  2211.     AH = 03h subfn 2800h
  2212.     DS:DX -> control block (see below)
  2213. Return: control block updated
  2214.  
  2215. Format of control block:
  2216. Offset    Size    Description
  2217.  00h 12 BYTEs    reserved
  2218.  0Ch    WORD    2800h (verb "Get ALLOCATE")
  2219.  0Eh  6 BYTEs    00h
  2220.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  2221.  18h    WORD    00h
  2222.  1Ah  8 BYTEs    (big-endian) logical unit ID
  2223.  22h    BYTE    type (00h dequeue, 01h test)
  2224.  23h    DWORD    pointer to CREATE_TP record
  2225. --------N-6803--SF2A00-----------------------
  2226. INT 68 - APPC/PC - CHANGE LOGICAL UNIT
  2227.     AH = 03h subfn 2A00h
  2228.     DS:DX -> control block (see below)
  2229. Return: control block updated
  2230.  
  2231. Format of control block:
  2232. Offset    Size    Description
  2233.  00h 12 BYTEs    reserved
  2234.  0Ch    WORD    2A00h (verb "Change Logical Unit")
  2235.  0Eh  6 BYTEs    00h
  2236.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  2237.  18h    WORD    00h
  2238.  1Ah  8 BYTEs    (big-endian) logical unit ID
  2239.  22h    DWORD    pointer to CREATE_TP_EXIT routine
  2240.         FFFFFFFFh reject incoming ALLOCATEs
  2241.         00000000h queue ALLOCATEs
  2242.  26h    DWORD    00000000h
  2243.  2Ah    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
  2244.  2Eh    DWORD    00000000h
  2245.  32h    BYTE    maximum TPs
  2246.  33h    BYTE    00h stop QUEUE_ALLOCATEs
  2247.         01h resume QUEUE_ALLOCATEs
  2248.  34h    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
  2249.  38h    DWORD    00000000h
  2250. --------N-6804-------------------------------
  2251. INT 68 - APPC/PC - TRANSACTION PROCESSING
  2252.     AH = 04h
  2253.     DS:DX -> control block (see below)
  2254. Return: control block updated
  2255.  
  2256. Format of control block:
  2257. Offset    Size    Description
  2258.  00h 12 BYTEs    reserved
  2259.  0Ch    WORD    verb (action)
  2260.         2500h TP_ENDED
  2261.         2900h TP_VALID
  2262.  0Eh  6 BYTEs    00h
  2263.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  2264.  18h    WORD    00h
  2265.  1Ah  8 BYTEs    (big-endian) TP_ID
  2266.  22h    DWORD -> CREATE_TP record (only if verb = 2900h)
  2267. --------N-6805-------------------------------
  2268. INT 68 - APPC/PC - TRANSFER MESSAGE DATA
  2269.     AH = 05h
  2270.     DS:DX -> control block (see below)
  2271. Return: control block updated
  2272.  
  2273. Format of control block:
  2274. Offset    Size    Description
  2275.  00h 12 BYTEs    reserved
  2276.  0Ch    WORD    1C00h (verb "Transfer Message Data")
  2277.  0Eh    BYTE    00h user defined
  2278.         01h NMVT
  2279.         02h alert subvectors
  2280.         03h PDSTATS subvectors
  2281.  0Fh  5 BYTEs    00h
  2282.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  2283.  18h 12 BYTEs    00h
  2284.  24h    BYTE    if bit 0 clear, add correlation subvector
  2285.         if bit 1 clear, add product set ID subvector
  2286.         if bit 2 clear, do SYSLOG
  2287.         if bit 3 clear, send SSCP_PU_SESSION
  2288.  25h    BYTE    00h
  2289.  26h    WORD    length of data
  2290.  28h  N BYTEs    data
  2291. --------N-6806-------------------------------
  2292. INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
  2293.     AH = 06h
  2294.     DS:DX -> control block (see below)
  2295. Return: control block updated
  2296.  
  2297. Format of control block:
  2298. Offset    Size    Description
  2299.  00h 12 BYTEs    reserved
  2300.  0Ch    WORD    1500h (verb "Change Number of Sessions")
  2301.  0Eh  6 BYTEs    00h
  2302.  14h    WORD    (big-endian) primary return code (see AH=02h)
  2303.  16h    DWORD    (big-endian) secondary return code (see below, AH=01h/SF=1B00h)
  2304.  1Ah  8 BYTEs    (big-endian) logical unit ID
  2305.  22h  8 BYTEs    blanks
  2306.  2Ah  8 BYTEs    (big-endian) partner logical unit name
  2307.  32h  8 BYTEs    (big-endian) mode name
  2308.  3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
  2309.         bit 6: set negotiable values
  2310.  3Bh    BYTE    partner logical unit mode session limit
  2311.  3Ch    BYTE    minimum CONWINNERS_SOURCE
  2312.  3Dh    BYTE    maximum CONWINNERS_TARGET
  2313.  3Eh    BYTE    automatic activation
  2314.  3Fh    BYTE    00h
  2315.  40h    BYTE    bit 7: drain target
  2316.         bit 6: drain source
  2317.         bit 5: target responsible, not source
  2318.  
  2319. Values for secondary return code (see also AH=01h/SF=1B00h):
  2320.   0000h accepted
  2321.   0001h negotiated
  2322.   0003h bad logical unit ID
  2323.   0004h allocation failure, no retry
  2324.   0005h allocation failure, retry
  2325.   0151h can't raise limits
  2326.   0153h all modes must reset
  2327.   0154h bad SNASVCMG limits
  2328.   0155h minimum greater than total
  2329.   0156h mode closed (prim return code = 1)
  2330.     CNOS mode closed (prim return code = 18h)
  2331.   0157h bad mode name (prim return code = 1)
  2332.     CNOS bad mode name (prim return code = 18h)
  2333.   0159h reset SNA drains
  2334.   015Ah single not SRC response
  2335.   015Bh bad partner logical unit
  2336.   015Ch exceeds maximum allowed
  2337.   015Dh change SRC drains
  2338.   015Eh logical unit detached
  2339.   015Fh CNOS command race reject
  2340. --------N-6807-------------------------------
  2341. INT 68 - APPC/PC - PASSTHROUGH
  2342.     AH = 07h
  2343.     DS:DX -> control block (format depends on application subsystem)
  2344. Return: control block updated
  2345. SeeAlso: AH=FFh
  2346. --------N-68FA-------------------------------
  2347. INT 68 - APPC/PC - ENABLE/DISABLE APPC
  2348.     AH = FAh
  2349.     AL bit 0 = 0 enable
  2350.            1 disable
  2351. SeeAlso: AH=FDh
  2352. --------N-68FB-------------------------------
  2353. INT 68 - APPC/PC - CONVERT
  2354.     AH = FBh
  2355.     DS:DX -> control block (see below)
  2356. Return: control block updated
  2357.  
  2358. Format of control block:
  2359. Offset    Size    Description
  2360.  00h 12 BYTEs    reserved
  2361.  0Ch    WORD    1A00h (verb "CONVERT")
  2362.  0Eh  6 BYTEs    00h
  2363.  14h    DWORD    (big-endian) return code
  2364.  18h    BYTE    conversion
  2365.         00h ASCII to EBCDIC
  2366.         01h EBCDIC to ASCII
  2367.  19h    BYTE    character set
  2368.         00h AE
  2369.         01h A
  2370.         02h G
  2371.  1Ah    WORD    length of string to convert
  2372.  1Ch    DWORD    pointer to source
  2373.  20h    DWORD    pointer to target
  2374. --------N-68FC-------------------------------
  2375. INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
  2376.     AH = FCh
  2377.     AL = 00h disable tracing
  2378.        = 01h enable tracing
  2379.         DX = number of bytes to keep (0=all)
  2380. SeeAlso: AH=FDh,AH=FEh
  2381. --------N-68FD-------------------------------
  2382. INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
  2383.     AH = FDh
  2384.     AL = 00h disable tracing
  2385.          01h enable tracing
  2386. SeeAlso: AH=FAh,AH=FCh,AH=FEh
  2387. --------N-68FE-------------------------------
  2388. INT 68 - APPC/PC - SET TRACE DESTINATION
  2389.     AH = FEh
  2390.     AL = trace destinations (see below)
  2391.     DS:DX -> trace stats record if AL bit 0 set
  2392. SeeAlso: AH=FCh,AH=FDh
  2393.  
  2394. Bitfields for trace destinations:
  2395.  bit 0  storage (DS:DX -> trace stats record)
  2396.  bit 1  display
  2397.  bit 2  file (trace written to file OUTPUT.PC)
  2398.  bit 3  printer
  2399.  
  2400. Format of Trace Statistics Record:
  2401. Offset    Size    Description
  2402.  00h    DWORD    pointer to storage trace buffer
  2403.  04h    WORD    max number of 80-byte records in trace
  2404.  06h    WORD    (high-order byte first!) current record number (must init to 0)
  2405.  08h    DWORD    (high-order byte first!) number of records written (init to 0)
  2406.  0Ch    DWORD    reserved
  2407. Note:    do not move record while trace is active
  2408. --------N-68FF-------------------------------
  2409. INT 68 - APPC/PC - SET PASSTHROUGH
  2410.     AH = FFh
  2411.     DS:DX -> passthrough exit routine
  2412. SeeAlso: AH=07h
  2413. --------b-69---------------------------------
  2414. INT 69 - Zenith AT BIOS - ???
  2415.    called by INT 09 handler
  2416. --------N-690100-----------------------------
  2417. INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
  2418.     AX = 0100h
  2419. Return: AL = FFh if present
  2420. SeeAlso: AX=010Fh
  2421. --------N-690101-----------------------------
  2422. INT 69 - DECnet DOS CTERM - SEND BYTE
  2423.     AX = 0101h
  2424.     BL = character
  2425.     DX = session handle
  2426. Return: AH >= 80h on error
  2427. SeeAlso: AX=0102h
  2428. --------N-690102-----------------------------
  2429. INT 69 - DECnet DOS CTERM - READ BYTE
  2430.     AX = 0102h
  2431.     DX = session handle
  2432. Return: AH >= 80h on error
  2433.     AH < 80h if successful
  2434.         AL = character
  2435. SeeAlso: AX=0101h
  2436. --------N-690103-----------------------------
  2437. INT 69 - DECnet DOS CTERM - STATUS
  2438.     AX = 0103h
  2439.     DX = session handle
  2440. Return: AH status flags
  2441.         bit 7 session has been aborted
  2442.         6 DECnet error
  2443.         1 trace data available
  2444.         0 receive data available
  2445.     AL = reason code if DECnet error (see below)
  2446. SeeAlso: AX=0104h
  2447.  
  2448. Values for reason code:
  2449.  00h normal disconnect
  2450.  01h unknown message from host
  2451.  02h protocol violation from host
  2452.  03h could not process the initiate message
  2453.  04h error receiving message from host
  2454.  05h error sending message to host
  2455.  06h error checking for message from host
  2456.  07h remote system does not support CTERM
  2457.  08h remote system does not support correct protocol version
  2458.  09h did not receive BIND message from host
  2459.  0Ah could not send BIND message to host
  2460.  0Bh no more sessions available
  2461.  0Ch session does not exist
  2462.  0Dh not enough memory to complete operation
  2463.  0Eh connection has broken
  2464. Index:    error codes;DECnet DOS CTERM|DECnet DOS CTERM;error codes
  2465. --------N-690104-----------------------------
  2466. INT 69 - DECnet DOS CTERM - DECnet STATUS
  2467.     AX = 0104h
  2468.     DX = session handle
  2469. Return: AX = reason code (see AX=0103h)
  2470. Note:    use this call when AX=0103h returns a DECnet error
  2471. SeeAlso: AX=0103h
  2472. --------N-690105-----------------------------
  2473. INT 69 - DECnet DOS CTERM - OPEN SESSION
  2474.     AX = 0105h
  2475.     DS:BX -> ASCIZ node name
  2476.     ES:DX -> buffer for session control block (see INT 6A/AH=D0h)
  2477. Return: AX <= 0 on error
  2478.     AX > 0 session handle
  2479. SeeAlso: AX=0103h,AX=0106h,AX=010Ah
  2480. --------N-690106-----------------------------
  2481. INT 69 - DECnet DOS CTERM - CLOSE SESSION
  2482.     AX = 0106h
  2483.     DX = session handle
  2484. Return: AH = 00h good close
  2485.        other error code (see AX=0103h)
  2486. SeeAlso: AX=0103h,AX=0105h
  2487. --------N-69010A-----------------------------
  2488. INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
  2489.     AX = 010Ah
  2490. Return: AX = length of session control block in bytes
  2491. SeeAlso: AX=0105h
  2492. --------N-69010B-----------------------------
  2493. INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
  2494.     AX = 010Bh
  2495.     DX = session handle
  2496. Return: AX > 0    DECnet socket for the session
  2497.        = 0    no match for handle
  2498. --------N-69010F-----------------------------
  2499. INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
  2500.     AX = 010Fh
  2501. Return: AH = 00h succesful uninstall
  2502.        other error code
  2503. Note:    CTERM must have been the last TSR loaded in order to deinstall it
  2504. SeeAlso: AX=0100h
  2505. Index:    uninstall;DECnet DOS CTERM
  2506. --------N-690A-------------------------------
  2507. INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
  2508.     AH = 0Ah
  2509.     AL = function
  2510.         00h initialize
  2511.         01h open portal
  2512.         02h close portal
  2513.         03h enable multicast address
  2514.         04h disable multicast address
  2515.         05h transmit
  2516.         06h request transmit buffer
  2517.         07h deallocate transmit buffer
  2518.         08h read channel status
  2519.         09h read datalink portal list
  2520.         0Ah read information about a datalink portal
  2521.         0Bh read and/or clear counters
  2522.         0Ch request to boot from a network server
  2523.         0Dh enable Ethernet channel
  2524.         0Eh disable Ethernet channel
  2525.         0Fh start MOP/send a System ID message
  2526.         10h stop MOP
  2527.         11h get DECPARM
  2528.         12h set DECPARM
  2529.         13h external loopback
  2530.     ES:BX -> Datalink Communication Block
  2531. Return: AX = status (see below)
  2532. SeeAlso: INT 6D"DECnet"
  2533.  
  2534. Values for status:
  2535.  00h successful
  2536.  01h hardware failed to initialize
  2537.  02h channel state was not off (must be off to execute that command)
  2538.  03h channel state is off (must be on to execute that command)
  2539.  04h address not set
  2540.  05h hardware missing
  2541.  06h buffer too small
  2542.  07h no more buffers available
  2543.  08h no more resources available
  2544.  09h promiscuous receiver active
  2545.  0Ah non exclusive
  2546.  0Bh unrecognized portal
  2547.  0Ch protocol type in use
  2548.  0Dh not a valid Multicast address
  2549.  0Eh outstanding calls
  2550.  0Fh hardware doesn't support receiving bad frames
  2551.  10h none outstanding
  2552.  11h no events
  2553.  12h broken
  2554.  13h buffer quota exceeded
  2555.  14h already initialized
  2556.  15h loopback failure
  2557. Index:    error codes;DECnet DOS|DECnet DOS;error codes
  2558.  
  2559. Format of Datalink Communication Block
  2560. Offset    Type    Description
  2561.  00h    WORD    portal ID
  2562.  02h  6 BYTEs    source address
  2563.  08h  6 BYTEs    destination address
  2564.  0Eh    DWORD    buffer pointer
  2565.  12h    WORD    buffer length
  2566.  14h    WORD    operation
  2567.  16h    BYTE    pad flag (used on open)
  2568.             00h no pad
  2569.             01h pad
  2570.  17h    BYTE    mode flag (used on open)
  2571.             00h 802.3
  2572.             01h Ethernet
  2573.             02h promiscuous
  2574.  18h    DWORD    line status change function
  2575.  1Ch    DWORD    received data function
  2576.  20h    DWORD    transmitted data function
  2577.  24h    BYTE    maximum outstanding transmits/receives
  2578.  25h  2 BYTEs    protocol type
  2579.  27h    WORD    buffers lost
  2580. --------N-694001-----------------------------
  2581. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  2582.     AX = 4001h
  2583. Return: CF clear
  2584.     AX = 0000h
  2585.     ES:SI -> ???
  2586. Note:    INT 69 is the default, and may be set to any interrupt from 60h-7Fh;
  2587.       the signature "SYSV" immediately before the interrupt handler serves
  2588.       as the installation check
  2589. SeeAlso: AX=4002h
  2590. Index:    installation check;10NET SYSSVC
  2591. --------N-694002-----------------------------
  2592. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  2593.     AX = 4002h
  2594.     ???
  2595. Return: ???
  2596. Note:    INT 69 is the default, and may be set to any interrupt from 60h-7Fh;
  2597.       the signature "SYSV" immediately before the interrupt handler serves
  2598.       as the installation check
  2599. --------N-694101-----------------------------
  2600. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  2601.     AX = 4101h
  2602. Return: CF clear
  2603.     ES:SI -> ???
  2604. SeeAlso: AX=4102h,AX=4103h,AX=4104h
  2605. --------N-694102-----------------------------
  2606. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  2607.     AX = 4102h
  2608.     ???
  2609. Return: ???
  2610. --------N-694103-----------------------------
  2611. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  2612.     AX = 4103h
  2613.     ???
  2614. Return: ???
  2615. --------N-694104-----------------------------
  2616. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  2617.     AX = 4104h
  2618.     ???
  2619. Return: ???
  2620. --------N-6942-------------------------------
  2621. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  2622.     AH = 42h
  2623.     AL = function (01h-14h)
  2624.     ???
  2625. Return: ???
  2626. --------N-6943-------------------------------
  2627. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  2628.     AH = 43h
  2629.     AL = function (01h-05h)
  2630.     ???
  2631. Return: ???
  2632. --------N-6944-------------------------------
  2633. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  2634.     AH = 44h
  2635.     AL = function (01h-03h)
  2636.     ???
  2637. Return: ???
  2638. --------N-6949-------------------------------
  2639. INT 69 - 10NET v5.0 - SYSSVC.COM - BUG
  2640.     AH = 49h
  2641. Note:    due to a fencepost error, this function branches to hyperspace
  2642. SeeAlso: AX=4001h,AH=FFh
  2643. --------G-696996-----------------------------
  2644. INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
  2645.     AX = 6996h
  2646.     DS:DX -> interrupt handler or 0000h:0000h to disable
  2647. Return: AX = 9669h
  2648. Program: ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
  2649.       a program to provide hardware interrupt handlers even while being
  2650.       debugged with a debugger that swaps interrupt vectors during
  2651.       debugging.
  2652. Note:    the interrupt vector which is to be reflected is set at installation
  2653.       time and cannot be changed
  2654. --------N-69FF-------------------------------
  2655. INT 69 - 10NET v5.0 - SYSSVC.COM - SIGNAL SYSTEM ERROR
  2656.     AH = FFh
  2657. Return: never???
  2658. Notes:    displays "System Error" message and register dump, then halts system
  2659.     INT 69 is the default, and may be set to any interrupt from 60h-7Fh;
  2660.       the signature "SYSV" immediately before the interrupt handler serves
  2661.       as the installation check
  2662. SeeAlso: AX=4001h,AH=49h
  2663. --------U-6A---------------------------------
  2664. INT 6A - OPTHELP.COM
  2665. Program: OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
  2666.       assembler
  2667. Note:    may be configured to use any interrupt from 60h to 7Fh (default 6Ah)
  2668. --------N-6A---------------------------------
  2669. INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM
  2670. Note:    the installation check consists of testing for a signature area
  2671.       immediately preceding the interrupt handler
  2672. SeeAlso: INT 6B"DECnet",INT 6D"DECnet"
  2673. Index:    installation check;DECnet DOS Local Area Transport
  2674.  
  2675. Format of signature area:
  2676. Offset    Size    Description
  2677.  -5    BYTE    major version number
  2678.  -4    BYTE    minor version number
  2679.  -3   3 BYTEs    signature (ASCII "LAT")
  2680. --------N-6A01--DHFF-------------------------
  2681. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
  2682.     AH = 01h
  2683.     DH = FFh
  2684.     AL = character
  2685.     DL = handle
  2686. Return: AH >= 80h on error
  2687. SeeAlso: AH=02h
  2688. --------N-6A02--DHFF-------------------------
  2689. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
  2690.     AH = 02h
  2691.     DH = FFh
  2692.     DL = handle
  2693. Return: AH < 80h if successful
  2694.         AL = character
  2695.     AH >= 80h on error
  2696. SeeAlso: AH=01h
  2697. --------N-6A03--DHFF-------------------------
  2698. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
  2699.     AH = 03h
  2700.     DH = FFh
  2701.     DL = handle
  2702. Return: AH = status flags (see below)
  2703.  
  2704. Bitfields for status flags:
  2705.  bit 5    transmit buffer empty
  2706.  bit 3    session in start state
  2707.  bit 2    session not active
  2708.  bit 1    unable to queue transmit data
  2709.  bit 0    receive data available
  2710. --------N-6AD0--DHFF-------------------------
  2711. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
  2712.     AH = D0h
  2713.     DH = FFh
  2714.     AL = FFh no password
  2715.        = 0Fh password at ES:DI
  2716.     ES:BX -> LAT session control block (see below)
  2717.     ES:DI -> 16-byte blank-padded password
  2718. Return: AH = 00h success
  2719.         DL = handle
  2720. SeeAlso: AX=D000h
  2721.  
  2722. Format of LAT Session Control Block:
  2723. Offset    Size    Description
  2724.  00h 18 BYTEs    service name
  2725.  12h 18 BYTEs    node name (future use)
  2726.  24h 18 BYTEs    port name (future use)
  2727.  36h    DWORD    -> session stopped post routine
  2728.  3Ah    DWORD    -> service table overflow post routine
  2729.  3Eh    DWORD    -> transmit post routine
  2730.  42h    DWORD    -> receive post routine
  2731.  46h    WORD    session status
  2732.         04h circuit failure
  2733.         08h stop slot received
  2734.  48h    WORD    slot state (LAT driver use)
  2735.  4Ah    WORD    local credits (LAT driver use)
  2736.  4Ch    DWORD    -> VCB (LAT driver use)
  2737.  50h    WORD    backward slot (LAT driver use)
  2738.  52h    WORD    forward slot (LAT driver use)
  2739.  54h    WORD    remote slot ID (LAT driver use)
  2740.  56h    WORD    local slot ID (LAT driver use)
  2741.  58h    WORD    slot byte count (LAT driver use)
  2742.  5Ah    BYTE    remote credits (LAT driver use)
  2743.  5Bh 255 BYTEs    transmitted data slot
  2744. 15Ah    BYTE    number of receive data slots (4 recommended)
  2745. 15Bh    BYTE    number of occupied slots
  2746. 15Ch    BYTE    index of next receive slot to use
  2747. 15Dh    BYTE    index of current receive slot
  2748. 15Eh    WORD    pointer to first received character
  2749. 160h  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  2750. Note:    set post routines to 0000h:0000h if polled operation will be used
  2751. --------N-6AD000DHFF-------------------------
  2752. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
  2753.     AX = D000h
  2754.     DH = FFh
  2755.     DL = handle
  2756. Return: AX = 0000h successful
  2757.        = 0001h no such session
  2758.        = 0002h session not running, try again later
  2759. SeeAlso: AH=D0h
  2760. --------N-6AD100DHFF-------------------------
  2761. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
  2762.     AX = D100h
  2763.     DH = FFh
  2764.     DL = handle
  2765. Return: AX = 0000h if successful
  2766.     AH bit 7 set if unable to send break
  2767. --------N-6AD300DHFF-------------------------
  2768. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
  2769.     AX = D300h
  2770.     DH = FFh
  2771. SeeAlso: AX=D400h
  2772. --------N-6AD400DHFF-------------------------
  2773. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
  2774.     AX = D400h
  2775.     DH = FFh
  2776.     CX = buffer size
  2777.     ES:BX -> buffer for LAT counters
  2778. Return: AX = 0000h counters copied into buffer
  2779.        = FFFFh buffer too small
  2780. SeeAlso: AX=D300h
  2781. --------N-6AD500DHFF-------------------------
  2782. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
  2783.     AX = D500h
  2784.     DH = FFh
  2785.     ES:BX -> 17-byte buffer for name
  2786. Return: AH = 00h if successful
  2787.        ES:BX buffer filled
  2788.     AX = FFFFh if end of table or no name available
  2789. Notes:    use this function to get the names of the hosts on the network
  2790.     successive calls are necessary to get all names
  2791. SeeAlso: AX=D600h
  2792. --------N-6AD600DHFF-------------------------
  2793. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
  2794.     AX = D600h
  2795.     DH = FFh
  2796. Return: AX = number of service table entries
  2797.     BX = 0000h service table has not overflowed
  2798.        = FFFFh service table has overflowed
  2799. SeeAlso: AX=D500h
  2800. --------N-6B---------------------------------
  2801. INT 6B - DECnet DOS - PORT DRIVER
  2802. Note:    the installation check consists of testing for a signature area
  2803.       immediately preceding the interrupt handler
  2804. SeeAlso: INT 6A"DECnet",INT 6C"DECnet"
  2805. Index:    installation check;DECnet DOS Port Driver
  2806.  
  2807. Format of signature area:
  2808. Offset    Size    Description
  2809.  -5    BYTE    major version number
  2810.  -4    BYTE    minor version number
  2811.  -3   3 BYTEs    signature (ASCII "PDV")
  2812. --------S-6B0000-----------------------------
  2813. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
  2814.     AX = 0000h
  2815.     CX = length
  2816.     ES:BX -> buffer
  2817. Return: CX = number of bytes written
  2818. Note:    also supported by NPC NCSI
  2819. SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h
  2820. --------S-6B0100-----------------------------
  2821. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
  2822.     AX = 0100h
  2823.     CX = length of buffer
  2824.     ES:BX -> buffer
  2825. Return: CX = number of bytes read
  2826. Note:    also supported by NPC NCSI
  2827. SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AX=FF02h
  2828. --------S-6B02-------------------------------
  2829. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
  2830.     AH = 02h
  2831.     AL nonzero
  2832. Return: AL = 00h if present and OK
  2833. Note:    also supported by NPC NCSI
  2834. SeeAlso: AX=0700h
  2835. --------S-6B0600-----------------------------
  2836. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
  2837.     AX = 0600h
  2838.     CX = command
  2839.         02h send break
  2840.         04h disconnect
  2841.         06h hold
  2842. Note:    also supported by NPC NCSI
  2843. --------S-6B0700-----------------------------
  2844. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
  2845.     AX = 0700h
  2846. Return: CH <> 00h if connection active
  2847. Note:    also supported by NPC NCSI
  2848. SeeAlso: AH=02h,AH=10h
  2849. --------S-6B10-------------------------------
  2850. INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
  2851.     AH = 10h
  2852.     ???
  2853. Return: ???
  2854. SeeAlso: AX=0700h,AH=12h,AH=1Fh
  2855. --------S-6B11-------------------------------
  2856. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
  2857.     AH = 11h
  2858.     ???
  2859. Return: ???
  2860. SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
  2861. --------S-6B12-------------------------------
  2862. INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
  2863.     AH = 12h
  2864.     ???
  2865. Return: ???
  2866. SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
  2867. --------S-6B13-------------------------------
  2868. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
  2869.     AH = 13h
  2870.     ???
  2871. Return: ???
  2872. SeeAlso: AH=14h,AH=15h
  2873. --------S-6B14-------------------------------
  2874. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
  2875.     AH = 14h
  2876.     ???
  2877. Return: ???
  2878. SeeAlso: AH=13h,AH=15h,AH=21h
  2879. --------S-6B15-------------------------------
  2880. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
  2881.     AH = 15h
  2882.     ???
  2883. Return: ???
  2884. SeeAlso: AH=13h,AH=14h
  2885. --------S-6B16-------------------------------
  2886. INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
  2887.     AH = 16h
  2888.     ???
  2889. Return: ???
  2890. SeeAlso: AH=11h,AH=12h,AH=17h
  2891. --------S-6B17-------------------------------
  2892. INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
  2893.     AH = 17h
  2894.     ???
  2895. Return: ???
  2896. SeeAlso: AH=11h,AH=16h
  2897. --------S-6B18-------------------------------
  2898. INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
  2899.     AH = 18h
  2900.     ???
  2901. Return: ???
  2902. SeeAlso: AX=0000h,AH=12h,AH=19h
  2903. --------S-6B19-------------------------------
  2904. INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
  2905.     AH = 19h
  2906.     ???
  2907. Return: ???
  2908. SeeAlso: AX=0100h,AH=12h,AH=18h
  2909. --------S-6B1A-------------------------------
  2910. INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
  2911.     AH = 1Ah
  2912.     ???
  2913. Return: ???
  2914. SeeAlso: AH=12h,AH=1Bh
  2915. --------S-6B1B-------------------------------
  2916. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
  2917.     AH = 1Bh
  2918.     ???
  2919. Return: ???
  2920. SeeAlso: AH=12h,AH=1Ah
  2921. --------S-6B1C-------------------------------
  2922. INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE BUFFER CONTROL
  2923.     AH = 1Ch
  2924.     ???
  2925. Return: ???
  2926. SeeAlso: AH=1Dh,AH=1Eh
  2927. --------S-6B1D-------------------------------
  2928. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
  2929.     AH = 1Dh
  2930.     ???
  2931. Return: ???
  2932. SeeAlso: AH=1Ch,AH=1Eh
  2933. --------S-6B1E-------------------------------
  2934. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
  2935.     AH = 1Eh
  2936.     ???
  2937. Return: ???
  2938. SeeAlso: AH=1Ch,AH=1Dh
  2939. --------S-6B1F-------------------------------
  2940. INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
  2941.     AH = 1Fh
  2942.     ???
  2943. Return: ???
  2944. SeeAlso: AH=10h,AH=12h
  2945. --------S-6B21-------------------------------
  2946. INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
  2947.     AH = 21h
  2948.     ???
  2949. Return: ???
  2950. SeeAlso: AH=14h
  2951. ----------6B6B-------------------------------
  2952. INT 6B - Tandy SCHOOLMATE PLUS - API
  2953.     AH = 6Bh
  2954.     AL = E0h to FFh
  2955. --------v-6B---------------------------------
  2956. INT 6B - VIRUS - "Saddam" - ORIGINAL INT 21h VECTOR
  2957. SeeAlso: INT 21/AX=FFFFh,INT 61"VIRUS",INT 70"VIRUS"
  2958. ----------6C---------------------------------
  2959. INT 6C - system resume vector (CONVERTIBLE)
  2960. ----------6C---------------------------------
  2961. INT 6C - DOS 3.2 Realtime Clock update
  2962. --------N-6C---------------------------------
  2963. INT 6C - DECnet DOS network scheduler
  2964. Notes:    the installation check consists of testing for a signature area
  2965.       immediately preceding the interrupt handler
  2966.     also supported by DEC Pathworks for DOS
  2967. SeeAlso: INT 6B"DECnet",INT 6D"DECnet",INT 6E"DECnet"
  2968. Index:    installation check;DECnet DOS scheduler
  2969.  
  2970. Format of signature area:
  2971. Offset    Size    Description
  2972.  -5    BYTE    major version number
  2973.  -4    BYTE    minor version number
  2974.  -3   3 BYTEs    signature (ASCII "SCH")
  2975. --------V-6D---------------------------------
  2976. INT 6D - VGA - internal
  2977. Note:    used by IBM, Paradise, Video7, and NCR
  2978. --------V-6D---------------------------------
  2979. INT 6D - ATI VGA Wonder - VIDEO BIOS ENTRY POINT
  2980.    points at the original INT 10 entry point set up by the ATI BIOS
  2981. SeeAlso: INT 10
  2982. --------V-6D---------------------------------
  2983. INT 6D - Trident SVGA - VIDEO BIOS HANDLER
  2984. Note:    the BIOS INT 10 handler on various Trident VGA cards consists merely
  2985.       of a call to INT 6D followed by an IRET.
  2986. --------N-6D---------------------------------
  2987. INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM
  2988.     AH = function
  2989.     ???
  2990. Return: ???
  2991. Note:    the installation check consists of testing for a signature area
  2992.       immediately preceding the interrupt handler
  2993. SeeAlso: INT 69/AH=0Ah,INT 6C"DECnet",INT 6E"DECnet"
  2994. Index:    installation check;DECnet DOS Data Link Layer
  2995.  
  2996. Format of signature area:
  2997. Offset    Size    Description
  2998.  -5    BYTE    major version number
  2999.  -4    BYTE    minor version number
  3000.  -3   3 BYTEs    signature (ASCII "SCH")
  3001. --------N-6E---------------------------------
  3002. INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
  3003. Notes:    this is the main DECnet DOS access, and is described in Digital manual
  3004.       AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
  3005.     there is a signature/data area immediately prior to the interrupt
  3006.       handler which may be used as an installation check
  3007. Index:    installation check;DECnet DOS
  3008.  
  3009. Format of signature area:
  3010. Offset    Size    Description
  3011.  -5    BYTE    major version number
  3012.  -4    BYTE    minor version number
  3013.  -3   3 BYTEs    signature (ASCII "DNP")
  3014. --------N-6F---------------------------------
  3015. INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
  3016. --------N-6F00-------------------------------
  3017. INT 6F - 10NET - LOGIN
  3018.     AH = 00h
  3019.     DS:DX -> login record (see below)
  3020. Return: CL = security level
  3021.     AX = status (see below)
  3022. SeeAlso: AH=01h,INT 21/AX=4402h"10MEMMGR"
  3023.  
  3024. Format of login record:
  3025. Offset    Size    Description
  3026.  00h  8 BYTEs    user name
  3027.  08h  8 BYTEs    password
  3028.  10h 12 BYTEs    name of SuperStation
  3029.  
  3030. Values for status:
  3031.     0000h successful
  3032.     01FFh time out on response
  3033.     02FFh network (hardware) error
  3034.     03FFh invalid password
  3035.     04FFh local resource not available
  3036.     05FFh server resource not available
  3037.     06FFh already logged in under different name
  3038.     07FFh login security failure (node)
  3039.     08FFh not logged in
  3040.     09FFh position calc error
  3041.     0AFFh receive subfunction not = send subfunction (i.e. read, write)
  3042.     0BFFh request function not in range
  3043.     0CFFh no more server file handle entries left
  3044.     0DFFh no more shared file table entries left
  3045.     0EFFh no more user file handle entries left
  3046.     0FFFh chat permit not on
  3047.     10FFh not a server on request
  3048.     11FFh no transporter board error
  3049.     12FFh time out on send
  3050.     13FFh item not found (spool item not on queue)
  3051.     14FFh DOS access incompatible
  3052.     15FFh record already locked
  3053.     16FFh invalid parameter
  3054.     17FFh record lock time out error
  3055.     18FFh currently spooling to named device
  3056.     19FFh dropped receive message (throttle)
  3057.     1AFFh open sharing violation
  3058.     1BFFh no more tuf entries left
  3059.     1CFFh not file owner on open
  3060.     1DFFh read security not passed
  3061.     1EFFh write security not passed
  3062.     1FFFh group security not passed
  3063.     20FFh security file failure
  3064.     21FFh activity file failure
  3065.     22FFh spool cntrl file failure
  3066.     23FFh device not mounted (spooling)
  3067.     24FFh spool file has not been terminated
  3068.     25FFh device not mounted or is not being shared
  3069.     26FFh duplicate node id
  3070.     27FFh file not found error
  3071.     28FFh no more files
  3072.     29FFh unknown internal system error
  3073.     2AFFh print queue is full or corrupted
  3074.     2BFFh invalid function
  3075.     2CFFh invalid handle
  3076.     2DFFh too many files opened
  3077.     2EFFh path not found
  3078.     2FFFh named file is active
  3079. /* I've gotten one submission which says FFxxh, and another with xxFFh */
  3080. /* I don't know which way around these should be, does somebody else know? */
  3081.     FF01h timeout
  3082.     FF02h network error
  3083.     FF03h invalid password
  3084.     FF04h no local buffer
  3085.     FF05h superstation not available
  3086.     FF06h node already logged in
  3087.     FF07h login not valid from this node
  3088.     FF08h node ID already in use
  3089.     FF16h invalid parameter (bad length, invalid node ID, etc)
  3090.     FF17h record locked by another user
  3091.     FF18h sent message has been dropped
  3092. Index:    error codes;10-Net|10-Net;error codes
  3093. --------N-6F01-------------------------------
  3094. INT 6F - 10NET - LOGOFF
  3095.     AH = 01h
  3096.     DS:DX -> superstation ID or nulls (12 bytes)
  3097. Return: CX = number of files closed
  3098.     AX = status (see AH=00h)
  3099.         FF08h superstation ID not already logged in
  3100. SeeAlso: AH=00h
  3101. --------N-6F02-------------------------------
  3102. INT 6F - 10NET - STATUS OF NODE
  3103.     AH = 02h
  3104.     DS:DX -> 512-byte status record (see below)
  3105. Return: CF set on error
  3106.         AX = error code (see AH=00h)
  3107.     CF clear if successful
  3108.  
  3109. Format of node status record:
  3110. Offset    Size    Description
  3111.  00h  8 BYTEs    user name (0 if none)
  3112.  08h    BYTE    station type
  3113.            00h workstation
  3114.            01h superstation
  3115.            02h gateway station
  3116.            03h gateway active
  3117.            04h logged into multiple superstations
  3118.            05h reserved
  3119.  09h 24 BYTEs    list of superstations logged into more than one superstation
  3120.  21h 12 BYTEs    node ID
  3121.  2Dh    WORD    message count for this station (send for user node, receive for
  3122.         superstations)
  3123. ---for superstations only---
  3124.  2Fh    WORD    drives allocated (bit 0=A:, bit 1=B:,...)
  3125.  31h    BYTE    user service flags (see below)
  3126.  32h    BYTE    printers allocated (bit 0=LPT1,...)
  3127.  33h    BYTE    number of unprinted spool files
  3128.  34h    BYTE    number of opened files
  3129.  35h    BYTE    number of logged on nodes
  3130.  36h    BYTE    primary drive (1=A:)
  3131.  37h    BYTE    reserved
  3132.  38h  N BYTEs    list of logged on node IDs (each 12 bytes, max 37 IDs)
  3133. 1F4h  3 BYTEs    time: sec/min/hrs
  3134. 1F7h  3 BYTEs    date: day/mon/year-1980
  3135.  
  3136. Bitfields for user service flags:
  3137.  bit 7    gate
  3138.  bit 6    print permit on
  3139.  bit 4    SUBMIT is on
  3140.  bit 3    mail waiting for node
  3141.  bit 2    calendar waiting for you
  3142.  bit 1    news waiting for you
  3143.  bit 0    mail waiting for you
  3144. --------W-6F0204-----------------------------
  3145. INT 6F C - MS Windows 3.0 - DOS APPLICATION SWITCH HOOK
  3146.     AX = 0204h
  3147. Return: AX = status
  3148.         0000h switch is allowed
  3149.         other switch not allowed
  3150. Note:    intercepting this call will allow a DOS application to ensure that
  3151.       Windows will not switch away from it.
  3152. --------N-6F03-------------------------------
  3153. INT 6F - 10NET - GET ADDRESS OF CONFIGURATION TABLE
  3154.     AH = 03h
  3155.     DS:DI -> node ID (optional)
  3156. Return: ES:BX -> configuration table 
  3157. SeeAlso: AH=13h
  3158.  
  3159. Format of configuration table:
  3160. Offset    Size    Description
  3161. -41    WORD    local device table address
  3162. -39    WORD    extended network error mapping table address
  3163. -37    WORD    shared device table address
  3164. -35    WORD    mounted device table address
  3165. -33    BYTE    receive buffer counter
  3166. -32    BYTE    collect buffer counter
  3167. -31    WORD    TUF address
  3168. -29    BYTE    enable flag
  3169. -28    BYTE    FCB keep flag
  3170. -27    WORD    reserved
  3171. ---up to here, 10NET v3.3---
  3172. -25    WORD    count of dropped Send6F
  3173. -23    WORD    buffer start address
  3174. -21    WORD    comm driver base address
  3175. -19    WORD    send/receive retry count
  3176. -17    BYTE    number of 550ms loops before timeout
  3177. -16    WORD    UFH address
  3178. -14    WORD    CDIR address
  3179. -12    WORD    LTAB address
  3180. -10    WORD    SFH address
  3181. -8    WORD    FTAB address
  3182. -6    WORD    RLTAB address
  3183. -4    WORD    SMI address
  3184. -2    WORD    NTAB address
  3185.  00h    WORD    address of first CT_DRV
  3186.  02h    BYTE    number of DRV entries
  3187.  03h  8 BYTEs    login name
  3188.  0Bh 12 BYTEs    node ID (blank-padded)
  3189.  17h  6 BYTEs    node address
  3190.  1Dh    BYTE    flag
  3191.  1Eh    BYTE    CT_CFLG (chat permit)
  3192.         bit 1: sound bell
  3193.         bit 0: CHAT permit
  3194.  1Fh    BYTE    CT_PSFLG
  3195.         bit 5: PRINT permit
  3196.         bit 4: KB initiated
  3197.         bit 3: CHAT called FOXPTRM
  3198.         bit 2: SUBMIT active
  3199.         bit 1: SUBMIT received
  3200.         bit 0: SUBMIT permit
  3201.  20h    BYTE    in 10Net flag
  3202.  21h    WORD    receive message count
  3203.  23h    WORD    send message count
  3204.  25h    WORD    retry count
  3205.  27h    WORD    failed count
  3206.  29h    WORD    driver errors
  3207.  2Bh    WORD    dropped responses/CHATs
  3208.  2Dh  9 BYTEs    LIST ID/NTAB address (3 entries--LPT1-3)
  3209.  36h  6 BYTEs    AUX ID/NTAB address (2 entries--COM1-2)
  3210.  3Ch    BYTE    active CB channel
  3211.  3Dh    BYTE    received 6F messages on queue
  3212.  3Eh  9 BYTEs    activity counters for channels 1-9
  3213. ---beyond here, 10NET v3.3---
  3214.  47h    BYTE    bit 0: RS232 gate
  3215.         bit 1: Send6F gate (user set)
  3216.  48h    DWORD    pointer into gate (user set)
  3217.  4Ch    DWORD    pointer into 10Net send
  3218.  50h  N WORDs    addresses of timer blocks
  3219. --------N-6F04-------------------------------
  3220. INT 6F - 10NET - SEND
  3221.     AH = 04h
  3222.     DS:BX -> send record (see below)
  3223.     DS:DX -> data (max 1024 bytes)
  3224. Return: CF set on error
  3225.         AX = error code (see AH=00h)
  3226.     CF clear if successful
  3227. SeeAlso: AH=05h,AH=09h,AH=0Ah
  3228.  
  3229. Format of send record:
  3230. Offset    Size    Description
  3231.  00h 12 BYTEs    receiving node's ID
  3232.          if first byte has high-order bit set, message is directed to
  3233.           the CT_RGATE vector at the receiver
  3234.         if second byte is 00h, first byte is taken as a CB
  3235.           channel number and delivered to all nodes on same channel
  3236.  0Ch    WORD     length of data at DX
  3237. --------N-6F05-------------------------------
  3238. INT 6F - 10NET - RECEIVE
  3239.     AH = 05h
  3240.     CX = number of seconds before timeout
  3241.     DS:DX -> receive buffer (see below)
  3242. Return: CF set on error
  3243.         AX = error code (see AH=00h)
  3244.     CF clear if successful
  3245.         AH = FEh if dequeued message is a CB message
  3246. SeeAlso: AH=04h
  3247.  
  3248. Format of receive buffer:
  3249. Offset    Size    Description
  3250.  00h 12 BYTEs    sending node's ID
  3251.  0Ch    WORD    length of message
  3252.  0Eh  N BYTEs    message (maximum 1024 bytes)
  3253. --------N-6F07-------------------------------
  3254. INT 6F - 10NET - LOCK HANDLE
  3255.     AH = 07h
  3256.     BX = file handle
  3257.     CX:DX = starting offset in file
  3258.     SI = record length
  3259. Return: CF set on error
  3260.         AX = error code (see also AH=00h)
  3261.         0002h file not found
  3262.     CF clear if successful
  3263. SeeAlso: AH=08h,AH=0Fh,INT 21/AH=5Ch
  3264. --------N-6F08-------------------------------
  3265. INT 6F - 10NET - UNLOCK HANDLE
  3266.     AH = 08h
  3267.     BX = file handle
  3268.     AL = mode
  3269.         00h unlock all
  3270.         01h unlock record at CX:DX
  3271. Return: CF set on error
  3272.         AX = error code (see also AH=00h)
  3273.         0002h file not found
  3274.     CF clear if successful
  3275. SeeAlso: AH=07h,AH=0Fh,INT 21/AH=5Ch
  3276. --------N-6F09-------------------------------
  3277. INT 6F - 10NET - SUBMIT
  3278.     AH = 09h
  3279.     DS:BX -> submit record (see below)
  3280. SeeAlso: AH=04h
  3281.  
  3282. Format of submit record:
  3283. Offset    Size    Description
  3284.  00h 12 BYTEs    destination node ID (must be logged in)
  3285.  0Ch    WORD    length+2 of following 'command line' text
  3286.  0Eh  N BYTEs    command line text (<=100 bytes), system adds CR
  3287. --------N-6F0A-------------------------------
  3288. INT 6F - 10NET - CHAT
  3289.     AH = 0Ah
  3290.     DS:BX -> control parameters (see below)
  3291.     DS:DX -> chat message (see below)
  3292. SeeAlso: AH=04h
  3293.  
  3294. Format of control parameters:
  3295. Offset    Size    Description
  3296.  00h  8 BYTEs    sender ID, defaults to node's userID if nulls
  3297.  08h  8 BYTEs    destination user ID, 'EVERYONE' may be used
  3298.  10h 12 BYTEs    destination node ID
  3299.  
  3300. Format of chat message:
  3301. Offset    Size    Description
  3302.  00h    WORD    length+2 of following text
  3303.  02h  N BYTEs    text, max 101 bytes
  3304. --------N-6F0B-------------------------------
  3305. INT 6F - 10NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
  3306.     AH = 0Bh
  3307.     AL = drive number or 0
  3308.     ES:SI = Ethernet address or 0
  3309.     DS:BX -> 31-byte ASCIZ semaphore name
  3310. Return: AL = status (see below)
  3311. Note:    same as INT 60/AH=12h
  3312. SeeAlso: AH=0Ch,INT 60/AH=12h
  3313.  
  3314. Values for status:
  3315.  00h successful
  3316.  01h semaphore currently locked
  3317.  02h server not responding
  3318.  03h invalid semaphore name
  3319.  04h semaphore list is full
  3320.  05h invalid drive ID
  3321.  06h invalid Ethernet address
  3322.  07h not logged in
  3323.  08h write to network failed
  3324.  09h semaphore already logged in this CPU
  3325. Index:    error codes;10-Net|10-Net;error codes
  3326. --------N-6F0C-------------------------------
  3327. INT 6F - 10NET - UNLOCK SEMAPHORE
  3328.     AH = 0Ch
  3329.     AL = drive number or 0
  3330.     ES:SI = Ethernet address or 0
  3331.     DS:BX -> 31-byte ASCIZ semaphore name
  3332. Return: AL = status (see also AH=0Bh)
  3333.         01h semaphore not locked
  3334. Note:    same as INT 60/AH=13h
  3335. SeeAlso: AH=0Bh,INT 60/AH=13h
  3336. --------N-6F0D-------------------------------
  3337. INT 6F - 10NET - WHO
  3338.     AH = 0Dh
  3339.     AL = type code
  3340.         01h return superstations only
  3341.         02h return non-superstations only
  3342.         otherwise return all
  3343.     CX = length of data
  3344.     DS:DX -> array of records to be filled (see below)
  3345. Return: CL = number of records returned (responding stations)
  3346.  
  3347. Format of station record:
  3348. Offset    Size    Description
  3349.  00h 12 BYTEs    node ID
  3350.  0Ch    BYTE    flags
  3351.         bit 1: workstation
  3352.         bit 2: superstation
  3353.         bit 3: xgate
  3354.         bit 4: active gate
  3355. ---if AL = 01h---
  3356.  0Dh    BYTE    version number
  3357.     WORD    level number of 10Net software in responding node
  3358. ---if AL = 02h---
  3359.  0Dh  8 BYTEs    user ID
  3360.  15h    BYTE    version number
  3361.  16h    WORD    level number
  3362. --------N-6F0E-------------------------------
  3363. INT 6F - 10NET - SPOOL/PRINT
  3364.     AH = 0Eh
  3365.     DS:DX -> spool/print record (see below)
  3366. Return: CF set on error
  3367.         AX = error code (see also AH=00h)
  3368.         FF17h device not mounted
  3369.         FF18h already spooling to named device
  3370.     CF clear if successful
  3371.  
  3372. Values for operation code:
  3373.  0000h initiate spool
  3374.  0001h abort print
  3375.  0002h close spool
  3376.  0003h delete spool
  3377.  0004h print
  3378.  0005h get report info
  3379.  0006h set chat template
  3380.  0007h queue
  3381.  0008h return queue
  3382.  0009h queue non-spooled file for printing
  3383.  
  3384. Format of Spool/Print record:
  3385. Offset    Size    Description
  3386.  00h    WORD    operation code (see above)
  3387.  02h 11 BYTEs    file name in FCB format
  3388. ---if operation code = 00h or 06h---
  3389.  0Dh    BYTE    notification flags (see below)
  3390.  0Eh    BYTE    days to keep (FFh=forever)
  3391.  0Fh    BYTE    bits 0,1: device (1=LPT1)
  3392.         bits 4-7: remote drive to store spool file (1=A,...)
  3393.  10h    WORD    length of following data area
  3394.  12h  N BYTEs    up to 64 bytes of description
  3395. ---if operation code = 03h---
  3396.  0Dh  8 BYTEs    user ID to associate with filename
  3397. ---if operation code = 04h---
  3398.  0Dh    WORD    block number
  3399.  0Fh  8 BYTEs    user ID to associate with filename
  3400. ---if operation code = 05h---
  3401.  0Dh    BYTE    RRN to start retrieve
  3402.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  3403.         bit 3: if set, return entries for all users
  3404.  0Fh    WORD    length of following area
  3405.  11h  N BYTEs    up to 1500 bytes to receive $SCNTL records returned
  3406. ---if operation code = 07h---
  3407.  0Dh    BYTE    queue number
  3408.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  3409.  0Fh    WORD    number of bytes of test print to be done
  3410.  11h    BYTE    code: 01h print device
  3411.               02h test print count
  3412.               03h prn
  3413. ---if operation code = 08h---
  3414.  0Dh    BYTE    queue location or $SCNTL location to start access
  3415.             returns next item for access:
  3416.                 00h-7Fh queued items
  3417.                 80h-FEh non-queued, non-printed items
  3418.                 FFh    no more items
  3419.  0Eh    WORD    unused
  3420.  10h    WORD    length of following area
  3421.  12h  N BYTEs    up to 64 bytes to receive $SCNTL records
  3422. ---if operation code = 09h---
  3423.  0Dh  3 BYTEs    unused
  3424.  10h  N BYTEs    path to non-spooled file to be queued for printing
  3425.  
  3426. Bitfields for notification flags:
  3427.  bit 7    queue to top
  3428.  bit 6    do ID page
  3429.  bit 5    no form feed
  3430.  bit 4    reserved
  3431.  bit 3    explicity queuing only
  3432.  bit 2    notify at print completion
  3433.  bit 1    notify server operator/reply
  3434.  bit 0    notify at print start
  3435.  
  3436. Format of $SCNTL record:
  3437. Offset    Size    Description
  3438.  00h  8 BYTEs    user ID
  3439.  08h 11 BYTEs    filename in FCB format
  3440.  13h  6 BYTEs    node ID
  3441.  19h  3 BYTEs    creation date
  3442.  1Ch    BYTE    SCNTL flags (see below)
  3443.  1Dh    BYTE    retention time in days
  3444.  1Eh    BYTE    printing device (LPTx)
  3445.  1Fh  3 BYTEs    date last printed (0 = never)
  3446.  22h    BYTE    device containing spoolfile
  3447.  23h    WORD    bytes to print for test print
  3448.  25h    WORD    block number to start print
  3449.  27h    BYTE    reserved
  3450.  
  3451. Bitfields for SCNTL flags:
  3452.  bit 7    queue to top
  3453.  bit 6    do ID page
  3454.  bit 5    no form feed at end
  3455.  bit 4    reserved
  3456.  bit 3    explicit queueing only
  3457.  bit 2    notify at completion
  3458.  bit 1    notify server operator/reply
  3459.  bit 0    notify at start
  3460. --------N-6F0F-------------------------------
  3461. INT 6F - 10NET v5.0 - "RM LOCK" - ???
  3462.     AH = 0Fh
  3463.     ???
  3464. Return: ???
  3465. SeeAlso: AH=07h,AH=08h
  3466. --------N-6F10-------------------------------
  3467. INT 6F - 10NET - ATTACH/DETACH PRINTER
  3468.     AH = 10h
  3469.     AL = subfunction
  3470.         00h initiate spooling if LPT1 is mounted
  3471.         01h terminate spooling if LPT1 is mounted
  3472. SeeAlso: INT 21/AX=5D08h
  3473. --------N-6F11-------------------------------
  3474. INT 6F - 10NET - LOCK FCB
  3475.     AH = 11h
  3476.     AL = mode
  3477.         01h sequential
  3478.         02h random
  3479.         03h random block
  3480.         CX = number of records
  3481.     DS:DX -> FCB (see INT 21/AH=0Fh)
  3482. Return: CF set on error
  3483.         AX = error code (see also AH=00h)
  3484.         0002h file not found
  3485.     CF clear if successful
  3486. SeeAlso: AH=12h
  3487. --------N-6F12-------------------------------
  3488. INT 6F - 10NET - UNLOCK FCB
  3489.     AH = 12h
  3490.     AL = mode
  3491.         00h sequential
  3492.         01h random
  3493.         02h random block
  3494.         CX = number of records
  3495.     DS:DX -> FCB (see INT 21/AH=0Fh)
  3496. Return: CF set on error
  3497.         AX = error code (see also AH=00h)
  3498.         0002h file not found
  3499.     CF clear if successful
  3500. SeeAlso: AH=11h
  3501. --------N-6F13-------------------------------
  3502. INT 6F - 10NET v3.3+ - GET REMOTE CONFIGURATION TABLE ADDRESS
  3503.     AH = 13h
  3504.     DS:DX -> node ID, 12 bytes blank-padded
  3505. Return: CF set on error
  3506.         AX = error code (see AH=00h)
  3507.     CF clear if successful
  3508.         ES:BX = configuration table address on given machine
  3509. SeeAlso: AH=03h
  3510. --------N-6F14-------------------------------
  3511. INT 6F - 10NET v3.3+ - GET REMOTE MEMORY
  3512.     AH = 14h
  3513.     BX:SI = address of remote memory
  3514.     CX = length (<=1024 bytes)
  3515.     DS:DX -> node ID, 12 bytes blank-padded
  3516.     DS:DI -> area to receive remote memory image
  3517. Return: CF set on error
  3518.         AX = error code (see AH=00h)
  3519.     CF clear if successful
  3520.         CX = amount of memory copied to DS:SI
  3521. --------N-6F1501-----------------------------
  3522. INT 6F - 10NET v3.3+ - GET SHARED DEVICE ENTRY
  3523.     AX = 1501h
  3524.     BX = zero-based index
  3525.     DS:SI -> node ID, 12 bytes blank-padded
  3526.     ES:DI -> 85-byte buffer for shared device table entry (see below)
  3527. Return: CF set on error
  3528.         AX = error code (see AH=00h)
  3529.     CF clear if successful
  3530.         ES:DI buffer contains shared device table entry of BXth device:
  3531. SeeAlso: AX=1502h,AX=1503h
  3532.  
  3533. Format of shared device table entry:
  3534. Offset    Size    Description
  3535.  00h  8 BYTEs    device
  3536.  08h  8 BYTEs    alias
  3537.  10h 64 BYTEs    path
  3538.  50h  8 BYTEs    password
  3539.  58h    BYTE    access
  3540.  59h  4 BYTEs    mask
  3541. --------N-6F1502-----------------------------
  3542. INT 6F - 10NET v3.3+ - SET SHARED DEVICE ENTRY
  3543.     AX = 1502h
  3544.     DS:SI -> node ID, 12 bytes blank-padded
  3545.     ES:DI -> valid shared device table entry
  3546. Return: CF set on error
  3547.         AX = error code (see AH=00h)
  3548.     CF clear if successful
  3549. SeeAlso: AX=1501h,AX=1503h
  3550. --------N-6F1503-----------------------------
  3551. INT 6F - 10NET v3.3+ - DELETE SHARED DEVICE ENTRY
  3552.     AX = 1503h
  3553.     BX = zero-based index
  3554.     DS:SI -> node ID, 12 bytes blank-padded
  3555. Return: CF set on error
  3556.         AX = error code (see AH=00h)
  3557.     CF clear if successful
  3558. SeeAlso: AX=1501h,AX=1502h
  3559. --------N-6F16-------------------------------
  3560. INT 6F - 10NET v5.0 - "GL WHO" - ???
  3561.     AH = 16h
  3562.     ???
  3563. Return: ???
  3564. --------N-6F17-------------------------------
  3565. INT 6F - 10NET v3.3+ - MOUNT
  3566.     AH = 17h
  3567.     AL = local drive number (0=A:)
  3568.     BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
  3569.     DS:DX -> node ID, 12 bytes blank-padded
  3570. Return: CF set on error
  3571.         AX = error code (see AH=00h)
  3572.     CF clear if successful
  3573. SeeAlso: AH=18h
  3574. --------N-6F18-------------------------------
  3575. INT 6F - 10NET v3.3+ - UNMOUNT
  3576.     AH = 18h
  3577.     AL = local drive number (0=A:)
  3578.     BL = type
  3579.         00h        disk
  3580.         01h-03h LPTn
  3581.         04h,05h COMx
  3582. Return: CF set on error
  3583.         AX = error code (see AH=00h)
  3584.     CF clear if successful
  3585. SeeAlso: AH=17h
  3586. --------N-6F19-------------------------------
  3587. INT 6F - 10NET v5.0 - "AUDIT" - ???
  3588.     AH = 19h
  3589.     ???
  3590. Return: ???
  3591. --------N-6F1A-------------------------------
  3592. INT 6F - 10NET v5.0 - "BULL" - ???
  3593.     AH = 1Ah
  3594.     ???
  3595. Return: ???
  3596. --------N-6F1B-------------------------------
  3597. INT 6F - 10NET v5.0 - "GMOUNT" - ???
  3598.     AH = 1Bh
  3599.     ???
  3600. Return: ???
  3601. --------N-6F1C-------------------------------
  3602. INT 6F - 10NET v5.0 - "GLOGIN" - ???
  3603.     AH = 1Ch
  3604.     ???
  3605. Return: ???
  3606. --------N-6F1D-------------------------------
  3607. INT 6F - 10NET v5.0 - "TABDATA" - ???
  3608.     AH = 1Dh
  3609.     ???
  3610. Return: ???
  3611. --------N-6F1E-------------------------------
  3612. INT 6F - 10NET v5.0 - "SCHED" - ???
  3613.     AH = 1Eh
  3614.     ???
  3615. Return: ???
  3616. --------N-6F1F-------------------------------
  3617. INT 6F - 10NET v5.0 - "WHOAMI" - ???
  3618.     AH = 1Fh
  3619.     ???
  3620. Return: ???
  3621. --------N-6F20-------------------------------
  3622. INT 6F - 10NET v5.0 - ???
  3623.     AH = 20h
  3624.     ???
  3625. Return: ???
  3626. --------N-6F21-------------------------------
  3627. INT 6F - 10NET v5.0 - ???
  3628.     AH = 21h
  3629.     ???
  3630. Return: ???
  3631. --------N-6F22-------------------------------
  3632. INT 6F - 10NET v5.0 - ???
  3633.     AH = 22h
  3634.     ???
  3635. Return: ???
  3636. --------b-6F22--BP0012-----------------------
  3637. INT 6F - HP ES-12 EXTENDED BIOS - READ CMOS MEMORY
  3638.     AH = 22h
  3639.     BP = 0012h
  3640.     BL = address of CMOS byte to read
  3641. Return: AH = status
  3642.     AL = byte read
  3643.     BP, DS destroyed
  3644. SeeAlso: BP=0012h/AH=24h
  3645. --------b-6F24--BP0012-----------------------
  3646. INT 6F - HP ES-12 EXTENDED BIOS - WRITE CMOS MEMORY
  3647.     AH = 24h
  3648.     BP = 0012h
  3649.     BL = address of CMOS byte to write
  3650.     AL = new value
  3651. Return: AH = status
  3652.     BP, DS destroyed
  3653. SeeAlso: BP=0012h/AH=22h
  3654. --------H-70---------------------------------
  3655. INT 70 - IRQ8 - CMOS REAL-TIME CLOCK
  3656. Desc:    this interrupt is called when the real-time clock chip generates an
  3657.       alarm or periodic interrupt, among others.  The periodic interrupt
  3658.       occurs 1024 times per second.
  3659. Nots:    many BIOSes turn off the periodic interrupt in the INT 70h handler
  3660.       unless in an event wait (see INT 15/AH=83h or INT 15/AH=86h).
  3661.     may be masked by setting bit 0 on I/O port A1h
  3662. SeeAlso: INT 08,INT 0F"HP 95LX",INT 15/AH=01h"Amstrad",INT 15/AH=83h
  3663. SeeAlso: INT 15/AH=86h,INT 1A/AH=02h,INT 58"DESQview"
  3664. --------v-70---------------------------------
  3665. INT 70 - VIRUS - "Stupid" - ORIGINAL INT 21h VECTOR
  3666. Note:    the virus sets this interrupt to be the same as INT 21, and then
  3667.       performs only INT 70 calls; since INT 70 is also generated by the
  3668.       real-time clock on the PC/AT and higher, this could cause random
  3669.       actions on an infected system
  3670. SeeAlso: INT 6B"VIRUS",INT 9E"VIRUS",INT E0"VIRUS"
  3671. --------H-71---------------------------------
  3672. INT 71 - IRQ9 - REDIRECTED TO INT 0A BY BIOS
  3673. Notes:    may be masked by setting bit 1 on I/O port A1h
  3674.     the default BIOS handler invokes INT 0A for compatibility, since the
  3675.       pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
  3676.       AT expansion bus.
  3677.     under DESQview, only the INT 15h vector and BASIC segment address (the
  3678.       word at 0000h:0510h) may be assumed to be valid for the handler's
  3679.       process
  3680. SeeAlso: INT 0A,INT 59
  3681. --------H-72---------------------------------
  3682. INT 72 - IRQ10 - RESERVED
  3683. Note:    may be masked by setting bit 2 on I/O port A1h
  3684. SeeAlso: INT 5A
  3685. --------H-73---------------------------------
  3686. INT 73 - IRQ11 - RESERVED
  3687. Note:    may be masked by setting bit 3 on I/O port A1h
  3688. SeeAlso: INT 5B
  3689. --------H-74---------------------------------
  3690. INT 74 - IRQ12 - POINTING DEVICE (PS)
  3691. Notes:    may be masked by setting bit 4 on I/O port A1h
  3692.     under DESQview, only the INT 15h vector and BASIC segment address (the
  3693.       word at 0000h:0510h) may be assumed to be valid for the handler's
  3694.       process
  3695. SeeAlso: INT 33,INT 5C
  3696. --------H-75---------------------------------
  3697. INT 75 - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)
  3698.    redirected to INT 02 by the BIOS, for compatibility with the PC
  3699. Notes:    may be masked by setting bit 5 on I/O port A1h
  3700.     not all clones wire the coprocessor to generate this IRQ; some systems
  3701.       generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
  3702.       (see INT 10"COPROCESSOR")
  3703.     under DESQview, only the INT 15h vector and BASIC segment address (the
  3704.       word at 0000h:0510h) may be assumed to be valid for the handler's
  3705.       process
  3706. SeeAlso: INT 10"COPROCESSOR",INT 5D
  3707. --------H-76---------------------------------
  3708. INT 76 - IRQ14 - HARD DISK CONTROLLER (AT and later)
  3709. Note:    may be masked by setting bit 6 on I/O port A1h
  3710. SeeAlso: INT 0E"IRQ6",INT 5E
  3711. --------H-77---------------------------------
  3712. INT 77 - IRQ15 - RESERVED (AT,PS)
  3713. Note:    may be masked by setting bit 7 on I/O port A1h
  3714. SeeAlso: INT 5F
  3715. --------H-77---------------------------------
  3716. INT 77 - IRQ15 - POWER CONSERVATION (Compaq SLT/286)
  3717. Note:    may be masked by setting bit 7 on I/O port A1h
  3718. SeeAlso: INT 15/AX=4600h,INT 5F
  3719. --------E-78---------------------------------
  3720. INT 78 - UofSalford DBOS DOS extender - API
  3721.     AH = function
  3722.         00h (PB) display 32-bit memory specified by command argument
  3723.         01h (PT) display 32-bit instruction(s) specified by command arg
  3724.         02h specify offset to subsequent PB and PT commands
  3725.         03h switch to protected mode
  3726.             DWORD following INT instruction point to map; protected-mode
  3727.             entry point is immediately following the DWORD
  3728.         Return: never
  3729.         Note:    if bit 31 of the map address is set, only a stub was
  3730.               loaded by DOS and DBOS will load the entire program
  3731.         04h specify that subsequent load (AH=03h) should leave program in
  3732.         memory
  3733.         05h release program from memory
  3734.         06h set break point at address and option count from commandline
  3735.         07h resume program execution
  3736.         08h single-step program
  3737.         09h set read/write breakpoint using 386 debug registers
  3738.         0Ah set write breakpoint using 386 debug register
  3739.         0Bh set memory byte to new value
  3740.         0Ch display CPU registers
  3741.         0Dh run until specified program address reached
  3742.         0Fh print trace from program map
  3743.         10h specify an offset using a map symbol
  3744.         14h print memory without any offset
  3745.         18h switch DBOS into/out of test mode (ON/OFF commandline args)
  3746.         1Dh get address of real/protected-mode communication buffer
  3747.             Return: ES:BP -> comm buffer
  3748.         1Eh set real-mode memory size (specify how much real-mode memory
  3749.           to leave free when running FTN77 programs)
  3750.         22h uninstall DBOS
  3751.         24h force DBOS to emulate coprocessor instructions
  3752.         26h set named DBOS switches from commandline
  3753.         27h reset named DBOS switched from commandline
  3754.         2Ah set list of dynamic link libraries to contents of commandline
  3755.         file
  3756.         35h specify that subsequent load (AH=03h) should stop at first
  3757.         instruction
  3758. Return: ???
  3759. Notes:    DBOS supports functions 00h through 50h; many of these functions
  3760.       provide a low-level debugging interface
  3761.     command arguments are read from the calling program's PSP
  3762. SeeAlso: INT 79"DBOS"
  3763. Index:    uninstall;DBOS DOS extender
  3764. --------E-78---------------------------------
  3765. INT 78 - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ0
  3766. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  3767.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  3768. Note:    this vector is overwritten when GO32 starts but is not restored by
  3769.       early versions of the extender
  3770. SeeAlso: INT 08,INT 10/AH=FFh"GO32",INT 79"GO32"
  3771. --------A-78---------------------------------
  3772. INT 78 - AutoCAD 10 ADI for Plotters
  3773.     AX = function
  3774.         0001h initialize comm port and reset plotter
  3775.         BX = ??? (comm port?)
  3776.         0002h close plotter
  3777.         0003h move (pen up)
  3778.         BX = new X position
  3779.         CX = new Y position
  3780.         0004h move (pen down)
  3781.         BX = new X position
  3782.         CX = new Y position
  3783.         0005h select pen
  3784.         BX = pen number
  3785.         0006h select drawing speed
  3786.         BX = drawing speed N
  3787.         0007h select line style
  3788.         BX = line style N
  3789.         0008h return pen to pen carrier??? (called before change-pen cmd)
  3790. Return: ???
  3791. SeeAlso: INT 7A"AutoCAD",INT 7B"AutoCAD"
  3792. --------d-78---------------------------------
  3793. INT 78 - ADP-60 IDE controller - ORIGINAL INT 13
  3794. SeeAlso: INT 79"ADP-60"
  3795. --------d-7800-------------------------------
  3796. INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
  3797.     AH = 00h
  3798.     DX = interface board I/O port
  3799. Return:    CF set on error
  3800.         AL = error code (see below)
  3801. Note:    if this routine is not called, the port is the driver's default
  3802.       (usually 0280h or 0300h)
  3803.     an installation check is performed by TARGA.DEV upon initialization
  3804.       by checking for the string "SCSI" at offset 03h into the interrupt
  3805.       handler
  3806. SeeAlso: AH=01h,AH=02h
  3807. Index:    installation check;TARGA.DEV
  3808.  
  3809. Values for error code:
  3810.  00h illegal command given to SCSI code
  3811.  01h invalid I/O port specified (must be from 100H to 3F8H, and must be on an
  3812.      8-port boundary)
  3813.  02h invalid DMA channel specified (must be from 1 to 3)
  3814.  03h invalid SCSI board number specified (must be from 0 to 7)
  3815.  04h error from data register test during self-test
  3816.  05h SCSI input signals not all 0 when SCSI RST activated
  3817.  06h SCSI input signals not all 0 before selecting a SCSI device
  3818.  07h BSY signal is active; SCSI bus is busy
  3819.  08h SCSI board not selected, BSY signal did not come on in response to
  3820.      raising SEL
  3821.  09h time-out waiting for status state, signifying end of DMA transfer
  3822. --------d-7801-------------------------------
  3823. INT 78 - TARGA.DEV - GET I/O PORT
  3824.     AH = 01h
  3825. Return: DX = current interface board I/O port
  3826. SeeAlso: AH=00h,AH=03h"TARGA"
  3827. --------d-7802-------------------------------
  3828. INT 78 - TARGA.DEV - SET DMA CHANNEL
  3829.     AH = 02h
  3830.     AL = interface board DMA channel
  3831. Return: CF set on error
  3832.     AL = error code (see AH=00h)
  3833. Note:    if this routine is not called, the DMA channel is the driver's default
  3834.       (usually 3)
  3835. SeeAlso: AH=00h,AH=03h"TARGA"
  3836. --------d-7803-------------------------------
  3837. INT 78 - TARGA.DEV - GET DMA CHANNEL
  3838.     AH = 03h
  3839. Return: AL = current interface board DMA channel
  3840. SeeAlso: AH=01h,AH=02h
  3841. --------d-7804-------------------------------
  3842. INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
  3843.     AH = 04h
  3844.     AL = SCSI device number
  3845. Return: CF set on error
  3846.     AL = error code (see AH=00h)
  3847. Note:    if this routine is not called, the device number used is the driver's
  3848.       default (usually 0)
  3849. SeeAlso: AH=02h,AH=05h
  3850. --------d-7805-------------------------------
  3851. INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
  3852.     AH = 05h
  3853. Return: AL = current SCSI device number
  3854. SeeAlso: AH=03h"TARGA",AH=04h
  3855. --------d-7806-------------------------------
  3856. INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
  3857.     AH = 06h
  3858.     AL = 00h clear early return mode
  3859.        = 01h set early return mode
  3860. Note:    if early return mode is set then SCSI will return with no errors
  3861.       when the last DMA transfer is started in a call with AH=13h or AH=14h
  3862.     if this routine is not called, early return mode is cleared
  3863. SeeAlso: AH=13h,AH=14h,AH=15h
  3864. --------d-7808-------------------------------
  3865. INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
  3866.     AH = 08h
  3867. Return: CF set on error
  3868.     AL = error code (see AH=00h)
  3869. Note:    the SCSI bus is also reset
  3870. SeeAlso: AH=09h
  3871. --------d-7809-------------------------------
  3872. INT 78 - TARGA.DEV - RESET SCSI BUS
  3873.     AH = 09h
  3874. Return: AL = error code if carry set (see AH=00h)
  3875. SeeAlso: AH=08h
  3876. --------d-7810-------------------------------
  3877. INT 78 - TARGA.DEV - SEND SCSI COMMAND
  3878.     AH = 10h
  3879.     DS:SI -> command bytes
  3880. Return: AH = SCSI status byte
  3881.     CF clear if successful
  3882.         AL = SCSI message byte
  3883.     CF set on error
  3884.         AL = error code (see AH=00h)
  3885. SeeAlso: AH=11h,INT 21/AX=4403h"ST-01"
  3886.  
  3887. Format of SCSI Command:
  3888. Offset    Size    Description
  3889.  00h    BYTE    length of command
  3890.  01h    ???    command bytes
  3891. --------d-7811-------------------------------
  3892. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
  3893.     AH = 11h
  3894.     DS:SI -> command bytes
  3895.     ES:BX -> data storage area
  3896.     CX = number of data bytes to transfer
  3897. Return: AH = SCSI status byte
  3898.     CF clear if successful
  3899.         AL = SCSI message byte
  3900.     CF set on error
  3901.         AL = error code (see AH=00h)
  3902. Note:    this command receives data internally one byte at a time
  3903. SeeAlso: AH=10h,AH=13h
  3904.  
  3905. Format of SCSI Command:
  3906. Offset    Size    Description
  3907.  00h    BYTE    length of command
  3908.  01h    ???    command bytes
  3909. --------d-7812-------------------------------
  3910. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
  3911.     AH = 12h
  3912.     DS:SI -> command bytes
  3913.     ES:BX -> data storage area
  3914.     CX = number of data bytes to transfer
  3915. Return: AH = SCSI status byte
  3916.     CF clear if successful
  3917.         AL = SCSI message byte
  3918.     CF set on error
  3919.         AL = error code (see AH=00h)
  3920. Note:    this command sends data internally one byte at a time
  3921. SeeAlso: AH=14h
  3922.  
  3923. Format of SCSI Command:
  3924. Offset    Size    Description
  3925.  00h    BYTE    length of command
  3926.  01h    ???    command bytes
  3927. --------d-7813-------------------------------
  3928. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
  3929.     AH = 13h
  3930.     DS:SI -> command bytes
  3931.     ES:BX -> data storage area
  3932.     DX:CX = number of data bytes to transfer
  3933. Return: AH = SCSI status byte (if early return mode is clear)
  3934.     CF clear if successful
  3935.         AL = SCSI message byte (if early return mode is clear)
  3936.     CF set on error
  3937.         AL = error code (see AH=00h)
  3938. Note:    this command receives data using DMA
  3939. SeeAlso: AH=11h,AH=12h
  3940.  
  3941. Format of SCSI Command:
  3942. Offset    Size    Description
  3943.  00h    BYTE    length of command
  3944.  01h    ???    command bytes
  3945. --------d-7814-------------------------------
  3946. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
  3947.     AH = 14h
  3948.     DS:SI -> command bytes
  3949.     ES:BX -> data storage area
  3950.     DX:CX = number of data bytes to transfer
  3951. Return: AH = SCSI status byte (if early return mode is clear)
  3952.     CF clear if successful
  3953.         AL = SCSI message byte (if early return mode is clear)
  3954.     CF set on error
  3955.         AL = error code (see AH=00h)
  3956. Note:    this command sends data using DMA
  3957. SeeAlso: AH=12h,AH=13h
  3958.  
  3959. Format of SCSI Command:
  3960. Offset    Size    Description
  3961.  00h    BYTE    length of command
  3962.  01h    ???    command bytes
  3963. --------d-7815-------------------------------
  3964. INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
  3965.     AH = 15h
  3966. Return: AH = SCSI status byte
  3967.     CF clear if successful
  3968.         AL = SCSI message byte
  3969.     CF set on error
  3970.         AL = error code (see AH=00h)
  3971. Note:    if AH=06h was previously called to set the early return mode, this
  3972.       function finishes a command AH=13h or AH=14h which returned before
  3973.       the last DMA transfer was finished
  3974. SeeAlso: AH=06h,AH=13h,AH=14h
  3975. --------V-79---------------------------------
  3976. INT 79 - AVATAR.SYS - FAST GET KEYSTROKE
  3977. Return: CF set if no keystroke available
  3978.         AX = FFFFh
  3979.     CF clear if key pressed
  3980.         AX = keystroke
  3981. Program: AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
  3982.       AVATAR command codes just as ANSI.SYS interprets ANSI commands
  3983. Note:    if a keystroke is available, it is removed from the keyboard buffer
  3984.       before being returned
  3985. SeeAlso: INT 29
  3986. --------E-79---------------------------------
  3987. INT 79 - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ1
  3988. Note:    this vector is overwritten when GO32 starts but is not restored by
  3989.       early versions of the extender
  3990. SeeAlso: INT 09,INT 78"GO32",INT 7A"GO32"
  3991. --------d-79---------------------------------
  3992. INT 79 U - ADP-60 IDE adapter - ???
  3993. SeeAlso: INT 78"ADP-60"
  3994. --------E-79---------------------------------
  3995. INT 79 - DBOS DOS Extender
  3996.     details not available
  3997. Desc:    this interrupt is used by an MS Windows virtual device driver with
  3998.       which the DBOS extender communicates when run inside a Windows
  3999.       Enhanced Mode DOS box
  4000. SeeAlso: INT 78"DBOS"
  4001. --------A-790001-----------------------------
  4002. INT 79 U - AutoCAD Device Interface - DIGITIZER - INITIALIZE
  4003.     AX = 0001h
  4004. Return: AX = 0001h ??? self-test result???
  4005.     BX = 0001h
  4006. SeeAlso: AX=0002h,AX=0003h,INT 7A"AutoCAD"
  4007. --------A-790002-----------------------------
  4008. INT 79 U - AutoCAD Device Interface - DIGITIZER - CLOSE
  4009.     AX = 0002h
  4010. SeeAlso: AX=0001h,AX=0003h
  4011. --------A-790003-----------------------------
  4012. INT 79 U - AutoCAD Device Interface - DIGITIZER - GET DIGITIZER STATUS
  4013.     AX = 0003h
  4014. Return: AX = button state
  4015.         0002h no button pressed
  4016.         BX = X coordinate
  4017.         CX = Y coordinate
  4018.         0003h Pick button (0,A,B,C,D) pressed
  4019.         BX = X coordinate
  4020.         CX = Y coordinate
  4021.         0005h other button (1-9) pressed
  4022.         BX = number of button - 1
  4023.         CX = X coordinate
  4024.         DX = Y coordinate
  4025. Note:    these return values are valid for the Houston Instruments HiPad Plus
  4026.       9236 digitizer with a 16-button cursor
  4027. SeeAlso: AX=0001h,AX=0002h
  4028. --------N-7A---------------------------------
  4029. INT 7A U - Topware Network Operating System - ???
  4030.     AL = ???
  4031.     ???
  4032. Return: ???
  4033. SeeAlso: INT 21/AH=FFh"Topware",INT 2F/AX=FF00h
  4034. --------A-7A---------------------------------
  4035. INT 7A - AutoCAD Device Interface
  4036.     ???
  4037. SeeAlso: INT 61/AX=0007h"OPTIMA",INT 78"AutoCAD",INT 79/AX=0001h
  4038. SeeAlso: INT 7B"AutoCAD"
  4039. --------N-7A---------------------------------
  4040. INT 7A - X.PC Packet software interface
  4041.     ES:BX -> parameter block
  4042. SeeAlso: INT 60/AX=01FFh
  4043. --------E-7A---------------------------------
  4044. INT 7A - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ2
  4045. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  4046.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  4047. Note:    this vector is overwritten when GO32 starts but is not restored by
  4048.       early versions of the extender
  4049. SeeAlso: INT 0A,INT 79"GO32",INT 7B"GO32"
  4050. ----------7A---------------------------------
  4051. INT 7A O - PRINDIR - API (moved to INT 7C)
  4052. SeeAlso: INT 7C"PRINDIR"
  4053. --------N-7A---------------------------------
  4054. INT 7A - Novell NetWare - LOW-LEVEL API - Notes
  4055. Note:    this interrupt is used for IPX/SPX access in NetWare versions through
  4056.       2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
  4057.       entry point even though INT 7A still exists.    For both INT 7A and
  4058.       the FAR entry point, BX contains the function number; IPX is
  4059.       sometimes called internally with BX bit 15 set.
  4060. SeeAlso: INT 2F/AX=7A00h,INT 64"Novell",INT 7A/BX=0000h
  4061. --------N-7A----BX0000-----------------------
  4062. INT 7A - Novell NetWare - IPX Driver - OPEN SOCKET
  4063.     BX = 0000h
  4064.     AL = socket longevity
  4065.         00h open until close or terminate
  4066.         FFh open until close
  4067.     DX = socket number (high byte in DL)
  4068.         0000h dynamic allocation
  4069.         else  socket to open (see below)
  4070. Return: AL = return code
  4071.         00h success
  4072.         DX = socket number
  4073.         FEh socket table full
  4074.         FFh socket already open
  4075. Notes:    TSRs which need to use sockets should set AL to FFh, non-resident
  4076.       programs should normally use AL=00h
  4077.     IPX can be configured to support up to 150 open sockets on a
  4078.       workstation, and defaults to 20
  4079.     this function is supported by Advanced NetWare 1.02+
  4080. SeeAlso: BX=0001h,BX=0004h
  4081.  
  4082. Values for socket number:
  4083.  0451h File Service
  4084.  0452h Service Advertising Socket
  4085.  0453h Routing Information Packet
  4086.  0455h NetBIOS Packet
  4087.  0456h diagnostics
  4088.  0457h ??? (appears to be related to server serial numbers)
  4089.  4000h-7FFFh used for dynamic allocation
  4090.  4444h Brightwork Development's SiteLock server
  4091.  5555h Brightwork Development's SiteLock client (workstation)
  4092.  8000h-FFFFh assigned by Novell
  4093. Note:    SiteLock is an application metering product using IPX to communicate
  4094.       between the application and the license server
  4095. --------N-7A----BX0001-----------------------
  4096. INT 7A - Novell NetWare - IPX Driver - CLOSE SOCKET
  4097.     BX = 0001h
  4098.     DX = socket number (high byte in DL)
  4099. Notes:    also cancels events set by any Event Control Blocks for the socket
  4100.     the program must close all open sockets before terminating
  4101.     this function is supported by Advanced NetWare 1.02+
  4102. SeeAlso: BX=0000h
  4103. --------N-7A----BX0002-----------------------
  4104. INT 7A - Novell NetWare - IPX Driver - GET LOCAL TARGET
  4105.     BX = 0002h
  4106.     ES:SI -> target internetwork address (see INT 7A/BX=000Bh)
  4107.     ES:DI -> 6-byte buffer for local target
  4108. Return: AL = return code
  4109.         00h success
  4110.            CX = expected one-way transfer time (clock ticks) for a 576-byte
  4111.             packet
  4112.            ES:DI -> local target
  4113.         FAh unsuccessful (no path to destination)
  4114. Notes:    the internetwork address consists of a 4-byte network address followed
  4115.       by a 6-byte node address.  The local target is only a 6-byte node
  4116.       address.  If the target is in the same network, the local target is
  4117.       just the node address of target; otherwise, the local target is the
  4118.       node address of the bridge that leads to the target.
  4119.     this function may be called from inside IPX and AES Event Service
  4120.       Routines, but not from other interrupt handlers
  4121.     this function is supported by Advanced NetWare 1.02+
  4122. SeeAlso: BX=0009h
  4123. --------N-7A----BX0003-----------------------
  4124. INT 7A - Novell NetWare - IPX Driver - SEND PACKET
  4125.     BX = 0003h
  4126.     ES:SI -> Event Control Block (see below)
  4127. Notes:    returns immediately; IPX attempts to send the packet in the background
  4128.     this function is supported by Advanced NetWare 1.02+
  4129.     this function is nearly identical to BX=000Fh, except that it always
  4130.       copies the source address into the IPX header assumed to be at the
  4131.       beginning of the first fragment
  4132. SeeAlso: BX=0004h,BX=000Fh,INT 21/AH=EEh"Novell"
  4133.  
  4134. Format of Event Control Block:
  4135. Offset    Size    Description
  4136.  00h    DWORD    Link
  4137.  04h    DWORD    -> Event Service Routine (00000000h if none)
  4138.  08h    BYTE    in use flag
  4139.         00h available
  4140.         E0h AES temporary
  4141.         F6h \ special IPX/SPX processing for v3.02+
  4142.         F7h /
  4143.         F8h IPX in critical section
  4144.         F9h SPX listening
  4145.         FAh processing
  4146.         FBh holding
  4147.         FCh AES waiting
  4148.         FDh AES couting down delay time
  4149.         FEh awaiting packet reception
  4150.         FFh sending packet
  4151.  09h    BYTE    completion code (see below)
  4152.  0Ah    WORD    (big-endian) socket number (see INT 7A/BX=0000h)
  4153.  0Ch  4 BYTES    IPX workspace
  4154.  10h 12 BYTES    driver workspace
  4155.  1Ch  6 BYTES    immediate local node address
  4156.  22h    WORD    fragment count
  4157.  24h    var    fragment descriptors
  4158.         Offset    Size    Description
  4159.          00h    DWORD    -> fragment data
  4160.          04h    WORD    size of fragment in bytes.
  4161. Notes:    ESR is a far procedure that is called when the ECB has been handled.
  4162.       On call, the in use flag is zero if the ECB has been handled,
  4163.       non-zero otherwise. If the flag is zero, the completion code holds
  4164.       the result of the event.
  4165.     the first fragment should start with an IPX header
  4166.     all fragments are concatenated and sent in one piece
  4167.     node address FFh FFh FFh FFh FFh FFh broadcasts to all nodes
  4168.  
  4169. Values for ECB completion code:
  4170.  00h success
  4171.  ECh remote terminated connection without acknowledging packet
  4172.  EDh abnormal connection termination
  4173.  EEh invalid connection ID
  4174.  EFh SPX connection table full
  4175.  F9h event should not be cancelled
  4176.  FAh cannot establish connection with specified destination
  4177.  FCh cancelled
  4178.  FDh malformed packet
  4179.  FEh packet undeliverable
  4180.  FFh physical error
  4181.  
  4182. Event Service Routine called with:
  4183.     AL = caller's identity (00h = AES, FFh = IPX)
  4184.     ES:SI -> event control block
  4185.     interrupts disabled
  4186.  
  4187. Format of IPX header:
  4188. Offset    Size    Description
  4189.  00h    WORD    (big-endian) checksum
  4190.  02h    WORD    (big-endian) length in bytes of total packet
  4191.  04h    BYTE    transport control
  4192.  05h    BYTE    packet type
  4193.         00h unknown packet type
  4194.         01h routing information packet
  4195.         02h echo packet
  4196.         03h error packet
  4197.         04h packet exchange packet (always use this one)
  4198.         05h SPX packet
  4199.         11h-1Eh experimental protocols
  4200.  06h 10 BYTES    destination internetwork address
  4201.  10h    WORD    (big-endian) destination socket
  4202.  12h 10 BYTES    source internetwork address
  4203.  1Ch    WORD    (big-endian) source socket
  4204.  
  4205. Format of Service Advertising Protocol Service Query Packet:
  4206. Offset    Size    Description
  4207.  00h 30 BYTEs    IPX header
  4208.  1Eh    WORD    (big-endian) query type
  4209.  20h    WORD    (big-endian) server type (see INT 21/AH=E3h"NetWare")
  4210.  
  4211. Format of Service Advertising Protocol Server Identification Packet:
  4212. Offset    Size    Description
  4213.  00h 30 BYTEs    IPX header
  4214.  1Eh    WORD    (big-endian) response type
  4215.         0002h general service
  4216.         0004h nearest service
  4217.  20h    WORD    (big-endian) server type (see INT 21/AH=E3h"NetWare")
  4218.  22h 48 BYTEs    ASCIZ server name
  4219.  52h  2 WORDs    (big-endian) network number
  4220.  54h  3 WORDs    (big-endian) node number
  4221.  5Ch    WORD    (big-endian) socket number
  4222.  5Eh    WORD    (big-endian) number of hops between caller and server
  4223. --------N-7A----BX0004-----------------------
  4224. INT 7A - Novell NetWare - IPX Driver - LISTEN FOR PACKET
  4225.     BX = 0004h
  4226.     ES:SI -> Event Control Block (see BX=0003h)
  4227. Return: AL = status
  4228.         00h successful
  4229.         FFh no listening socket for packet
  4230. Desc:    this function provides IPX with an ECB for receiving an IPX packet, but
  4231.       does not wait for a packet to arrive
  4232. Notes:    the application must open a socket and initialize the ECB's ESR
  4233.       address, socket number, fragment count, and fragment descriptor
  4234.       fields before invoking this function
  4235.     there is no limit on the number of ECBs which may simultaneously be
  4236.       listening on a socket
  4237.     this function is supported by Advanced NetWare 1.02+
  4238. SeeAlso: BX=0000h,BX=0003h
  4239. --------N-7A----BX0005-----------------------
  4240. INT 7A - Novell NetWare - IPX Driver - SCHEDULE IPX EVENT
  4241.     BX = 0005h
  4242.     AX = delay time in clock ticks
  4243.     ES:SI -> Event Control Block (see BX=0003h)
  4244. Note:    this function is supported by Advanced NetWare 1.02+
  4245. SeeAlso: BX=0006h,BX=0007h,BX=0008h
  4246. --------N-7A----BX0006-----------------------
  4247. INT 7A - Novell NetWare - IPX Driver - CANCEL EVENT
  4248.     BX = 0006h
  4249.     ES:SI -> Event Control Block (see BX=0003h)
  4250. Return: AL = return code
  4251.         00h success
  4252.         F9h event in use
  4253.         FCh event cancelled
  4254.         FFh unsuccessful, event not in use, or unrecognized ECB flag
  4255. Notes:    cannot cancel packets which the node's driver has already sent
  4256.     this function is supported by Advanced NetWare 1.02+
  4257. SeeAlso: BX=0005h
  4258. --------N-7A----BX0007-----------------------
  4259. INT 7A - Novell NetWare - IPX Driver - SCHEDULE SPECIAL EVENT
  4260.     BX = 0007h
  4261.     AX = delay time
  4262.     ES:SI -> Event Control Block (see BX=0003h)
  4263. Note:    this function is supported by Advanced NetWare 1.02+
  4264. SeeAlso: BX=0006h
  4265. --------N-7A----BX0008-----------------------
  4266. INT 7A - Novell NetWare - IPX Driver - GET INTERVAL MARKER
  4267.     BX = 0008h
  4268. Return: AX = interval marker in clock ticks
  4269. Notes:    may be used to measure the time elapsed between two events, up to one
  4270.       hour
  4271.     this function is supported by Advanced NetWare 1.02+
  4272. SeeAlso: BX=0005h
  4273. --------N-7A----BX0009-----------------------
  4274. INT 7A - Novell NetWare - IPX Driver - GET INTERNETWORK ADDRESS
  4275.     BX = 0009h
  4276.     ES:SI -> buffer for own internetwork address (see below)
  4277. Return: ES:SI buffer filled
  4278.     SI destroyed
  4279. Note:    this function is supported by Advanced NetWare 1.02+
  4280. SeeAlso: BX=0002h,BX=000Bh
  4281.  
  4282. Format of internetwork address:
  4283. Offset    Size    Description
  4284.  00h  4 BYTEs    (big-endian) network number
  4285.  04h  6 BYTEs    (big-endian) node number within network
  4286. --------N-7A----BX000A-----------------------
  4287. INT 7A - Novell NetWare - IPX Driver - RELINQUISH CONTROL
  4288.     BX = 000Ah
  4289. Desc:    this call indicates that the application is idle and permits the IPX
  4290.       driver to do some work
  4291. Note:    this function is supported by Advanced NetWare 1.02+
  4292. SeeAlso: INT 15/AX=1000h,INT 21/AH=89h,INT 2F/AX=1680h
  4293. --------N-7A----BX000B-----------------------
  4294. INT 7A - Novell NetWare - IPX Driver - DISCONNECT FROM TARGET
  4295.     BX = 000Bh
  4296.     ES:SI -> internetwork address (see below)
  4297. Notes:    this function permits the network software on the remote machine to
  4298.       remove any virtual connection with the calling machine
  4299.     only use in point-to-point networks
  4300.     should never be called from within an Event Service Routine
  4301.     this function is supported by Advanced NetWare 1.02+
  4302. SeeAlso: BX=0002h,BX=0009h
  4303.  
  4304. Format of internetwork address:
  4305. Offset    Size    Description
  4306.  00h  4 BYTEs    (big-endian) destination network
  4307.  04h  6 BYTEs    (big-endian) destination node
  4308.  0Ah  2 BYTEs    (big-endian) destination socket
  4309. --------N-7A----BX000C-----------------------
  4310. INT 7A U - Novell NetWare - IPX Driver - internal - INITIALIZE NETWORK ADDRESS
  4311.     BX = 000Ch
  4312.     CX:DX = global network address (see INT 7A/BX=0002h)
  4313.     ES:DI -> "OSINCRITICALSECTION" flag
  4314.     DS:SI -> current mode for socket
  4315. Note:    the address cannot be changed once it has been initialized
  4316. --------N-7A----BX000D-----------------------
  4317. INT 7A U - Novell NetWare - IPX Driver - internal - IPX GET PACKET SIZE
  4318.     BX = 000Dh
  4319. Return: AX = maximum packet size
  4320.     CX = retry count
  4321. SeeAlso: BX=001Ah
  4322. --------N-7A----BX000E-----------------------
  4323. INT 7A U - Novell NetWare - IPX Driver - internal - TERMINATE SOCKETS
  4324.     BX = 000Eh
  4325. Return: nothing
  4326. Note:    this function terminates all sockets opened with the current mode; this
  4327.       may be intended for future enhancements as the socket mode never
  4328.       changes in v2.15
  4329. --------N-7A----BX000F-----------------------
  4330. INT 7A U - Novell NetWare - IPX Driver - INTERNAL - SEND PACKET
  4331.     BX = 000Fh
  4332.     ES:SI -> Event Control Block (see BX=0003h)
  4333. Note:    nearly identical to function 0003h, but does not copy address into
  4334.       the first fragment
  4335. SeeAlso: BX=0003h
  4336. --------N-7A----BX0010-----------------------
  4337. INT 7A - Novell NetWare - SPX Driver - INSTALLATION CHECK
  4338.     BX = 0010h
  4339.     AL = 00h
  4340. Return: AL = FFh if SPX loaded
  4341.         BH = SPX major version
  4342.         BL = SPX minor version
  4343.         CX = maximum SPX connections
  4344.         DX = SPX connections available
  4345. Note:    this function is supported by Advanced NetWare 2.1+
  4346. SeeAlso: BX=0015h
  4347. --------N-7A----BX0011-----------------------
  4348. INT 7A - Novell NetWare - SPX Driver - ESTABLISH SPX CONNECTION
  4349.     BX = 0011h
  4350.     AL = retry count
  4351.     AH = watchdog flag
  4352.     ES:SI -> Event Control Block (see BX=0003h)
  4353. Return: AL = status
  4354.         00h attempting to contact destination socket
  4355.         EFh local connection table full
  4356.         FDh buffer size not 42 or fragment count not 1
  4357.         FFh sending socket not open
  4358.     DX = assigned connection ID number
  4359. Desc:    attempt to establish a connection with a listening socket
  4360. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  4361.       that NetWare can perform its internal packet exchanges
  4362.     the first fragment should start with a SPX header.  Fill in all
  4363.       destination addresses.
  4364.     this function is supported by Advanced NetWare 2.1+
  4365. SeeAlso: BX=0000h,BX=0012h,BX=0013h,BX=0014h,BX=0015h
  4366.  
  4367. Format of SPX header:
  4368. Offset    Size    Description
  4369.  00h    WORD    (big-endian) checksum
  4370.  02h    WORD    (big-endian) length in bytes of total packet
  4371.  04h    BYTE    transport control
  4372.  05h    BYTE    packet type (see INT 7A/BX=0003h)
  4373.  06h 10 BYTEs    destination internet address
  4374.  10h    WORD    (big-endian) destination socket
  4375.  12h 10 BYTEs    source internet address
  4376.  1Ch    WORD    (big-endian) source socket
  4377.  1Eh    BYTE    connection control
  4378.  1Fh    BYTE    datastream type
  4379.  20h    WORD    (big-endian) source connection ID
  4380.  22h    WORD    (big-endian) destination connection ID
  4381.  24h    WORD    (big-endian) sequence number
  4382.  26h    WORD    (big-endian) acknowledge number
  4383.  28h    WORD    (big-endian) allocation number
  4384. --------N-7A----BX0012-----------------------
  4385. INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX CONNECTION
  4386.     BX = 0012h
  4387.     AH = watchdog flag
  4388.         00h disabled
  4389.         01h enabled
  4390.     AL = retry count (00h = default)
  4391.     ES:SI -> Event Control Block (see BX=0003h)
  4392. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  4393.       that NetWare can perform its internal packet exchanges
  4394.     this function is supported by Advanced NetWare 2.1+
  4395. SeeAlso: BX=0011h,BX=0013h,BX=0014h
  4396. --------N-7A----BX0013-----------------------
  4397. INT 7A - Novell NetWare - SPX Driver - TERMINATE SPX CONNECTION
  4398.     BX = 0013h
  4399.     DX = connection ID to terminate
  4400.     ES:SI -> Event Control Block (see BX=0003h)
  4401. Note:    this function is supported by Advanced NetWare 2.1+
  4402. SeeAlso: BX=0011h,BX=0012h,BX=0014h
  4403. --------N-7A----BX0014-----------------------
  4404. INT 7A - Novell NetWare - SPX Driver - ABORT SPX CONNECTION
  4405.     BX = 0014h
  4406.     DX = connection ID to terminate
  4407. Notes:    this function is supported by Advanced NetWare 2.1+
  4408.     this function does not tell the other side that the connection has been
  4409.       terminated
  4410.     also aborts any outstanding Establish Connection, Terminate Connection,
  4411.       and Send Sequenced Packet commands
  4412. SeeAlso: BX=0011h,BX=0013h
  4413. --------N-7A----BX0015-----------------------
  4414. INT 7A - Novell NetWare - SPX Driver - GET SPX CONNECTION STATUS
  4415.     BX = 0015h
  4416.     DX = connection ID
  4417.     ES:SI -> status buffer (see below)
  4418. Return: AL = return code
  4419.         00h connection still valid
  4420.         ES:SI -> status buffer filled
  4421.         EEh no such connection
  4422. Note:    this function is supported by Advanced NetWare 2.1+
  4423. SeeAlso: BX=0010h,BX=0011h
  4424.  
  4425. Format of status buffer:
  4426. Offset    Size    Description
  4427.  00h    BYTE    connection state
  4428.         01h waiting to establish connection
  4429.         02h starting (attempting to create connection)
  4430.         03h connection established
  4431.         04h terminating
  4432.  01h    BYTE    watchdog flag
  4433.         bit 0: used internally by SPX
  4434.         bit 1: SPX watchdog is monitoring connection
  4435.         bits 2-7 used internally by SPX
  4436.  02h    WORD    (big-endian) source connection ID
  4437.  04h    WORD    (big-endian) destination connection ID
  4438.  06h    WORD    (big-endian) sequence number of next packet sent
  4439.  08h    WORD    (big-endian) acknowledge number, expected sequence number of
  4440.            next received packet
  4441.  0Ah    WORD    (big-endian) maximum sequence number remote SPX may send
  4442.            without ACK from local SPX
  4443.  0Ch    WORD    (big-endian) remote acknowledge number, next sequence number
  4444.            remote SPX expects to receive
  4445.  0Eh    WORD    (big-endian) remote allocation number, maximum sequence number
  4446.            local SPX may send
  4447.  10h    WORD    (big-endian) connection socket
  4448.  12h  6 BYTEs    immediate node address--bridge on local network to destination
  4449.  18h 10 BYTEs    destination internetwork address (see INT 7A/BX=000Bh)
  4450.  22h    WORD    (big-endian) retransmit count
  4451.  24h    WORD    (big-endian) estimated roundtrip delay
  4452.  26h    WORD    (big-endian) retransmitted packets
  4453.  28h    WORD    (big-endian) suppressed packets
  4454.  2Ah 12 BYTEs    ??? (v2.15)
  4455. --------N-7A----BX0016-----------------------
  4456. INT 7A - Novell NetWare - SPX Driver - SEND SPX PACKET
  4457.     BX = 0016h
  4458.     DX = connection ID
  4459.     ES:SI -> Event Control Block (see BX=0003h)
  4460. Notes:    this function is supported by Advanced NetWare 2.1+
  4461.     CX may need to be 0001h ???
  4462. SeeAlso: BX=0011h,BX=0017h
  4463. --------N-7A----BX0017-----------------------
  4464. INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX PACKET
  4465.     BX = 0017h
  4466.     DX = connection ID (unused in v2.15)
  4467.     ES:SI -> Event Control Block (see BX=0003h)
  4468. Notes:    this function is supported by Advanced NetWare 2.1+
  4469.     CX may need to be 0001h ???
  4470. SeeAlso: BX=0011h,BX=0016h
  4471. --------N-7A----BX0018-----------------------
  4472. INT 7A U - Novell NetWare - SPX Driver - internal - ADD DIAGNOSTIC ELEMENT
  4473.     BX = 0018h
  4474.     ES:SI -> diagnostic element (see below) to be added to Diagnostic Queue
  4475. Note:    this function is supported on file servers only under v2.15; v3.02 also
  4476.       supports it on workstations
  4477. SeeAlso: BX=0019h
  4478.  
  4479. Format of diagnostic element:
  4480. Offset    Size    Description
  4481.  00h    DWORD    pointer to next diagnostic element
  4482.  04h    DWORD    pointer to function for ???
  4483.  08h    DWORD    pointer to function for ???
  4484. --------N-7A----BX0019-----------------------
  4485. INT 7A U - Novell NetWare - IPX Driver - internal - CANCEL DIAGNOSTIC ELEMENT
  4486.     BX = 0019h
  4487.     ES:SI -> diagnostic element (see BX=0018h) to be removed
  4488. Note:    this function is supported on file servers only under v2.15; v3.02 also
  4489.       supports it on workstations
  4490. SeeAlso: BX=0018h
  4491. --------N-7A----BX001A-----------------------
  4492. INT 7A U - Novell NetWare - IPX Driver - internal - GET DRIVER PACKT SIZE LIMIT
  4493.     BX = 001Ah
  4494. Return: AX = packet size with preamble
  4495.     CX = IPX retry count
  4496. Note:    this function is supported on file servers only under v2.15; v3.02 also
  4497.       supports it on workstations
  4498. SeeAlso: BX=000Dh
  4499. --------N-7A----BX001B-----------------------
  4500. INT 7A U - Novell NetWare - IPX Driver - INTERNAL
  4501.     BX = 001Bh
  4502.     ???
  4503. Return: ???
  4504. Note:    this function is supported on file servers only under v2.15; v3.02 also
  4505.       supports it on workstations
  4506. --------I-7A04-------------------------------
  4507. INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE
  4508.     AH = 04h
  4509.     ???
  4510. Return: ???
  4511. SeeAlso: AH=06h
  4512. --------I-7A06-------------------------------
  4513. INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE
  4514.     AH = 06h
  4515.     ???
  4516. Return: ???
  4517. SeeAlso: AH=04h
  4518. --------I-7A09--BX8020-----------------------
  4519. INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES
  4520.     AH = 09h
  4521.     BX = 8020h (synchronous request)
  4522.     CX = 0000h
  4523.     DX = ID of session manager (SESSMGR)
  4524.     AL = service
  4525.         01h get session ID
  4526.         02h get session info
  4527.         04h dettach from session
  4528.         05h attach to session
  4529.         06h get list of windows available
  4530.         07h get environment of window
  4531.         08h get 'PIF' (program information file) info
  4532.         0Ah get base window ID
  4533.         0Bh get cursor info
  4534.     ES:DI -> control block
  4535. Return: ???
  4536. --------I-7A09--BX8020-----------------------
  4537. INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES
  4538.     AH = 09h
  4539.     BX = 8020h (synchronous request)
  4540.     CX = 0000h
  4541.     DX = ID of keyboard manager
  4542.     AL = service
  4543.         01h connect to keyboard
  4544.         02h disconnect from keyboard
  4545.         03h read from keyboard
  4546.         04h send keystroke to session
  4547.         05h disable input
  4548.         06h enable input
  4549.         07h update status code
  4550.     ES:DI -> control block
  4551. Return: ???
  4552. --------I-7A09--BX8020-----------------------
  4553. INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES
  4554.     AH = 09h
  4555.     BX = 8020h (synchronous request)
  4556.     CX = 00FFh
  4557.     DX = ID of window service controller (WSCTRL)
  4558.     AL = service
  4559.         01h connect to WS control
  4560.         02h disconnect from WS control
  4561.         03h add a window
  4562.         04h change window's position on screen
  4563.         05h change window's size
  4564.         06h change window's color
  4565.         07h change window's position in the presentation space
  4566.         08h hide/unhide toggle
  4567.         09h enlarge/reduce toggle
  4568.         0Ah change screen background color
  4569.         0Bh get window's position on screen
  4570.         0Ch get window's size
  4571.         0Dh get window's color
  4572.         0Eh get window's position in the presentation space
  4573.         0Fh determine whether hidden
  4574.         10h determine whether enlarged
  4575.         11h get background color
  4576.         12h get window names
  4577.         13h delete all windows from profile
  4578.         14h pick active window
  4579.         15h redraw screen
  4580.         16h redraw window
  4581.         17h delete a window from profile
  4582.         18h get active window
  4583.         19h get active screen
  4584.         1Ah get window data
  4585.         1Bh change window data
  4586.         1Ch select active screen
  4587.     ES:DI -> control block
  4588. Return: ???
  4589. --------I-7A09--BX8020-----------------------
  4590. INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES
  4591.     AH = 09h
  4592.     BX = 8020h
  4593.     CX = 00FFh
  4594.     DX = ID of PCPSM
  4595.     AL = service
  4596.         01h define presentation space
  4597.         02h delete presentation space
  4598.         03h display presentation space
  4599.         04h position cursor in presentation space
  4600.         05h change default presentation space
  4601.     ES:DI -> control block
  4602. Return: ???
  4603. --------I-7A09--BX8020-----------------------
  4604. INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION
  4605.     AH = 09h
  4606.     BX = 8020h
  4607.     CX = 00FFh
  4608.     DX = ID of 3270EML
  4609.     AL = service
  4610.         01h connect
  4611.         02h disconnect
  4612.     ES:DI -> control block
  4613. Return: ???
  4614. --------I-7A09--BX8020-----------------------
  4615. INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA
  4616.     AH = 09h
  4617.     BX = 8020h
  4618.     CX = 00FFh
  4619.     DX = ID of OIAM
  4620.     AL = service
  4621.         01h read Operator Information Area
  4622.         02h read OIA subset
  4623.     ES:DI -> control block
  4624. Return: ???
  4625. Note: the OIA is the 25th line on the Host session
  4626. --------I-7A09--BX8020-----------------------
  4627. INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA
  4628.     AH = 09h
  4629.     BX = 8020h
  4630.     CX = 00FFh
  4631.     DX = ID of XLATE
  4632.     AL = service
  4633.         01h translate from host characters to ASCII and vice versa
  4634.         (determined by control block byte 11)
  4635.     ES:DI -> control block
  4636. Return: ???
  4637. --------I-7A09--BX8020-----------------------
  4638. INT 7A - IBM 3270 Workstation Program API - COPY SERVICE
  4639.     AH = 09h
  4640.     BX = 8020h
  4641.     CX = 00FFh
  4642.     DX = ID of copy service
  4643.     AL = service
  4644.         01h copy string from one presentation space to another
  4645.         02h copy block from one presentation space to another
  4646.         03h connect to PC session for copy
  4647.         04h disconnect PC session from copy
  4648.     ES:DI -> control block
  4649. Return: ???
  4650. --------I-7A09--BX8020-----------------------
  4651. INT 7A - IBM 3270 Workstation Program API - Multi-DOS
  4652.     AH = 09h
  4653.     BX = 8020h
  4654.     CX = 00FFh
  4655.     ES:DI -> control block
  4656.     DX = ID of INDJQRY  
  4657.         get environment size
  4658.        = ID of INDJASY
  4659.         request DOS functions from workstation
  4660.        = ID of MEMORY
  4661.         AL = function
  4662.             01h allocate memory
  4663.             02h deallocate memory
  4664.             03h modify allocated size
  4665. Return: ???
  4666. --------I-7A09-------------------------------
  4667. INT 7A - IBM 3270 Workstation Program API - HOST SERVICES
  4668.     AH = 09h
  4669.     BX = request type (4000h async, 8028h synchronous)
  4670.     CX = 0000h
  4671.     DX = ID of MFIC
  4672.     AL = service
  4673.        01h connect to host
  4674.        02h disconnect from host
  4675.        03h read DFT structured data from host
  4676.        04h write DFT structured data to host
  4677.        05h create a host buffer
  4678.     ES:DI -> control block
  4679. --------I-7A13-------------------------------
  4680. INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE
  4681.     AH = 13h
  4682.     ???
  4683. Return: ???
  4684. ----------7A7A-------------------------------
  4685. INT 7A - Canon IX-30F Image Scanner SI3.SYS - INTERFACE
  4686.     AH = 7Ah
  4687.     ???
  4688. Return: AX = 0000h success
  4689.          000Eh undefined function code
  4690. Note:    this interface is normally on INT 7A but can be changed via device
  4691.       driver command line arguments
  4692. --------I-7A81-------------------------------
  4693. INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME
  4694.     AH = 81h
  4695.     ES:DI -> 8-char blank-padded gate name
  4696.         "SESSMGR ", "KEYBOARD", "WSCTRL     ", "MFIC    ", "PCPSM     ",
  4697.         "3270EML ", "COPY    ", "XLATE     ", "OIAM    ", "MEMORY     ",
  4698.         "INDJQRY ", or "INDJASY "
  4699. Return: DX = gate ID
  4700. --------I-7A83-------------------------------
  4701. INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS
  4702.     AH = 83h
  4703.     ???
  4704. Return: ???
  4705. --------I-7AFDCB-----------------------------
  4706. INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK
  4707.     AX = FDCBh
  4708. Return: DX:AX -> PCS/3270 signature block if loaded (see below)
  4709.  
  4710. Format of signature block:
  4711. Offset    Size    Description
  4712.  04h    WORD    PCS/3270 signature (5741h)
  4713.  06h    WORD    version (0501h = PCS/3270 v1.0)
  4714. --------I-7AFE01-----------------------------
  4715. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  4716.     AX = FE01h
  4717.     ???
  4718. Return: ???
  4719. SeeAlso: AX=FE02h
  4720. --------I-7AFE02-----------------------------
  4721. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  4722.     AX = FE02h
  4723.     ???
  4724. Return: ???
  4725. SeeAlso: AX=FE01h
  4726. --------I-7AFF01-----------------------------
  4727. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  4728.     AX = FF01h
  4729.     ES:DI -> API function handler routine
  4730. Return: CX = 1200h
  4731. SeeAlso: AX=FF02h,AX=FF03h
  4732. --------I-7AFF02-----------------------------
  4733. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION
  4734.     AX = FF02h
  4735. Return: CX = 1200h
  4736. SeeAlso: AX=FF01h
  4737. --------I-7AFF03-----------------------------
  4738. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  4739.     AX = FF03h
  4740.     ES:DI -> send/receive function handler routine
  4741. Return: CX = 1200h
  4742. SeeAlso: AX=FF01h
  4743. --------I-7AFF04-----------------------------
  4744. INT 7A U - IBM PC3270 EMUL PROG v3 - INTERNAL ???
  4745.     AX = FF04h
  4746.     ES:DI -> ???
  4747. Return: CX = 1200h
  4748. --------f-7B---------------------------------
  4749. INT 7B - Btrieve API (single user)
  4750.     DS:DX -> 38-byte parameter record (see below)
  4751. Return: return code field set
  4752. Note:    Btrieve sets low byte of vector to 33h; this serves as the installation
  4753.       check
  4754. SeeAlso: INT 2F/AX=AB01h,INT 7F/AX=0200h
  4755.  
  4756. Format of Btrieve parameter record:
  4757. Offset    Size    Description
  4758.  00h    DWORD    pointer to data buffer
  4759.  04h    WORD    data buffer length
  4760.  06h    DWORD    pointer to 90-byte record containing positioning info
  4761.         (should be same for all calls for same file)
  4762.  0Ah    DWORD    pointer to 38-byte FCB info buffer
  4763.         (should be same for all calls for same file)
  4764.  0Eh    WORD    function code (see below)
  4765.  10h    DWORD    pointer to file name/key buffer
  4766.  14h    BYTE    key length
  4767.  15h    BYTE    key number
  4768.  16h    DWORD    pointer to status code (see below)
  4769.  1Ah    WORD    interface code (version specific)
  4770.         6176h version 5.10
  4771.  
  4772. Values for function code:
  4773.  00h open
  4774.  01h close
  4775.  02h insert
  4776.  03h update
  4777.  04h delete
  4778.  05h get_equal
  4779.  06h get_next
  4780.  07h get_prev
  4781.  08h get_greater
  4782.  09h get_gr_eql
  4783.  0Ah get_less
  4784.  0Bh get_less_eq
  4785.  0Ch get_first
  4786.  0Dh get_last
  4787.  0Eh create
  4788.  0Fh stat
  4789.  10h extend
  4790.  11h set_dir: set directory information
  4791.  12h get_dir: get directory information
  4792.  13h begin_trans
  4793.  14h end_trans
  4794.  15h abort_trans
  4795.  16h get_pos: get record position number
  4796.  17h get_direct: get data by sending record position
  4797.  18h step_next
  4798.  19h stop
  4799.  1Ah version
  4800.  1Bh unlock
  4801.  1Ch reset
  4802.  1Dh set owner
  4803.  1Eh clear owner
  4804.  1Fh create supplemental index
  4805.  20h drop supplemental index
  4806.  21h step first
  4807.  22h step last
  4808.  23h step previous
  4809.  24h get next extended: get multiple records using a filter
  4810.  25h get previous extended: get multiple records using a filter
  4811.  26h step next extended: get multiple records using a filter
  4812.  27h step previous extended: get multiple records using a filter
  4813.  28h insert extended: insert one or more records
  4814.  31h ???
  4815.  add 50 (32h) to any "get" operation to just return the key data
  4816.  add 100 (64h) for a single-record wait lock (automatically released on next
  4817.         get)
  4818.  add 200 (C8h) for a single-record nowait lock (nowait lock returns error 54h
  4819.         or 55h if record already locked)
  4820.  add 300 (12Ch) for a multiple-record wait lock (not released until unlock
  4821.         called)
  4822.  add 400 (190h) for a multiple-record nowait lock (nowait lock returns error
  4823.         54h or 55h if record already locked)
  4824.  
  4825. Values for status code:
  4826.  00h successful
  4827.  01h invalid operation
  4828.  02h I/O error
  4829.  03h file not open
  4830.  04h key value not found
  4831.  05h duplicate key value
  4832.  06h invalid key number
  4833.  07h different key number
  4834.  08h invalid positioning
  4835.  09h end of file
  4836.  0Ah modifiable key value error
  4837.  0Bh invalid file name
  4838.  0Ch file not found
  4839.  0Dh extended file error
  4840.  0Eh pre-image open error
  4841.  0Fh pre-image I/O error
  4842.  10h expansion error
  4843.  11h close error
  4844.  12h disk full
  4845.  13h unrecoverable error
  4846.  14h record manager inactive
  4847.  15h key buffer too short
  4848.  16h data buffer length overrun
  4849.  17h position block length
  4850.  18h page size error
  4851.  19h create I/O error
  4852.  1Ah number of keys
  4853.  1Bh invalid key position
  4854.  1Ch invalid record length
  4855.  1Dh invalid key length
  4856.  1Eh not a Btrieve file
  4857.  1Fh file already extended
  4858.  20h extended I/O error
  4859.  22h invalid extension name
  4860.  23h directory error
  4861.  24h transaction error
  4862.  25h transaction is active
  4863.  26h transaction control file I/O error
  4864.  27h end/abort transaction error
  4865.  28h transaction max files
  4866.  29h operation not allowed
  4867.  2Ah incomplete accelerated access
  4868.  2Bh invalid record address
  4869.  2Ch null key path
  4870.  2Dh inconsistent key flags
  4871.  2Eh access to file denied
  4872.  2Fh maximum open files
  4873.  30h invalid alternate sequence definition
  4874.  31h key type error
  4875.  32h owner already set
  4876.  33h invalid owner
  4877.  34h error writing cache
  4878.  35h invalid interface
  4879.  36h variable page error
  4880.  37h autoincrement error
  4881.  38h incomplete index
  4882.  39h expanded memory error
  4883.  3Ah compression buffer too short
  4884.  3Bh file already exists
  4885.  3Ch reject count reached
  4886.  3Dh work space too small
  4887.  3Eh incorrect descriptor
  4888.  3Fh invalid extended insert
  4889.  40h filter limit reached
  4890.  41h incorrect field offset
  4891.  4Ah automatic transaction abort
  4892.  4Eh deadlock detected
  4893.  50h conflict
  4894.  51h lock error
  4895.  52h lost position
  4896.  53h read outside transaction
  4897.  54h record in use
  4898.  55h file in use
  4899.  56h file table full
  4900.  57h handle table full
  4901.  58h incompatible open mode
  4902.  5Ah redirected device table full
  4903.  5Bh server error
  4904.  5Ch transaction table full
  4905.  5Dh incompatible lock type
  4906.  5Eh permission error
  4907.  5Fh session no longer valid
  4908.  60h communications environment error
  4909.  61h data message too small
  4910.  62h internal transaction error
  4911. --------I-7B---------------------------------
  4912. INT 7B - Eicon Access API (3270/5250 gateways)
  4913. SeeAlso: INT 5C"NetBIOS"
  4914. --------A-7B---------------------------------
  4915. INT 7B CU - AutoCAD ADI INTERFACE
  4916.     AX = function
  4917.         0000h output blank line
  4918.         other ???
  4919. Return: ???
  4920. Note:    called by AutoCAD to perform its output
  4921. SeeAlso: INT 78"AutoCAD",INT 7A"AutoCAD"
  4922. --------E-7B---------------------------------
  4923. INT 7B - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ3
  4924. Note:    this vector is overwritten when GO32 starts but is not restored by
  4925.       early versions of the extender
  4926. SeeAlso: INT 0B,INT 10/AH=FFh"GO32",INT 7A"GO32",INT 7C"GO32"
  4927. --------r-7C---------------------------------
  4928. INT 7C U - IBM REXX88PC command language
  4929.     ???
  4930. --------E-7C---------------------------------
  4931. INT 7C - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ4
  4932. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  4933.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  4934. Note:    this vector is overwritten when GO32 starts but is not restored by
  4935.       early versions of the extender
  4936. SeeAlso: INT 0C,INT 7B"GO32",INT 7D"GO32"
  4937. ----------7C---------------------------------
  4938. INT 7C - PRINDIR v8.03 - API
  4939.     AH = function
  4940.        00h set output to Invisible mode
  4941.        01h set output to LPT1
  4942.        02h set output to LPT2
  4943.        03h set output to LPT3
  4944.        04h set output to COM1
  4945.        05h set output to COM2
  4946.        06h set output to COM3
  4947.        07h set output to COM4
  4948.        08h set output to screen
  4949.        09h set output to file
  4950.        0Ah change file path
  4951.            ES:DI -> new path
  4952.            CX = length of path (max 41, but not range-checked)
  4953.        0Bh change file name
  4954.            ES:DI -> new filename
  4955.            CX = length of new name (max 41, but not range-checked)
  4956.        0Ch set redirected device
  4957.            (01h = LPT1 ... 03h = LPT3, 04h = COM1 ... 07h = COM4)
  4958.        0Dh force buffer dump
  4959.        0Eh set display color
  4960.            AL = new color attribute (see INT 10/AH=08h)
  4961.        0Fh set popup hotkey
  4962.            AL = hotkey scancode
  4963.        10h toggle byte display
  4964.            AL = new state (00h off, 01h on)
  4965.        11h change buffer flush delay
  4966.            AL = timer ticks before flush
  4967. Return: AX = status
  4968.         0000h successful
  4969.         0001h invalid function or nothing in buffer to be dumped
  4970.         (documented as "nonzero = error")
  4971. Program: PRINDIR is a shareware printer-redirection program by J.M. Allen
  4972.       Creations
  4973. Notes:    the installation check consists of testing for the ASCIZ signature
  4974.       "PRINDIR N.NN" (where N.NN is the version number) two bytes beyond
  4975.       the start of the interrupt handler
  4976.     prior versions of PRINDIR used INT 7A instead of INT 7C
  4977. SeeAlso: INT 7A"PRINDIR"
  4978. --------N-7C---------------------------------
  4979. INT 7C - SK-UPPS/SK-PASSPORT Data Link Interface (DLI) API
  4980. Program: SK-UPPS is the Scneider & Koch Universal Portable Protocol Stack,
  4981.       which provides an API on top of it Data Link Interface, allowing the
  4982.       use of any of several network transport layers; this product is
  4983.       called SK-PASSPORT in the USA.
  4984. Notes:    The installation check consists of testing for the ASCII signature
  4985.      string "UPPS_DLI" immediately preceding the interrupt handler.
  4986.     To find the service interrupt being used by the driver, an application
  4987.      should scan through the interrupt table until it finds an interrupt
  4988.      vector with the "UPPS_DLI" string.
  4989.     There may be more than one DLI loaded, each having its own service
  4990.      interrupt.
  4991. SeeAlso: AX=0000h,AX=0002h,AX=000Fh
  4992. Index:    installation check;SK-UPPS
  4993. --------N-7C0000-----------------------------
  4994. INT 7C - SK-UPPS Data Link Interface API - GET DRIVER VERSION
  4995.     AX = 0000h
  4996. Return: AH = major DLI version
  4997.     AL = minor DLI version
  4998.     DX = OEM signature (see below)
  4999.     CL = DLI 2.8+ topology: 1=Ethernet, 2=FDDI, 3=Token-Ring
  5000. SeeAlso: AX=0002h,AX=000Bh,AX=000Dh,AX=000Eh
  5001.  
  5002. OEM signatures (defined by SK):
  5003.  0001h experimental
  5004.  3343h 3COM
  5005.  4942h IBM
  5006.  4943h Intellicom
  5007.  494Eh Intel
  5008.  4B4Fh Kodiak
  5009.  4D41h Madge
  5010.  4E45h Novell
  5011.  4F43h Olicom
  5012.  5349h Siemens
  5013.  534Bh Schneider & Koch (SysKonnect)
  5014.  5744h Western Digital
  5015. --------N-7C0001-----------------------------
  5016. INT 7C - SK-UPPS Data Link Interface API - DOWN DRIVER
  5017.     AX = 0001h
  5018. Return: AX = completion code (see below)
  5019. Note:    the DLI will refuse to unload if there are any protocols
  5020.      (see AX=0007h) or clients (see AX=0010h) active.
  5021.  
  5022. Completion codes:
  5023.  0000h SUCCESS
  5024.  0005h INVALID_MULTICAST
  5025.  0006h BUFFER_TOO_SMALL
  5026.  0007h NO_BUFFERS_LEFT
  5027.  0008h NO_RESOURCES_LEFT
  5028.  000Bh ILLEGAL_PROTOCOL_ID
  5029.  000Ch PROTOCOL_IN_USE
  5030.  000Dh NO_MULTICAST_ADDRESS
  5031.  000Fh PROTOCOLS_ACTIVE
  5032.  0010h CLIENTS_ACTIVE
  5033.  001Bh INVALID_MODE
  5034.  001Ch MODE_NOT_SUPPORTED
  5035.  FFFFh UNKNOWN_SERVICE
  5036. --------N-7C0002-----------------------------
  5037. INT 7C - SK-UPPS Data Link Interface API - GET DRIVER STATUS
  5038.     AX = 0002h
  5039.     ES:DI -> Status Information Block (SIB) (see AX=000Eh, description of
  5040.         Driver Information Block)
  5041. Return: AX = completion code (see AX=0001h)
  5042. Note:    GET DRIVER INFO (AX=000Eh) should be used instead.
  5043. SeeAlso: AX=0000h,AX=000Bh,AX=000Dh,AX=000Eh
  5044. --------N-7C0003-----------------------------
  5045. INT 7C - SK-UPPS Data Link Interface API - CHANGE DRIVER ADDRESS
  5046.     AX = 0003h
  5047.     ES:DI -> new node address (6 bytes)
  5048. Return: AX = completion code (see AX=0001h)
  5049. Note:    the DLI will refuse to change the address if any protocols
  5050.       (see AX=0007h) are active
  5051. SeeAlso: AX=0001h,AX=000Eh
  5052. --------N-7C0004-----------------------------
  5053. INT 7C - SK-UPPS Data Link Interface API - REQUEST BUFFER
  5054.     AX = 0004h
  5055.     DX = protocol id (see AX=0007h)
  5056. Return: AX = completion code (see also AX=0001h)
  5057.         0000h successful
  5058.         ES:BX -> Memory Buffer (Mbuf) (see below)
  5059. Note:    if the DLI has no free Mbufs, it will set an internal flag for the
  5060.      protocol and later call the protocol's Event Upcall with
  5061.      EV_BUFFER_AVAILABLE (see AX=0007h) as soon as an Mbuf becomes
  5062.      available.  There will only be one "buffer available" Upcall, even
  5063.      if this function has been called several times before.
  5064. SeeAlso: AX=0005h,AX=0006h,AX=0012h,AX=0013h
  5065.  
  5066. Format of Memory Buffer (Mbuf):
  5067. Offset    Size    Description
  5068.  00h    DWORD    -> NEXT Mbuf (linked list)
  5069.  04h    WORD    OFFSET of actual data within DATA area
  5070.  06h  2 BYTEs    reserved (currently unused)
  5071.  08h    WORD    LENGTH of actual data found in DATA area starting at OFFSET
  5072.  0Ah  2 BYTEs    reserved (currently unused)
  5073.  0Ch    DWORD    -> DATA area (size can be obtained via AX=000Eh call)
  5074.  10h    WORD    PROTOCOL ID of protocol currently "owning" the Mbuf
  5075.  12h    BYTE    IN USE flag; nonzero if Mbuf still in use by DLI (see AX=0006h)
  5076.  13h    BYTE    RECEIVE STATUS (bit 0-7 only; see AX=0007h - Receive Upcall)
  5077. --------N-7C0005-----------------------------
  5078. INT 7C - SK-UPPS Data Link Interface API - RELEASE BUFFER
  5079.     AX = 0005h
  5080.     ES:BX -> Mbuf (see AX=0004h)
  5081. Return: nothing
  5082. SeeAlso: AX=0004h
  5083. --------N-7C0006-----------------------------
  5084. INT 7C - SK-UPPS Data Link Interface API - TRANSMIT FRAME
  5085.     AX = 0006h
  5086.     ES:BX -> Mbuf (see AX=0004h)
  5087. Return: nothing
  5088. Notes:    The DLI will send LENGTH bytes found in the Mbuf's DATA area starting
  5089.      at OFFSET. A complete and valid frame must be stored there. The DLI
  5090.      will only copy the current node address (see AX=0003h) to the
  5091.      source node field of the frame's MAC header.
  5092.     On Ethernet, the DLI will always send a minimum of 60 bytes, regardless
  5093.      of the value found in the LENGTH field.
  5094.     Returns immediately; the DLI will call the protocol's Transmit Upcall
  5095.      (see AX=0007h) when the frame has been sent.
  5096.     The Mbuf's IN USE field will be non-zero until the DLI calls the
  5097.      Transmit Upcall.
  5098. SeeAlso: AX=0002h,AX=0004h,AX=0013h
  5099.  
  5100. Transmit Upcall called with:
  5101.     ES:BX -> Mbuf (NEXT field destroyed)
  5102.     interrupts disabled
  5103. Note:    On FDDI the bytes of the source and destination node fields in the MAC
  5104.      header have been bit-swapped to physical address format.
  5105. --------N-7C0007-----------------------------
  5106. INT 7C - SK-UPPS Data Link Interface API - REGISTER PROTOCOL
  5107.     AX = 0007h
  5108.     ES:BX -> Protocol Control Block (see below)
  5109. Return: AX = completion code (see AX=0001h)
  5110. Program: SK-UPPS is the Scneider & Koch Universal Portable Protocol Stack,
  5111.       which provides an API on top of it Data Link Interface, allowing the
  5112.       use of any of several network transport layers
  5113. SeeAlso: AX=0008h,AX=000Bh
  5114.  
  5115. Format of Protocol Control Block (PCB):
  5116. Offset    Size    Description
  5117.  00h    WORD    protocol type (high-low)
  5118.  02h    WORD    protocol mode (see below)
  5119.  04h    DWORD    -> Receive Upcall routine
  5120.  08h    DWORD    -> Transmit Upcall routine
  5121.  0Ch    DWORD    -> Event Upcall routine
  5122.  10h    DWORD    -> ASCIZ protocol name (zero if none)
  5123.  14h    WORD    protocol id will be returned here (always non-zero)
  5124.  
  5125. Bitfields for protocol mode:
  5126.  bit 0    promiscuous mode; protocol receives all frames regardless of their
  5127.      destination (PROTOCOL TYPE must be FFFFh)
  5128.  bit 1    if set, protocol's Event Upcall will be called on entry and exit of the
  5129.      DLI's Interrupt Service Routine (see event codes below)
  5130.  bit 2    DLI 2.2+ hook mode; protocol receives all directed frames destined for
  5131.      this station (PROTOCOL TYPE must be FFFFh)
  5132.  bit 3    DLI 2.3+ receive error frames (only valid in promiscuous mode (bit 0))
  5133.  bit 4-5 DLI 2.5+ frame type:
  5134.     00 Ethernet II; specify type code in PROTOCOL TYPE field (high-low)
  5135.     01 IEEE 802.2; specify Service Access Point (SAP) in MSB
  5136.         (offset 0) of PROCOTOL TYPE field; LSB must be zero
  5137.     10 IEEE 802.2 with SNAP header; specify type code in PROTOCOL TYPE
  5138.         field (high-low)
  5139.     11 reserved (currently unused)
  5140.  bit 6    DLI 2.5+ if set, protocol's Event Upcall will be called with event code
  5141.      EV_BUFFER_WANTED, when DLI runs out of Mbufs
  5142.  bit 7    DLI 2.7+ chain mode; if set, client allows the specified frame type to
  5143.      be shared with other clients
  5144.  bit 8    DLI 2.8+ receive non-LLC frames rather than LLC frames
  5145.  bit 9    DLI 2.8+ receive all multicast frames (see also AX=0009h)
  5146.  bit 10-15 reserved (currently unused; must be zero)
  5147. Notes:    If PROTOCOL TYPE is FFFFh and neither the "promiscuous" nor the "hook"
  5148.      mode bit is set, the protocol receives all frames that did not match
  5149.      any registered frame type (demultiplexor mode).
  5150.     Protocols using "promiscuous", "hook" or "chain" mode should always
  5151.      return from the Receive Upcall with the received Mbuf in ES:BX and the
  5152.      Carry Flag set. The DLI will then pass the Mbuf to the FEED BACK
  5153.      BUFFER function (see AX=000Fh).
  5154.     Some DLIs do not support all or even any of the "promiscuous",
  5155.      "receive non-LLC" and "receive all multicasts" mode bits.
  5156.  
  5157. Receive Upcall called with:
  5158.  ES:BX -> Mbuf
  5159.  AX = receive status (see below; also stored in Mbuf's RECEIVE STATUS field)
  5160.  interrupts disabled
  5161.  
  5162. Bitfields for receive status (reserved bits currently unused and always zero):
  5163.  bit 0-2 reserved
  5164.  bit 3    frame check sequence (FCS) error
  5165.  bit 4    overflow (frame too long)
  5166.  bit 5    framing error
  5167.  bit 6    reserved
  5168.  bit 7    non-LLC frame (see bit 8 of PCB's protocol mode field)
  5169.  bit 8-15 reserved
  5170. Notes:    The protocol's Receive Upcall routine will be called whenever a frame
  5171.      matching the specified frame type is received. A received frame is
  5172.      passed to the protocol in the Mbuf's DATA area at OFFSET and its size
  5173.      is LENGTH bytes.
  5174.     The receive status passed to the Receive Upcall in register AL is
  5175.      always zero, except for protocols using "non-LLC" mode (bit 8 of PCB's
  5176.      protocol mode field) or "promiscuous" mode together with "receive
  5177.      error frames" (bits 0 & 3).
  5178.     Upcalls are FAR routines and must return with a RET FAR. If the Carry
  5179.      Flag is set on return from a Receive or Transmit Upcall, then ES:BX
  5180.      must point to an Mbuf, which the DLI will then pass to the RELEASE
  5181.      BUFFER function (see AX=0005h). See also notes for PROTOCOL MODE.
  5182.  
  5183. Event Upcall called with:
  5184.  AX = event code (see below)
  5185. Note:    All Event Upcalls may be ignored by the protocol.
  5186.  
  5187. Event codes found in register AX on Event Upcall:
  5188.  00h EV_BUFFER_AVAILABLE  client may now call REQUEST BUFFER (AX=0004h)
  5189.  01h EV_ISR_START    start of Interrupt Service Routine
  5190.  02h EV_ISR_END        end of ISR (see bit 1 in PCB's protocol mode field)
  5191.  03h EV_BUFFER_WANTED    DLI temporarily out of Mbufs
  5192.  04h EV_NETWORK_STATUS    DLI 2.8+ network status (DX=status; see below)
  5193.  05h EV_IO_CONTROL    DLI 2.8+ I/O control (DX=subfunction; see AX=0016h)
  5194.  
  5195. Bitfields for EV_NETWORK_STATUS in register DX:
  5196.     Token-Ring        FDDI
  5197.  bit 15 SIGNAL_LOSS        SIGNAL_LOSS
  5198.  bit 14 HARD_ERROR        HARD_ERROR
  5199.  bit 13 SOFT_ERROR        SOFT_ERROR
  5200.  bit 12 TRANSMIT_BEACON        TRANSMIT_BEACON
  5201.  bit 11 LOBE_WIRE_FAULT        PATH_TEST_FAILED
  5202.  bit 10 AUTO_REMOVAL        SELF_TEST_REQUIRED
  5203.  bit 9    reserved        reserved
  5204.  bit 8    REMOVE_RECEIVED        REMOTE_DISCONNECT
  5205.  bit 7    COUNTER_OVERFLOW    reserved
  5206.  bit 6    SINGLE_STATION        DUPLICATE_ADDRESS
  5207.  bit 5    RING_RECOVERY        NO_RING_OP_STATUS
  5208.  bit 4    reserved        VERSION_MISMATCH
  5209.  bit 3    reserved        STUCK_BYPASS
  5210.  bit 2    reserved        FDDI_EVENT
  5211.  bit 1    reserved        RING_OP_CHANGE
  5212.  bit 0    reserved        reserved
  5213. Note:    EV_NETWORK_STATUS is not supported on Ethernet
  5214. --------N-7C0008-----------------------------
  5215. INT 7C - SK-UPPS Data Link Interface API - DISABLE PROTOCOL
  5216.     AX = 0008h
  5217.     BX = protocol id (see AX=0007h)
  5218. Return: AX = completion code (see AX=0001h)
  5219. Note:    the DLI will handle any Mbufs given to TRANSMIT FRAME (AX=0006h) as if
  5220.      they had been given to TRANSMIT FRAME RELEASE (AX=0013h).
  5221.     all multicast addresses registered for this protocol will be disabled.
  5222.     after this function returns, the protocol's Upcall routines will no
  5223.      longer be called.
  5224. SeeAlso: AX=0007h,AX=000Bh
  5225. --------N-7C0009-----------------------------
  5226. INT 7C - SK-UPPS Data Link Interface API - REGISTER MULTICAST
  5227.     AX = 0009h
  5228.     BX = protocol id (see AX=0007h)
  5229.     ES:DI -> multicast address (6 bytes)
  5230. Return: AX = completion code (see AX=0001h)
  5231. Notes:    The broadcast address is always enabled.
  5232.     Set bit 9 of PCB's protocol mode field in REGISTER PROTOCOL call
  5233.      (AX=0007h) to receive all multicast frames.
  5234. SeeAlso: AX=000Ah,AX=0014h
  5235. --------N-7C000A-----------------------------
  5236. INT 7C - SK-UPPS Data Link Interface API - DISABLE MULTICAST
  5237.     AX = 000Ah
  5238.     BX = protocol id (see AX=0007h)
  5239.     ES:DI -> multicast address (6 bytes)
  5240. Return: AX = completion code (see AX=0001h)
  5241. SeeAlso: AX=0009h,AX=0014h
  5242. --------N-7C000B-----------------------------
  5243. INT 7C - SK-UPPS Data Link Interface API - GET PROTOCOL LIST
  5244.     AX = 000Bh
  5245.     ES:DI -> protocol id buffer
  5246.     CX = number of 2-byte protocol ids that may be stored in buffer
  5247. Return: AX = completion code (see AX=0001h)
  5248.     CX = number of active protocols (regardless of value returned in AX)
  5249.     protocol id buffer filled with active protocol ids
  5250. Program: SK-UPPS is the Scneider & Koch Universal Portable Protocol Stack,
  5251.       which provides an API on top of it Data Link Interface, allowing the
  5252.       use of any of several network transport layers
  5253. Note:    If the buffer supplied is too small, CX still contains the total number
  5254.      of active protocols and the buffer has been filled until full.
  5255. SeeAlso: AX=000Ch,AX=0014h
  5256. --------N-7C000C-----------------------------
  5257. INT 7C - SK-UPPS Data Link Interface API - GET PROTOCOL STATUS
  5258.     AX = 000Ch
  5259.     BX = protocol id (see AX=000Bh)
  5260.     ES:DI -> Protocol Status Block (see below)
  5261. Return: AX = completion code (see AX=0001h)
  5262. SeeAlso: AX=000Bh,AX=0014h
  5263.  
  5264. Format of Protocol Status Block (PSB):
  5265. Offset    Size    Description
  5266.  00h    DWORD    -> ASCIZ protocol name
  5267.  04h    WORD    protocol mode (see AX=0007h)
  5268.  06h    WORD    protocol type (see AX=0007h)
  5269.  08h    WORD    number of registered multicasts (see AX=0009h, AX=0014h)
  5270. --------N-7C000D-----------------------------
  5271. INT 7C - SK-UPPS Data Link Interface API - GET DRIVER STATISTICS
  5272.     AX = 000Dh
  5273.     BX = flag: 0=don't clear statistics, 1=clear statistics
  5274.     ES:DI -> Statistics Data Block (see below)
  5275. Return: AX = completion code (see AX=0001h)
  5276. SeeAlso: AX=0002h,AX=0015h
  5277.  
  5278. Format of Statistics Data Block (SDB):
  5279. Offset    Size    Description
  5280.  00h    DWORD    node uptime in ticks (1/18.21 sec.)
  5281.  04h    DWORD    bytes received
  5282.  08h    DWORD    bytes transmitted
  5283.  0Ch    DWORD    frames received
  5284.  10h    DWORD    frames transmitted
  5285.  14h    DWORD    multicast bytes received
  5286.  18h    DWORD    multicast frames received
  5287.  1Ch    DWORD    unrecognized frames
  5288.  20h    WORD    missed frames
  5289.  22h    WORD    frame check sequence (FCS) errors
  5290.  24h    WORD    framing errors
  5291.  26h    WORD    babbling errors
  5292.  28h    WORD    late collision errors
  5293.  2Ah    WORD    loss of carrier errors
  5294.  2Ch    WORD    16 retries failed errors
  5295.  2Eh    WORD    overflow errors
  5296. Note:    fields 26h through 2Ch are always zero, except in some very old
  5297.       versions of the DLI.  Use GET MEDIA STATISTICS (AX=0015h) to get
  5298.       more detailed information.
  5299. --------N-7C000E-----------------------------
  5300. INT 7C - SK-UPPS Data Link Interface API - DLI 2.5+ - GET DRIVER INFO
  5301.     AX = 000Eh
  5302.     ES:DI -> Driver Information Block (see below)
  5303.     BX = offset of 1st field within DIB to be returned
  5304.     CX = number of bytes to be returned
  5305. Return: AX = completion code (see AX=0001h)
  5306.     CX = number of bytes copied (regardless of value returned in AX)
  5307. Program: SK-UPPS is the Scneider & Koch Universal Portable Protocol Stack,
  5308.       which provides an API on top of it Data Link Interface, allowing the
  5309.       use of any of several network transport layers
  5310. SeeAlso: AX=0000h,AX=0002h,AX=000Bh,AX=000Dh,AX=0015h
  5311.  
  5312. Format of Driver Information Block (DIB):
  5313. Offset    Size    Description
  5314.  00h  6 BYTEs    physical node address (from adapter's ROM)
  5315.  06h  6 BYTEs    current node address (see AX=0003h)
  5316.  0Ch    BYTE    adapter id (defined by OEM)
  5317.  0Dh    BYTE    IRQ line (FFh if none)
  5318.  0Eh    DWORD    -> shared memory (zero if none)
  5319.  12h    DWORD    size of shared memory (zero if none)
  5320.  16h    WORD    base I/O port (zero if none)
  5321.  18h    BYTE    DMA line (FFh if none)
  5322.  19h    BYTE    DLI 2.4+ topology (see AX=0000h)
  5323.  1Ah    WORD    size of an Mbuf's DATA area (see AX=0004h)
  5324.  1Ch  2 BYTEs    reserved (currently unused)
  5325.  1Eh    WORD    total number of Mbufs the DLI has
  5326.  20h    WORD    maximum number of Mbufs that can be allocated via REQUEST
  5327.          BUFFER (AX=0004h) and SYNC REQUEST BUFFER (AX=0012h)
  5328.  ---- end of Status Information Block returned by GET DRIVER STATUS (AX=0002h)
  5329.  22h    DWORD    -> ASCIZ adapter name
  5330.  26h    WORD    number of I/O ports used (zero if none)
  5331.  28h    DWORD    line speed in bits/sec.
  5332. --------N-7C000F-----------------------------
  5333. INT 7C - SK-UPPS Data Link Interface API - FEED BACK BUFFER
  5334.     AX = 000Fh
  5335.     ES:BX -> Mbuf
  5336. Return: nothing
  5337. Notes:    A protocol may call this function instead of returning the Mbuf
  5338.      directly from the Receive Upcall if it is running in "promiscuous",
  5339.      "hook" or "chain" mode.
  5340. SeeAlso: AX=0007h
  5341. --------N-7C0010-----------------------------
  5342. INT 7C - SK-UPPS Data Link Interface API - CLIENT HOOK
  5343.     AX = 0010h
  5344. Return: nothing
  5345. Notes:    An application having no active protocols may call this function to
  5346.      prevent the DLI from unloading.
  5347. SeeAlso: AX=0001h,AX=0011h
  5348. --------N-7C0011-----------------------------
  5349. INT 7C - SK-UPPS Data Link Interface API - CLIENT UNHOOK
  5350.     AX = 0011h
  5351. Return: nothing
  5352. Program: SK-UPPS is the Scneider & Koch Universal Portable Protocol Stack,
  5353.       which provides an API on top of it Data Link Interface, allowing the
  5354.       use of any of several network transport layers
  5355. SeeAlso: AX=0010h
  5356. --------N-7C0012-----------------------------
  5357. INT 7C - SK-UPPS Data Link Interface API - SYNC REQUEST BUFFER
  5358.     AX = 0012h
  5359.     DX = protocol id (see AX=0007h)
  5360. Return: AX = completion code (see AX=0001h)
  5361.     if AX=0000h: ES:BX -> Mbuf (see AX=0004h)
  5362. Note:    If the protocol wants to be informed when an Mbuf becomes available,
  5363.      REQUEST BUFFER (AX=0004h) should be used instead.
  5364. SeeAlso: AX=0004h,AX=0005h,AX=0006h,AX=0013h
  5365. --------N-7C0013-----------------------------
  5366. INT 7C - SK-UPPS Data Link Interface API - TRANSMIT FRAME RELEASE
  5367.     AX = 0013h
  5368.     ES:BX -> Mbuf (see AX=0004h)
  5369. Return: nothing
  5370. Notes:    Returns immediately; The protocol's Transmit Upcall will NOT be called.
  5371.     The Mbuf may no more be used by the protocol in any way (i.e. the
  5372.      Mbuf's IN USE field may not be polled).
  5373. SeeAlso: AX=0004h,AX=0013h
  5374. --------N-7C0014-----------------------------
  5375. INT 7C - SK-UPPS Data Link Interface API - GET MULTICAST LIST
  5376.     AX = 0014h
  5377.     BX = protocol id (see AX=000Bh)
  5378.     ES:DI -> multicast address buffer
  5379.     CX = number of 6-byte multicast addresses that may be stored in buffer
  5380. Return: AX = completion code (see AX=0001h)
  5381.     CX = number of registered multicast addresses for this protocol
  5382.      (regardless of value returned in AX)
  5383.     multicast address buffer filled with multicast addresses registered for
  5384.      this protocol
  5385. Note:    If the buffer supplied is too small, CX still contains the total number
  5386.      of registered multicast addresses for this protocol and the buffer has
  5387.      been filled until full.
  5388. SeeAlso: AX=000Bh,AX=0009h,AX=000Ch
  5389. --------N-7C0015-----------------------------
  5390. INT 7C - SK-UPPS Data Link Interface API - DLI 2.6+ - GET MEDIA STATISTICS
  5391.     AX = 0015h
  5392.     ES:DI -> media-specific statistics buffer (see below)
  5393.     BX = offset of 1st field within MSS to be returned
  5394.     CX = number of bytes to be returned
  5395. Return: AX = completion code (see AX=0001h)
  5396.     CX = number of bytes copied (regardless of value returned in AX)
  5397. Note:    not supported by all DLIs (will return AX=FFFFh if not supported).
  5398. SeeAlso: AX=0000h,AX=000Dh
  5399.  
  5400. Format of media-specific statistics for Ethernet:
  5401. Offset    Size    Description
  5402.  00h    DWORD    alignment errors
  5403.  04h    DWORD    frame check sequence (FCS) errors
  5404.  08h    DWORD    single collision frames
  5405.  0Ch    DWORD    multiple collision frames
  5406.  10h    DWORD    signal quality error (SQE) test errors
  5407.  14h    DWORD    deferred transmissions
  5408.  18h    DWORD    late collisions
  5409.  1Ch    DWORD    excessive collisions
  5410.  20h    DWORD    internal MAC transmit errors
  5411.  24h    DWORD    carrier sense errors
  5412.  28h    DWORD    excessive deferrals
  5413.  2Ch    DWORD    frame too longs
  5414.  30h    DWORD    in range length errors
  5415.  34h    DWORD    out of range length fields
  5416.  38h    DWORD    internal MAC receive errors
  5417.  
  5418. Format of media-specific statistics for FDDI:
  5419. Offset    Size    Description
  5420.  00h    DWORD    SMT operating version id (refer to ANSI 7.1.2.2)
  5421.  04h    DWORD    SMT CF state: 1=Isolated, 2= Wrap_S, 3=Wrap_A, 4=Wrap_B,
  5422.          5=Wrap_AB, 6=Thru (refer to ANSI SMT 9.7.4.3)
  5423.  08h    DWORD    SMT frames sent
  5424.  0Ch    DWORD    SMT frames received
  5425.  10h    DWORD    SMT ring up count
  5426.  14h  6 BYTEs    MAC upstream neighbour
  5427.  1Ah  6 BYTEs    MAC downstream neighbour
  5428.  20h    DWORD    MAC frame counter (refer to ANSI MAC 2.2.1)
  5429.  24h    DWORD    MAC error counter ( " )
  5430.  28h    DWORD    MAC lost counter ( " )
  5431.  2Ch    BYTE    port 1 link error estimate (ranges from 10**-4 to 10**-15 and
  5432.          is reported as the absolute value of the exponent)
  5433.  2Dh    BYTE    port 2 link error estimate ( " )
  5434.  2Eh  2 BYTEs    reserved (currently unused)
  5435.  30h    DWORD    attachment class: 1=single-attachment (S PORT),
  5436.          2=dual-attachment (A/B PORT pairs), 3=concentrator (M PORTs)
  5437.  34h    DWORD    attachment optical bypass present: 1=true, 2=false
  5438.  
  5439. Format of media-specific statistics for Token-Ring:
  5440. Offset    Size    Description
  5441.  00h  6 BYTEs    upstream neighbour
  5442.  06h    WORD    local ring number
  5443.  08h    DWORD    ring up count
  5444.  0Ch    DWORD    signal loss errors
  5445.  10h    DWORD    lobe wire faults
  5446.  14h    DWORD    ring recovery count
  5447.  18h    DWORD    line errors
  5448.  1Ch    DWORD    burst errors
  5449.  20h    DWORD    ARI/FCI errors
  5450.  24h    DWORD    lost frame errors
  5451.  28h    DWORD    receive congestion errors
  5452.  2Ch    DWORD    frame copied errors
  5453.  30h    DWORD    token errors
  5454.  34h    DWORD    DMA bus errors
  5455.  38h    DWORD    DMA parity errors
  5456.  3Ch    DWORD    receive overflow errors
  5457. --------N-7C0016-----------------------------
  5458. INT 7C - SK-UPPS Data Link Interface API - DLI 2.8+ - DRIVER IO CONTROL
  5459.     AX = 0016h
  5460.     DX = subfunction; bits 14-15 specify direction of I/O:
  5461.         00 no data at all (ES:BX undefined)
  5462.         01 driver -> application (GET)
  5463.         10 application -> driver (SET)
  5464.         11 both directions (GET/SET)
  5465.     ES:BX -> I/O buffer (optional)
  5466.     CX = size of buffer (if ES:BX valid)
  5467. Return: AX = completion code; defined by OEM
  5468. Program: SK-UPPS is the Scneider & Koch Universal Portable Protocol Stack,
  5469.       which provides an API on top of it Data Link Interface, allowing the
  5470.       use of any of several network transport layers
  5471. Notes:    not supported by all DLIs (will return AX=FFFFh if not supported)
  5472.     subfunction codes are defined by OEMs
  5473. SeeAlso: AX=0001h
  5474. --------N-7C0017-----------------------------
  5475. INT 7C - SK-UPPS Data Link Interface API - DLI 2.8+ - INTERRUPT REQUEST
  5476.     AX = 0017h
  5477. Return: AX = completion code (see AX=0001h)
  5478. Notes:    not supported by all DLIs (will return AX=FFFFh, if not supported).
  5479.     must be called with interrupts disabled; when the client re-enables
  5480.      interrupts, an interrupt will be generated and reported to the client
  5481.      through an Event Upcall (see AX=0007h [EV_ISR_START/EV_ISR_END])
  5482. SeeAlso: AX=0007h
  5483. --------t-7D---------------------------------
  5484. INT 7D - [obsoleted proposal] - ALTERNATE MULTIPLEX INTERRUPT
  5485. Note:    this interface has been moved to INT 2D; there are no known
  5486.       implementations on INT 7D
  5487. SeeAlso: INT 2D,INT 2F
  5488. --------S-7D---------------------------------
  5489. INT 7D U - YTERM 1.4 - CLOCK SUPPORT
  5490. SeeAlso: INT 7E"YTERM"
  5491. --------E-7D---------------------------------
  5492. INT 7D - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ5
  5493. Note:    this vector is overwritten when GO32 starts but is not restored by
  5494.       early versions of the extender
  5495. SeeAlso: INT 0D,INT 7C"GO32",INT 7E"GO32"
  5496. --------U-7D---------------------------------
  5497. INT 7D - HyperPAD v2.2 - API ACCESS
  5498. Note:    this vector is hooked but immediately passed on (without checking
  5499.       whether the previous handler was 0000h:0000h).  The sole purpose of
  5500.       this vector is to provide the address of the data area described
  5501.       below.
  5502.  
  5503. Format of HyperPAD data area:
  5504. Offset    Size    Description
  5505.  -16h    DWORD    pointer to ??? FAR function
  5506.  -12h    DWORD    pointer to callback setting function
  5507.         [C calling conventions, (*callback)(int (_loadds far *)()) ]
  5508.  -0Eh 6 BYTEs    signature "BRC001"
  5509.  -08h    DWORD    pointer to previous INT 7D handler
  5510.  -04h    DWORD    pointer to ??? data
  5511.  00h        HyperPAD INT 7D handler
  5512. ----------7D00-------------------------------
  5513. INT 7D - SCSILink - RESET SCSI BUS
  5514.     AH = 00h
  5515. Program: SCSILink is a TSR by Cross Products Ltd which allows its PC-hosted
  5516.       cross assemblers and similar products to communicate with Cross
  5517.       Products hardware debuggers
  5518. Desc:    reset all devices on the SCSI bus
  5519. Note:    the installation check is the signature "SCSILINK" immediately prior
  5520.       to the interrupt handler
  5521. Index:    installation check;SCSILink
  5522. ----------7D01-------------------------------
  5523. INT 7D - SCSILink - CONNECT TO TARGET
  5524.     AH = 01h
  5525.     AL = target ID
  5526. Return:    CF clear if successful
  5527.     CF set on error
  5528.         AL = initiator error
  5529.         AH = target error
  5530. Desc:    arbitrate the use of the bus and select the specified target device
  5531. ----------7D02-------------------------------
  5532. INT 7D - SCSILink - SEND COMMAND
  5533.     AH = 02h
  5534.     ES:BX -> parameter block (see below)
  5535. Return: CF clear if successful
  5536.     CF set on error
  5537.         AL = initiator error
  5538.         AH = target error
  5539. Desc:    send the specified command block to the target device and perform any
  5540.       related I/O
  5541.  
  5542. Format of parameter block:
  5543. Offset    Size    Description
  5544.  00h    DWORD    size of command block
  5545.  04h    DWORD    address of command block (see below)
  5546.  08h    DWORD    size of buffer
  5547.  0Ch    DWORD    address of buffer
  5548.  
  5549. Format of command block:
  5550. Offset    Size    Description
  5551.  00h        info not yet available
  5552. ----------7D03-------------------------------
  5553. INT 7D - SCSILink - SET TIMEOUT
  5554.     AH = 03h
  5555.     AL = timeout selector (see below)
  5556.     BX = new value in 55ms ticks
  5557. Desc:    change an internal timeout value to allow communication with very
  5558.       slow targets
  5559.  
  5560. Values for timeout selector:
  5561.  00h    time to wait for bus (default 18)
  5562.  01h    time to wait for new phase (default 5)
  5563.  02h    maximum time to send/receive block (default 18)
  5564.  03h    time to wait for reselect (default 180)
  5565. ----------7D04-------------------------------
  5566. INT 7D - SCSILink - GET ERROR STRING
  5567.     AH = 04h
  5568.     AL = error number
  5569. Return: ES:BX -> ASCIZ error string for error number
  5570. ----------7D05-------------------------------
  5571. INT 7D - SCSILink - GET ADDRESS
  5572.     AH = 05h
  5573. Return: AL = DMA channel
  5574.     AH = initiator ID
  5575.     BX = card address
  5576. Desc:    determine the current hardware configuration
  5577. ----------7D06-------------------------------
  5578. INT 7D - SCSILink - PUT DATA
  5579.     AH = 06h
  5580.     CX = number of bytes to store (0001h-0100h)
  5581.     ES:BX -> data to be saved
  5582. Return: CF clear if successful
  5583.     CF set on error
  5584.         AL = error code (01h = too much data)
  5585. Note:    the specified data is stored in SCSILink's PSP
  5586. SeeAlso: AH=07h
  5587. ----------7D07-------------------------------
  5588. INT 7D - SCSILink - GET DATA
  5589.     AH = 07h
  5590.     CX = number of bytes to retrieve (0001h-0100h)
  5591.     ES:BX -> buffer for data
  5592. Return: CF clear if successful
  5593.     CF set on error
  5594.         AL = error code (01h = too much data)
  5595. Note:    retrieve data previously stored with AH=06h
  5596. SeeAlso: AH=06h
  5597. ----------7D08-------------------------------
  5598. INT 7D - SCSILink - TERMINATE SESSION
  5599.     AH = 08h
  5600. Desc:    indicate to any other programs that intercept INT 7D that the program
  5601.       has finished with the link
  5602. Note:    the program should call this function even if a SCSI error caused its
  5603.       termination
  5604. ----------7D09-------------------------------
  5605. INT 7D - SCSILink - POLL REQUEST
  5606.     AH = 09h
  5607.     AL = target ID
  5608. Return: AL = status
  5609.         FEh resident driver experienced SCSI error
  5610.         FFh resident driver handleded event
  5611. Desc:    give any drivers chained onto INT 7D a chance to handle an exception
  5612.       not specifically handled by the calling program
  5613. Notes:    this service exists so that resident disk servers, etc. can continue
  5614.       running even while debuggers and profilers are active
  5615.     the resident driver assumes that a connection has been established and
  5616.       attempts to leave the target connected
  5617. --------*-7E---------------------------------
  5618. INT 7E - RESERVED FOR DIP, Ltd. ROM LIBRARY
  5619. --------S-7E---------------------------------
  5620. INT 7E U - YTERM 1.4 - ???
  5621. SeeAlso: INT 7D"YTERM",INT 7F"YTERM"
  5622. --------E-7E---------------------------------
  5623. INT 7E - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ6
  5624. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  5625.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  5626. Note:    this vector is overwritten when GO32 starts but is not restored by
  5627.       early versions of the extender
  5628. SeeAlso: INT 0E,INT 7D"GO32",INT 7F"GO32"
  5629. --------V-7F---------------------------------
  5630. INT 7F - IBM XGA - ???
  5631. --------V-7F---------------------------------
  5632. INT 7F - Halo88 - API
  5633.     BX = function
  5634.         64h arc
  5635.         65h bar
  5636.         66h box
  5637.         67h circle
  5638.         68h clr
  5639.         69h default hatch style
  5640.         6Ah default line style
  5641.         6Bh delhcur
  5642.         6Ch delln / deltcur
  5643.         6Dh ellipse
  5644.         6Eh fill
  5645.         6Fh flood
  5646.         70h flood2
  5647.         71h init graphics
  5648.         72h init hcur
  5649.         73h init marker
  5650.         74h init tcur
  5651.         75h inqarc
  5652.         76h inqbknd
  5653.         77h inqclr
  5654.         78h inqerr
  5655.         79h inqgcur
  5656.         7Ah inqhcur
  5657.         7Bh inqmarker
  5658.         7Dh inqtcur
  5659.         7Eh inqtext
  5660.         7Fh lnabs
  5661.         80h lnrel
  5662.         81h markerabs
  5663.         82h markerrel
  5664.         83h moveabs
  5665.         84h movehcurabs
  5666.         85h movehcurrel
  5667.         86h moverel
  5668.         87h movetcurabs
  5669.         88h movetcurrel
  5670.         89h movefrom
  5671.         8Ah moveto
  5672.         8Bh pie
  5673.         8Ch polylnabs
  5674.         8Dh polylnrel
  5675.         8Eh ptabs
  5676.         8Fh ptrel
  5677.         91h setasp
  5678.         92h set color
  5679.         93h set font
  5680.         94h set hatch style
  5681.         95h set line style
  5682.         97h settext
  5683.         98h set text color
  5684.         99h btext
  5685.         9Ah setseg
  5686.         9Bh display
  5687.         9Ch setscreen
  5688.         9Eh close graphics
  5689.         9Fh ftinit
  5690.         A0h ftlocate
  5691.         A1h ftext
  5692.         A5h set viewport
  5693.         A6h set window
  5694.         A7h set world
  5695.         AAh ftcolor
  5696.         ACh initlp
  5697.         ADh inqasp
  5698.         AEh inqdev
  5699.         AFh inqdisplay
  5700.         B0h inqft
  5701.         B1h inqftcolor
  5702.         B2h inqinterlace
  5703.         B3h inqlpa
  5704.         B4h inqlpg
  5705.         B5h inqmode
  5706.         B6h inqscreen
  5707.         B7h inqversion
  5708.         B8h roam
  5709.         B9h scroll
  5710.         BAh setieee
  5711.         BBh set interlace
  5712.         BCh shift
  5713.         BDh start graphics
  5714.         BEh vpan
  5715.         CBh gwrite
  5716.         CCh gread
  5717.         CDh setxor
  5718.         CEh rbox
  5719.         CFh rcir
  5720.         D0h rlnabs
  5721.         D1h rlnrel
  5722.         D2h delbox
  5723.         D3h delcir
  5724.         D5h setseg2
  5725.         DCh worldoff
  5726.         DDh mapwtod
  5727.         DEh mapdtow
  5728.         DFh mapwton
  5729.         E0h mapntow
  5730.         E1h mapdton
  5731.         E2h mapntod
  5732.         E3h inqworld
  5733.         E4h inqviewport
  5734.         E5h set line width
  5735.         E6h lnjoint
  5736.         E7h set locator
  5737.         E8h read locator
  5738.         E9h setdev
  5739.         EBh setstext
  5740.         ECh setstclr
  5741.         EDh setstang
  5742.         EEh stext
  5743.         EFh inqstext
  5744.         F0h setdegree
  5745.         F1h inqstsize
  5746.         F2h polyfabs
  5747.         F3h polyfrel
  5748.         F4h inqdrange
  5749.         F5h inqstang
  5750.         F6h orglocator
  5751.         F7h inqlocator
  5752.         F8h inqarea
  5753.         F9h setipal
  5754.         FAh setborder
  5755.         FBh inqcrange
  5756.         FEh setclip
  5757.         FFh fcir
  5758.            100h setcrange
  5759.            101h setdrange
  5760.            102h setlattr
  5761.            103h polycabs
  5762.            104h polycrel
  5763.            108h memcom
  5764.            109h memexp
  5765.            10Ah memmov
  5766.            10Eh movefx
  5767.            10Fh movetx
  5768.            110h inqrgb
  5769.            111h save image
  5770.            112h restore image
  5771.            113h setapal
  5772.            114h setxpal
  5773.            118h inqtsize
  5774.            12Eh gprint
  5775.            130h setprn
  5776.            131h setpattr
  5777.            133h setbattr
  5778.            135h pexpand
  5779.            136h ptnorm
  5780.            137h pfnorm
  5781.            13Bh inqprn
  5782.            13Ch lopen
  5783.            13Dh lclose
  5784.            13Eh lappend
  5785.            13Fh lrecord
  5786.            140h lswitch
  5787.            142h inqfun
  5788.            15Dh lsetup
  5789.            15Eh lrest
  5790.            15Fh lsave
  5791.     additional parameters on stack
  5792. Return: ???
  5793. Program: Halo88 is a suite of graphics routines
  5794. Note:    according to Stuart Kemp, the code appears to make no provisions for
  5795.        chaining
  5796. --------N-7F---------------------------------
  5797. INT 7F - CONVERGENT TECHNOLOGIES ClusterShare CTOS ACCESS VECTOR
  5798.     AL = request ID
  5799.         01h "Request"/"RequestDirect"
  5800.         ES:BX -> pRq
  5801.         DX ignored
  5802.         04h "Wait"
  5803.         ES:BX -> ppMsgRet
  5804.         DX = exchange
  5805.         05h "AllocExch"
  5806.         ES:BX -> pExchRet
  5807.         06h "DeAllocExch"
  5808.         DX = exchange
  5809.         07h "Check"
  5810.         ES:BX -> ppMsgRet
  5811.         DX = exchange
  5812.     CX = 4354h ('CT')
  5813. Return: AX = status
  5814.         0000h successful
  5815. --------S-7F---------------------------------
  5816. INT 7F - Telebit ACS SERIAL I/O
  5817.     ES:SI-> parameter block
  5818. Return: CF set on error
  5819.     CF clear on success
  5820. Notes:    the signature "PDGATEWRKSTNIF" appears just prior to the interrupt
  5821.       handler; this serves as the installation check
  5822. Index:    installation check;Telebit ACS Serial I/O
  5823.  
  5824. Format of Telebit ACS parameter block:
  5825. Offset    Size    Description
  5826.  00h    BYTE    command
  5827.             3Ch status
  5828.             3Dh connect
  5829.             3Eh disconnect
  5830.             3Fh read
  5831.             40h data/command write
  5832.             41h clear receive buffer
  5833.             42h get configuration
  5834.             43h get receiver status
  5835.             44h raw write
  5836.             45h search servers
  5837.             46h set transmit buffer size
  5838.  01h    BYTE    gateway number
  5839.  02h    BYTE    reserved
  5840.  03h    BYTE    port
  5841.  04h 17 BYTES    auxiliary buffer
  5842.  15h    BYTE    session
  5843.  16h    WORD    count of bytes passed to API
  5844.  18h    DWORD    buffer pointer passed to/from API
  5845.  1Ch    WORD    count of bytes passed from API
  5846.  1Eh    BYTE    return code (see below)
  5847.  
  5848. Values for return code:
  5849.  00h - success
  5850.  01h - invalid session
  5851.  05h - servername invalid
  5852.  06h - netware fileserver bindery is locked
  5853.  07h communication server not active
  5854.  08h general failure in netware fileserver
  5855.  09h not logged into a fileserver
  5856.  10h connection table full
  5857.  11h no response from communication server
  5858.  12h connection attempt terminated abnormally
  5859.  13h connection refused - no sessions available
  5860.  14h gw_no/port already in use
  5861.  15h invalid connection response
  5862.  16h port invalid
  5863.  17h incorrect version in server response
  5864.  18h gw_no/port combination not configured
  5865.  19h initialization has not been completed
  5866.  20h no more sockets are available
  5867.  21h no active poolname
  5868.  23h FATAL internal interface error
  5869.  24h registration of host workstation failed - name is already in used
  5870.  25h registration of host workstation failed - workstation name table full
  5871.  26h registration of host workstation failed - only one session may be
  5872.     registered for dial-in
  5873.  FFh telebit acs api is busy - retry later
  5874. --------N-7F---------------------------------
  5875. INT 7F - Non-dedicated NetWare 2.x File Server - ENTER CONSOLE MODE
  5876. Notes:    the installation check consists of checking for the signature "Lynn"
  5877.       in the four bytes preceding the interrupt handler; if present, the
  5878.       current program is running as a DOS task on a non-dedicated NetWare
  5879.       2.x file server.
  5880.     Before placing the server into "console" mode, it is recommended that
  5881.       NetWare broadcast messages be disabled with INT 21/AX=DE00h.
  5882. SeeAlso: INT 21/AX=DE00h
  5883. Index:    installation check;non-dedicated NetWare server
  5884. --------S-7F---------------------------------
  5885. INT 7F U - YTERM - ???
  5886. SeeAlso: INT 7E"YTERM"
  5887. --------E-7F---------------------------------
  5888. INT 7F - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ7
  5889. Note:    this vector is overwritten when GO32 starts but is not restored by
  5890.       early versions of the DOS extender
  5891. SeeAlso: INT 0F,INT 7E"GO32"
  5892. ----------7F---------------------------------
  5893. INT 7F - Canon IXHND2 Scanner Interface
  5894. --------N-7F---------------------------------
  5895. INT 7F - Alloy 386/MultiWare (MW386), Novell-Type Network Executive (NTNX)
  5896. Notes:    the words at C800h:0000h and C800h:0002h will both be 584Eh if the
  5897.       MW386 multitasking system is present (i.e. signature "NXNX")
  5898.     NTNX allows its API to be placed on a different interrupt than 7Fh at
  5899.       load time.  To determine the actual vector used, open the device
  5900.       "SPOOLER" with INT 21/AX=3D02h, place it in RAW mode with
  5901.       INT 21/AX=4400h and INT 21/AX=4401h, then read one byte which will
  5902.       be the actual interrupt number being used; the other interrupts may
  5903.       be found with INT 7F/AH=09h/CL=03h
  5904. --------N-7F---------------------------------
  5905. INT 7F - Alloy NetWare Support Kit (ANSK) v2.2+ - INSTALLATION CHECK
  5906. Note:    a program may determine that it is running on an ANSK Slave by checking
  5907.       the five bytes at F000h:0000h for the ASCIZ signature "ANSK"; this
  5908.       address is RAM, and should not be written.  However, the above check
  5909.       will not work on Slaves with <1MB RAM or those using the SLIM.SYS
  5910.       device driver
  5911. --------N-7F00-------------------------------
  5912. INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK AND WAIT
  5913.     AH = 00h
  5914.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5915. Return: AL = status
  5916.         00h successful
  5917.         01h invalid function
  5918.         02h semaphore already locked
  5919.         03h unable to lock semaphore
  5920.         04h semaphore space exhausted
  5921.         05h host/target PC did not respond (NTNX)
  5922.     AH = semaphore owner if status=02h
  5923. SeeAlso: AH=01h,AH=02h,AH=41h,INT 67/AH=00h
  5924. --------N-7F01-------------------------------
  5925. INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK
  5926.     AH = 01h
  5927.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5928. Return: AL = status (see AH=00h)
  5929.     AH = semaphore owner if status=02h
  5930. SeeAlso: AH=00h,AH=02h,AH=41h
  5931. --------I-7F0104BX0000-----------------------
  5932. INT 7F - HLLAPI (IBM 3270 High-Level Language API)/LLAPI (Rabbit Low Level API)
  5933.     AX = 0104h (HLLAPI gate ID)
  5934.     BX = 0000h
  5935.     DS:SI -> parameter control block (see below)
  5936. Return: parameter control block updated
  5937. SeeAlso: AX=0105h,AX=ABCDh
  5938.  
  5939. Format of parameter control block:
  5940. Offset    Size    Description
  5941.  00h  3 BYTEs    signature = 'PCB'
  5942.  03h    BYTE    function number (see below)
  5943.  04h    WORD    segment of control string
  5944.  06h    WORD    offset of control string
  5945.  08h    WORD    length of control string, unless explicit end-of-str char set
  5946.  0Ah    BYTE    unused (IBM)
  5947.         ControlString[0] (Rabbit)
  5948.  0Bh    WORD    return code
  5949.  0Dh    WORD    maximum length of control string (IBM)
  5950.         unused (Rabbit)
  5951.  
  5952. Values for HLLAPI function number:
  5953.  00h    Query system (Attachmate implementation only)
  5954.  01h    Connect presentation space
  5955.  02h    Disconnect presentation space
  5956.  03h    Send string of keystrokes as if typed from keyboard
  5957.  04h    Wait ~60s, returns status of presentation space
  5958.  05h    Copy current presentation space into a user-defined buffer
  5959.  06h    Search presentation space for first occurrence of a specified string
  5960.  07h    Query cursor location in current presentation space
  5961.  08h    Copy part or all of current presentation space into user buffer
  5962.  09h    Set session parameters; parameters vary by vendor
  5963.  0Ah    Get info on sessions currently connected
  5964.  0Bh    Lock current presentation space
  5965.  0Ch    Unlock previously locked presentation space
  5966.  0Dh    Return copy of operator info area (OIA) of current presentation space
  5967.  0Eh    get attribute byte for given position in the current presentation space
  5968.  0Fh    copy string of characters to the current presentation space
  5969.  10h    workstation control functions
  5970.  11h    storage manager functions, intended primarily for BASIC applications
  5971.     (not implemented by Rabbit)
  5972.  12h    set delay period in half-second intervals
  5973.  14h    get info on level of workstation support used
  5974.  15h    reset session parameters to default values
  5975.  16h    get detailed info on the current session
  5976.  17h    start host notification to application on presentation sp or OIA update
  5977.  18h    check host update when host notification enabled
  5978.  19h    stop host notification
  5979.  1Eh    search field within current presentation space for string
  5980.  1Fh    get first positionof a selected field in the current presentation space
  5981.  20h    get length of specified field
  5982.  21h    copy string into a specified field
  5983.  22h    copy specified field into a user-defined buffer
  5984.  23h    create alternate presentation space (IBM only), don't use with BASIC
  5985.  24h    switch to alternate presentation space (IBM only), not with BASIC
  5986.  25h    display cursor in specified area (IBM only), don't use with BASIC
  5987.  26h    display alternate presentation space (IBM only), don't use with BASIC
  5988.  27h    delete alternate presentation space (IBM only), don't use with BASIC
  5989.  32h    start intercepting keystrokes to allow filtering
  5990.  33h    get keystrokes after turning on interception
  5991.  34h    notify operator when keystroke rejected by filter subroutine
  5992.  35h    stop intercepting keystrokes
  5993.  5Ah    send file
  5994.  5Bh    receive file
  5995.  5Ch    run a program (not implemented by Rabbit)
  5996.  5Dh    execute DOS command (not implemented by Rabbit)
  5997.  63h    change presentation space position to PC display row/col or vice versa
  5998.  FFh    Get info on DCA implementation
  5999.  
  6000. Values for LLAPI function number:
  6001.  80h    initialize LLAPI (internal call)
  6002.  83h    set Session ID (one-character ID)
  6003.  84h    read Session ID (one-character ID)
  6004.  85h    lock 327x keyboard
  6005.  86h    unlock 327x keyboard
  6006.  87h    wait for Clear to Send
  6007.  88h    type ASCII character
  6008.  89h    type 327x key
  6009.  8Ah    read keyboard lock state
  6010.  8Fh    force screen update
  6011.  90h    view session
  6012.  91h    relinquish (suspend foreground until background becomes idle)
  6013.  92h    poke screen character
  6014.  93h    poke translated character
  6015.  94h    peek screen character
  6016.  95h    peek translated character
  6017.  96h    set cursor position
  6018.  97h    send scan code (Rabbit only)
  6019.  98h    synchronize (returns after keystroke queue empty)
  6020.  99h    type PC key (Rabbit only)
  6021.  
  6022. Session Parameters for function 09h:
  6023.  ASCII        ??? (Rabbit only)
  6024.  ATTRIB        return attributes in hex
  6025.  NOATTRIB    return attributes as blanks
  6026.  CONPHYS    make physical connection
  6027.  CONLOG        only make logical connection
  6028.  EAB        copy extended attribute bytes along with data 
  6029.  NOEAB        copy data only
  6030.  ESC=n        set escape character to "n" (default '@')
  6031.  EOT=n        set end of string character (default 00h)
  6032.  FPAUSE        full-duration pause
  6033.  FTNOWAIT    return immediately from functions 5Ah and 5Bh (Rabbit only)
  6034.  FTWAIT        wait for file transfer to complete (Rabbit only)
  6035.  IPAUSE        interruptible pause
  6036.  RABESC        ??? (Rabbit only)
  6037.  NORABESC    ??? (Rabbit only)
  6038.  SCANCODE    ??? (Rabbit only)
  6039.  STRLEN        use explicit string lengths
  6040.  STREOT        use terminated strings
  6041.  SRCHALL    search entire presentation space
  6042.  SRCHFROM    search from specified offset
  6043.  SRCHFRWD    search forward from position 1
  6044.  SRCHBKWD    search backward from last position in presentation space
  6045.  TIMEOUT=n    ??? (Rabbit only)
  6046.  TWAIT        wait specified time for keyboard ready
  6047.  LWAIT        wait until keyboard ready
  6048.  NWAIT        no wait
  6049.  TRON        enable tracing
  6050.  TROFF        disable tracing
  6051.  AUTORESET    send reset before sending keys with function 03h
  6052.  NORESET    don't send reset
  6053.  QUIET        don't display messages sent with INT 21/AH=09h
  6054.  NOQUIET    allow messages to be displayed
  6055.  TIMEOUT=n    set timeout in 30-second intervals, 0 = wait until ^Break
  6056.  XLATE        translate extended attribute bytes
  6057.  NOXLATE    don't translate
  6058.  NEWRET        use HLLAPI v3.0 return code conventions
  6059.  OLDRET        use HLLAPI v2.0 return code conventions
  6060. --------V-7F0105-----------------------------
  6061. INT 7F - HDILOAD.EXE - 8514/A VIDEO CONTROLLER INTERFACE
  6062.     AX = 0105h
  6063. Return: CF set on error
  6064.     CF clear if successful
  6065.         CX:DX -> array of FAR pointers to entry points
  6066. Note:    most functions are invoked by pushing the DWORD parameter block pointer
  6067.       and then performing a FAR call via the appropriate vector of the
  6068.       entry point array
  6069. SeeAlso: AX=0104h,AX=ABCDh
  6070.  
  6071. Function numbers: (do FAR call via entry_points+4*function)
  6072.  08h    HOPEN
  6073.  10h    HINT
  6074.  13h    HLDPAL
  6075.  15h    HBBW
  6076.  17h    HBBR
  6077.  18h    HBBCHN
  6078.  1Dh    HQMODE
  6079.  22h    HCLOSE
  6080.  30h    HINIT
  6081.  31h    HSYNC
  6082.  39h    HSPAL
  6083.  3Ah    HRPAL 
  6084. --------N-7F02-------------------------------
  6085. INT 7F - Alloy NTNX, MW386 - RELEASE SEMAPHORE
  6086.     AH = 02h
  6087.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6088. Return: AL = status
  6089.         00h successful
  6090.         01h invalid function
  6091.         02h semaphore locked by other user
  6092.         AH = semaphore owner
  6093.         03h unable to unlock semaphore
  6094.         05h target PC did not respond
  6095. SeeAlso: AH=00h,AH=01h,AH=42h
  6096. --------f-7F0200-----------------------------
  6097. INT 7F - Btrieve Multi-User - GIVE UP TIME???
  6098.     AX = 0200h
  6099. SeeAlso: INT 2F/AX=AB01h,INT 2F/AX=AB02h,INT 7B"Btrieve"
  6100. --------N-7F03-------------------------------
  6101. INT 7F - Alloy ANSK, NTNX, MW386 - GET USER NUMBER
  6102.     AH = 03h
  6103. Return: AL = user number
  6104.     AH = machine number (MW386)
  6105. Note:    this function call is the recommended method for a CPU-bound process to
  6106.       prevent its priority from being lowered
  6107. SeeAlso: AH=04h,AH=05h,AH=A1h
  6108. --------N-7F04-------------------------------
  6109. INT 7F - Alloy NTNX, MW386 - GET NUMBER OF USERS
  6110.     AH = 04h
  6111. Return: AL = total number of users on currrent machine (MW386)
  6112.     AL = number of slaves on system (NTNX)
  6113. SeeAlso: AH=03h
  6114. --------N-7F05-------------------------------
  6115. INT 7F - Alloy NTNX (Host) - LOCK/UNLOCK SYSTEM, SPOOLER CONTROL
  6116.     AH = 05h
  6117.     AL = function
  6118.         00h lock system (disable slave services)
  6119.         01h unlock system
  6120.         02h enable spooler
  6121.         03h disable spooler
  6122.         04h enable slave timer update
  6123.         05h disable slave timer update
  6124.         06h enable form feeds
  6125.         07h disable form feeds
  6126. SeeAlso: INT 17/AH=A4h
  6127. --------N-7F05-------------------------------
  6128. INT 7F - Alloy NTNX (Slave), MW386 - GET USER PARAMETERS
  6129.     AH = 05h
  6130.     DX:DI -> buffer for user information record (see below)
  6131. Notes:    MW386 provides this function for backward compatibility only, and sets
  6132.       many of the fields to zero because they are meaningless under MW386
  6133.     this function has no effect when called by the host (user 0)
  6134. SeeAlso: AH=03h
  6135.  
  6136. Format of user information record:
  6137. Offset    Size    Description
  6138.  00h    WORD    segment of video RAM
  6139.  02h    WORD    segment of secondary copy of video RAM
  6140.  04h    WORD    offset of screen update flag (see INT 10/AH=8Bh)
  6141.         flag nonzero if update needed
  6142.  06h    WORD    video NMI enable port
  6143.         (not used by MW386, set to 0000h)
  6144.  08h    WORD    video NMI disable port
  6145.         (not used by MW386, set to 0000h)
  6146.  0Ah    BYTE    processor type
  6147.         00h 8088
  6148.         01h V20
  6149.         02h 8086
  6150.         03h V30
  6151.         06h 80386
  6152.  0Bh    WORD    multitasking flag (00h = single tasking, 01h = multitasking)
  6153.         (not used by MW386, set to 0000h)
  6154.  0Dh    WORD    offset of terminal driver
  6155.         (not used by MW386, set to 0000h)
  6156.  0Fh    BYTE    port for console I/O
  6157.         (not used by MW386, set to 0000h)
  6158.  10h    WORD    offset of processor communication busy flag
  6159.         bit 7 set when slave communicating with host
  6160.  12h    WORD    pointer to FAR NX system call
  6161.         (not used by MW386, set to 0000h)
  6162.  14h    WORD    offset of 16-byte user configuration record (see AH=38h)
  6163.  16h    WORD    offset of command/status word
  6164.  18h    WORD    offset of screen valid flag (see INT 10/AH=93h)
  6165.         nonzero if screen must be repainted
  6166.  1Ah    WORD    offset of screen repaint flag
  6167.  1Ch    WORD    pointer to NEAR NX system call
  6168.         (not used by MW386, set to 0000h)
  6169.  1Eh    WORD    offset for intercept flags
  6170.         (not used by MW386, set to 0000h)
  6171.         intercept flag = FFh if MS-DOS intercepts should be disabled
  6172.  20h    WORD    offset of terminal lock flag (see INT 10/AH=92h)
  6173.         lock flag = FFh if backgrnd screen updates should be suspended
  6174.  22h 26 BYTEs    reserved
  6175. --------N-7F06-------------------------------
  6176. INT 7F - Alloy NTNX (Host) - GET SHARED DRIVE INFO
  6177.     AH = 06h
  6178.     AL = drive number (1=A:, 2=B:, etc)
  6179.     ES:DI -> drive info record (see below)
  6180. Return: AX = status
  6181.         0000h successful
  6182.         ES:DI buffer filled
  6183.         0001h not shared drive
  6184.  
  6185. Format of drive info record:
  6186. Offset    Size    Description
  6187.  00h    WORD    segment of drive IO-REQUEST structure (MS-DOS DPB)
  6188.  02h    WORD    segment of allocation map (owner table)
  6189.         one byte per FAT entry, containing user ID owning that entry
  6190.  04h    WORD    segment of master FAT for drive (copy of FAT on disk)
  6191.  06h    WORD    pointer to configuration file
  6192.  08h    WORD    total number of clusters
  6193.  0Ah    WORD    bytes per sector
  6194.  0Ch    WORD    sectors per cluster
  6195.  0Eh    BYTE    FAT type (0Ch = 12-bit, 10h = 16-bit)
  6196. --------N-7F06-------------------------------
  6197. INT 7F - Alloy NTNX (Slave) - ALLOCATE FREE CLUSTER ON SHARED DRIVE
  6198.     AH = 06h
  6199.     DL = drive number (1=A:,2=B:,etc)
  6200.     CX = number of clusters to allocate
  6201. Return: AH = status
  6202.         00h successful
  6203.         CX = number of clusters still free
  6204.         10h invalid shared drive request
  6205.         CL = first and second shared drives
  6206.         11h invalid cluster count (must be 01h-FFh)
  6207. --------N-7F07-------------------------------
  6208. INT 7F - Alloy NTNX, MW386 - GET LIST OF SHARED DRIVES
  6209.     AH = 07h
  6210. Return: ES:DI -> shared drive list (see below)
  6211. Note:    MW386 considers all fixed disks to be shared drives; only C and D will
  6212.       be returned as shared
  6213.  
  6214. Format of shared drive list:
  6215. Offset    Size    Description
  6216.  00h    BYTE    string length
  6217.  01h    BYTE    number of shared drives
  6218.  02h  N BYTEs    one byte per shared drive
  6219. --------N-7F08-------------------------------
  6220. INT 7F - Alloy NTNX (Host) - GET INTERRUPT VECTORS
  6221.     AH = 08h
  6222.     CL = function
  6223.         00h get original interrupt vector
  6224.         01h get Network Executive interrrupt
  6225.     AL = interrupt number
  6226.     DX:SI -> DWORD to hold interrupt vector
  6227. Return: AL = status
  6228.         00h successful
  6229.         01h interrupt vector not used by network executive
  6230.         02h invalid subfunction
  6231. Note:    the network executive uses interrupts 02h,08h,09h,0Fh,10h,13h,16h-19h,
  6232.       1Ch,20h,28h,2Ah,2Fh,5Bh,67h,7Fh,ECh, and F0h-FFh
  6233. SeeAlso: AH=09h/CL=03h,INT 21/AH=35h
  6234. --------N-7F08--CL02-------------------------
  6235. INT 7F - Alloy NTNX - SET MESSAGE DISPLAY TIMEOUT
  6236.     AH = 08h
  6237.     CL = 02h
  6238.     DX = timeout in seconds
  6239. Return: AL = status
  6240.         00h successful
  6241.         02h invalid subfunction
  6242. --------T-7F09-------------------------------
  6243. INT 7F - MultiLink Advanced - SET TASK PRIORITY
  6244.     AH = 09h
  6245.     AL = priority (0-7)
  6246. Note:    the installation check consists of ensuring that the interrupt vector
  6247.       is not pointing at segment 0000h, then checking whether the byte
  6248.       at offset 0000h in the interrupt handler's segment is E9h
  6249. Index:    installation check;MultiLink Advanced
  6250. --------N-7F09-------------------------------
  6251. INT 7F - Alloy NTNX - ENABLE/DISABLE MUD FILE CHECKING
  6252.     AH = 09h
  6253.     CL = function
  6254.         00h enable checking of RTNX.MUD file
  6255.         01h disable RTNX.MUD checking
  6256. --------N-7F09--CL02-------------------------
  6257. INT 7F - Alloy NTNX - SWITCH HOST TO DEDICATED MODE
  6258.     AH = 09h
  6259.     CL = 02h
  6260. Note:    in dedicated mode, the host will only poll for I/O requests from the
  6261.       slave processors, and not provide workstation services
  6262. --------N-7F09--CL03-------------------------
  6263. INT 7F - Alloy NTNX,MW386 - GET ALTERNATE INTERRUPT
  6264.     AH = 09h
  6265.     CL = 03h
  6266.     AL = default interrupt number (67h,7Fh,etc)
  6267. Return:    CL = actual interrupt which handles specified interrupt's calls
  6268. SeeAlso: AH=08h
  6269. --------N-7F0A--CL00-------------------------
  6270. INT 7F - Alloy NTNX - GET SYSTEM FLAGS
  6271.     AH = 0Ah
  6272.     CL = 00h
  6273.     ES:DI -> buffer for system flags (see below)
  6274. Return: ES:DI buffer filled
  6275. Notes:    on a slave, only the NX_Busy flag is returned
  6276.     all three flags are at fixed positions, so this function only needs to
  6277.       be called once
  6278.     an interrupt handler should only perform DOS or device accesses when
  6279.       all three flags are 00h
  6280.  
  6281. Format of system flags:
  6282. Offset    Size    Description
  6283.  00h    DWORD    pointer to NX_Busy flag (nonzero when communicating with users)
  6284.  04h    DWORD    pointer to device driver busy flag
  6285.  08h    DWORD    pointer to InTimer flag
  6286. --------N-7F0B--CL02-------------------------
  6287. INT 7F - Alloy NTNX (Host) - SET/RESET GRAPHICS DOS ON SLAVE
  6288.     AH = 0Bh
  6289.     CL = 02h
  6290.     AL = slave ID number
  6291.     CH = DOS to activate
  6292.         00h graphics DOS
  6293.         01h character DOS
  6294. Return: AL = status
  6295.         00h successful
  6296.         01h nothing done, proper DOS type already loaded
  6297. --------N-7F10--CL00-------------------------
  6298. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - OPEN CHANNEL
  6299.     AH = 10h
  6300.     CL = 00h
  6301.     AL = channel number
  6302.     DX:DI -> channel buffer
  6303. Return: AL = status (00h-03h,0Dh) (see below)
  6304. Note:    may not be invoked from within a hardware interrupt handler
  6305. SeeAlso: AH=10h/CL=01h,AH=10h/CL=04h,AH=14h/CL=02h
  6306.  
  6307. Values for status:
  6308.  00h successful
  6309.  01h busy
  6310.  02h channel range error (not 00h-3Fh)
  6311.  03h invalid subfunction
  6312.  0Ah channel not open
  6313.  0Ch channel already locked
  6314.  0Dh unable to open
  6315. --------N-7F10--CL01-------------------------
  6316. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE CHANNEL
  6317.     AH = 10h
  6318.     CL = 01h
  6319.     AL = channel number
  6320. Return: AL = status (00h-03h,0Ah) (see AH=10h/CL=00h)
  6321. Note:    may not be invoked from within a hardware interrupt handler
  6322. SeeAlso: AH=10h/CL=00h,AH=10h/CL=05h
  6323. --------N-7F10--CL02-------------------------
  6324. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK CHANNEL
  6325.     AH = 10h
  6326.     CL = 02h
  6327.     AL = channel number
  6328. Return: AL = status (00h-03h,0Ah,0Ch) (see AH=10h/CL=00h)
  6329. Note:    may not be invoked from within a hardware interrupt handler
  6330. SeeAlso: AH=10h/CL=03h,AH=10h/CL=06h,AH=10h/CL=08h
  6331. --------N-7F10--CL03-------------------------
  6332. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK CHANNEL
  6333.     AH = 10h
  6334.     CL = 03h
  6335.     AL = channel number
  6336. Return: AL = status (00h-03h,0Ah) (see AH=10h/CL=00h)
  6337. Notes:    should only be used on channels locked with AH=10h/CL=02h, not on those
  6338.       locked by receipt of a datagram
  6339.     may not be invoked from within a hardware interrupt handler
  6340. SeeAlso: AH=10h/CL=02h,AH=10h/CL=04h,AH=10h/CL=09h
  6341. --------N-7F10--CL04-------------------------
  6342. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - RELEASE BUFFER
  6343.     AH = 10h
  6344.     CL = 04h
  6345.     AL = channel number
  6346. Return: AL = status (00h-03h) (see AH=10h/CL=00h)
  6347. Notes:    unlocks buffer after received datagram has been processed
  6348.     may not be invoked from within a hardware interrupt handler
  6349. SeeAlso: AH=10h/CL=00h
  6350. --------N-7F10--CL05-------------------------
  6351. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE ALL CHANNELS
  6352.     AH = 10h
  6353.     CL = 05h
  6354. Return: AL = status (00h-03h) (see AH=10h/CL=00h)
  6355. Notes:    clears all pending datagrams and clears buffer pointers before closing
  6356.       the channels
  6357.     may not be invoked from within a hardware interrupt handler
  6358. SeeAlso: AH=10h/CL=01h
  6359. --------N-7F10--CL06-------------------------
  6360. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK ALL OPEN CHANNELS
  6361.     AH = 10h
  6362.     CL = 06h
  6363. Return: AL = status (00h-03h) (see AH=10h/CL=00h)
  6364. Note:    may not be invoked from within a hardware interrupt handler
  6365. SeeAlso: AH=10h/CL=02h,AH=10h/CL=08h
  6366. --------N-7F10--CL07-------------------------
  6367. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK ALL LOCKED IDLE CHANNELS
  6368.     AH = 10h
  6369.     CL = 07h
  6370. Return: AL = status (00h-03h) (see AH=10h/CL=00h)
  6371. Notes:    unlocks all locked channels which have no pending datagrams
  6372.     may not be invoked from within a hardware interrupt handler
  6373. SeeAlso: AH=10h/CL=03h,AH=10h/CL=09h
  6374. --------N-7F10--CL08-------------------------
  6375. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK MULTIPLE CHANNELS
  6376.     AH = 10h
  6377.     CL = 08h
  6378.     DX = maximum channel number to lock
  6379. Return: AL = status (00h-03h) (see AH=10h/CL=00h)
  6380. Notes:    locks channels numbered 00h through the value in DX
  6381.     may not be invoked from within a hardware interrupt handler
  6382. SeeAlso: AH=10h/CL=02h,AH=10h/CL=06h,AH=10h/CL=09h
  6383. --------N-7F10--CL09-------------------------
  6384. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK MULTIPLE CHANNELS
  6385.     AH = 10h
  6386.     CL = 09h
  6387.     DX = maximum channel number to unlock
  6388. Return: AL = status (00h-03h) (see AH=10h/CL=00h)
  6389. Notes:    unlocks channels numbered 00h through the value in DX
  6390.     may not be invoked from within a hardware interrupt handler
  6391. SeeAlso: AH=10h/CL=03h,AH=10h/CL=07h,AH=10h/CL=08h
  6392. --------N-7F11-------------------------------
  6393. INT 7F - Alloy NTNX, MW386 - SEND DATAGRAM
  6394.     AH = 11h
  6395.     DX:SI -> request block (see below)
  6396. Return: AL = status (see below)
  6397. Note:    if wildcard channel FFh used, actual channel number will be filled in
  6398. SeeAlso: AH=12h
  6399.  
  6400. Values for status:
  6401.  00h successful
  6402.  01h busy
  6403.  02h channel range error (not 00h-3Fh)
  6404.  03h invalid subfunction
  6405.  0Ah packet too large (or <2 bytes if NTNX)
  6406.  0Bh can't send packet to itself
  6407.  0Ch invalid number of destinations
  6408.  0Dh destination channel number out of range
  6409.  0Eh destination user is busy
  6410.  0Fh destination user has locked channel
  6411.  10h channel not open
  6412.  11h no datagram server on destination (NTNX)
  6413.  
  6414. Format of request block:
  6415. Offset    Size    Description
  6416.  00h    DWORD    pointer to packet to send
  6417.  04h    WORD    packet size in bytes (1-4096)
  6418.  06h    BYTE    number of destinations for packet (max 1Fh)
  6419.  07h 31 BYTEs    destination user IDs (FFh = broadcast to all except sender)
  6420.  26h 31 BYTEs    destination channels (FFh = first available channel)
  6421.  45h 31 BYTEs    return destination statuses
  6422. --------N-7F12-------------------------------
  6423. INT 7F - Alloy NTNX, MW386 - ACKNOWLEDGE DATAGRAM
  6424.     AH = 12h
  6425.     AL = channel number being acknowledged
  6426.     DI:DX = 32-bit status to return to sender
  6427. Return: AL = status (see below)
  6428. Note:    also unlocks the channel, allowing the next datagram to be received
  6429. SeeAlso: AH=11h,AH=15h/CL=04h
  6430.  
  6431. Values for status:
  6432.  00h successful
  6433.  01h busy
  6434.  02h channel range error (not 00h-3Fh)
  6435.  03h invalid subfunction
  6436.  0Ah channel not open
  6437.  0Bh no message in channel
  6438.  0Ch destination slave busy--retry (NTNX)
  6439.  0Dh destination user not active
  6440.  0Eh destination slave not active (NTNX)
  6441.  0Fh destination disabled datagram service
  6442. --------N-7F13--CL00-------------------------
  6443. INT 7F - Alloy NTNX, MW386 - RESET USER DATAGRAMS
  6444.     AH = 13h
  6445.     CL = 00h
  6446. Note:    clears all pending datagrams and removes all channels opened in NTNX
  6447.       compatibility mode
  6448. --------N-7F14--CL00-------------------------
  6449. INT 7F - Alloy NTNX, MW386 -  SET RECEIVE ISR
  6450.     AH = 14h
  6451.     CL = 00h
  6452.     DX:DI -> application FAR receive service routine (see below)
  6453. Return: AL = status (00h-03h) (see AH=12h)
  6454. SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
  6455.  
  6456. Service routine called with:
  6457.     DH = sender ID
  6458.     DL = channel with datagram
  6459.     interrupts disabled
  6460. Return: AL = response code
  6461.         00h leave buffer locked, set channel status, and repeat call later
  6462.         01h release channel buffer
  6463.         02h change buffer pointer to DX:DI
  6464.     AH,CX,DX,DI,SI may be destroyed
  6465. --------N-7F14--CL01-------------------------
  6466. INT 7F - Alloy NTNX, MW386 - SET ACKNOWLEDGE ISR
  6467.     AH = 14h
  6468.     CL = 01h
  6469.     DX:DI -> application FAR acknowledge service routine (see below)
  6470. Return: AL = status (00h-03h) (see AH=12h)
  6471. Note:    the service routine will be called as soon as an acknowledgment arrives
  6472. SeeAlso: AH=12h,AH=14h/CL=00h,AH=14h/CL=04h,AH=15/CL=04h
  6473.  
  6474. Service routine called with:
  6475.     DS:SI -> acknowledge structure (see AH=15h/CL=04h)
  6476. Return: AL = response code
  6477.         00h application busy, network executive should call again later
  6478.         01h acknowledge accepted
  6479.     AH,DX,SI may be destroyed
  6480. --------N-7F14--CL02-------------------------
  6481. INT 7F - Alloy NTNX, MW386 - SET CHANNEL BUFFER POINTER
  6482.     AH = 14h
  6483.     CL = 02h
  6484.     AL = channel number
  6485.     DX:DI -> receive buffer
  6486. Return: AL = status (00h-03h) (see AH=12h)
  6487. Note:    may be called from within a receive ISR or when a datagram is pending
  6488. SeeAlso: AH=10h/CL=00h,AH=14h/CL=00h
  6489. --------N-7F14--CL03-------------------------
  6490. INT 7F - Alloy NTNX, MW386 - GET RECEIVE ISR
  6491.     AH = 14h
  6492.     CL = 03h
  6493. Return: DX:DI -> current receive ISR
  6494. SeeAlso: AH=14h/CL=00h,AH=14h/CL=04h
  6495. --------N-7F14--CL04-------------------------
  6496. INT 7F - Alloy NTNX, MW386 - GET ACKNOWLEDGE ISR
  6497.     AH = 14h
  6498.     CL = 04h
  6499. Return: DX:DI -> current acknowledge ISR
  6500. SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
  6501. --------N-7F14--CL05-------------------------
  6502. INT 7F - Alloy NTNX (Host), MW386 - GET BUSY POINTER
  6503.     AH = 14h
  6504.     CL = 05h
  6505.     DX:DI -> buffer for busy structure (see below)
  6506. Return: DX:DI buffer filled
  6507.  
  6508. Format of busy structure:
  6509. Offset    Size    Description
  6510.  00h    DWORD    pointer to busy flag byte
  6511.  04h    WORD    fixed port address (FF00h)
  6512. --------N-7F15--CL00-------------------------
  6513. INT 7F - Alloy NTNX, MW386 - GET CHANNEL STATUS
  6514.     AH = 15h
  6515.     CL = 00h
  6516.     AL = channel number
  6517.     DX:DI -> status structure (see below)
  6518. Return: AL = status (00h-03h) (see AH=12h)
  6519. SeeAlso: AH=15h/CL=01h
  6520.  
  6521. Format of status structure:
  6522. Offset    Size    Description
  6523.  00h    BYTE    channel status
  6524.         bit 0: channel open
  6525.         bit 1: channel buffer contains received data
  6526.         bit 7: channel locked
  6527.  01h    BYTE    sender ID
  6528. --------N-7F15--CL01-------------------------
  6529. INT 7F - Alloy NTNX, MW386 - GET NEXT FULL CHANNEL
  6530.     AH = 15h
  6531.     CL = 01h
  6532.     DX:DI -> full-channel structure
  6533. Return: AL = status
  6534.         00h successful
  6535.         01h busy
  6536.         0Ah no datagrams available
  6537. Note:    MW386 v1.0 returns the lowest channel with a datagram; newer versions
  6538.       and NTNX return the oldest datagram
  6539. SeeAlso: AH=15h/CL=00h
  6540.  
  6541. Format of full-channel structure:
  6542. Offset    Size    Description
  6543.  00h    BYTE    number of channel with oldest datagram
  6544.  01h    BYTE    sender ID
  6545. --------N-7F15--CL02-------------------------
  6546. INT 7F - Alloy NTNX, MW386 - GET MAXIMUM NUMBER OF CHANNELS
  6547.     AH = 15h
  6548.     CL = 02h
  6549. Return: AH = number of channels available (40h for MW386)
  6550. Note:    the application may always assume at least 32 channels available
  6551. SeeAlso: AH=15h/CL=03h
  6552. --------N-7F15--CL03-------------------------
  6553. INT 7F - Alloy NTNX, MW386 - GET MAXIMUM PACKET SIZE
  6554.     AH = 15h
  6555.     CL = 03h
  6556.     DX:DI -> WORD for return value
  6557. Return: buffer WORD filled with maximum packet size (4096 for MW386)
  6558. SeeAlso: AH=15h/CL=02h
  6559. --------N-7F15--CL04-------------------------
  6560. INT 7F - Alloy NTNX, MW386 - GET AND CLEAR ACKNOWLEDGE STATUS
  6561.     AH = 15h
  6562.     CL = 04h
  6563.     DX:DI -> status structure (see below)
  6564. Return: AL = status
  6565.         00h successful
  6566.         DX:DI structure filled
  6567.         01h busy
  6568.         0Ah no acknowledgement has arrived
  6569. SeeAlso: AH=12h,AH=14h/CL=01h
  6570.  
  6571. Format of status structure:
  6572. Offset    Size    Description
  6573.  00h    BYTE    sender ID
  6574.  01h    BYTE    channel number
  6575.  02h  4 BYTEs    receiver status (see AH=12h)
  6576. --------N-7F16-------------------------------
  6577. INT 7F - Alloy NTNX, MW386 - DIRECT MEMORY TRANSFER
  6578.     AH = 16h
  6579.     DX:SI -> transfer structure (see below)
  6580. Return: AL = status
  6581.         00h successful
  6582.         0Ah source or destination out of range
  6583.         0Bh transfer kernal busy--try again
  6584. Notes:    this call transfers memory contents directly between users; both source
  6585.       and destination user IDs may differ from the caller's ID
  6586.     no segment wrap is allowed
  6587.  
  6588. Format of transfer structure:
  6589. Offset    Size    Description
  6590.  00h    WORD    bytes to transfer
  6591.  02h    BYTE    source ID
  6592.         FEh = caller
  6593.  03h    DWORD    source address
  6594.  07h    BYTE    destination ID
  6595.         FFh = all slaves except caller
  6596.         FEh = caller
  6597.  08h    DWORD    destination address
  6598. --------N-7F21-------------------------------
  6599. INT 7F - Alloy NTNX, MW386 - SEND MESSAGE OR COMMAND TO USER(S)
  6600.     AH = 21h
  6601.     AL = sender's user ID
  6602.     DS:DX -> control packet (see below)
  6603. Note:    messages or commands are ignored if disabled by the destination user
  6604. SeeAlso: AH=22h
  6605.  
  6606. Format of control packet:
  6607. Offset    Size    Description
  6608.  00h    BYTE    packet type
  6609.         00h message
  6610.         01h NTNX command
  6611.         02h MW386 command
  6612.  01h    BYTE    destination user ID or 'A' for all users
  6613.  02h 62 BYTEs    ASCIZ message (packet type 00h)
  6614.         BIOS keycodes terminated by NUL byte (type 01h) or word (02h)
  6615. Note:    a maximum of 16 keycodes will be processed for NTNX and MW386 commands
  6616. --------N-7F22-------------------------------
  6617. INT 7F - Alloy NTNX - GET MESSAGE
  6618.     AH = 22h
  6619. Return: pending messages displayed on user's screen
  6620. SeeAlso: AH=21h
  6621. --------N-7F24-------------------------------
  6622. INT 7F - Alloy NTNX, MW386 - ATTACH OR RELEASE DRIVE FOR LOW-LEVEL WRITE ACCESS
  6623.     AH = 24h
  6624.     CL = function
  6625.         00h attach
  6626.         01h release
  6627.     CH = drive (0=A:,1=B:,etc)
  6628. Return: AX = status
  6629.         00h successful
  6630.         01h invalid request
  6631.         02h already attached
  6632.         03h not attached
  6633.         04h lock table full
  6634. Note:    only drives on the current machine may be attached
  6635. --------N-7F24-------------------------------
  6636. INT 7F - Alloy NTNX - ATTACH/RELEASE HOST PROCESSOR
  6637.     AH = 24h
  6638.     CL = function
  6639.         02h attach host
  6640.         03h release host
  6641. Return: AX = status
  6642.         00h successful
  6643.         01h invalid request
  6644.         02h already attached
  6645.         03h not attached
  6646.         04h lock table full
  6647. Note:    the host processor may be attached in order to perform I/O via the host
  6648. --------N-7F25--CL00-------------------------
  6649. INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE VERSION
  6650.     AH = 25h
  6651.     CL = 00h        
  6652. Return: AH = version suffix letter
  6653.     CH = major version number
  6654.     CL = minor version number
  6655. SeeAlso: AH=25h/CL=01h
  6656. --------N-7F25--CL01-------------------------
  6657. INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE TYPE
  6658.     AH = 25h
  6659.     CL = 01h
  6660. Return: CL = type
  6661.         00h RTNX
  6662.         01h ATNX
  6663.         02h NTNX
  6664.         03h BTNX
  6665.         04h MW386
  6666.         05h ANSK
  6667. SeeAlso: AH=25h/CL=00h
  6668. --------N-7F26--CL00-------------------------
  6669. INT 7F - Alloy NTNX, MW386 - GET NTNX FILE MODE
  6670.     AH = 26h
  6671.     CL = 00h
  6672. Return: AX = file mode bits (see below)
  6673. Note:    MW386 does not support file modes, and always returns AX=001Fh
  6674. SeeAlso: AH=26h,AH=26h/CL=06h
  6675.  
  6676. Bitfields for file mode bits:
  6677.  bit 0    directory protection enabled
  6678.  bit 1    extended open enabled
  6679.  bit 2    flush on every disk write
  6680.  bit 3    flush on every disk write in locked interval
  6681.  bit 4    flush on reads from simultaneously opened file
  6682. --------N-7F26-------------------------------
  6683. INT 7F - Alloy NTNX - SET FILE I/O CHECKING LEVEL
  6684.     AH = 26h
  6685.     CL = check type to set/reset
  6686.         01h directory protection
  6687.         02h extended open
  6688.         03h flush on every disk write
  6689.         04h flush on disk write if any lock set during write
  6690.         05h flush on all reads if file written
  6691.     AL = new state (00h off, 01h on)
  6692. SeeAlso: AH=26h/CL=00h,AH=26h/CL=06h
  6693. --------N-7F26--CL06-------------------------
  6694. INT 7F - Alloy NTNX - CANCEL FLUSH ON WRITE
  6695.     AH = 26h
  6696.     CL = 06h
  6697. Note:    cancels flags set by AH=26h/CL=03h and AH=26h/CL=04h
  6698. SeeAlso: AH=26h/CL=00h
  6699. --------N-7F30-------------------------------
  6700. INT 7F - Alloy MW386 - GET PORT INFORMATION
  6701.     AH = 30h
  6702.     CX = MW386 port number
  6703. Return: AL = FFh if port not found
  6704.        else     driver unit number
  6705.            BL = port mode
  6706.            BH = port type
  6707.            02h remote
  6708.            DH = owner's machine ID
  6709.            DL = owner's user ID
  6710. SeeAlso: INT 17/AH=8Bh
  6711. --------N-7F31-------------------------------
  6712. INT 7F - Alloy MW386 v1.x only - CHECK PORT ASSIGNMENT
  6713.     AH = 31h
  6714.     ???
  6715. Return: ???
  6716. --------N-7F37-------------------------------
  6717. INT 7F - Alloy NTNX (Host) - GET SEMAPHORE TABLE
  6718.     AH = 37h
  6719. Return: ES:AX -> semaphore table
  6720. --------N-7F37-------------------------------
  6721. INT 7F - Alloy ANSK, NTNX (Slave) - DUMP STRING TO TERMINAL
  6722.     AH = 37h
  6723.     DS:DX -> ASCIZ string to display
  6724. Note:    if the string is empty, a terminal update will be forced
  6725. --------N-7F38-------------------------------
  6726. INT 7F - Alloy NTNX (Slave), MW386 - SET NEW TERMINAL DRIVER
  6727.     AH = 38h
  6728.     AL = new terminal driver number
  6729.         FFh dummy driver
  6730.         FEh current driver
  6731.         FDh load new driver
  6732.         DS:SI -> new driver
  6733. SeeAlso: AH=39h
  6734. --------N-7F39-------------------------------
  6735. INT 7F - Alloy MW386 - SET TERMINAL DRIVER FOR ANOTHER USER
  6736.     AH = 39h
  6737.     AL = new terminal driver number
  6738.     DL = user number (FFh = caller)
  6739.     DH = machine number if DL <> FFh
  6740. Return: CF set if invalid user number
  6741.     CF clear if successful
  6742. Notes:    only available to supervisors
  6743.     the new driver number will not take effect until the user is rebooted
  6744. SeeAlso: AH=38h
  6745. --------N-7F3A-------------------------------
  6746. INT 7F - Alloy MW386 - GET TERMINAL PARAMETERS
  6747.     AH = 3Ah
  6748.     DL = user number (FFh = caller)
  6749.     DH = machine number
  6750. Return: CF clear if successful
  6751.         AH = terminal driver number
  6752.         AL = baud rate (00h = 38400, 01h = 19200, etc)
  6753.         CL = parity (00h none, 01h even, 02h odd)
  6754.         CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
  6755.     CF set if invalid user number
  6756. SeeAlso: AH=3Bh
  6757. --------N-7F3B-------------------------------
  6758. INT 7F - Alloy MW386 - SET TERMINAL PARAMETERS
  6759.     AH = 3Bh
  6760.     AL = baud rate (00h = 38400, 01h = 19200, etc)
  6761.     CL = parity (00h none, 01h even, 02h odd)
  6762.     CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
  6763.     DL = user number (FFh = caller)
  6764.     DH = machine number for user
  6765. Return: CF set if invalid user number
  6766. Notes:    only available to supervisors
  6767.     the new parameters will take effect immediately if the user's terminal
  6768.       has not been started, else AH=3Dh must be called to post the changes
  6769. SeeAlso: AH=3Ah,AH=3Dh
  6770. --------N-7F3C-------------------------------
  6771. INT 7F - Alloy MW386 - ENABLE/DISABLE AUTOBAUD DETECT
  6772.     AH = 3Ch
  6773.     AL = new state
  6774.          00h disabled, 01h enabled
  6775.     DL = user number (FFh = caller)
  6776.     DH = machine number for user
  6777. Return: CF set if invalid user number
  6778. Note:    only available to supervisors
  6779. SeeAlso: AH=3Dh
  6780. --------N-7F3D-------------------------------
  6781. INT 7F - Alloy MW386 - POST TERMINAL CONFIGURATION CHANGES
  6782.     AH = 3Dh
  6783. Note:    should be called whenever a program changes the terminal type or its
  6784.       parameters
  6785. SeeAlso: AH=3Bh
  6786. --------N-7F41-------------------------------
  6787. INT 7F - Alloy NTNX - LOCK FILE FOR USER
  6788.     AH = 41h
  6789.     AL = user ID
  6790.     DS:DX -> ASCIZ filename
  6791. Return: AL = status
  6792.         00h successful
  6793.         01h invalid function
  6794.         02h already locked
  6795.         03h unable to lock
  6796.         04h lock table full
  6797. Note:    requests exclusive read/write access to file
  6798. SeeAlso: AH=00h,AH=41h"MW386",AH=42h"NTNX"
  6799. --------N-7F41-------------------------------
  6800. INT 7F - Alloy MW386 - LOCK SEMAPHORE FOR USER
  6801.     AH = 41h
  6802.     AL = user ID
  6803.     DS:DX -> ASCIZ semaphore name
  6804. Return: AL = status
  6805.         00h successful
  6806.         01h invalid function
  6807.         02h semaphore already locked
  6808.         03h unable to lock semaphore
  6809.         04h semaphore space exhausted
  6810. SeeAlso: AH=00h,AH=42h"MW386"
  6811. --------N-7F42-------------------------------
  6812. INT 7F - Alloy NTNX - UNLOCK FILE FOR USER
  6813.     AH = 42h
  6814.     AL = user ID
  6815.     DS:DX -> ASCIZ filename
  6816. Return: AL = status
  6817.         00h successful
  6818.         01h invalid function
  6819.         02h already locked
  6820.         03h unable to lock
  6821.         04h lock table full
  6822. SeeAlso: AH=00h,AH=41h"NTNX",AH=42h"MW386"
  6823. --------N-7F42-------------------------------
  6824. INT 7F - Alloy MW386 - UNLOCK SEMAPHORE FOR USER
  6825.     AH = 42h
  6826.     AL = user ID
  6827.     DS:DX -> ASCIZ semaphore name
  6828. Return: AL = status
  6829.         00h successful
  6830.         01h invalid function
  6831.         03h unable to unlock semaphore
  6832. SeeAlso: AH=02h,AH=41h"MW386",AH=42h"NTNX"
  6833. --------N-7F4E-------------------------------
  6834. INT 7F - Alloy MW386 v2+ - SET ERROR MODE
  6835.     AH = 4Eh
  6836.     AL = error mode flags
  6837.         bit 0: display critical disk errors
  6838.         bit 1: display sharing errors
  6839.     DX = 4E58h ("NX")
  6840. Return: AL = status
  6841.         00h successful
  6842. SeeAlso: AH=4Fh
  6843. --------N-7F4F-------------------------------
  6844. INT 7F - Alloy MW386 v2+ - SET FCB MODE
  6845.     AH = 4Fh
  6846.     AL = FCB mode
  6847.         02h read/write compatibility
  6848.         42h read/write shared
  6849.     DX = 4E58h ("NX")
  6850. Return: AL = status
  6851.         00h successful
  6852. --------N-7F81-------------------------------
  6853. INT 7F - Alloy NTNX - ATTACH DEVICE FOR USER
  6854.     AH = 81h
  6855.     AL = user ID
  6856.     DS:DX -> ASCIZ device name
  6857. SeeAlso: AH=82h
  6858. --------N-7F82-------------------------------
  6859. INT 7F - Alloy NTNX - RELEASE DEVICE FOR USER
  6860.     AH = 82h
  6861.     AL = user ID
  6862.     DS:DX -> ASCIZ device name
  6863. SeeAlso: AH=81h
  6864. --------N-7FA0-------------------------------
  6865. INT 7F - Alloy MW386 - GET USER NAME
  6866.     AH = A0h
  6867.     DL = user number (FFh = caller)
  6868.     DH = machine number for user
  6869.     ES:DI -> 17-byte buffer for ASCIZ user name
  6870. Return: CF set if invalid user number
  6871. SeeAlso: AH=03h,AH=A1h
  6872. --------N-7FA1-------------------------------
  6873. INT 7F - Alloy MW386 - GET MACHINE, USER, AND PROCESS NUMBER
  6874.     AH = A1h
  6875. Return: AL = process number
  6876.     DL = user number
  6877.     DH = machine number
  6878. SeeAlso: AH=03h,AH=A0h,AH=A2h
  6879. --------N-7FA2-------------------------------
  6880. INT 7F - Alloy MW386 - GET USER PRIVILEGE LEVEL
  6881.     AH = A2h
  6882.     DL = user number (FFh = caller)
  6883.     DH = machine number for user
  6884. Return: CF clear if successful
  6885.         AL = privilege level
  6886.         00h supervisor
  6887.         01h high
  6888.         02h medium
  6889.         03h low
  6890.     CF set if invalid user number
  6891. SeeAlso: AH=A1h,AH=A3h
  6892. --------N-7FA3-------------------------------
  6893. INT 7F - Alloy MW386 - GET USER LOGIN STATE
  6894.     AH = A3h
  6895.     DL = user number
  6896.     DH = machine number for user
  6897. Return: CF clear if successful
  6898.         AL = login state
  6899.         00h never logged in
  6900.         01h currently logged out
  6901.         03h currently logged in
  6902.     CF set if invalid user number or user not active
  6903. SeeAlso: AH=A2h
  6904. --------N-7FA4-------------------------------
  6905. INT 7F - Alloy MW386 - VERIFY USER PASSWORD
  6906.     AH = A4h
  6907.     DS:DX -> ASCIZ password (null-padded to 16 bytes)
  6908. Return: AL = 00h if accepted
  6909.        else     invalid password
  6910. --------N-7FA500-----------------------------
  6911. INT 7F - Alloy MW386 - GET USER STATUS
  6912.     AX = A500h
  6913.     DI = machine number and user number
  6914. Return: CF clear if successful
  6915.         BX = user flags
  6916.             bit 5: allow messages
  6917.         CL = scan code for task manager hotkey
  6918.         CH = scan code for spooler hotkey
  6919.         DL = scan code for task swapper hotkey
  6920.         DH = modifier key status
  6921.     CF set if invalid user number
  6922. SeeAlso: AX=A501h
  6923. --------N-7FA501-----------------------------
  6924. INT 7F - Alloy MW386 - SET USER STATUS
  6925.     AX = A501h
  6926.     BX = user flags (see above)
  6927.     CL = scan code for task manager hotkey
  6928.     CH = scan code for spooler hotkey
  6929.     DL = scan code for task swapper hotkey
  6930.     DH = modifier key status
  6931.     DI = machine number and user number
  6932. Return: CF set if invalid user number
  6933. Note:    must have supervisor privilege to set another user's status
  6934. SeeAlso: AX=A500h
  6935. --------V-7FABCDBX0000-----------------------
  6936. INT 7F - IBM 8516 Touch Screen Device Driver - GET API ENTRY
  6937.     AX = ABCDh
  6938.     BX = 0000h
  6939. Return: AX = total number of functions available
  6940.     ES:BX -> entry point array
  6941. SeeAlso: AX=0104h,AX=0105h
  6942.  
  6943. Function numbers:
  6944.  00h    check initialization and reset
  6945.  14h    set user-defined subroutine
  6946. Notes:    each driver function takes two stack parameters using Pascal calling
  6947.       conventions: address of parameter block and address of results buffer
  6948.     all pointers are FAR pointers
  6949.     on return, AX contains the status of the call:
  6950.         AX = 0000h successful
  6951.          0001h invalid input
  6952.          0002h interface error
  6953.          0003h unable to perform function
  6954.  
  6955. Format of parameter block for function 00h:
  6956. Offset    Size    Description
  6957.  00h    WORD    0000h (function number)
  6958. Note:    this function should be called before any other device driver functions
  6959.  
  6960. Format of results buffer for function 00h:
  6961. Offset    Size    Description
  6962.  00h    WORD    touch screen status
  6963.         0000h unavailable
  6964.         0001h uncalibrated
  6965.         FFFFh available
  6966.  02h    WORD    aux mouse status (0000h not present, FFFFh present)
  6967. Notes:    the following driver parameters will have been reset to zero:
  6968.       touchdown counter, liftoff counter, position at last touch, position
  6969.       at last lift, int call mask, select on count, select off count,
  6970.       pos select on count, pos select off count.
  6971.     the following driver parameters will have been reset as listed:
  6972.       mouse emulation mode: left on
  6973.       thresholds: 46 on screen, 96 push harder, 80 push release
  6974.       x, y hysteresis: 400
  6975.       data repeat rate: 40/sec
  6976.       select mechanism: push-harder - first-touch
  6977.       coordinate origin: upper left corner
  6978.       filter frequency: medium
  6979.       data block mask: all enabled
  6980.       click lock: on
  6981. --------N-7FB0-------------------------------
  6982. INT 7F - Alloy NTNX, MW386 - RELEASE ALL SEMAPHORES FOR USER
  6983.     AH = B0h
  6984.     AL = user number
  6985.     DS = code segment
  6986. Note:    MW386 ignores AL and DS; it releases all semaphores locked using INT 67
  6987.       or INT 7F locking functions
  6988. SeeAlso: AH=B1h,AH=B2h,AH=B3h,AH=B4h
  6989. --------N-7FB1--SF00-------------------------
  6990. INT 7F - Alloy NTNX, MW386 - RELEASE NORMAL SEMAPHORES FOR USER
  6991.     AH = B1h subfn 00h
  6992.     AL = (bits 7-5) 000
  6993.          (bits 4-0) user ID
  6994. Note:    MW386 ignores AL; it releases all semaphores locked using INT 67 or
  6995.       INT 7F locking functions
  6996. SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
  6997. --------N-7FB2--SF01-------------------------
  6998. INT 7F - Alloy NTNX - RELEASE MESSAGES FOR USER
  6999.     AH = B2h subfn 01h
  7000.     AL = (bits 7-5) 001
  7001.          (bits 4-0) user ID
  7002. SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h
  7003. --------N-7FB3--SF02-------------------------
  7004. INT 7F - Alloy NTNX - RELEASE FILES FOR USER
  7005.     AH = B3h subfn 02h
  7006.     AL = (bits 7-5) 010
  7007.          (bits 4-0) user ID
  7008. SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B4h
  7009. --------N-7FB4-------------------------------
  7010. INT 7F - Alloy NTNX - RELEASE DEVICES FOR USER
  7011.     AH = B4h
  7012.     AL = user ID
  7013. SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B3h
  7014. --------N-7FC3-------------------------------
  7015. INT 7F - Alloy MW386 - WRITE BYTE TO TERMINAL AUX PORT
  7016.     AH = C3h
  7017.     AL = byte to write
  7018. Return: CF clear if successful
  7019.     CF set on error
  7020. SeeAlso: AH=C6h
  7021. --------N-7FC5-------------------------------
  7022. INT 7F - Alloy MW386 - CHANGE CONSOLE MODE
  7023.     AH = C5h
  7024.     AL = new console mode
  7025.         00h keyboard indirect
  7026.         01h keyboard direct
  7027.         02h data handshake enforced
  7028.         03h no data handshake
  7029. Return: CF clear if successful
  7030.         AL = prior console mode
  7031.     CF set on error (caller is not remote user)
  7032. Note:    modes 2 and 3 may be used for input through the console port; no video
  7033.       output should be performed in these modes
  7034. --------N-7FC6-------------------------------
  7035. INT 7F - Alloy MW386 - WRITE BYTE TO CONSOLE PORT
  7036.     AH = C6h
  7037.     AL = byte to write
  7038. Return: CF clear if successful
  7039.     CF set on error (caller is not remote user)
  7040. Note:    any terminal driver data translation will be bypassed
  7041. SeeAlso: AH=C3h,AH=C7h
  7042. --------N-7FC7-------------------------------
  7043. INT 7F - Alloy MW386 - READ CONSOLE DATA BYTE
  7044.     AH = C7h
  7045. Return: CF clear if successful
  7046.         AL = byte read
  7047.     CF set on error (no data available or caller is not remote user)
  7048. Note:    used to read data after placing console in mode 2 or 3 (see AH=C5h)
  7049. SeeAlso: AH=C5h,AH=C6h,AH=C8h
  7050. --------N-7FC8-------------------------------
  7051. INT 7F - Alloy MW386 - READ CONSOLE DATA INTO BUFFER
  7052.     AH = C8h
  7053.     AL = maximum bytes to read
  7054.     ES:DI -> buffer for console data
  7055. Return: CF clear if successful
  7056.         CX = number of bytes read
  7057.     CF set on error (caller is not remote user)
  7058. SeeAlso: AH=C7h
  7059. --------N-7FCF-------------------------------
  7060. INT 7F - Alloy NTNX - REBOOT USER PROCESSOR
  7061.     AH = CFh
  7062.     DS:DX -> ASCIZ string containing user number to be reset
  7063. SeeAlso: AH=D6h
  7064. --------N-7FD6-------------------------------
  7065. INT 7F - Alloy MW386 - RESET NETWORK EXECUTIVE
  7066.     AH = D6h
  7067.     DS:DX -> reset packet (see below)
  7068. Return: never if succesful
  7069. Note:    all users will be shut down immediately if successful
  7070. SeeAlso: AH=CFh
  7071.  
  7072. Format of reset packet:
  7073. Offset    Size    Description
  7074.  00h    DWORD    reset code (60606060h)
  7075.  04h 16 BYTEs    ASCIZ supervisor password padded with nulls
  7076. --------N-7FD7-------------------------------
  7077. INT 7F - Alloy MW386 - POST EVENT
  7078.     AH = D7h
  7079.     AL = user number (if local event)
  7080.     DX = event number
  7081. --------N-7FD8-------------------------------
  7082. INT 7F - Alloy MW386 - FLUSH DISK BUFFERS
  7083.     AH = D8h
  7084. Return: CF set on error
  7085. Note:    forces all disk buffers to be written out immediately
  7086. SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h,INT 2F/AX=1120h
  7087. --------N-7FDB-------------------------------
  7088. INT 7F - Alloy MW386 v2+ - GET MW386 INVOCATION DRIVE
  7089.     AH = DBh
  7090. Return: AL = drive from which MW386 was started (2=C:,3=D:,etc)
  7091. --------N-7FE0-------------------------------
  7092. INT 7F - Alloy MW386 - CREATE DOS TASK
  7093.     AH = E0h
  7094.     AL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  7095.     DS:DX -> ASCIZ task name (max 16 bytes)
  7096. Return: CF clear if successful
  7097.         AL = task create ID
  7098.     CF set on error
  7099. Note:    only foreground DOS tasks can use this function
  7100. SeeAlso: AH=E1h,AH=E2h,AH=E3h,AH=E6h,AH=E7h
  7101. --------N-7FE1-------------------------------
  7102. INT 7F - Alloy MW386 - GET DOS TASK PID FROM CREATE ID
  7103.     AH = E1h
  7104.     AL = create ID (from AH=E0h)
  7105. Return: AL = DOS process number
  7106.     CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  7107. Note:    this function should not be called immediately after creating a new
  7108.       DOS task, since the new task is being initialized by a concurrent
  7109.       process
  7110. SeeAlso: AH=E0h,AH=E2h
  7111. --------N-7FE2-------------------------------
  7112. INT 7F - Alloy MW386 - SWITCH TO NEW DOS TASK
  7113.     AH = E2h
  7114.     AL = DOS process number (from AH=E1h)
  7115. Return: CF set on error (invalid process number or caller not foreground task)
  7116. Notes:    specified task becomes the foreground task and current task is placed
  7117.       in the background
  7118.     may only be called by a foreground task
  7119. SeeAlso: AH=E0h,AH=E1h
  7120. --------N-7FE3-------------------------------
  7121. INT 7F - Alloy MW386 - CHANGE NAME OF DOS TASK
  7122.     AH = E3h
  7123. ---v1.x---
  7124.     AL = user number
  7125. ---v2+---
  7126.     BH = user number
  7127.     BL = task number
  7128. ---
  7129.     DS:DX -> ASCIZ task name
  7130. Return: CF set on error (invalid process number)
  7131. SeeAlso: AH=E0h,AH=E4h,AH=E5h
  7132. --------N-7FE4-------------------------------
  7133. INT 7F - Alloy MW386 - GET TASK NAME FROM PROCESS NUMBER
  7134.     AH = E4h
  7135. ---v1.x---
  7136.     AL = user number
  7137. ---v2+---
  7138.     BH = user number
  7139.     BL = task number
  7140. ---
  7141.     ES:DI -> buffer for task name
  7142. Return: CF clear if successful
  7143.         CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  7144.         DX = task flags
  7145.         bit 7: MS-DOS process
  7146.         ES:DI buffer filled
  7147.     CF set on error (invalid process number)
  7148. SeeAlso: AH=E3h,AH=E5h
  7149. --------N-7FE5-------------------------------
  7150. INT 7F - Alloy MW386 - GET PROCESS NUMBER FROM TASK NAME
  7151.     AH = E5h
  7152.     DS:DX -> ASCIZ task name
  7153.     BH = user number
  7154. Return: CF clear if successful
  7155.         AL = DOS process number
  7156.         CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  7157.     CF set on error (no match for name)
  7158. SeeAlso: AH=E3h,AH=E4h
  7159. --------N-7FE6-------------------------------
  7160. INT 7F - Alloy MW386 - GET NUMBER OF AVAILABLE USER TASKS
  7161.     AH = E6h
  7162. Return: AX = number of processes available to current user
  7163. SeeAlso: AH=E0h
  7164. --------N-7FE7-------------------------------
  7165. INT 7F - Alloy MW386 - REMOVE DOS TASK
  7166.     AH = E7h
  7167.     AL = DOS process number
  7168. Return: CF set on error (invalid process number or first process)
  7169. Note:    can only be called by a foreground task
  7170. SeeAlso: AH=E0h
  7171. --------N-7FE8-------------------------------
  7172. INT 7F - Alloy MW386 - DOS TASK DELAY
  7173.     AH = E8h
  7174.     CX = delay time in milliseconds
  7175. Note:    a delay of 0 may be used to surrender the current time slice
  7176. SeeAlso: INT 15/AX=1000h,INT 1A/AX=FF01h,INT 21/AH=EEh"DoubleDOS"
  7177. SeeAlso: INT 2F/AX=1680h
  7178. --------N-7FF0-------------------------------
  7179. INT 7F - Alloy MW386 - RESTRICT DIRECTORY TO GROUP
  7180.     AH = F0h
  7181.     AL = group number
  7182.     DS:DX -> ASCIZ directory name
  7183. Return: CF clear if successful
  7184.         AX = status
  7185.         0002h directory not found
  7186.         0003h directory not found
  7187.         0005h directory in use, cannot be restricted
  7188.         02xxh restricted to group xxh
  7189.     CF set on error
  7190. Note:    the restriction on the directory may be removed by calling this
  7191.       function with group 0, then using AH=F1h to assign the directory to
  7192.       group 0
  7193. SeeAlso: AH=F1h,AH=F2h,AH=F3h
  7194. --------N-7FF1-------------------------------
  7195. INT 7F - Alloy MW386 - ASSIGN DIRECTORY TO GROUP
  7196.     AH = F1h
  7197.     AL = group number
  7198.     DS:DX -> ASCIZ directory name
  7199. Notes:    performs permanent assignment to a group; no immediate action is taken
  7200.       unless the directory has been restricted with AH=F0h
  7201.     may be used to restrict a nonexistent directory
  7202. SeeAlso: AH=F0h
  7203. --------N-7FF2-------------------------------
  7204. INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY
  7205.     AH = F2h
  7206.     CX = entry number
  7207.     ES:DI -> 64-byte buffer
  7208. Return: CF clear if successful
  7209.         buffer filled with 63-byte directory info and 1-byte group number
  7210.     CF set on error (invalid entry)
  7211. SeeAlso: AH=F0h,AH=F3h
  7212. --------N-7FF3-------------------------------
  7213. INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY FOR GROUP
  7214.     AH = F3h
  7215.     AL = group number
  7216.     CX = entry number
  7217.     ES:DI -> 64-byte buffer
  7218. Return: CF clear if successful
  7219.         CX = next entry number
  7220.         buffer filled with 63-byte directory info and 1-byte group number
  7221.     CF set on error (no more matching entries)
  7222. Note:    like AH=F2h, but only returns directories belonging to the specified
  7223.       group
  7224. SeeAlso: AH=F2h
  7225. --------N-7FF8-------------------------------
  7226. INT 7F - Alloy MW386 - ASSIGN USER TO GROUP
  7227.     AH = F8h
  7228.     AL = group number
  7229.     DL = user number
  7230.     DH = machine number (currently 00h)
  7231. Return: CF clear if successful
  7232.     CF set on error (user already in maximum number of groups)
  7233. Note:    each user is allowed eight group assignments
  7234. SeeAlso: AH=F9h,AH=FAh
  7235. --------N-7FF9-------------------------------
  7236. INT 7F - Alloy MW386 - REMOVE USER FROM GROUP
  7237.     AH = F9h
  7238.     AL = group number
  7239.     DL = user number
  7240.     DH = machine number (currently 00h)
  7241. Return: CF set if failed
  7242. SeeAlso: AH=F8h,AH=FAh
  7243. --------N-7FFA-------------------------------
  7244. INT 7F - Alloy MW386 - GET USER GROUP LIST
  7245.     AH = FAh
  7246.     DL = user number
  7247.     DH = machine number (currently 00h)
  7248.     ES:DI -> 16-byte buffer for group list
  7249. Return: CX = number of groups
  7250.     ES:DI buffer filled with group numbers
  7251. SeeAlso: AH=F8h,AH=F9h
  7252. --------N-7FFB-------------------------------
  7253. INT 7F - Alloy MW386 - ASSIGN GROUP NAME
  7254.     AH = FBh
  7255.     CL = group number
  7256.     ES:DI -> ASCIZ group name (max 17 bytes)
  7257. SeeAlso: AH=FCh
  7258. --------N-7FFC-------------------------------
  7259. INT 7F - Alloy MW386 - GET GROUP NAME
  7260.     AH = FCh
  7261.     CL = group number
  7262.     ES:DI -> 17-byte buffer for ASCIZ name
  7263. Return: ES:DI buffer filled
  7264. Note:    if the group has not been named, "(unnamed)" is returned
  7265. SeeAlso: AH=FBh
  7266. ----------80---------------------------------
  7267. INT 80 - Q-PRO4 - ???
  7268. --------r-80---------------------------------
  7269. INT 80 - reserved for BASIC
  7270. Note:    this vector and INT 81 through INT ED are modified but not restored by
  7271.       Direct Access v4.0, and may be left dangling by other programs
  7272.       written with the same version of compiled BASIC
  7273. SeeAlso: INT 81"BASIC"
  7274. --------s-80----BX0000-----------------------
  7275. INT 80 - SoundBlaster SBFM driver - GET VERSION
  7276.     BX = 0000h
  7277. Return: ???
  7278. Note:    SBFM installs at a free interrupt in the range 80h through BFh
  7279. SeeAlso: BX=0008h,INT 2F/AX=FBFBh
  7280. --------s-80----BX0001-----------------------
  7281. INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
  7282.     BX = 0001h
  7283.     DX:AX -> music status byte
  7284. SeeAlso: BX=0000h,BX=0002h,BX=0003h
  7285. --------s-80----BX0002-----------------------
  7286. INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
  7287.     BX = 0002h
  7288.     CX = number of instruments
  7289.     DX:AX -> instrument table
  7290. SeeAlso: BX=0000h,BX=0001h,BX=0005h
  7291. --------s-80----BX0003-----------------------
  7292. INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE
  7293.     BX = 0003h
  7294.     AX = clock rate divisor (1193180 / desired frequency in Hertz)
  7295.         FFFFh to restore to 18.2 Hz
  7296. SeeAlso: BX=0000h,BX=0001h,BX=0004h
  7297. --------s-80----BX0004-----------------------
  7298. INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE
  7299.     BX = 0004h
  7300.     AX = driver clock rate divisor (1193180 / frequency in Hertz)
  7301. Note:    default frequency is 96 Hz
  7302. SeeAlso: BX=0000h,BX=0003h
  7303. --------s-80----BX0005-----------------------
  7304. INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
  7305.     BX = 0005h
  7306.     AX = semi-tone offset
  7307. SeeAlso: BX=0000h,BX=0002h,BX=0006h
  7308. --------s-80----BX0006-----------------------
  7309. INT 80 - SoundBlaster SBFM driver - PLAY MUSIC
  7310.     BX = 0006h
  7311.     DX:AX -> music block
  7312. Return: AX = status
  7313.         0000h successful
  7314.         0001h music already active
  7315. SeeAlso: BX=0000h,BX=0007h,BX=000Ah,INT 1A/AX=FF04h
  7316. --------s-80----BX0007-----------------------
  7317. INT 80 - SoundBlaster SBFM driver - STOP MUSIC
  7318.     BX = 0007h
  7319. Return: AX = status
  7320.         0000h successful
  7321.         0001h music not active
  7322. SeeAlso: BX=0000h,BX=0006h,BX=0009h,INT 1A/AX=FF05h
  7323. --------s-80----BX0008-----------------------
  7324. INT 80 - SoundBlaster SBFM driver - RESET DRIVER
  7325.     BX = 0008h
  7326. Return: AX = status
  7327.         0000h successful
  7328.         0001h music is active
  7329. SeeAlso: BX=0000h
  7330. --------s-80----BX0009-----------------------
  7331. INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
  7332.     BX = 0009h
  7333. Return: AX = status
  7334.         0000h successful
  7335.         0001h no music active
  7336. SeeAlso: BX=0000h,BX=0007h,BX=000Ah,INT 1A/AX=FF01h
  7337. --------s-80----BX000A-----------------------
  7338. INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
  7339.     BX = 000Ah
  7340. Return: AX = status
  7341.         0000h successful
  7342.         0001h no music paused
  7343. SeeAlso: BX=0000h,BX=0006h,BX=0009h
  7344. --------s-80----BX000B-----------------------
  7345. INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
  7346.     BX = 000Bh
  7347.     DX:AX -> trap routine
  7348. SeeAlso: BX=0000h
  7349. --------N-8001-------------------------------
  7350. INT 80 - QPC Software PKTINT.COM - INITIALIZE
  7351.     AH = 01h
  7352. Return: AX = 0000h
  7353.     CX = FFFFh
  7354.     DX = FFFFh
  7355. Notes:    this interrupt is the WinQVTNet protected mode interface to Windows 3.0
  7356.     all buffer pointers are reset back to 0
  7357. --------N-8002-------------------------------
  7358. INT 80 - QPC Software PKTINT.COM - GET BUFFER ADDRESSES
  7359.     AH = 02h
  7360.     BX = extra bytes to allocate per packet
  7361. Return: AX = segment address of 10K buffer (for receives???)
  7362.     BX = segment address of 2K buffer (for sends???)
  7363. SeeAlso: AH=05h
  7364. --------N-8003-------------------------------
  7365. INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT
  7366.     AH = 03h
  7367. Return: CX:DX -> receive call address
  7368. Note:    the returned address can be used in the packet driver calls since it
  7369.       will be a valid address in all DOS boxes
  7370. SeeAlso: AH=06h
  7371. --------N-8004-------------------------------
  7372. INT 80 - QPC Software PKTINT.COM - ENABLE???
  7373.     AH = 04h
  7374.     BX = ???
  7375. Return: ???
  7376. SeeAlso: AH=01h
  7377. --------N-8005-------------------------------
  7378. INT 80 - QPC Software PKTINT.COM - GET RECEIVE STATISTICS
  7379.     AH = 05h
  7380. Return: AX = amount of buffer currently in use
  7381.     BX = current offset in buffer
  7382.     CX = number of times receive has been called
  7383. SeeAlso: AH=02h
  7384. --------N-8006-------------------------------
  7385. INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET
  7386.     AH = 06h
  7387. Return: BX = next packet offset
  7388.     CX = number of bytes still buffered
  7389.     DX = size of packet released back into buffer pool
  7390. SeeAlso: AH=03h
  7391. --------r-81---------------------------------
  7392. INT 81 - reserved for BASIC
  7393. Note:    this vector is modified but not restored by Direct Access v4.0, and
  7394.       may be left dangling by other programs written with the same version
  7395.       of compiled BASIC
  7396. SeeAlso: INT 80"BASIC",INT 82"BASIC"
  7397. --------N-81---------------------------------
  7398. INT 81 - IBM TOKEN RING ADAPTER - ???
  7399. SeeAlso: INT 82"TOKEN RING",INT 91"TOKEN RING"
  7400. --------r-82---------------------------------
  7401. INT 82 - reserved for BASIC
  7402. SeeAlso: INT 81"BASIC",INT 83"BASIC"
  7403. --------N-82---------------------------------
  7404. INT 82 - IBM TOKEN RING ADAPTER - ???
  7405.     AH = function
  7406.         00h display message???
  7407.         DS:BX -> string
  7408.     ???
  7409. Return: ???
  7410. SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
  7411. --------r-83---------------------------------
  7412. INT 83 - reserved for BASIC
  7413. SeeAlso: INT 82"BASIC",INT 84"BASIC"
  7414. --------r-84---------------------------------
  7415. INT 84 - reserved for BASIC
  7416. SeeAlso: INT 83"BASIC",INT 85"BASIC"
  7417. --------r-85---------------------------------
  7418. INT 85 - reserved for BASIC
  7419. Note:    INT 80 through INT ED are modified but not restored by Direct Access
  7420.       v4.0, and may be left dangling by other programs written with the
  7421.       same version of compiled BASIC
  7422. SeeAlso: INT 84"BASIC",INT 86"BASIC"
  7423. --------N-86---------------------------------
  7424. INT 86 - NetBIOS - ORIGINAL INT 18
  7425. Note:    some implementations of NetBIOS reportedly relocate INT 18 here
  7426. SeeAlso: INT 18
  7427. --------r-86---------------------------------
  7428. INT 86 - IBM ROM BASIC - used while in interpreter
  7429. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7430.     BASIC.COM/BASICA.COM do not restore vector on termination
  7431. SeeAlso: INT 85"BASIC",INT 87"BASIC"
  7432. --------r-86---------------------------------
  7433. INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
  7434. SeeAlso: INT 21/AH=4Ch,INT 87"APL"
  7435. --------r-87---------------------------------
  7436. INT 87 - IBM ROM BASIC - used while in interpreter
  7437. Notes:    called by ROM BASIC
  7438.     BASIC.COM/BASICA.COM do not restore vector on termination
  7439. SeeAlso: INT 86"BASIC",INT 88"BASIC"
  7440. --------r-87---------------------------------
  7441. INT 87 - APL*PLUS/PC - ???
  7442. SeeAlso: INT 86"APL",INT 88/AL=00h
  7443. --------v-87---------------------------------
  7444. INT 87 - VIRUS - "ZeroHunt" - VIRAL CODE (NOT A VECTOR!)
  7445. Note:    the ZeroHunt virus copies its resident code down to 0000h:021Ch and
  7446.       following
  7447. SeeAlso: INT 8B"VIRUS"
  7448. --------r-88---------------------------------
  7449. INT 88 - IBM ROM BASIC - used while in interpreter
  7450. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7451.     BASIC.COM/BASICA.COM do not restore vector on termination
  7452. SeeAlso: INT 87"BASIC",INT 89"BASIC"
  7453. --------r-88--00-----------------------------
  7454. INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
  7455.     AL = 00h
  7456.     BX = STPTR of the variable to be assigned
  7457.     ES:SI -> model of type, rank, and shape (see below)
  7458. Return: ES:DI -> first data byte of object
  7459.     DX:CX = number of elements in the object
  7460. SeeAlso: INT C8"APL"
  7461.  
  7462. Format of shape model:
  7463. Offset    Size    Description
  7464.  00h    BYTE    type
  7465.         01h character (2-byte dimension sizes)
  7466.         02h integer (2-byte dimension sizes)
  7467.         08h floating point (2-byte dimension sizes)
  7468.         11h character (4-byte dimension sizes)
  7469.         12h integer (4-byte dimension sizes)
  7470.         18h floating point (4-byte dimension sizes)
  7471.  01h    BYTE    rank
  7472.  02h    WORD/DWORD first dimension of shape
  7473.  N    WORD/DWORD second dimension of shape
  7474.     ...
  7475. --------r-88--01-----------------------------
  7476. INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
  7477.     AL = 01h
  7478.     AH = rank
  7479.     BX = STPTR of the variable to be assigned
  7480.     CX = first dimension (if any)
  7481.     DX = second dimension (if any)
  7482. Return: ES:DI -> object
  7483.     CX = number of elements in the object
  7484. Note:    each dimension must be 32767 or smaller
  7485. SeeAlso: AL=02h,AL=08h,INT C8"APL"
  7486. --------r-88--02-----------------------------
  7487. INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
  7488.     AL = 02h
  7489.     AH = rank
  7490.     BX = STPTR of the variable to be assigned
  7491.     CX = first dimension (if any)
  7492.     DX = second dimension (if any)
  7493. Return: ES:DI -> object
  7494.     CX = number of elements in the object
  7495. Note:    each dimension must be 32767 or smaller
  7496. SeeAlso: AL=01h,AL=08h,INT C8"APL"
  7497. --------r-88--08-----------------------------
  7498. INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
  7499.     AL = 08h
  7500.     AH = rank
  7501.     BX = STPTR of the variable to be assigned
  7502.     CX = first dimension (if any)
  7503.     DX = second dimension (if any)
  7504. Return: ES:DI -> object
  7505.     CX = number of elements in the object
  7506. Note:    each dimension must be 32767 or smaller
  7507. SeeAlso: AL=01h,AL=02h,INT C8"APL"
  7508. --------r-88--F5-----------------------------
  7509. INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
  7510.     AL = F5h
  7511.     BX = STPTR of object
  7512. SeeAlso: INT C8"APL"
  7513. --------r-88--F6-----------------------------
  7514. INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
  7515.     AL = F6h
  7516.     BX = STPTR of object
  7517. SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
  7518. --------r-88--F7-----------------------------
  7519. INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
  7520.     AL = F7h
  7521.     BX = STPTR of object
  7522. SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
  7523. --------r-88--F8-----------------------------
  7524. INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
  7525.     AL = F8h
  7526.     BX = STPTR of object
  7527. Return: BX = name's status
  7528.         0000h eligible
  7529.         0001h not eligible
  7530. SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
  7531. --------r-88--F9-----------------------------
  7532. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  7533.     AL = F9h
  7534.     ES:SI -> name
  7535.     CX = length of name
  7536. Return: CF set if name ill-formed or already in use
  7537.         BX = STPTR if already in symbol table
  7538.     CF clear if name is available for use
  7539.         BX = 0000h
  7540. Note:    does not force the name into the workspace
  7541. SeeAlso: AL=FEh,AL=FFh,INT C8"APL"
  7542. --------r-88--FC-----------------------------
  7543. INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
  7544.     AL = FCh
  7545.     BX = amount of memory needed (paragraphs)
  7546. Return: CF clear if memory available
  7547.     CF set if a workspace compaction is required
  7548. SeeAlso: AL=FDh,INT C8"APL"
  7549. --------r-88--FD-----------------------------
  7550. INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
  7551.     AL = FDh
  7552. Return: BX = number of paragraphs available in workspace
  7553. SeeAlso: AL=FCh,INT C8"APL"
  7554. --------r-88--FE-----------------------------
  7555. INT 88 - APL*PLUS/PC - CREATE NAME
  7556.     AL = FEh
  7557.     ES:SI -> name
  7558.     CX = length of name
  7559. Return: BX = STPTR of name
  7560.     DX = interpreter's data segment
  7561. SeeAlso: AL=F9h,AL=FFh,INT C8"APL"
  7562. --------r-88--FF-----------------------------
  7563. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  7564.     AL = FFh
  7565.     ES:SI -> name
  7566.     CX = length of name
  7567. Return: CF set if name ill-formed or already in use
  7568.         BX = STPTR if already in symbol table
  7569.     CF clear if name is available for use
  7570.         BX = 0000h
  7571. Note:    forces the name into the workspace and makes it immune from outswapping
  7572. SeeAlso: AL=F9h,AL=FEh,INT C8"APL"
  7573. --------r-89---------------------------------
  7574. INT 89 - IBM ROM BASIC - used while in interpreter
  7575. Notes:    called by ROM BASIC
  7576.     BASIC.COM/BASICA.COM do not restore vector on termination
  7577. SeeAlso: INT 88"BASIC",INT 8A"BASIC"
  7578. --------r-8A---------------------------------
  7579. INT 8A - IBM ROM BASIC - used while in interpreter
  7580. Notes:    called by ROM BASIC
  7581.     BASIC.COM/BASICA.COM do not restore vector on termination
  7582. SeeAlso: INT 89"BASIC",INT 8B"BASIC"
  7583. --------r-8A---------------------------------
  7584. INT 8A - APL*PLUS/PC - PRINT SCREEN
  7585. Note:    same as INT 05
  7586. SeeAlso: INT 05,INT 8C"APL",INT CA"APL"
  7587. --------r-8B---------------------------------
  7588. INT 8B - IBM ROM BASIC - used while in interpreter
  7589. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7590.     BASIC.COM/BASICA.COM do not restore vector on termination
  7591. SeeAlso: INT 8A"BASIC",INT 8C"BASIC"
  7592. --------r-8B---------------------------------
  7593. INT 8B - APL*PLUS/PC - BEEP
  7594. Note:    same as printing a ^G via INT 21/AH=02h
  7595. SeeAlso: INT 21/AH=02h,INT CB"APL"
  7596. --------v-8B---------------------------------
  7597. INT 8B - VIRUS - "ZeroHunt" - INSTALLATION CHECK (NOT A VECTOR!)
  7598. Note:    if the ZeroHunt virus is resident, this vector will contain either
  7599.       EE83h:019Bh (ZH-411) or EE83h:019Fh (ZH-415)
  7600. SeeAlso: INT 70"VIRUS",INT 87"VIRUS",INT 9C"VIRUS"
  7601. --------r-8C---------------------------------
  7602. INT 8C - IBM ROM BASIC - used while in interpreter
  7603. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7604.     BASIC.COM/BASICA.COM do not restore vector on termination
  7605. --------r-8C---------------------------------
  7606. INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
  7607.     AX = flag
  7608.         0000h do not save display attributes
  7609.         0001h save attributes
  7610. SeeAlso: INT CC"APL"
  7611. --------r-8D---------------------------------
  7612. INT 8D - IBM ROM BASIC - used while in interpreter
  7613. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7614.     BASIC.COM/BASICA.COM do not restore vector on termination
  7615. --------r-8E---------------------------------
  7616. INT 8E - IBM ROM BASIC - used while in interpreter
  7617. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7618.     BASIC.COM/BASICA.COM do not restore vector on termination
  7619. --------r-8F---------------------------------
  7620. INT 8F - IBM ROM BASIC - used while in interpreter
  7621. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7622.     BASIC.COM/BASICA.COM do not restore vector on termination
  7623. --------r-90---------------------------------
  7624. INT 90 - IBM ROM BASIC - used while in interpreter
  7625. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7626.     BASIC.COM/BASICA.COM do not restore vector on termination
  7627. --------r-90---------------------------------
  7628. INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
  7629. --------r-91---------------------------------
  7630. INT 91 - IBM ROM BASIC - used while in interpreter
  7631. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7632.     BASIC.COM/BASICA.COM do not restore vector on termination
  7633. --------N-91---------------------------------
  7634. INT 91 - IBM TOKEN RING ADAPTER - ???
  7635. SeeAlso: INT 81"TOKEN RING",INT 82"TOKEN RING",INT 93"TOKEN RING"
  7636. --------r-92---------------------------------
  7637. INT 92 - IBM ROM BASIC - used while in interpreter
  7638. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7639.     BASIC.COM/BASICA.COM do not restore vector on termination
  7640. --------N-92---------------------------------
  7641. INT 92 - Sangoma X.25 INTERFACE PROGRAM
  7642.     BX:DX -> control block
  7643. SeeAlso: INT 68"Sangoma"
  7644. --------e-92E1-------------------------------
  7645. INT 92 - Da Vinci eMail Dispatcher INTERFACE
  7646.     AH = E1h
  7647.     AL = function
  7648.     BX = stack count (number of words to push)
  7649.     CX:DX -> stack data (in word-reversed order ready to push)
  7650. Return: AX = status (see below)
  7651. Note:    preserves BP, DS, SI, DI; other registers may be destroyed
  7652.  
  7653. Values for status:
  7654.  0001h success
  7655.  FF97h "ERS_NOT_AVAILABLE"
  7656.  FF99h "ERS_TOO_MANY_NAMES"
  7657.  FF9Ah "ERS_BAD_NAME_PASSWORD"
  7658.  FFE3h "ERS_NAME_NOT_FOUND"
  7659.  FFF8h "ERS_USE_STRING" (call NetGetError to get error string)
  7660.  FFFFh "ERS_NO_SUCH_FILE"
  7661. --------e-92E100-----------------------------
  7662. INT 92 - Da Vinci eMail Dispatcher - "NetInitStart"
  7663.     AX = E100h
  7664.     BX = size of parameter block in words (000Ah)
  7665.     CX:DX -> parameter block (see below)
  7666. Return: AX = 0001h success
  7667. Desc:    this function is used to initialize the dispatcher
  7668. SeeAlso: AX=E101h,AX=E103h
  7669.  
  7670. Format of parameter block:
  7671. Offset    Size    Description
  7672.  00h    WORD    segment of ???
  7673.  02h    WORD    offset of ???
  7674.  04h    WORD    high part of long ???
  7675.  06h    WORD    low part of long ???
  7676.  08h    WORD    high part of long ???
  7677.  0Ah    WORD    low part of long ???
  7678.  0Ch    WORD    high part of long ???
  7679.  0Eh    WORD    low part of long ???
  7680.  10h    WORD    high part of long ???
  7681.  12h    WORD    low part of long ???
  7682. --------e-92E101BX0000-----------------------
  7683. INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck"
  7684.     AX = E101h
  7685.     BX = 0000h
  7686.     CX:DX ignored
  7687. Return: AX = 0001h success
  7688. SeeAlso: AX=E100h,AX=E180h
  7689. --------e-92E102BX0000-----------------------
  7690. INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver"
  7691.     AX = E102h
  7692.     BX = 0000h
  7693.     CX:DX ignored
  7694. Return: AX = 0001h success
  7695. Desc:    this function is used to determine if the dispatcher is loaded
  7696. SeeAlso: AX=E10Bh,AX=E180h
  7697. --------e-92E103BX0000-----------------------
  7698. INT 92 - Da Vinci eMail Dispatcher - "NetTerminate"
  7699.     AX = E103h
  7700.     BX = 0000h
  7701.     CX:DX ignored
  7702. Return: AX = status (see AH=E1h)
  7703. SeeAlso: AX=E100h
  7704. --------e-92E104-----------------------------
  7705. INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs"
  7706.     AX = E104h
  7707.     BX = size of parameter block in words (0006h)
  7708.     CX:DX -> parameter block (see below)
  7709. Return: AX = status (see AH=E1h)
  7710. Desc:    this function is used to verify node address for usernames
  7711. SeeAlso: AX=E180h
  7712.  
  7713. Format of parameter block:
  7714. Offset    Size    Description
  7715.  00h    WORD    segment of node address buffer
  7716.  02h    WORD    offset of node address buffer
  7717.  04h    WORD    segment of uppercase username
  7718.  06h    WORD    offset of uppercase username
  7719.  08h    WORD    segment of "DVSEMAIL"
  7720.  0Ah    WORD    offset of "DVSEMAIL"
  7721. --------e-92E105-----------------------------
  7722. INT 92 - Da Vinci eMail Dispatcher - "NetOpen"
  7723.     AX = E105h
  7724.     BX = size of parameter block in words (0007h)
  7725.     CX:DX -> parameter block (see below)
  7726. Return: AX = 0000h Error
  7727.     AX = handle
  7728. Desc:    this function is used to open a submission channel
  7729. SeeAlso: AX=E10Ah,AX=E106h,AX=E108h
  7730.  
  7731. Format of parameter block:
  7732. Offset    Size    Description
  7733.  00h    WORD    operation (1 = read, 2 = write)
  7734.  02h    WORD    segment of uppercase To: username
  7735.  04h    WORD    offset of uppercase To: username
  7736.  06h    WORD    segment of "DVSEMAIL"
  7737.  08h    WORD    offset of "DVSEMAIL"
  7738.  0Ah    WORD    segment of node address
  7739.  0Ch    WORD    offset of node address
  7740. --------e-92E106BX0004-----------------------
  7741. INT 92 - Da Vinci eMail Dispatcher - "NetRead"
  7742.     AX = E106h
  7743.     BX = 0004h
  7744.     CX:DX -> parameter block
  7745. Return: AX = 0001h
  7746. SeeAlso: AX=E108h
  7747. --------e-92E107BX0002-----------------------
  7748. INT 92 - Da Vinci eMail Dispatcher - "NetGetError"
  7749.     AX = E107h
  7750.     BX = 0002h
  7751.     CX:DX -> parameter block
  7752. Return: AX = 0001h
  7753. SeeAlso: AX=E109h,AX=E180h
  7754. --------e-92E108-----------------------------
  7755. INT 92 - Da Vinci eMail Dispatcher - "NetWrite"
  7756.     AX = E108h
  7757.     BX = size of parameter block in words (0004h)
  7758.     CX:DX -> parameter block (see below)
  7759. Return: AX = amount written
  7760. Desc:    This function is used to write transactions to the dispatcher.
  7761.       The command block is written first and then another call is used
  7762.       to write the associated data.
  7763. SeeAlso: AX=E106h
  7764.  
  7765. Format of parameter block:
  7766. Offset    Size    Description
  7767.  00h    WORD    buffer count
  7768.  02h    WORD    segment of command buffer
  7769.  04h    WORD    offset of command buffer
  7770.  06h    WORD    handle from NetOpen
  7771.  
  7772. Format of command buffer:
  7773. Offset    Size    Description
  7774.  00h    BYTE    command
  7775.         21h '!' Protocol commands for remote control
  7776.         41h 'A' Authorization protocol element
  7777.         42h 'B' Return(back) routing information
  7778.             Associated data is the From: username
  7779.         43h 'C' Carbon Copy list
  7780.             Associated data is a comma delimitted list of usernames
  7781.         44h 'D' Distribution list
  7782.             Associated data is a comma delimitted list of usernames
  7783.         45h 'E' Mail end marker
  7784.             No associated data
  7785.         48h 'H' Mail message header
  7786.             Associated data is a message header buffer
  7787.         4Dh 'M' Mail message
  7788.             Associated data is the body of the message
  7789.         4Fh 'O' Object
  7790.         50h 'P' Paperclip attachment
  7791.         52h 'R' Routing information
  7792.             Associated data is the To: username
  7793.         53h 'S' Subject
  7794.             Associated data is the subject of the message
  7795.         54h 'T' Trail of Reply/Forwards
  7796.  01h    BYTE    subcommand
  7797.  02h    DWORD    length of associated data
  7798.  
  7799. Format of message header buffer:
  7800. Offset    Size    Description
  7801.  00h 30 BYTEs    subject line
  7802.  1Eh 24 BYTEs    To
  7803.  36h 24 BYTEs    From
  7804.  4Eh    DWORD    Time
  7805.         BYTE    00h
  7806.         BYTE    hour
  7807.         BYTE    minute
  7808.         BYTE    second
  7809.  52h    DWORD    Date
  7810.         BYTE    00h
  7811.         BYTE    year
  7812.         BYTE    month
  7813.         BYTE    day
  7814.  56h    DWORD    serial number (00000000h)
  7815.  5Ah    WORD    mail types (see below)
  7816.  5Ch    WORD    special types (0)
  7817.  
  7818. Bitfields for mail types:
  7819.  bit 7    blind carbon copy
  7820.  bit 6    carbon copy
  7821.  bit 5    priority
  7822.  bit 4    confidential
  7823.  bit 3    certified
  7824.  bit 2    bulk
  7825.  bits 1-0 class (first, second, third, bulk)
  7826. --------e-92E109-----------------------------
  7827. INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED)
  7828.     AX = E109h
  7829.     BX = size of parameter block in words (0001h)
  7830.     CX:DX -> parameter block (see below)
  7831. Return: AX = FF97h (ERS_NOT_AVAILABLE)
  7832. SeeAlso: AX=E107h,AX=E180h
  7833.  
  7834. Format of parameter block:
  7835. Offset    Size    Description
  7836.  00h    WORD    ???
  7837. --------e-92E10A-----------------------------
  7838. INT 92 - Da Vinci eMail Dispatcher - "NetClose"
  7839.     AX = E10Ah
  7840.     BX = size of parameter block in words (0001h)
  7841.     CX:DX -> parameter block (see below)
  7842. Return: AX = 0001h
  7843. Desc:    this function is used to close a dispatcher handle
  7844. SeeAlso: AX=E105h
  7845.  
  7846. Format of parameter block:
  7847. Offset    Size    Description
  7848.  00h    WORD    handle from NetOpen
  7849. --------e-92E10B-----------------------------
  7850. INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue"
  7851.     AX = E10Bh
  7852.     BX = size of parameter block in words (0004h)
  7853.     CX:DX -> parameter block (see below)
  7854. Return: AX = 0001h
  7855. SeeAlso: AX=E102h,AX=E10Ch
  7856.  
  7857. Format of parameter block:
  7858. Offset    Size    Description
  7859.  00h    WORD    segment of 24-byte username buffer
  7860.  02h    WORD    offset of 24-byte username buffer
  7861.  04h    WORD    segment of 24-byte protocol buffer
  7862.  06h    WORD    offset of 24-byte protocol buffer
  7863. --------e-92E10C-----------------------------
  7864. INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue"
  7865.     AX = E10Ch
  7866.     BX = size of parameter block in words (0002h)
  7867.     CX:DX -> parameter block (see below)
  7868. Return: AX = 0001h
  7869. SeeAlso: AX=E10Bh
  7870.  
  7871. Format of parameter block:
  7872. Offset    Size    Description
  7873.  00h    WORD    Segment of 128 byte node address buffer
  7874.  02h    WORD    Offset of 128 byte node address buffer
  7875. --------e-92E10D-----------------------------
  7876. INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName"
  7877.     AX = E10Dh
  7878.     BX = size of parameter block in words (0006h)
  7879.     CX:DX -> parameter block (see below)
  7880. Return: AX = status (see AH=E1h)
  7881. Desc:    this function is used to verify username/password
  7882. SeeAlso: AX=E10Eh
  7883.  
  7884. Format of parameter block:
  7885. Offset    Size    Description
  7886.  00h    WORD    segment of uppercase password string
  7887.  02h    WORD    offset of uppercase password string
  7888.  04h    WORD    segment of uppercase username string
  7889.  06h    WORD    offset of uppercase username string
  7890.  08h    WORD    segment of "DVSEMAIL"
  7891.  0Ah    WORD    offset of "DVSEMAIL"
  7892. --------e-92E10E-----------------------------
  7893. INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName"
  7894.     AX = E10Eh
  7895.     BX = size of parameter block in words (0004h)
  7896.     CX:DX -> parameter block (see below)
  7897. Return: AX = 0001h
  7898. Desc:    this function is used to remove a username
  7899. SeeAlso: AX=E10Dh
  7900.  
  7901. Format of parameter block:
  7902. Offset    Type    Description
  7903.  00h    WORD    segment of uppercase username
  7904.  02h    WORD    offset of uppercase username
  7905.  04h    WORD    segment of "DVSEMAIL"
  7906.  06h    WORD    offset of "DVSEMAIL"
  7907. --------e-92E10FBX0000-----------------------
  7908. INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY
  7909.     AX = E10Fh
  7910.     BX = 0000h
  7911.     CX:DX ignored
  7912. Return: AX = 0001h
  7913. SeeAlso: AX=E180h
  7914. --------e-92E110-----------------------------
  7915. INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute"
  7916.     AX = E110h
  7917.     BX = size of parameter block in words (0006h)
  7918.     CX:DX -> parameter block (see below)
  7919. Return: AX = 0001h
  7920. SeeAlso: AX=E111h,AX=E113h
  7921.  
  7922. Format of parameter block:
  7923. Offset    Size    Description
  7924.  00h  6 WORDs    ???
  7925. --------e-92E111-----------------------------
  7926. INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes"
  7927.     AX = E111h
  7928.     BX = size of parameter block in words (0004h)
  7929.     CX:DX -> parameter block (see below)
  7930. Return: AX = 0001h
  7931. SeeAlso: AX=E110h,AX=E113h
  7932.  
  7933. Format of parameter block:
  7934. Offset    Size    Description
  7935.  00h  4 WORDs    ???
  7936. --------e-92E112-----------------------------
  7937. INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword"
  7938.     AX = E112h
  7939.     BX = size of parameter block in words (0008h)
  7940.     CX:DX -> parameter block (see below)
  7941. Return: AX = 0001h
  7942. SeeAlso: AX=E180h
  7943.  
  7944. Format of parameter block:
  7945. Offset    Size    Description
  7946.  00h  8 WORDs    ???
  7947. --------e-92E113-----------------------------
  7948. INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute"
  7949.     AX = E113h
  7950.     BX = size of parameter block in words (0008h)
  7951.     CX:DX -> parameter block (see below)
  7952. Return: AX = 0001h
  7953. SeeAlso: AX=E110h,AX=E111h
  7954.  
  7955. Format of parameter block:
  7956. Offset    Size    Description
  7957.  00h  8 WORDs    ???
  7958. --------e-92E175-----------------------------
  7959. INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR
  7960.     AX = E175h
  7961. Return: AX = 0012h
  7962.     BX = PSP
  7963. SeeAlso: AX=E180h
  7964. --------e-92E180-----------------------------
  7965. INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK
  7966.     AX = E180h
  7967. Return: AX = 0012h if installed
  7968.     ES:DX -> '$'-terminated driver information string
  7969. SeeAlso: AX=E102h,AX=E105h,AX=E10Fh,AX=E175h
  7970. --------r-93---------------------------------
  7971. INT 93 - IBM ROM BASIC - used while in interpreter
  7972. Notes:    called by ROM BASIC
  7973.     BASIC.COM/BASICA.COM do not restore vector on termination
  7974. --------N-93---------------------------------
  7975. INT 93 - IBM TOKEN RING ADAPTER - ???
  7976. SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
  7977. --------r-94---------------------------------
  7978. INT 94 - IBM ROM BASIC - used while in interpreter
  7979. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7980.     BASIC.COM/BASICA.COM do not restore vector on termination
  7981. --------s-94----SI0000-----------------------
  7982. INT 94 u - PCM driver - INITIALIZE SOUND
  7983.     SI = 0000h
  7984.     ES:BX -> parameters
  7985. Return: ???
  7986. Program: PCM.COM is a sound driver for Media Vision's Pro Audio Spectrum
  7987.       sound boards
  7988. Note:    the installation check consists of testing for the signature string
  7989.       "PCMDRIVER" immediately preceding the interrupt handler; the word
  7990.       preceding the signature gives the PCM driver's version
  7991. SeeAlso: SI=0001h,SI=0002h,SI=0003h,SI=0004h,SI=0005h,SI=000Ah
  7992. Index:    installation check;PCM driver|PCM.COM;installation check
  7993. Index:    PCM driver;installation check
  7994. --------s-94----SI0001-----------------------
  7995. INT 94 u - PCM driver - INITIALIZE PCM
  7996.     SI = 0001h
  7997.     ES:BX -> parameters
  7998. Return: ???
  7999. SeeAlso: SI=0000h,SI=0002h,SI=0003h,SI=000Ah
  8000. --------s-94----SI0002-----------------------
  8001. INT 94 u - PCM driver - INITIALIZE PCM INFO
  8002.     SI = 0002h
  8003.     ES:BX -> parameters (see below)
  8004. Return: ???
  8005. SeeAlso: SI=0000h,SI=0001h,SI=0003h,SI=000Ah
  8006.  
  8007. Format of parameters:
  8008. Offset    Size    Description
  8009.  00h    DWORD    rate
  8010.  04h    WORD    channel number
  8011.  06h    WORD    "comp"
  8012.  08h    WORD    "dsize"
  8013. --------s-94----SI0003-----------------------
  8014. INT 94 u - PCM driver - INITIALIZE DMA BUFFER
  8015.     SI = 0003h
  8016.     ES:BX -> parameters (see below)
  8017. Return: ???
  8018. SeeAlso: SI=0000h,SI=000Ah,SI=000Bh
  8019.  
  8020. Format of parameters:
  8021. Offset    Size    Description
  8022.  00h    DWORD    -> DMA buffer
  8023.  04h    WORD    size of DMA buffer
  8024.  06h    WORD    number of divisions
  8025. --------s-94----SI0004-----------------------
  8026. INT 94 u - PCM driver - INITIALIZE USER FUNCTION
  8027.     SI = 0004h
  8028.     ES:BX -> parameters (see below)
  8029. Return: ???
  8030. SeeAlso: SI=0000h,SI=0001h
  8031.  
  8032. Format of parameters:
  8033. Offset    Size    Description
  8034.  00h    DWORD    -> user function
  8035. --------s-94----SI0005-----------------------
  8036. INT 94 u - PCM driver - BEGIN AUDIO PLAY
  8037.     SI = 0005h
  8038. Return: ???
  8039. SeeAlso: SI=0000h,SI=0006h,SI=0007h,SI=0009h
  8040. --------s-94----SI0006-----------------------
  8041. INT 94 u - PCM driver - BEGIN AUDIO RECORD
  8042.     SI = 0006h
  8043. Return: ???
  8044. SeeAlso: SI=0005h,SI=0007h,SI=0009h
  8045. --------s-94----SI0007-----------------------
  8046. INT 94 u - PCM driver - PAUSE AUDIO PLAY/RECORD
  8047.     SI = 0007h
  8048. Return: ???
  8049. SeeAlso: SI=0005h,SI=0006h,SI=0008h
  8050. --------s-94----SI0008-----------------------
  8051. INT 94 u - PCM driver - RESUME AUDIO PLAY/RECORD
  8052.     SI = 0008h
  8053. Return: ???
  8054. SeeAlso: SI=0007h
  8055. --------s-94----SI0009-----------------------
  8056. INT 94 u - PCM driver - STOP AUDIO PLAY/RECORD
  8057.     SI = 0009h
  8058. Return: ???
  8059. SeeAlso: SI=0005h,SI=0006h,SI=0007h
  8060. --------s-94----SI000A-----------------------
  8061. INT 94 u - PCM driver - UNHOOK INTERRUPTS AND TURN OFF DMA
  8062.     SI = 000Ah
  8063. Return: ???
  8064. SeeAlso: SI=0000h,SI=0001h,SI=0003h
  8065. --------s-94----SI000B-----------------------
  8066. INT 94 u - PCM driver - FIND VALID DMA BUFFER IN HUGE MEMORY BLOCK
  8067.     SI = 000Bh
  8068.     ES:BX -> parameters (see below)
  8069. Return: ???
  8070. SeeAlso: SI=0003h
  8071.  
  8072. Format of parameters:
  8073. Offset    Size    Description
  8074.  00h    DWORD    -> memory block to contain DMA buffer
  8075.  04h    WORD    desired size of DMA buffer
  8076. --------s-94----SI000D-----------------------
  8077. INT 94 u - Media Vision PCM.COM - GET STATUS
  8078.     SI = 000Dh
  8079. Return: AX = status (0000h = waiting) (see below)
  8080.  
  8081. Bitfields for status:
  8082.  bit 0    playing
  8083.  bit 1    recording
  8084.  bit 2    SBplaying
  8085.  bit 3    SBrecording
  8086.  bit 14    SBpaused
  8087.  bit 15    paused
  8088. --------s-94----SI8000-----------------------
  8089. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER ADDRESS
  8090.     SI = 8000h
  8091. Return: DX:AX -> DMA buffer
  8092. Program: PCM.COM is a superset of the standard PCM driver which provides
  8093.       additional functions for fine control of the driver
  8094. Note:    the installation check for the Media Vision PCM.COM "shark" functions
  8095.       consists of testing for the signature "PCM-SHARK" at offset 107h in
  8096.       the INT 94 handler's segment
  8097. SeeAlso: SI=8001h,SI=8004h
  8098. Index:    installation check;Media Vision PCM.COM|PCM.COM;installation check
  8099. Index:    Media Vision PCM.COM;"shark" functions
  8100. --------s-94----SI8001-----------------------
  8101. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER SIZE AND DIVISIONS
  8102.     SI = 8001h
  8103. Return: AX = DMA buffer size
  8104.     DX = divisions
  8105. SeeAlso: SI=8000h
  8106. --------s-94----SI8002-----------------------
  8107. INT 94 u - Media Vision PCM.COM - CHECK BOARD ADDRESS
  8108.     SI = 8002h
  8109. Return: AX = status
  8110.         0000h if board not at specified I/O address
  8111.         other if board found
  8112. Note:    the I/O address is specified by ORing the base I/O port shifted left
  8113.       four bits into SI before calling INT 94
  8114. SeeAlso: SI=8000h
  8115. --------s-94----SI8004-----------------------
  8116. INT 94 u - Media Vision PCM.COM - GET INTERNAL NOTE BUFFER
  8117.     SI = 8004h
  8118. Return: AX = offset of note buffer (segment = segment of internal DMA buffer)
  8119.     DX = size of buffer in note structures
  8120. SeeAlso: SI=8000h
  8121. --------s-94----SI8005-----------------------
  8122. INT 94 u - Media Vision PCM.COM - SINGLE-STEP QUEUE
  8123.     SI = 8005h
  8124. Return: ???
  8125. --------s-94----SI8011-----------------------
  8126. INT 94 u - Media Vision PCM.COM - INITIALIZE
  8127.     SI = 8011h
  8128.     ES:BX -> "iobf91" structure
  8129. Return: ???
  8130. --------s-94----SI8012-----------------------
  8131. INT 94 u - Media Vision PCM.COM - LOAD SOUND FOR LATER PLAY THROUGH KEYBOARD
  8132.     SI = 8012h
  8133.     ES:BX -> "i94f92buf" structure
  8134. Return: ???
  8135. SeeAlso: SI=8013h,SI=8014h
  8136. --------s-94----SI8013-----------------------
  8137. INT 94 u - Media Vision PCM.COM - GET INTERNAL SOUND USAGE
  8138.     SI = 8013h
  8139. Return: AX = number of sounds used
  8140.     DX = maximum handles
  8141. --------s-94----SI8014-----------------------
  8142. INT 94 u - Media Vision PCM.COM - GET DATA FOR SPECIFIED SOUND
  8143.     SI = 8014h
  8144.     ES:BX -> "i94f92buf" structure to be filled in
  8145.         sound number field set to desired sound
  8146. Return: AX = status
  8147.         0000h successful
  8148.         FFFFh sound number out of range
  8149. SeeAlso: SI=8012h,SI=8013h
  8150. --------s-94----SI8015-----------------------
  8151. INT 94 u - Media Vision PCM.COM - GET/SET INTERNAL DMA BUFFER
  8152.     SI = 8015h
  8153.     ES:BX -> DMA info structure (see below)
  8154. Return: ???
  8155.  
  8156. Format of DMA info structure:
  8157. Offset    Size    Description
  8158.  00h    DWORD    -> DMA buffer (offset FFFFh = return current buffer info)
  8159.  04h    WORD    DMA buffer size
  8160.  06h    WORD    divisions
  8161. --------s-94----SI8016-----------------------
  8162. INT 94 u - Media Vision PCM.COM - SIMULATE DOUBLE-SHIFT HOTKEY
  8163.     SI = 8016h
  8164.     AX = hotkey number (01h-08h)
  8165. Return: ???
  8166. SeeAlso: AL=02h/SI=8017h
  8167. --------s-94--01SI8017-----------------------
  8168. INT 94 u - Media Vision PCM.COM - CTRL-G INTERCEPT
  8169.     AL = 01h
  8170.     SI = 8017h
  8171.     AH = new state (00h off, 01h on)
  8172. Return: ???
  8173. SeeAlso: AL=02h/SI=8017h
  8174. --------s-94--02SI8017-----------------------
  8175. INT 94 u - Media Vision PCM.COM - DOUBLE-SHIFT-HOTKEY SOUND FEATURE
  8176.     AL = 02h
  8177.     SI = 8017h
  8178.     AH = new state (00h off, 01h on)
  8179. Return: ???
  8180. --------s-94--04SI8017-----------------------
  8181. INT 94 u - Media Vision PCM.COM - RANDOM SOUND FEATURE
  8182.     AL = 04h
  8183.     SI = 8017h
  8184.     AH = new state
  8185.         00h off
  8186.         01h on
  8187.             CX = minimum delay
  8188.         DX = maximum delay
  8189. Return: ???
  8190. --------s-94--08SI8017-----------------------
  8191. INT 94 u - Media Vision PCM.COM - NO ACTIVITY FEATURE
  8192.     AL = 08h
  8193.     SI = 8017h
  8194.     AH = new state
  8195.         00h off
  8196.         01h on
  8197.             DX:CX = delay
  8198. Return: ???
  8199. SeeAlso: AL=10h/SI=8017h
  8200. --------s-94--10SI8017-----------------------
  8201. INT 94 u - Media Vision PCM.COM - TIMER CONTROL
  8202.     AL = 10h
  8203.     SI = 8017h
  8204.     AH bit 7: set timer
  8205.     AH bit 6: timer active (timer turned off if clear)
  8206.     AH bits 5-0: timer number
  8207.     DX:CX = delay if AH bit 7 set (one-shot if DX bit 15 set)
  8208. Return: ???
  8209. SeeAlso: AL=08h/SI=8017h
  8210. --------s-94----SI8018-----------------------
  8211. INT 94 u - Media Vision PCM.COM - GET INFO
  8212.     SI = 8018h
  8213.     AL = what to get
  8214.         00h "F92state"
  8215.         01h "F92bkgd"
  8216.         02h "I10timer"
  8217.         03h "I08state"
  8218. Return: DX:AX -> desired information
  8219. --------r-95---------------------------------
  8220. INT 95 - IBM ROM BASIC - used while in interpreter
  8221. Notes:    called by ROM BASIC
  8222.     BASIC.COM/BASICA.COM do not restore vector on termination
  8223. --------r-95---------------------------------
  8224. INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
  8225. Note:    use only when the R= option is invoked on entering APL
  8226. --------r-96---------------------------------
  8227. INT 96 - IBM ROM BASIC - used while in interpreter
  8228. Notes:    called by ROM BASIC
  8229.     BASIC.COM/BASICA.COM do not restore vector on termination
  8230. --------r-97---------------------------------
  8231. INT 97 - IBM ROM BASIC - used while in interpreter
  8232. Notes:    called by ROM BASIC
  8233.     BASIC.COM/BASICA.COM do not restore vector on termination
  8234. --------r-98---------------------------------
  8235. INT 98 - IBM ROM BASIC - used while in interpreter
  8236. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8237.     BASIC.COM/BASICA.COM do not restore vector on termination
  8238. --------r-99---------------------------------
  8239. INT 99 - IBM ROM BASIC - used while in interpreter
  8240. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8241.     BASIC.COM/BASICA.COM do not restore vector on termination
  8242. --------r-9A---------------------------------
  8243. INT 9A - IBM ROM BASIC - used while in interpreter
  8244. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8245.     BASIC.COM/BASICA.COM do not restore vector on termination
  8246. --------r-9B---------------------------------
  8247. INT 9B - IBM ROM BASIC - used while in interpreter
  8248. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8249.     BASIC.COM/BASICA.COM do not restore vector on termination
  8250. --------r-9C---------------------------------
  8251. INT 9C - IBM ROM BASIC - used while in interpreter
  8252. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8253.     BASIC.COM/BASICA.COM do not restore vector on termination
  8254. --------v-9C---------------------------------
  8255. INT 9C - VIRUS - "INT13" - ORIGINAL INT 13h VECTOR
  8256. SeeAlso: INT 8B"VIRUS",INT 9D"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  8257. --------r-9D---------------------------------
  8258. INT 9D - IBM ROM BASIC - used while in interpreter
  8259. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8260.     BASIC.COM/BASICA.COM do not restore vector on termination
  8261. --------v-9D---------------------------------
  8262. INT 9D - VIRUS - "INT13" - ROM INT 13h ENTRY POINT
  8263. Note:    this vector is used by the virus to store the result of a call to
  8264.       INT 2F/AH=13h
  8265. SeeAlso: INT 2F/AH=13h,INT 9C"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  8266. --------r-9E---------------------------------
  8267. INT 9E - IBM ROM BASIC - used while in interpreter
  8268. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8269.     BASIC.COM/BASICA.COM do not restore vector on termination
  8270. --------v-9E---------------------------------
  8271. INT 9E - VIRUS - "INT13" - ORIGINAL INT 21h VECTOR
  8272. SeeAlso: INT 70"VIRUS",INT 9C"VIRUS",INT 9D"VIRUS",INT E0"VIRUS"
  8273. --------r-9F---------------------------------
  8274. INT 9F - IBM ROM BASIC - used while in interpreter
  8275. Notes:    called by ROM BASIC
  8276.     BASIC.COM/BASICA.COM do not restore vector on termination
  8277. --------v-9F---------------------------------
  8278. INT 9F - VIRUS - "INT13" - STORAGE FOR USER INT 13h VECTOR
  8279. Note:    while it is infecting a file, the INT13 virus grabs INT 13 and uses
  8280.       this interrupt to store the existing INT 13 vector for later
  8281.       restoration
  8282. SeeAlso: INT 9C"VIRUS",INT 9D"VIRUS"
  8283. --------r-A0---------------------------------
  8284. INT A0 - IBM ROM BASIC - used while in interpreter
  8285. Notes:    called by ROM BASIC
  8286.     BASIC.COM/BASICA.COM do not restore vector on termination
  8287. --------r-A0---------------------------------
  8288. INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
  8289. SeeAlso: INT 59
  8290. --------r-A1---------------------------------
  8291. INT A1 - IBM ROM BASIC - used while in interpreter
  8292. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8293.     BASIC.COM/BASICA.COM do not restore vector on termination
  8294. --------r-A2---------------------------------
  8295. INT A2 - IBM ROM BASIC - used while in interpreter
  8296. Notes:    called by ROM BASIC
  8297.     BASIC.COM/BASICA.COM do not restore vector on termination
  8298. --------r-A3---------------------------------
  8299. INT A3 - IBM ROM BASIC - used while in interpreter
  8300. Notes:    called by ROM BASIC
  8301.     BASIC.COM/BASICA.COM do not restore vector on termination
  8302. --------r-A4---------------------------------
  8303. INT A4 - IBM ROM BASIC - used while in interpreter
  8304. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8305.     BASIC.COM/BASICA.COM do not restore vector on termination
  8306. --------U-A4---------------------------------
  8307. INT A4 U - Right Hand Man - API
  8308.     AH = function number (v3.3 supports functions 00h-52h)
  8309. Return: CF set on error
  8310.     CF clear if successful
  8311. Program: Right Hand Man is a TSR desk-top utility originally by Red E Products
  8312.       which has evolved into Futurus Team
  8313. Note:    this interrupt is only hooked while popped up
  8314. SeeAlso: INT 2F/AX=A4E0h
  8315. --------r-A5---------------------------------
  8316. INT A5 - IBM ROM BASIC - used while in interpreter
  8317. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8318.     BASIC.COM/BASICA.COM do not restore vector on termination
  8319. --------r-A6---------------------------------
  8320. INT A6 - IBM ROM BASIC - used while in interpreter
  8321. Notes:    called by ROM BASIC
  8322.     BASIC.COM/BASICA.COM do not restore vector on termination
  8323. --------r-A7---------------------------------
  8324. INT A7 - IBM ROM BASIC - used while in interpreter
  8325. Notes:    called by ROM BASIC
  8326.     BASIC.COM/BASICA.COM do not restore vector on termination
  8327. --------r-A8---------------------------------
  8328. INT A8 - IBM ROM BASIC - used while in interpreter
  8329. Notes:    called by ROM BASIC
  8330.     BASIC.COM/BASICA.COM do not restore vector on termination
  8331. --------r-A9---------------------------------
  8332. INT A9 - IBM ROM BASIC - used while in interpreter
  8333. Notes:    called by ROM BASIC
  8334.     BASIC.COM/BASICA.COM do not restore vector on termination
  8335. --------r-AA---------------------------------
  8336. INT AA - IBM ROM BASIC - used while in interpreter
  8337. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8338.     BASIC.COM/BASICA.COM do not restore vector on termination
  8339. --------r-AB---------------------------------
  8340. INT AB - IBM ROM BASIC - used while in interpreter
  8341. Notes:    called by ROM BASIC
  8342.     BASIC.COM/BASICA.COM do not restore vector on termination
  8343. --------r-AC---------------------------------
  8344. INT AC - IBM ROM BASIC - used while in interpreter
  8345. Notes:    called by ROM BASIC
  8346.     BASIC.COM/BASICA.COM do not restore vector on termination
  8347. --------r-AD---------------------------------
  8348. INT AD - IBM ROM BASIC - used while in interpreter
  8349. Notes:    called by ROM BASIC
  8350.     BASIC.COM/BASICA.COM do not restore vector on termination
  8351. --------r-AE---------------------------------
  8352. INT AE - IBM ROM BASIC - used while in interpreter
  8353. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8354.     BASIC.COM/BASICA.COM do not restore vector on termination
  8355. --------r-AF---------------------------------
  8356. INT AF - IBM ROM BASIC - used while in interpreter
  8357. Notes:    called by ROM BASIC
  8358.     BASIC.COM/BASICA.COM do not restore vector on termination
  8359. --------r-B0---------------------------------
  8360. INT B0 - IBM ROM BASIC - used while in interpreter
  8361. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8362.     BASIC.COM/BASICA.COM do not restore vector on termination
  8363. --------r-B1---------------------------------
  8364. INT B1 - IBM ROM BASIC - used while in interpreter
  8365. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8366.     BASIC.COM/BASICA.COM do not restore vector on termination
  8367. --------r-B2---------------------------------
  8368. INT B2 - IBM ROM BASIC - used while in interpreter
  8369. Notes:    called by ROM BASIC
  8370.     BASIC.COM/BASICA.COM do not restore vector on termination
  8371. --------r-B3---------------------------------
  8372. INT B3 - IBM ROM BASIC - used while in interpreter
  8373. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8374.     BASIC.COM/BASICA.COM do not restore vector on termination
  8375. --------U-B370-------------------------------
  8376. INT B3 - ZIPKEY - GET VERSION
  8377.     AH = 70h
  8378. Return: AH = major version
  8379.     AL = minor version
  8380.     CL = number of states and territories in current database
  8381.     DH = year of current database - 1900
  8382.     DL = month of current database's file date
  8383. Return: AX destroyed
  8384. Program: ZIPKEY is a resident ZIPCODE database by Eric Isaacson
  8385. Note:    if installed, the string "ZIPKEY" is present at offset 75h in the
  8386.       interrupt handler's segment, and the byte at 7Bh contains the API
  8387.       version number (00h for v1.x, 01h for v2.0)
  8388. --------U-B371-------------------------------
  8389. INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
  8390.     AH = 71h
  8391.     BX = abbreviation, in either case (first letter in BL)
  8392. Return: CF set on error
  8393.         AL = FFh
  8394.     CF clear if successful
  8395.         AL = ZIPKEY state code
  8396. SeeAlso: AH=72h
  8397. --------U-B372-------------------------------
  8398. INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
  8399.     AH = 72h
  8400.     BL = ZIPKEY state code
  8401. Return: CF set on error
  8402.         AX destroyed
  8403.     CF clear if successful
  8404.         AX = abbreviation, in upper case
  8405. SeeAlso: AH=71h,AH=73h
  8406. --------U-B373-------------------------------
  8407. INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
  8408.     AH = 73h
  8409.     BL = ZIPKEY state code
  8410.     ES:DI -> buffer for name
  8411. Return: CF set on error
  8412.         AX destroyed
  8413.     CF clear if successful
  8414.         ES:DI points one byte beyond end of name
  8415. SeeAlso: AH=72h
  8416. --------U-B374-------------------------------
  8417. INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
  8418.     AH = 74h
  8419.     DX = zipcode region (0-999)
  8420.     CH = last two digits of zipcode (0-99)
  8421.     ES:DI -> buffer
  8422. Return: CF set on error
  8423.         AX destroyed
  8424.     CF clear if successful
  8425.         ES:DI points one byte beyond end of digit string
  8426. --------U-B375-------------------------------
  8427. INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
  8428.     AH = 75h
  8429.     DX = zipcode region (0-999)
  8430.     CH = last two digits of zipcode (0-99)
  8431. Return: CF set on error (zipcode not found)
  8432.         AL = suggested state code, FFh if none
  8433.     CF clear if successful
  8434.         AL = ZIPKEY state code
  8435.         BX = area code (v2.0+)
  8436. SeeAlso: AH=76h,AH=79h
  8437. --------U-B376-------------------------------
  8438. INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
  8439.     AH = 76h
  8440.     DX = zipcode region (0-999)
  8441.     CH = last two digits of zipcode (0-99)
  8442.     ES:DI -> buffer for name
  8443. Return: CF set on error
  8444.         AL = suggested state code, FFh if none
  8445.         ES:DI buffer filled with suggested city name
  8446.     CF clear if successful
  8447.         AL = ZIPKEY state code
  8448.         BX = area code (v2.0+)
  8449.         ES:DI points one byte beyond end of name
  8450. SeeAlso: AH=75h,AH=78h,AH=7Eh
  8451. --------U-B377-------------------------------
  8452. INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
  8453.     AH = 77h
  8454.     DX = zipcode region (0-999)
  8455.     CH = last two digits of zipcode (0-99)
  8456.     BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
  8457. Return: CF set on error
  8458.         AX destroyed
  8459.     CF clear if successful    
  8460.         zipcode specification as defined by the BX keystroke is placed in
  8461.           keyboard buffer, as if the user had popped up ZIPKEY and exited
  8462.           by pressing the key specified by BX
  8463. --------U-B378-------------------------------
  8464. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
  8465.     AH = 78h
  8466.     BL = ZIPKEY state code
  8467.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  8468. Return: BH = number of matching entries (set to 51 if more than 50)
  8469.     DX = zipcode region of first match (0-999)
  8470.     CL = last two digits of first zipcode in the range (0-99)
  8471.     CH = last two digits of last zipcode in the range (0-99)
  8472.     AX destroyed
  8473. SeeAlso: AH=79h,AH=7Ah
  8474. --------U-B379-------------------------------
  8475. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
  8476.     AH = 79h
  8477.     BL = ZIPKEY state code of first state to search
  8478.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  8479. Return:    AL = ZIPKEY state code of first matching state
  8480.     BH = number of matching entries (set to 51 if more than 50)
  8481.     DX = zipcode region of first match (0-999)
  8482.     CL = last two digits of first zipcode in first range (0-99)
  8483.     CH = last two digits of last zipcode in first range (0-99)
  8484. Note:    to find all matching cities, repeat search with BL set to one more than
  8485.       the returned AL
  8486. SeeAlso: AH=78h,AH=7Ah
  8487. --------U-B37A-------------------------------
  8488. INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
  8489.     AH = 7Ah
  8490.     BL = case number (0 to one less than value returned in BH by lookup)
  8491. Return: AL = ZIPKEY state code
  8492.     DX = zipcode region (0-999)
  8493.     CL = last two digits of first zipcode in the range (0-99)
  8494.     CH = last two digits of last zipcode in the range (0-99)
  8495. SeeAlso: AH=78h,AH=79h
  8496. --------U-B37B-------------------------------
  8497. INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
  8498.     AH = 7Bh
  8499. Return: BL = maximum number of characters for a city name
  8500.     BH = ZIPKEY state code for last city-name search
  8501.         FFh if none
  8502.     CX:DX = internal code identifying last city search
  8503.     AX destroyed
  8504. SeeAlso: AH=7Ch
  8505. --------U-B37C-------------------------------
  8506. INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
  8507.     AH = 7Ch
  8508.     BL = maximum number of characters for a city name
  8509.     BH = ZIPKEY state code for last city-name search
  8510.         FFh if none
  8511.     CX:DX = internal code returned by AH=7Bh
  8512. Return: CF set on error
  8513.     CF clear if successful
  8514.     AX destroyed
  8515. SeeAlso: AH=7Bh
  8516. --------U-B37D-------------------------------
  8517. INT B3 - ZIPKEY - REQUEST POP UP
  8518.     AH = 7Dh
  8519.     BL = index number to simulate pressing a hotkey
  8520.         FFh for immediate popup with no playback on return
  8521. Return: CF set on error
  8522.         AL = FDh already busy with another request
  8523.            = FEh illegal function
  8524.     CF clear if successful
  8525.         AX destroyed
  8526.         window popped up and was closed by the user
  8527. SeeAlso: AH=70h
  8528. --------U-B37E-------------------------------
  8529. INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
  8530.     AH = 7Eh
  8531.     DX = zipcode region (0-999)
  8532.     ES:DI -> buffer for name
  8533. Return: CF set on error
  8534.         AL = FFh region does not exist
  8535.     CF clear if successful
  8536.         AL = ZIPKEY state code
  8537.         ES:DI points one byte beyond end of name
  8538. SeeAlso: AH=76h
  8539. --------U-B37F-------------------------------
  8540. INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
  8541.     AH = 7Fh
  8542.     BL = function
  8543.         00h turn off hotkeys
  8544.         01h turn on hotkeys
  8545.         02h return hotkey status
  8546.         03h toggle hotkey status
  8547. Return: AL = hotkey status
  8548.         00h off
  8549.         01h on
  8550. --------U-B380-------------------------------
  8551. INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE
  8552.     AH = 80h
  8553.     BX = telephone area code (decimal)
  8554. Return: CF clear if successful
  8555.         AL = ZIPKEY state code
  8556.         DX = first ZIP region for state (03E8h if Canada)
  8557.         CX = number of ZIP regions in state
  8558.     CF set on error
  8559.         AL = FFh
  8560.         DX = 03E9h
  8561. --------r-B4---------------------------------
  8562. INT B4 - IBM ROM BASIC - used while in interpreter
  8563. Notes:    called by ROM BASIC
  8564.     BASIC.COM/BASICA.COM do not restore vector on termination
  8565. ----------B4---------------------------------
  8566. INT B4 - StackMan - REQUEST NEW STACK
  8567. Return: SS:SP -> new stack
  8568. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  8569.       which functions as a replacement for the DOS STACK= command as well
  8570.       as permitting multiple TSRs to share a pool of stack space
  8571. Note:    the installation check consists of testing for the string "STACKXXX" at
  8572.       offset 0Ah from the interrupt handler
  8573. SeeAlso: INT 2F/AX=C9FFh,INT B5"STACKMAN"
  8574. Index:    installation check;STACKMAN
  8575. --------r-B5---------------------------------
  8576. INT B5 - IBM ROM BASIC - used while in interpreter
  8577. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8578.     BASIC.COM/BASICA.COM do not restore vector on termination
  8579. ----------B5---------------------------------
  8580. INT B5 - StackMan - RESTORE ORIGINAL STACK
  8581.     SS:SP -> stack returned by INT B4
  8582. Return: SS:SP restored to value before INT B4
  8583. SeeAlso: INT 2F/AX=C9FFh,INT B4"StackMan"
  8584. --------r-B6---------------------------------
  8585. INT B6 - IBM ROM BASIC - used while in interpreter
  8586. Notes:    called by ROM BASIC
  8587.     BASIC.COM/BASICA.COM do not restore vector on termination
  8588. --------r-B7---------------------------------
  8589. INT B7 - IBM ROM BASIC - used while in interpreter
  8590. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8591.     BASIC.COM/BASICA.COM do not restore vector on termination
  8592. --------r-B8---------------------------------
  8593. INT B8 - IBM ROM BASIC - used while in interpreter
  8594. Notes:    called by ROM BASIC
  8595.     BASIC.COM/BASICA.COM do not restore vector on termination
  8596. --------r-B9---------------------------------
  8597. INT B9 - IBM ROM BASIC - used while in interpreter
  8598. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8599.     BASIC.COM/BASICA.COM do not restore vector on termination
  8600. --------r-BA---------------------------------
  8601. INT BA - IBM ROM BASIC - used while in interpreter
  8602. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8603.     BASIC.COM/BASICA.COM do not restore vector on termination
  8604. --------r-BB---------------------------------
  8605. INT BB - IBM ROM BASIC - used while in interpreter
  8606. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8607.     BASIC.COM/BASICA.COM do not restore vector on termination
  8608. --------r-BC---------------------------------
  8609. INT BC - IBM ROM BASIC - used while in interpreter
  8610. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8611.     BASIC.COM/BASICA.COM do not restore vector on termination
  8612. --------r-BD---------------------------------
  8613. INT BD - IBM ROM BASIC - used while in interpreter
  8614. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8615.     BASIC.COM/BASICA.COM do not restore vector on termination
  8616. --------r-BE---------------------------------
  8617. INT BE - IBM ROM BASIC - used while in interpreter
  8618. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8619.     BASIC.COM/BASICA.COM do not restore vector on termination
  8620. --------Q-BE---------------------------------
  8621. INT BE - DESQview/X - ???
  8622. Note:    points at an IRET
  8623. SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63"DESQview"
  8624. --------r-BF---------------------------------
  8625. INT BF - IBM ROM BASIC - used while in interpreter
  8626. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8627.     BASIC.COM/BASICA.COM do not restore vector on termination
  8628. --------r-C0---------------------------------
  8629. INT C0 - IBM ROM BASIC - used while in interpreter
  8630. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8631.     BASIC.COM/BASICA.COM do not restore vector on termination
  8632. --------r-C1---------------------------------
  8633. INT C1 - IBM ROM BASIC - used while in interpreter
  8634. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8635.     BASIC.COM/BASICA.COM do not restore vector on termination
  8636. --------r-C2---------------------------------
  8637. INT C2 - IBM ROM BASIC - used while in interpreter
  8638. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8639.     BASIC.COM/BASICA.COM do not restore vector on termination
  8640. --------r-C3---------------------------------
  8641. INT C3 - IBM ROM BASIC - used while in interpreter
  8642. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8643.     BASIC.COM/BASICA.COM do not restore vector on termination
  8644. --------r-C4---------------------------------
  8645. INT C4 - IBM ROM BASIC - used while in interpreter
  8646. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8647.     BASIC.COM/BASICA.COM do not restore vector on termination
  8648. --------r-C5---------------------------------
  8649. INT C5 - IBM ROM BASIC - used while in interpreter
  8650. Notes:    called by ROM BASIC
  8651.     BASIC.COM/BASICA.COM do not restore vector on termination
  8652. --------r-C6---------------------------------
  8653. INT C6 - IBM ROM BASIC - used while in interpreter
  8654. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8655.     BASIC.COM/BASICA.COM do not restore vector on termination
  8656. --------r-C6---------------------------------
  8657. INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
  8658. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8659.       the older interrupts
  8660. SeeAlso: INT 86"APL"
  8661. --------r-C7---------------------------------
  8662. INT C7 - IBM ROM BASIC - used while in interpreter
  8663. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8664.     BASIC.COM/BASICA.COM do not restore vector on termination
  8665. --------r-C7---------------------------------
  8666. INT C7 - APL*PLUS/PC - ???
  8667. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8668.       the older interrupts
  8669. SeeAlso: INT 87"APL"
  8670. --------r-C8---------------------------------
  8671. INT C8 - IBM ROM BASIC - used while in interpreter
  8672. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8673.     BASIC.COM/BASICA.COM do not restore vector on termination
  8674. --------r-C8---------------------------------
  8675. INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
  8676. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8677.       the older interrupts
  8678. SeeAlso: INT 88"APL"
  8679. --------r-C9---------------------------------
  8680. INT C9 - IBM ROM BASIC - used while in interpreter
  8681. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8682.     BASIC.COM/BASICA.COM do not restore vector on termination
  8683. --------r-C9---------------------------------
  8684. INT C9 - APL*PLUS/PC - ???
  8685. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8686.       the older interrupts
  8687. SeeAlso: INT 89"APL"
  8688. --------r-CA---------------------------------
  8689. INT CA - IBM ROM BASIC - used while in interpreter
  8690. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8691.     BASIC.COM/BASICA.COM do not restore vector on termination
  8692. --------r-CA---------------------------------
  8693. INT CA - APL*PLUS/PC - PRINT SCREEN
  8694. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8695.       the older interrupts
  8696. SeeAlso: INT 8A"APL"
  8697. --------r-CB---------------------------------
  8698. INT CB - IBM ROM BASIC - used while in interpreter
  8699. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8700.     BASIC.COM/BASICA.COM do not restore vector on termination
  8701. --------r-CB---------------------------------
  8702. INT CB - APL*PLUS/PC - BEEP
  8703. Notes:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8704.       the older interrupts
  8705.     same as printing a ^G via INT 21/AH=02h
  8706. SeeAlso: INT 8B"APL"
  8707. --------r-CC---------------------------------
  8708. INT CC - IBM ROM BASIC - used while in interpreter
  8709. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8710.     BASIC.COM/BASICA.COM do not restore vector on termination
  8711. --------r-CC---------------------------------
  8712. INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
  8713.     AX = flag
  8714.         0000h do not save display attributes
  8715.         0001h save attributes
  8716. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8717.       the older interrupts
  8718. SeeAlso: INT 8C"APL"
  8719. --------r-CD---------------------------------
  8720. INT CD - IBM ROM BASIC - used while in interpreter
  8721. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8722.     BASIC.COM/BASICA.COM do not restore vector on termination
  8723. --------r-CD---------------------------------
  8724. INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8725. --------r-CE---------------------------------
  8726. INT CE - IBM ROM BASIC - used while in interpreter
  8727. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8728.     BASIC.COM/BASICA.COM do not restore vector on termination
  8729. --------r-CE---------------------------------
  8730. INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8731. --------r-CF---------------------------------
  8732. INT CF - IBM ROM BASIC - used while in interpreter
  8733. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8734.     BASIC.COM/BASICA.COM do not restore vector on termination
  8735. --------r-CF---------------------------------
  8736. INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
  8737. SeeAlso: INT E0"APL"
  8738. --------r-D0---------------------------------
  8739. INT D0 - IBM ROM BASIC - used while in interpreter
  8740. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8741.     BASIC.COM/BASICA.COM do not restore vector on termination
  8742. --------r-D0---------------------------------
  8743. INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8744. --------U-D0---------------------------------
  8745. INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR
  8746. Program: NJFRERAM is a resident free-memory display utility by Mike "Nifty
  8747.       James" Blaszczak
  8748. Note:    if NJFRERAM is installed, this vector points at the signature "NJ"
  8749. Index:    installation check;NJFRERAM
  8750. --------r-D1---------------------------------
  8751. INT D1 - IBM ROM BASIC - used while in interpreter
  8752. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8753.     BASIC.COM/BASICA.COM do not restore vector on termination
  8754. --------r-D1---------------------------------
  8755. INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8756. --------r-D2---------------------------------
  8757. INT D2 - IBM ROM BASIC - used while in interpreter
  8758. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8759.     BASIC.COM/BASICA.COM do not restore vector on termination
  8760. --------r-D2---------------------------------
  8761. INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8762. --------r-D3---------------------------------
  8763. INT D3 - IBM ROM BASIC - used while in interpreter
  8764. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8765.     BASIC.COM/BASICA.COM do not restore vector on termination
  8766. --------r-D3---------------------------------
  8767. INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8768. --------r-D4---------------------------------
  8769. INT D4 - IBM ROM BASIC - used while in interpreter
  8770. Notes:    called by ROM BASIC
  8771.     BASIC.COM/BASICA.COM do not restore vector on termination
  8772. --------r-D4---------------------------------
  8773. INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8774. --------O-D4---------------------------------
  8775. INT D4 - PC-MOS/386 - API
  8776. --------r-D5---------------------------------
  8777. INT D5 - IBM ROM BASIC - used while in interpreter
  8778. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8779.     BASIC.COM/BASICA.COM do not restore vector on termination
  8780. --------r-D5---------------------------------
  8781. INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8782. --------r-D6---------------------------------
  8783. INT D6 - IBM ROM BASIC - used while in interpreter
  8784. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8785.     BASIC.COM/BASICA.COM do not restore vector on termination
  8786. --------r-D6---------------------------------
  8787. INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8788. --------r-D7---------------------------------
  8789. INT D7 - IBM ROM BASIC - used while in interpreter
  8790. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8791.     BASIC.COM/BASICA.COM do not restore vector on termination
  8792. --------r-D7---------------------------------
  8793. INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8794. --------r-D8---------------------------------
  8795. INT D8 - IBM ROM BASIC - used while in interpreter
  8796. Notes:    called by ROM BASIC
  8797.     BASIC.COM/BASICA.COM do not restore vector on termination
  8798. --------r-D8---------------------------------
  8799. INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8800. --------H-D8---------------------------------
  8801. INT D8 - Screen Thief v1.00 - RELOCATED IRQ0
  8802. Note:    Screen Thief relocates IRQs 0 through 7 to INT D8 to INT DF by default,
  8803.       but may be directed via a commandline switch to use any range
  8804.       starting at a multiple of 8 between 78h and E0h
  8805. SeeAlso: INT 08"IRQ0",INT 2D/AL=10h"Screen Thief",INT 50"DESQview"
  8806. SeeAlso: INT D9"Screen Thief"
  8807. --------r-D9---------------------------------
  8808. INT D9 - IBM ROM BASIC - used while in interpreter
  8809. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8810.     BASIC.COM/BASICA.COM do not restore vector on termination
  8811. --------r-D9---------------------------------
  8812. INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8813. --------H-D9---------------------------------
  8814. INT D9 - Screen Thief v1.00 - RELOCATED IRQ1
  8815. Note:    (see INT D8"Screen Thief")
  8816. SeeAlso: INT 09"IRQ1",INT D8"Screen Thief",INT DA"Screen Thief"
  8817. --------r-DA---------------------------------
  8818. INT DA - IBM ROM BASIC - used while in interpreter
  8819. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8820.     BASIC.COM/BASICA.COM do not restore vector on termination
  8821. --------r-DA---------------------------------
  8822. INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8823. --------H-DA---------------------------------
  8824. INT DA - Screen Thief v1.00 - RELOCATED IRQ2
  8825. Note:    (see INT D8"Screen Thief")
  8826. SeeAlso: INT 0A"IRQ2",INT D9"Screen Thief",INT DB"Screen Thief"
  8827. --------r-DB---------------------------------
  8828. INT DB - IBM ROM BASIC - used while in interpreter
  8829. Notes:    called by ROM BASIC
  8830.     BASIC.COM/BASICA.COM do not restore vector on termination
  8831. --------r-DB---------------------------------
  8832. INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8833. --------H-DB---------------------------------
  8834. INT DB - Screen Thief v1.00 - RELOCATED IRQ3
  8835. Note:    (see INT D8"Screen Thief")
  8836. SeeAlso: INT 0B"IRQ3",INT DA"Screen Thief",INT DC"Screen Thief"
  8837. --------u-DC---------------------------------
  8838. INT DC - PC/370 v4.1- - API
  8839. SeeAlso: INT 60"PC/370"
  8840. --------r-DC---------------------------------
  8841. INT DC - IBM ROM BASIC - used while in interpreter
  8842. Notes:    called by ROM BASIC
  8843.     BASIC.COM/BASICA.COM do not restore vector on termination
  8844. --------r-DC---------------------------------
  8845. INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  8846. --------H-DC---------------------------------
  8847. INT DC - Screen Thief v1.00 - RELOCATED IRQ4
  8848. Note:    (see INT D8"Screen Thief")
  8849. SeeAlso: INT 0C"IRQ4",INT DB"Screen Thief",INT DD"Screen Thief"
  8850. --------r-DD---------------------------------
  8851. INT DD - IBM ROM BASIC - used while in interpreter
  8852. Notes:    called by ROM BASIC
  8853.     BASIC.COM/BASICA.COM do not restore vector on termination
  8854. --------r-DD---------------------------------
  8855. INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER
  8856.     BX = where to place keystrokes
  8857.         FFFFh insert before current buffer contents
  8858.         0000h replace current contents
  8859.         0001h insert after current contents
  8860.     CX = number of keystroke events to insert
  8861.     ES:SI -> data to be placed into buffer (list of WORD key codes)
  8862.         4000h + N = normal ASCII keystroke N (N = 00h to FFh)
  8863.         4100h + N = extended ASCII keystroke N (N = 03h to 84h)
  8864. SeeAlso: INT 16/AH=05h
  8865. --------H-DD---------------------------------
  8866. INT DD - Screen Thief v1.00 - RELOCATED IRQ5
  8867. Note:    (see INT D8"Screen Thief")
  8868. SeeAlso: INT 0D"IRQ5",INT DC"Screen Thief",INT DE"Screen Thief"
  8869. --------r-DE---------------------------------
  8870. INT DE - IBM ROM BASIC - used while in interpreter
  8871. Notes:    called by ROM BASIC
  8872.     BASIC.COM/BASICA.COM do not restore vector on termination
  8873. --------r-DE---------------------------------
  8874. INT DE - APL*PLUS/PC - ???
  8875. Note:    appears to be the same as INT 16
  8876. --------H-DE---------------------------------
  8877. INT DE - Screen Thief v1.00 - RELOCATED IRQ6
  8878. Note:    (see INT D8"Screen Thief")
  8879. SeeAlso: INT 0E"IRQ6",INT DD"Screen Thief",INT DF"Screen Thief"
  8880. --------b-DF---------------------------------
  8881. INT DF - Victor 9000 - SuperBIOS
  8882. --------r-DF---------------------------------
  8883. INT DF - IBM ROM BASIC - used while in interpreter
  8884. Notes:    called by ROM BASIC
  8885.     BASIC.COM/BASICA.COM do not restore vector on termination
  8886. --------r-DF---------------------------------
  8887. INT DF - APL*PLUS/PC - SAME AS INT 10
  8888. SeeAlso: INT 10
  8889. --------H-DF---------------------------------
  8890. INT DF - Screen Thief v1.00 - RELOCATED IRQ7
  8891. Note:    (see INT D8"Screen Thief")
  8892. SeeAlso: INT 0F"IRQ7",INT DE"Screen Thief"
  8893. --------r-E0---------------------------------
  8894. INT E0 - IBM ROM BASIC - used while in interpreter
  8895. Notes:    called by ROM BASIC
  8896.     BASIC.COM/BASICA.COM do not restore vector on termination
  8897. --------r-E0---------------------------------
  8898. INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
  8899. SeeAlso: INT CF"APL"
  8900. --------v-E0---------------------------------
  8901. INT E0 - VIRUS - "Micro-128" - ???
  8902. Note:    Micro-128 also overwrites the upper half of the interrupt table
  8903. SeeAlso: INT 9E"VIRUS",INT F1"VIRUS"
  8904. --------O-E0---------------------------------
  8905. INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS
  8906.     CL = function number
  8907.     DS,DX = parameters
  8908. Return: as appropriate for function
  8909. Notes:    several functions are covered in more detail in following entries
  8910.     most of these calls are also supported by Digital Research's DOS Plus
  8911.       v2.1; the unsupported functions are 26h,29h-2Bh,3Ah,3Dh-62h,71h-8Ch,
  8912.       90h-92h,94h-97h,9Bh-ABh, and AEh-FFh
  8913. SeeAlso: INT 21/AX=4459h,INT 21/AH=E0h"DOS Plus"
  8914.  
  8915. Values for function number:
  8916.  00h    terminate calling process (see also INT 21/AH=00h)
  8917.  01h    read a character
  8918.  02h    write character to default console (see also INT 21/AH=02h)
  8919.  03h    read character from default AUX (see also INT 21/AH=03h)
  8920.  04h    write character to default AUX (see also INT 21/AH=04h)
  8921.  05h    write character to default list device (see also INT 21/AH=05h)
  8922.  06h    perform raw I/O on default console (see also INT 21/AH=06h)
  8923.  07h    return default AUX input status
  8924.  08h    return default AUX output status
  8925.  09h    write string to default console (see also INT 21/AH=09h)
  8926.  0Ah    read string from default console (see also INT 21/AH=0Ah)
  8927.  0Bh    return default console input status (see also INT 21/AH=0Bh)
  8928.  0Ch    get BDOS release ID
  8929.  0Dh    reset all disk drives (see also INT 21/AH=0Dh)
  8930.  0Eh    set default drive (see also INT 21/AH=0Eh)
  8931.  0Fh    open file via FCB (see also INT 21/AH=0Fh)
  8932.  10h    close file via FCB (see also INT 21/AH=10h)
  8933.  11h    search for first matching file with FCB (see also INT 21/AH=11h)
  8934.  12h    search for next matching file with FCB (see also INT 21/AH=12h)
  8935.  13h    delete file via FCB (see also INT 21/AH=13h)
  8936.  14h    sequential read via FCB (see also INT 21/AH=14h)
  8937.  15h    sequential write via FCB (see also INT 21/AH=15h)
  8938.  16h    create file via FCB (see also INT 21/AH=16h)
  8939.  17h    rename file via FCB (see also INT 21/AH=17h)
  8940.  18h    get bit map of logged drives
  8941.  19h    get default drive (see also INT 21/AH=19h)
  8942.  1Ah    set DMA address offset
  8943.  1Bh    get default disk allocation vector (see also INT 21/AH=1Bh)
  8944.  1Ch    set default drive to read-only
  8945.  1Dh    get bit map of read-only drives
  8946.  1Eh    set file attributes via FCB (see also INT 21/AX=4301h)
  8947.  1Fh    get address of disk parameter block (see also INT 21/AH=1Fh)
  8948.  20h    get/set default user number
  8949.  21h    read random record via FCB (see also INT 21/AH=21h)
  8950.  22h    write random record via FCB (see also INT 21/AH=22h)
  8951.  23h    compute file size with FCB (see also INT 21/AH=23h)
  8952.  24h    get FCB random record number (see also INT 21/AH=24h)
  8953.  25h    reset specified drives
  8954.  26h    access specified drives (not in DR DOS Plus v2.1)
  8955.  27h    free specified drives
  8956.  28h    write random with FCB, zero fill (see also also INT 21/AH=28h)
  8957.  2Ah    lock records in FCB file (see also INT 21/AH=5Ch)
  8958.  2Bh    unlock records in FCB file (see also INT 21/AH=5Ch)
  8959.  2Ch    set BDOS multisector count
  8960.  2Dh    set BDOS error mode
  8961.  2Eh    get free space on disk
  8962.  2Fh    load, initialize, and jump to process (see also INT 21/AH=4Bh)
  8963.  30h    flush write-deferred buffers
  8964.  31h    get/set system variable (DOS Plus v2.1)
  8965.  32h    call BIOS (XIOS) character routine (see below)
  8966.  33h    set DMA address segment
  8967.  34h    get DMA buffer address
  8968.  35h    CP/M-86 allocate maximum memory
  8969.  36h    allocate maximum memory at specified segment
  8970.  37h    CP/M-86 allocate memory segment (see also INT 21/AH=48h)
  8971.  38h    allocate memory at specified segment
  8972.  39h    CP/M-86 free specified memory segment (see also INT 21/AH=49h)
  8973.  3Ah    CP/M-86 free all memory (not in DOS Plus v2.1)
  8974.  3Bh    load .CMD file into memory
  8975.  3Ch    (DOS Plus v2.1) call RSX program
  8976.  40h    (DR-NET) log on a server
  8977.  41h    (DR-NET) log off a server
  8978.  42h    (DR-NET) send a message
  8979.  43h    (DR-NET) receive a message
  8980.  44h    (DR-NET) get network status
  8981.  45h    (DR-NET) get requestor configuration table
  8982.  46h    (DR-NET) set compatibility attributes
  8983.  47h    (DR-NET) get server configuration table
  8984.  48h    (DR-NET) set network error mode
  8985.  49h    (DR-NET) attach network
  8986.  4Ah    (DR-NET) detach network
  8987.  4Bh    (DR-NET) set default password
  8988.  4Ch    (DR-NET) get-set long timeout
  8989.  4Dh    (DR-NET) get parameter table
  8990.  50h    (DR-NET) get network information
  8991.  53h    get current time (see also INT 21/AH=2Ch)
  8992.  54h    set current time (see also INT 21/AH=2Dh)
  8993.  55h    get binary system date (see also INT 21/AH=2Ah)
  8994.  56h    set system date (see also INT 21/AH=2Bh)
  8995.  57h    allocate system flag
  8996.  58h    deallocate system flag
  8997.  59h    reserve memory in global area
  8998.  5Ah    lock physical drive
  8999.  5Bh    unlock physical drive
  9000.  5Ch    search path for executable file
  9001.  5Dh    load and execute command (see also INT 21/AH=4Bh)
  9002.  5Eh    get/set process exit code
  9003.  5Fh    set country information
  9004.  60h    get country information
  9005.  63h    truncate FCB file (see also INT 21/AH=28h)
  9006.  64h    create/update directory label
  9007.  65h    get directory label
  9008.  66h    get FCB date stamp and password mode
  9009.  67h    write extended FCB
  9010.  68h    set system date and time
  9011.  69h    get system date and time in binary
  9012.  6Ah    establish password for file access
  9013.  6Bh    get OS serial number
  9014.  6Ch    (DOS Plus v2.1) get/set program return code
  9015.  6Dh    get/set console mode
  9016.  6Eh    get/set string delimiter
  9017.  6Fh    write block to default console
  9018.  70h    write block to default list device
  9019.  71h    execute DOS-compatible function
  9020.  74h    set FCB time and date stamps
  9021.  80h    allocate memory
  9022.  82h    deallocate memory
  9023.  83h    poll I/O device
  9024.  84h    wait on system flag
  9025.  85h    set system flag
  9026.  86h    create message queue
  9027.  87h    open message queue
  9028.  88h    delete message queue
  9029.  89h    read from message queue
  9030.  8Ah    conditionally read from message queue
  9031.  8Bh    write to message queue
  9032.  8Ch    conditionally write to message queue
  9033.  8Dh    delay calling process
  9034.  8Eh    call process dispatcher (yield CPU)
  9035.  8Fh    terminate calling process (same as function 00h)
  9036.  90h    create a process
  9037.  91h    set calling process' priority
  9038.  92h    attach to default console
  9039.  93h    detach from default console
  9040.  95h    assign default console to process
  9041.  96h    interpret and execute commandline
  9042.  97h    resident procedure library
  9043.  98h    parse ASCII string into FCB (see also INT 21/AH=29h)
  9044.  99h    return default console
  9045.  9Ah    get address of system data (SYSDAT)
  9046.  9Bh    get system time and date
  9047.  9Ch    return calling process' descriptor
  9048.  9Dh    terminate process by name or PD address
  9049.  9Eh    attach to default list device
  9050.  9Fh    detach from default list device
  9051.  A0h    select default list device
  9052.  A1h    conditionally attach to default list device
  9053.  A2h    conditionally attach to default console
  9054.  A3h    get OS version number
  9055.  A4h    get default list device
  9056.  A5h    attach to default AUX
  9057.  A6h    detach from default AUX
  9058.  A7h    conditionally attach to default AUX
  9059.  A8h    set default AUX
  9060.  A9h    return default AUX
  9061.  ACh    read block from default AUX
  9062.  ADh    (DOS Plus v2.1) write block to default AUX
  9063.  B0h    configure default AUX
  9064.  B1h    get/set device control parameters
  9065.  B2h    send Break through default AUX
  9066.  B3h    allocate physical memory
  9067.  B4h    free physical memory
  9068.  B5h    map physical memory
  9069.  B6h    nondestructive message queue read
  9070.  B7h    timed wait on system flag
  9071.  B8h    get/set I/O port mapping
  9072.  B9h    set list device timeout
  9073.  BAh    set AUX timeout value
  9074.  BBh    execute XIOS service
  9075.  BDh    (DR Multiuser DOS) delay
  9076.  FFh    return 80386 to native mode
  9077.  
  9078. Values for DOS Plus v2.1 XIOS functions:
  9079.  00h    terminate program
  9080.  01h    ???
  9081.  02h    check for console input status
  9082.  03h    read character from console
  9083.  04h    write character to console
  9084.  05h    write character to list device
  9085.  06h    write character to auxiliary device
  9086.  07h    read cahracter from auxiliary device
  9087.  0Fh    get list device status
  9088.  10h-14h reserved
  9089.  15h    device initialization
  9090.  16h    check console output status
  9091.  17h-7Fh reserved
  9092. ---BBC Acorn---
  9093.  80h    get XIOS version
  9094.  81h    get Tube semaphore
  9095.  82h    release Tube semaphore
  9096.  83h    select text/graphics
  9097.  84h    update B&W graphics rectangle
  9098.  85h    update color graphics rectangle
  9099.  86h    get/release/update mouse
  9100.  87h    get system error info
  9101.  88h    entry in CLOCK called by WatchDog RSP
  9102.  89h    BBC OSBYTE function
  9103.  8Ah    BBC OSWORD function
  9104.  
  9105. DR Multiuser DOS Error Return Codes:
  9106.  00h no error
  9107.  01h system call not implmented
  9108.  02h illegal system call number
  9109.  03h cannot find memory
  9110.  04h illegal flag number
  9111.  05h flag overrun
  9112.  06h flag underrun
  9113.  07h no unused Queue Descriptors
  9114.  08h no free queue buffer
  9115.  09h cannot find queue
  9116.  0Ah queue in use
  9117.  0Ch no free Process Descriptors
  9118.  0Dh no queue access
  9119.  0Eh empty queue
  9120.  0Fh full queue
  9121.  10h CLI queue missing
  9122.  11h no 8087 in system
  9123.  12h no unused Memory Descriptors
  9124.  13h illegal console number
  9125.  14h no Process Descriptor match
  9126.  15h no console match
  9127.  16h no CLI process
  9128.  17h illegal disk number
  9129.  18h illegal filename
  9130.  19h illegal filetype
  9131.  1Ah character not ready
  9132.  1Bh illegal Memory Descriptor
  9133.  1Ch bad return from BDOS load
  9134.  1Dh bad return from BDOS read
  9135.  1Eh bad return from BDOS open
  9136.  1Fh null command
  9137.  20h not owner of resource
  9138.  21h no CSEG in load file
  9139.  22h process Descriptor exists on Thread Root
  9140.  23h could not terminate process
  9141.  24h cannot attach to process
  9142.  25h illegal list device number
  9143.  26h illegal password
  9144.  28h external termination occurred
  9145.  29h fixup error upon load
  9146.  2Ah flag set ignored
  9147.  2Bh illegal auxilliary device number
  9148. --------O-E0----CL03-------------------------
  9149. INT E0 - DR Multiuser DOS - "A_READ" - READ CHARACTER FROM AUX DEVICE
  9150.     CL = 03h
  9151. Return:    AL = ASCII character
  9152. Notes:    A_READ reads the next 8-bit character from the logical auxilliary
  9153.       input device (AUXn:); control is not returned to the calling
  9154.       process until a character has been read. 
  9155.     if another process owns AUX, this call blocks until the device becomes
  9156.       available
  9157. SeeAlso: INT 21/AH=03h,INT E0/CL=04h,INT E0/CL=07h,INT E0/CL=A5h,INT E0/CL=ACh
  9158. --------O-E0----CL04-------------------------
  9159. INT E0 - DR Multiuser DOS - "A_WRITE" - WRITE CHARACTER TO AUX DEVICE
  9160.     CL = 04h
  9161.     DL = ASCII character
  9162. Return:    nothing
  9163. Note:    if another process owns AUX, this call blocks until the device becomes
  9164.       available
  9165. SeeAlso: INT 21/AH=04h,INT E0/CL=03h,INT E0/CL=08h,INT E0/CL=A5h,INT E0/CL=ADh
  9166. --------O-E0----CL07-------------------------
  9167. INT E0 - DR Multiuser DOS - "A_STATIN" - GET INPUT STATUS OF AUX DEVICE 
  9168.     CL = 07h
  9169. Return:    AL = status
  9170.         00h not ready
  9171.         FFh character available
  9172. Desc:    determine whether the current AUX device has input available
  9173. SeeAlso: INT E0/CL=03h,INT E0/CL=08h
  9174. --------O-E0----CL08-------------------------
  9175. INT E0 - DR Multiuser DOS - "A_STATOUT" - GET OUTPUT STATUS OF AUX DEVICE
  9176.     CL = 08h
  9177. Return:    AL = status
  9178.         00h not ready
  9179.         FFh ready for output
  9180. Desc:    determine whether the current AUX device is able to accept more output
  9181. SeeAlso: INT E0/CL=04h,INT E0/CL=07h
  9182. --------O-E0----CL59-------------------------
  9183. INT E0 - ConcCP/M,DR Multiuser DOS - "S_MEMORY" - RESERVE MEMORY IN GLOBAL AREA
  9184.     CL = 59h
  9185.     DX = size in bytes
  9186. Return: AX = FFFFh if failed
  9187.     AX = other if successful
  9188.         ES:BX -> reserved memory
  9189. --------O-E0----CL86-------------------------
  9190. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE
  9191.     CL = 86h
  9192.     DS:DX -> queue descriptor (see below)
  9193. Return: AX = status
  9194.         0000h success
  9195.         FFFFh failure
  9196.     CX = error code
  9197. SeeAlso: INT E0/CL=87h
  9198.  
  9199. Format of queue descriptor:
  9200. Offset    Size    Description
  9201.  00h  2 WORDs    internal use, initialize to zeros
  9202.  04h    WORD    flags
  9203.  06h  8 BYTEs    queue name
  9204.  0Eh    WORD    length of message
  9205.  10h    WORD    number of messages
  9206.  12h  4 WORDs    internal use, initialize to zeros
  9207.  1Ah    WORD    offset in system area of buffer for messages
  9208. --------O-E0----CL87-------------------------
  9209. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_OPEN" - OPEN MESSAGE QUEUE
  9210.     CL = 87h
  9211.     DS:DX -> queue parameter block (see below)
  9212. Return: AX = status
  9213.         0000h success
  9214.         FFFFh failure
  9215.     CX = error code
  9216. SeeAlso: INT E0/CL=86h,INT E0/CL=89h
  9217.  
  9218. Format of queue parameter block:
  9219. Offset    Size    Description
  9220.  00h    WORD    internal use, initialize to zero
  9221.  02h    WORD    queue ID (set by INT E0/CL=87h)
  9222.  04h    WORD    internal use, initialize to zero
  9223.  06h    WORD    offset of queue message buffer
  9224.  08h  8 BYTEs    queue name
  9225. --------O-E0----CL89-------------------------
  9226. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_READ" - READ MESSAGE QUEUE
  9227.     CL = 89h
  9228.     DS:DX -> queue parameter block (see INT E0/CL=87h)
  9229. Return: AX = status
  9230.         0000h success
  9231.         FFFFh failure
  9232.     CX = error code
  9233. SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh
  9234. --------O-E0----CL8A-------------------------
  9235. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CREAD" - CONDITIONALLY READ MSG QUEUE
  9236.     CL = 8Ah
  9237.     DS:DX -> queue parameter block (see INT E0/CL=87h)
  9238. Return: AX = status
  9239.         0000h success
  9240.         FFFFh failure
  9241.     CX = error code
  9242. SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch
  9243. --------O-E0----CL8B-------------------------
  9244. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_WRITE" - WRITE MESSAGE QUEUE
  9245.     CL = 8Bh
  9246.     DS:DX -> queue parameter block (see INT E0/CL=87h)
  9247. Return: AX = status
  9248.         0000h success
  9249.         FFFFh failure
  9250.     CX = error code
  9251. SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch
  9252. --------O-E0----CL8C-------------------------
  9253. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CWRITE" - CONDITIONALLY WRITE MSG QUEUE
  9254.     CL = 8Ch
  9255.     DS:DX -> queue parameter block (see INT E0/CL=87h)
  9256. Return: AX = status
  9257.         0000h success
  9258.         FFFFh failure
  9259.     CX = error code
  9260. SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh
  9261. --------O-E0----CL8E-------------------------
  9262. INT E0 - ConcCP/M,DR Multiuser DOS - "P_DISPATCH" - CALL DISPATCHER
  9263.     CL = 8Eh
  9264.     DX = FFFFh (optional) to force dispatch
  9265. Return: nothing
  9266. Desc:    allow other processes of the same or higher priority to run if they
  9267.       are ready
  9268. Note:    if DX=FFFFh, a dispatch is forced even if no other process is ready
  9269. SeeAlso: INT E0/CL=91h
  9270. --------O-E0----CL91-------------------------
  9271. INT E0 - ConcCP/M,DR Multiuser DOS - "P_PRIORITY" - SET PROCESS PRIORITY
  9272.     CL = 91h
  9273.     DL = new priority (00h highest to FFh lowest)
  9274. Note:    sets priority of calling process; transient processes are initialized
  9275.       to priority C8h
  9276. SeeAlso: INT E0/CL=8Eh
  9277. --------O-E0----CL93-------------------------
  9278. INT E0 - ConcCP/M,DR Multiuser DOS - "C_DETACH" - DETACH FROM DEFAULT CONSOLE
  9279.     CL = 93h
  9280. Return: AX = status
  9281.         0000h successfully detached
  9282.         FFFFh detach failed
  9283. --------O-E0----CLA5-------------------------
  9284. INT E0 - DR Multiuser DOS - "A_ATTACH" - ATTACH AUX DEVICE
  9285.     CL = A5h
  9286. Desc:    attaches the default auxiliary device to the calling process unless
  9287.       it is already attached to another process, in which case the call
  9288.       blocks until the device becomes available
  9289. Note:    this call should be used before attempting to read or write from
  9290.       the AUX device; however, the I/O calls internally call this function
  9291.       to ensure device ownership
  9292. SeeAlso: INT E0/CL=03h,INT E0/CL=04h,INT E0/CL=A6h,INT E0/CL=A7h,INT E0/CL=A8h
  9293. SeeAlso: INT E0/CL=ACh,INT E0/CL=ADh,INT E0/CL=B0h
  9294. --------O-E0----CLA6-------------------------
  9295. INT E0 - DR Multiuser DOS - "A_DETACH" - DETACH FROM AUX DEVICE
  9296.     CL = A6h
  9297. Return: AX = status
  9298.         0000h successfully detached
  9299.         FFFFh detach failed
  9300.     CX = error code
  9301. SeeAlso: INT E0/CL=A5h,INT E0/CL=A7h
  9302. --------O-E0----CLA7-------------------------
  9303. INT E0 - DR Multiuser DOS - "A_CATTACH" - CONDITIONALLY ATTACH TO AUX DEVICE
  9304.     CL = A7h
  9305. Return: AX = status
  9306.         0000h attached
  9307.         FFFFh unable to attach
  9308. Desc:    attaches the default auxiliary device to the calling process if it is
  9309.       available
  9310. Note:    does not block if the device is already in use
  9311. SeeAlso: INT E0/CL=A5h,INT E0/CL=A6h,INT E0/CL=A8h,INT E0/CL=B0h
  9312. --------O-E0----CLA8-------------------------
  9313. INT E0 - DR Multiuser DOS - "A_SET" - SET DEFAULT AUX DEVICE NUMBER
  9314.     CL = A8h
  9315.     DL = auxiliary device number
  9316. Return: AX = status
  9317.         0000h successful
  9318.         FFFFh failed
  9319.     CX = error code
  9320. Desc:    specify which physical device will become AUX
  9321. SeeAlso: INT E0/CL=A5h,INT E0/CL=A9h
  9322. --------O-E0----CLA9-------------------------
  9323. INT E0 - DR Multiuser DOS - "A_GET" - GET DEFAULT AUX DEVICE NUMBER
  9324.     CL = A9h
  9325. Return: AL = current default auxiliary device number
  9326. Desc:    determine which physical device is currently AUX
  9327. SeeAlso: INT E0/CL=A8h
  9328. --------O-E0----CLAC-------------------------
  9329. INT E0 - DR Multiuser DOS - "A_READBLK" - READ STRING FROM AUX DEVICE
  9330.     CL = ACh
  9331.     DS:DX -> character control block (CHCB) (see below)
  9332. Return: AX = number of characters read
  9333. Desc:    read characters from the default auxiliary (AUXn:) device into a buffer
  9334.       until the buffer is full or the device is no longer ready
  9335. Notes:    if the device is initially not ready, blocks until at least one
  9336.       character has been read
  9337.     if another process owns AUX, this call blocks until the device becomes
  9338.       available
  9339. SeeAlso: INT E0/CL=03h,INT E0/CL=A5h,INT E0/CL=ADh
  9340.  
  9341. Format of character control block (CHCB):
  9342. Offset    Size    Description
  9343.  00h    DWORD    pointer to character buffer
  9344.  04h    WORD    length of character buffer
  9345. --------O-E0----CLAD-------------------------
  9346. INT E0 - DR Multiuser DOS - "A_WRITEBLK" - WRITE STRING TO AUX DEVICE
  9347.     CL = ADh
  9348.     DS:DX -> character control block (see INT E0/CL=ACh)
  9349. Return: AX = number of characters written
  9350. Note:    does not return until at least one character has been written
  9351. SeeAlso: INT E0/CL=04h,INT E0/CL=A5h,INT E0/CL=ACh
  9352. --------O-E0----CLB0-------------------------
  9353. INT E0 - DR Multiuser DOS - "A_CONFIG" - GET/SET AUX DEVICE PARAMETERS
  9354.     CL = B0h
  9355.     DX:DX -> AUX device parameter block (see below)
  9356. Return: AX = status
  9357.         0000h successful
  9358.         parameter block updated
  9359.         FFFFh failed
  9360.         CX = error code
  9361. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  9362.  
  9363. Format of AUX device parameter block:
  9364. Offset    Size    Description
  9365.  00h    BYTE    function (00h get, 01h set)
  9366.  01h    BYTE    baud rate (see below) FFh = don't change/unknown
  9367.  02h    BYTE    parity (see below)
  9368.  03h    BYTE    stop bits (00h one, 01h 1.5, 02h two, FFh unknown/don't change)
  9369.  04h    BYTE    data bits (05h-08h or FFh unknown/don't change)
  9370.  05h    BYTE    handshake (00h none, 01h DTS/DSR, 02h RTS/CTS, 04h XON/XOFF,
  9371.         FFh unknown/don't change)
  9372.  06h    BYTE    XON character, FFh unknown/don't change
  9373.  07h    BYTE    XOFF character, FFh unknown/don't change
  9374.  
  9375. Values for parity:
  9376.  00h none
  9377.  01h odd
  9378.  02h none
  9379.  03h even
  9380.  04h stick parity bit
  9381.  FFh don't change/unknown
  9382.  
  9383. Values for baud rate:
  9384.  00h = 50 baud
  9385.  01h = 62.5 baud
  9386.  02h = 75 baud
  9387.  03h = 110 baud
  9388.  04h = 134.5 baud
  9389.  05h = 150 baud
  9390.  06h = 200 baud
  9391.  07h = 300 baud
  9392.  08h = 600 baud
  9393.  09h = 1200 baud
  9394.  0Ah = 1800 baud
  9395.  0Bh = 2000 baud
  9396.  0Ch = 2400 baud
  9397.  0Dh = 3600 baud
  9398.  0Eh = 4800 baud
  9399.  0Fh = 7200 baud
  9400.  10h = 9600 baud
  9401.  11h = 19200 baud
  9402.  12h = 38400 baud
  9403.  13h = 56000 baud
  9404.  14h = 76800 baud
  9405.  15h = 115200 baud
  9406. --------O-E0----CLB1-------------------------
  9407. INT E0 - DR Multiuser DOS - "A_CONTROL" - GET/SET AUX CONTROL PARAMETERS
  9408.     CL = B1h
  9409.     DS:DX -> AUX device control block (see below)
  9410. Return: AX = status
  9411.         0000h successful
  9412.         control block updated
  9413.         FFFFh failed
  9414.         CX = error code
  9415. SeeAlso: INT E0/CL=B0h,INT E0/CL=B2h
  9416.  
  9417. Format of AUX device control block:
  9418. Offset    Size    Description
  9419.  00h    BYTE    function (00h get, 01h set)
  9420.  01h    BYTE    DTR state (00h low, 01h high, FFh unknown/don't change)
  9421.  02h    BYTE    RTS state (00h low, 01h high, FFh unknown/don't change)
  9422.  03h    BYTE    DSR state (00h low, 01h high, FFh unknown/don't change)
  9423.  04h    BYTE    CTS state (00h low, 01h high, FFh unknown/don't change)
  9424.  05h    BYTE    DCD state (00h low, 01h high, FFh unknown/don't change)
  9425.  06h    BYTE    RI state (00h inactive, 01h active, FFh unknown/don't change)
  9426. --------O-E0----CLB2-------------------------
  9427. INT E0 - DR Multiuser DOS - "A_BREAK" - SEND BREAK TO AUX DEVICE
  9428.     CL = B2h
  9429.     DX = duration of break in system ticks (0001h-FFFFh)
  9430. Return: AX = status
  9431.         0000h successful
  9432.         break signal completed
  9433.         FFFFh failed
  9434.         CX = error code
  9435. Note:    if the AUX device is currently owned by another process, this call will
  9436.       block until the device becomes available
  9437. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  9438. --------O-E0----CLBD-------------------------
  9439. INT E0 - DR Multiuser DOS - "P_DELAY" - DELAY EXECUTION
  9440.     CL = BDh
  9441.     DX = delay in system ticks
  9442. Return: after the delay elapses
  9443. Notes:    the length of a system tick is installation-dependent (typically
  9444.       1/50 or 1/60 second); the length may be determined by reading the
  9445.       TICKSPERSEC value from the system data segment
  9446.     the actual delay before the process is rescheduled to run may be up to
  9447.       one tick longer than requested; the delay between rescheduling and
  9448.       actual execution cannot be predicted if higher-priority processes
  9449.       are awaiting a turn at the CPU
  9450. SeeAlso: INT 15/AH=86h,INT 1A/AX=FF01h,INT 2F/AX=1224h,INT 62/AX=0096h
  9451. --------r-E1---------------------------------
  9452. INT E1 - IBM ROM BASIC - used while in interpreter
  9453. Notes:    called by ROM BASIC
  9454.     BASIC.COM/BASICA.COM do not restore vector on termination
  9455. --------N-E1---------------------------------
  9456. INT E1 - PC Cluster Disk Server Information
  9457. SeeAlso: INT E2
  9458. --------r-E2---------------------------------
  9459. INT E2 - IBM ROM BASIC - used while in interpreter
  9460. Notes:    called by ROM BASIC
  9461.     BASIC.COM/BASICA.COM do not restore vector on termination
  9462. --------N-E2---------------------------------
  9463. INT E2 - PC Cluster Program
  9464. --------r-E3---------------------------------
  9465. INT E3 - IBM ROM BASIC - used while in interpreter
  9466. Notes:    called by ROM BASIC
  9467.     BASIC.COM/BASICA.COM do not restore vector on termination
  9468. --------r-E40005-----------------------------
  9469. INT E4 - Logitech Modula v2.0 - MonitorEntry
  9470.     AX = 0005h
  9471.     BX = priority
  9472. SeeAlso: AX=0006h
  9473. --------r-E40006-----------------------------
  9474. INT E4 - Logitech Modula v2.0 - MonitorExit
  9475.     AX = 0006h
  9476. SeeAlso: AX=0005h
  9477. --------r-E4---------------------------------
  9478. INT E4 - IBM ROM BASIC - used while in interpreter
  9479. Notes:    called by ROM BASIC
  9480.     BASIC.COM/BASICA.COM do not restore vector on termination
  9481. --------r-E5---------------------------------
  9482. INT E5 - IBM ROM BASIC - used while in interpreter
  9483. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9484.     BASIC.COM/BASICA.COM do not restore vector on termination
  9485. --------r-E6---------------------------------
  9486. INT E6 - IBM ROM BASIC - used while in interpreter
  9487. Notes:    called by ROM BASIC
  9488.     BASIC.COM/BASICA.COM do not restore vector on termination
  9489. --------r-E7---------------------------------
  9490. INT E7 - IBM ROM BASIC - used while in interpreter
  9491. Notes:    called by ROM BASIC
  9492.     BASIC.COM/BASICA.COM do not restore vector on termination
  9493. --------r-E8---------------------------------
  9494. INT E8 - IBM ROM BASIC - used while in interpreter
  9495. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9496.     BASIC.COM/BASICA.COM do not restore vector on termination
  9497. --------r-E9---------------------------------
  9498. INT E9 - IBM ROM BASIC - used while in interpreter
  9499. Notes:    called by ROM BASIC
  9500.     BASIC.COM/BASICA.COM do not restore vector on termination
  9501. --------r-EA---------------------------------
  9502. INT EA - IBM ROM BASIC - used while in interpreter
  9503. Notes:    called by ROM BASIC
  9504.     BASIC.COM/BASICA.COM do not restore vector on termination
  9505. --------r-EB---------------------------------
  9506. INT EB - IBM ROM BASIC - used while in interpreter
  9507. Notes:    called by ROM BASIC
  9508.     BASIC.COM/BASICA.COM do not restore vector on termination
  9509. --------r-EC---------------------------------
  9510. INT EC - IBM ROM BASIC - used while in interpreter
  9511. Notes:    called by ROM BASIC
  9512.     BASIC.COM/BASICA.COM do not restore vector on termination
  9513. --------N-EC---------------------------------
  9514. INT EC - used by Alloy NTNX
  9515. --------r-EC---------------------------------
  9516. INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
  9517.     AX = function number (0000h to 0140h)
  9518.     STACK:    DWORD address to return to
  9519.         any arguments required by function
  9520. Return: STACK:    return address popped, but otherwise unchanged
  9521. Desc:    this is the interface from applications to the runtime system by Exact
  9522.       Automatisering B.V. of the Netherlands.  By using this interrupt,
  9523.       it can provide DLL-style capabilities under MS-DOS.
  9524. Note:    the interrupt handler removes the return address and flags placed on
  9525.       the stack by the INT EC, then jumps to the appropriate function
  9526. --------r-ED---------------------------------
  9527. INT ED - IBM ROM BASIC - used while in interpreter
  9528. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9529.     BASIC.COM/BASICA.COM do not restore vector on termination
  9530.     INT 80 through INT ED are modified but not restored by Direct Access
  9531.       v4.0, and may be left dangling by other programs written with the
  9532.       same version of compiled BASIC
  9533. SeeAlso: INT EC"BASIC",INT EE"BASIC"
  9534. --------r-EE---------------------------------
  9535. INT EE - IBM ROM BASIC - used while in interpreter
  9536. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9537.     BASIC.COM/BASICA.COM do not restore vector on termination
  9538. SeeAlso: INT ED"BASIC",INT EE"BASIC"
  9539. --------r-EF---------------------------------
  9540. INT EF - BASIC - ORIGINAL INT 09 VECTOR
  9541. Note:    BASIC.COM/BASICA.COM do not restore vector on termination
  9542. SeeAlso: INT EE"BASIC",INT F0"BASIC"
  9543. --------O-EF----CX0473-----------------------
  9544. INT EF - GEM - INTERFACE
  9545.     CX = 0473h
  9546.     DS:DX -> GEM parameter block
  9547. --------r-F0---------------------------------
  9548. INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
  9549. Note:    BASICA.COM does not restore vector on termination
  9550. SeeAlso: INT EF"BASIC"
  9551. --------*-F1---------------------------------
  9552. INT F1 - reserved for user interrupt
  9553. --------s-F1---------------------------------
  9554. INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
  9555.     DS:BX -> '$'-terminated text string
  9556. Program: SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
  9557. --------s-F1---------------------------------
  9558. INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
  9559. SeeAlso: INT F2"SPEECH"
  9560. --------U-F1---------------------------------
  9561. INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS
  9562. Return: AX:BX -> data area
  9563. Program: AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1
  9564.       and COM2 in software
  9565. Note:    The installation check consists of testing for the following signature
  9566.       immediately preceding the interrupt handler: "JWBtvv" where 't' is
  9567.       either "A" for AQUEDUCT or "P" for PIPELINE and "vv" is a two-digit
  9568.       version number
  9569. Index:    installation check;AQUEDUCT|installation check;PIPELINE
  9570. --------v-F1---------------------------------
  9571. INT F1 - VIRUS - "Violetta" - ???
  9572. Note:    used but not chained by virus
  9573. SeeAlso: INT E0"VIRUS",INT FF"VIRUS"
  9574. --------*-F2---------------------------------
  9575. INT F2 - reserved for user interrupt
  9576. --------s-F2---------------------------------
  9577. INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
  9578. SeeAlso: INT F1"SPEECH"
  9579. ----------F2---------------------------------
  9580. INT F2 - ICCTSR 1.0 - ImageCapture COLOR Developer's Kit - API
  9581.     AH = function
  9582.         01h power up
  9583.         02h power down
  9584.         03h set controls
  9585.         04h capture image
  9586.         05h display image
  9587.         06h read file
  9588.         07h write file
  9589.         08h write array
  9590.         09h read pixel
  9591.         0Ah write pixel
  9592.         0Bh check if VGA present
  9593.         0Ch set video mode
  9594.         0Dh check for keystroke
  9595.         0Eh delay
  9596.     ???
  9597. Return: ???
  9598. Program: ImageCapture is a product of International Computers
  9599. SeeAlso: INT F3"ICCTSR"
  9600. --------*-F3---------------------------------
  9601. INT F3 - reserved for user interrupt
  9602. --------s-F3---------------------------------
  9603. INT F3 - SoundBlaster - POINTER TO ECHO VALUE
  9604. Note:    this is not a vector, but a pointer to a DWORD containing the echo
  9605.       value selected with SET-ECHO.EXE
  9606. SeeAlso: INT 2F/AX=FBFBh
  9607. ----------F3---------------------------------
  9608. INT F3 - ICCTSR 1.0 - HANDSHAKE ID VECTOR
  9609. Program: ImageCapture is a product of International Computers
  9610. SeeAlso: INT F2"ICCTSR"
  9611. --------*-F4---------------------------------
  9612. INT F4 - reserved for user interrupt
  9613. --------T-F4---------------------------------
  9614. INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
  9615. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT FE"DoubleDOS"
  9616. --------*-F5---------------------------------
  9617. INT F5 - reserved for user interrupt
  9618. --------T-F5---------------------------------
  9619. INT F5 - DoubleDOS - ???
  9620. --------*-F6---------------------------------
  9621. INT F6 - reserved for user interrupt
  9622. --------T-F6---------------------------------
  9623. INT F6 - DoubleDOS - ???
  9624. --------*-F7---------------------------------
  9625. INT F7 - reserved for user interrupt
  9626. --------T-F7---------------------------------
  9627. INT F7 - DoubleDOS - ???
  9628. ----------F700-------------------------------
  9629. INT F7 - FSBBS 2.0 - CONFIGURATION RECORD
  9630.     AH = 00h
  9631.     AL = function
  9632.         00h get configuration record
  9633.         Return: DS:DX -> configuration record
  9634.         01h set configuration record
  9635.         02h get path for option
  9636.         DS:DX -> option name
  9637.         Return: DS:DX -> path
  9638.         03h determine whether configuration record set
  9639.         Return: AX = status
  9640.                 0000h set
  9641.                 0001h not yet set
  9642.         04h get link state
  9643.         Return: AX = state
  9644.                 0000h unlinked
  9645.                 0001h linked
  9646. Notes:    this information is preliminary and still subject to change
  9647.     all of the INT F7 calls for FSBBS are used for interprogram
  9648.       communication between the BBS kernel and the programs it spawns
  9649. SeeAlso: AH=01h
  9650. ----------F701-------------------------------
  9651. INT F7 - FSBBS 2.0 - USER RECORD
  9652.     AH = 01h
  9653.     AL = function
  9654.         00h get user record for user currently online
  9655.         Return: DS:DX -> user record
  9656.         01h set user record
  9657.         DS:DX -> user record
  9658. SeeAlso: AH=00h,AH=02h
  9659. ----------F702-------------------------------
  9660. INT F7 - FSBBS 2.0 - GET ACCOUNT NAME
  9661.     AH = 02h
  9662. Return: DS:DX -> 8-character blank-padded account name
  9663. SeeAlso: AH=01h
  9664. ----------F703-------------------------------
  9665. INT F7 - FSBBS 2.0 - TERMINAL NUMBER
  9666.     AH = 03h
  9667.     AL = function
  9668.         00h get terminal index number
  9669.         Return: DX = index number
  9670.         01h set terminal index number
  9671.         DX = terminal index
  9672. ----------F704-------------------------------
  9673. INT F7 - FSBBS 2.0 - PASSDATA BUFFER
  9674.     AH = 04h
  9675.     AL = function
  9676.         00h get PassData buffer contents
  9677.         DS:DX -> buffer for PassData contents
  9678.         01h set PassData contents
  9679.         DS:DX -> buffer containing new PassData
  9680.         CH = length of data in buffer
  9681. ----------F705-------------------------------
  9682. INT F7 - FSBBS 2.0 - TIMER FUNCTIONS
  9683.     AH = 05h
  9684.     AL = function
  9685.         00h get time remaining
  9686.         Return: DX = number of minutes remaining
  9687.         01h get current time
  9688.         Return: DS:DX -> 8-character time string
  9689.         02h increment time
  9690.         DX = number of additional minutes
  9691.         03h decrement time
  9692.         DX = number of minutes
  9693. SeeAlso: AH=06h
  9694. ----------F706-------------------------------
  9695. INT F7 - FSBBS 2.0 - FUNCTION AVAILABILITY
  9696.     AH = 06h
  9697.     AL = function
  9698.         00h determine whether function is available
  9699.         DX = index of function
  9700.         01h set function availability
  9701.         DX = index of function
  9702.         ???
  9703. SeeAlso: AH=05h,AH=07h
  9704. ----------F707-------------------------------
  9705. INT F7 - FSBBS 2.0 - DUMP FUNCTIONS
  9706.     AH = 07h
  9707.     AL = function
  9708.         00h get current dump mode
  9709.         Return: DL = mode
  9710.         01h set dump mode
  9711.         DL = mode
  9712. SeeAlso: AH=06h
  9713. --------*-F8---------------------------------
  9714. INT F8 - reserved for user interrupt
  9715. --------h-F8---------------------------------
  9716. INT F8 - TANDY??? - 100 HZ INTERRUPT
  9717. SeeAlso: INT FA"USART"
  9718. --------T-F8---------------------------------
  9719. INT F8 - DoubleDOS - ???
  9720. --------*-F9---------------------------------
  9721. INT F9 - reserved for user interrupt
  9722. --------T-F9---------------------------------
  9723. INT F9 - DoubleDOS - ???
  9724. --------*-FA---------------------------------
  9725. INT FA - reserved for user interrupt
  9726. --------h-FA---------------------------------
  9727. INT FA - TANDY??? - SERIAL PORT USART INTERRUPT
  9728. SeeAlso: INT F8"100 HZ",INT FB"USART"
  9729. --------T-FA---------------------------------
  9730. INT FA - DoubleDOS - TURN OFF TIMESHARING
  9731. SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
  9732. --------*-FB---------------------------------
  9733. INT FB - reserved for user interrupt
  9734. --------h-FB---------------------------------
  9735. INT FB - TANDY??? - KEYBOARD USART RECEIVE INTERRUPT
  9736. SeeAlso: INT FA"USART"
  9737. --------T-FB---------------------------------
  9738. INT FB - DoubleDOS - TURN ON TIMESHARING
  9739. SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
  9740. --------*-FC---------------------------------
  9741. INT FC - reserved for user interrupt
  9742. --------T-FC---------------------------------
  9743. INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
  9744. Return: ES = segment of display buffer
  9745. Desc:    determine the address of the virtual screen to which the program
  9746.       should write instead of the actual video memory, so that the
  9747.       multitasked programs do not interfere with each other's output
  9748. Note:    the display buffer may be moved if multitasking is enabled
  9749. SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
  9750. --------*-FD---------------------------------
  9751. INT FD - reserved for user interrupt
  9752. --------T-FD---------------------------------
  9753. INT FD - DoubleDOS - ???
  9754. --------S-FD---------------------------------
  9755. INT FD - TFPCX - INSTALLATION CHECK
  9756.     AH = function (see separate entries below)
  9757. Program: TFPCX is an interface between modem and terminal program for packet-
  9758.       radio communications
  9759. Notes:    the installation check consists of testing for the string "N5NX" three
  9760.       bytes beyond the interrupt handler; INT FD is the default, but may
  9761.       be changed, so the full installation check consists of scanning
  9762.       for the signature
  9763.     TFPCX returns AX=FFFFh on any unsupported function call
  9764. SeeAlso: AH=01h,AH=03h,AH=FEh
  9765. --------S-FD01-------------------------------
  9766. INT FD - TFPCX - TEST FOR CHARACTER WAITING
  9767.     AH = 01h
  9768. Return: AX = status
  9769.         0000h no characters waiting
  9770.         0001h character available for input
  9771. Program: TFPCX is an interface between modem and terminal program for packet-
  9772.       radio communications
  9773. SeeAlso: AH=02h
  9774. --------S-FD02-------------------------------
  9775. INT FD - TFPCX - GET CHARACTER
  9776.     AH = 02h
  9777. Return: AL = character
  9778. Notes:    this call is only allowed if AH=01h indicated that a character is
  9779.       available
  9780.     all available characters should be read before sending any additional
  9781.       characters
  9782. SeeAlso: AH=01h,AH=03h
  9783. --------S-FD03-------------------------------
  9784. INT FD - TFPCX - OUTPUT CHARACTER
  9785.     AH = 03h
  9786.     AL = character to send
  9787. SeeAlso: AH=02h
  9788. --------S-FDFE-------------------------------
  9789. INT FD - TFPCX - GET VERSION
  9790.     AH = FEh
  9791. Return: AH = major version
  9792.     AL = minor version
  9793. Program: TFPCX is an interface between modem and terminal program for packet-
  9794.       radio communications
  9795. SeeAlso: AH=01h,AH=03h
  9796. --------B-FE---------------------------------
  9797. INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
  9798. Note:    the ROM BIOS uses 0030h:0100h as the initial stack on startup, which
  9799.       is the last fourth of the interrupt vector table.  If the processor
  9800.       is returned to real mode via a hardware reset (the only possibility
  9801.       on an 80286, though there are a number of ways of generating one),
  9802.       then the BIOS startup code stacks three words on its scratch stack
  9803.       before determining that a return to real mode has been requested.
  9804.       As a result, INT FE and INT FF are corrupted.
  9805. SeeAlso: INT FF"XT286"
  9806. --------T-FE---------------------------------
  9807. INT FE - DoubleDOS - GIVE UP TIME
  9808.     AL = number of 55ms time slices to give away
  9809. Return: after other program (if active) has run
  9810. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
  9811. --------G-FE---------------------------------
  9812. INT FE - Turbo Debugger 8086 v2.5+ - OVERLAY MANAGER
  9813. SeeAlso: INT 3F
  9814. --------B-FF---------------------------------
  9815. INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
  9816. Note:    (see INT FE"XT286")
  9817. SeeAlso: INT FE"XT286"
  9818. --------b-FF---------------------------------
  9819. INT FF - Z100 - WARM BOOT
  9820. SeeAlso: INT 40"Z100"
  9821. --------Q-FF---------------------------------
  9822. INT FF U - QEMM-386.SYS v6.0+ - internal
  9823. Note:    requires that a byte in the conventional-memory stub be set to the
  9824.       desired function number (00h through 0Ch)
  9825. --------v-FF---------------------------------
  9826. INT FF - VIRUS - "Violetta" - ???
  9827. Note:    used but not chained by virus
  9828. SeeAlso: INT E0"VIRUS",INT F1"VIRUS"
  9829. ---------------------------------------------
  9830. Please redistribute the following files unmodified as a group, in a pair of
  9831. archives named INTER35A and INTER35B (preferably the original authenticated
  9832. PKZIP archives):
  9833.     INTERRUP.1ST    the read-me file, containing credits, availability info
  9834.     INTERRUP.A    INT 00 through INT 14
  9835.     INTERRUP.B    INT 15 through INT 15
  9836.     INTERRUP.C    INT 16 through INT 21/35
  9837.     INTERRUP.D    INT 21/36 through INT 21/7F
  9838.     INTERRUP.E    INT 21/80 through INT 21/FF
  9839.     INTERRUP.F    INT 22 through INT 2F/BF
  9840.     INTERRUP.G    INT 2F/C0 through INT 4F
  9841.     INTERRUP.H    INT 50 through INT 66
  9842.     INTERRUP.I    INT 67 through INT FF
  9843.     INTERRUP.PRI    a brief introduction to interrupts
  9844.     INTPRINT.COM    a simple formatter that also generates a list summary
  9845.     INTPRINT.DOC    instructions for INTPRINT
  9846.     GLOSSARY.LST    a glossary of terms, abbreviations, and acronyms
  9847.     MEMORY.LST    format of the BIOS data area
  9848.     COMBINE.BAT    combine the piece of the list into a single file
  9849. The following files should be distributed in an archive called INTER35C:
  9850.     INT.COM        invoke interrupts from commandline
  9851.     INT2HLP.BAT    Perl script to convert list into QuickHelp database
  9852.     INT2GUID.*    convert list into TurboPower GUIDE or POPHELP database
  9853.     INT2QH.*    program to convert list into QuickHelp database
  9854.     INTERVUE.EXE    indexed interrupt list browser
  9855.     INTHELP.*    convert list into TurboPower GUIDE database
  9856.     INTLIST.E    Epsilon extension for handling list
  9857.     INTLIST.ICO    Windows icon for INTERVUE
  9858.     INTPRINT.C    source code for INTPRINT
  9859.     RB2NG.*        convert list into Norton Guides database
  9860. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  9861. ---------------------------------------------
  9862. Internet: ralf@telerama.pgh.pa.us
  9863. UUCP: {uunet,harvard}!telerama.pgh.pa.us!ralf
  9864. FIDO: Ralf Brown 1:129/26.1
  9865.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  9866.     unless you address it to me)
  9867. CIS:  >INTERNET:ralf@telerama.pgh.pa.us
  9868.