home *** CD-ROM | disk | FTP | other *** search
/ Hot Shareware 32 / hot34.iso / ficheros / DTOOL / INTER57D.ZIP / INTERRUP.O < prev    next >
Text File  |  1998-03-22  |  357KB  |  9,897 lines

  1. Interrupt List, part 15 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998 Ralf Brown
  3. --------d-67---------------------------------
  4. INT 67 - Adaptec controllers - DRIVE 1 DATA
  5. Desc:    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. --------b-67---------------------------------
  9. INT 67 - TI Professional PC - SYSTEM DATA (NOT A VECTOR!)
  10. Desc:    this vector contains the TI Pro's system configuration words
  11.       (see #3192)
  12. SeeAlso: INT 66"TI Professional PC"
  13.  
  14. Bitfields for TI Professional PC System Configuration doubleword:
  15. Bit(s)    Description    (Table 3192)
  16.  0    8087 present
  17.  31-1    reserved (0)
  18. --------d-67---------------------------------
  19. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  20. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  21. --------I-67---------------------------------
  22. INT 67 - Sangoma CCPOP 3270 resident module
  23. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  24. --------U-67---------------------------------
  25. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  26. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  27.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  28. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  29.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  30.       the signature value 434Ch:4F4Bh ('CLOK')
  31. ----------67---------------------------------
  32. INT 67 - PC-DRAFT - KEYBOARD DRIVER
  33.     ???
  34. Return: ???
  35. Program: PC-DRAFT is a powerful CAD environment by rhv.
  36. SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT"
  37. --------N-6700-------------------------------
  38. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  39.     AH = 00h
  40.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  41. Return: AL = status (see #3193)
  42.     AH = semaphore owner if status=02h
  43. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  44.  
  45. (Table 3193)
  46. Values for PC-NET semaphore function status:
  47.  00h    successful
  48.  01h    invalid function
  49.  02h    semaphore already locked
  50.  03h    unable to lock semaphore
  51.  04h    semaphore space exhausted
  52. --------N-6701-------------------------------
  53. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  54.     AH = 01h
  55.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  56. Return: AL = status (see #3193)
  57.     AH = semaphore owner if status=02h
  58. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  59. --------N-6702-------------------------------
  60. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  61.     AH = 02h
  62.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  63. Return: AL = status (see #3193)
  64.     AH = semaphore owner if status=02h
  65. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  66. --------m-671E-------------------------------
  67. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
  68.     AH = 1Eh
  69. Return: AH = 00h if installed
  70.         AL destroyed
  71.         ES:DI -> ASCII signature "MemLimit"
  72. SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
  73. --------m-671F-------------------------------
  74. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
  75.     AH = 1Fh
  76.     DS:SI -> request packet (see #3194)
  77. Return: AH = status (00h successful, 84h invalid function code, etc.)
  78. SeeAlso: AH=1Eh
  79.  
  80. Format of 386MAX MEMLIMIT request packet:
  81. Offset    Size    Description    (Table 3194)
  82.  00h    WORD    function code (00h-0Fh)
  83.  02h    WORD    return code (see #3195)
  84.  04h  4 BYTEs    ???
  85.  08h    WORD    ???
  86.     ???
  87.  
  88. (Table 3195)
  89. Values for 386MAX MEMLIMIT return code:
  90.  00h    unknown request
  91.  01h    invalid parameter for VCPI limit
  92.  02h    VCPI limit set
  93.  03h    invalid parameter for EMS limit
  94.  04h    EMS limit set
  95.  05h    DPMI disabled
  96.  06h    XMS disabled
  97.  07h    XMS limit set
  98.  08h    unable to uninstall
  99.  09h    unloaded
  100. --------m-672763CL01-------------------------
  101. INT 67 - VIDEMS.SYS v1.31+ - INSTALLATION CHECK
  102.     AX = 2763h
  103.     CL = 01h
  104.     BX = signature AAFFh
  105. Return: AH = 00h if VIDEMS is installed
  106.         CH = 00h if optimization for 80286 is used, 01h otherwise
  107.         CL = internal revision number (typically 00h to 03h)
  108.         DX = driver version (DH=major, DL=minor; not a BCD!)
  109.     AH = 84h if not installed but EMS manager is present
  110. Program: VIDEMS is an expanded memory manager from Conea Software Corp. It
  111.      converts video adapter RAM to LIM 3.2 EMS.
  112. SeeAlso: AX=2763h/CL=02h,AX=2763h/CL=03h
  113. --------m-672763CL02-------------------------
  114. INT 67 - VIDEMS.SYS v1.31+ - FLUSH EMS TO VIDEO RAM
  115.     AX = 2763h
  116.     CL = 02h
  117.     BX = signature AAFFh
  118. Return: AH = 00h if successful
  119. Notes:    This call is normally used by Conea products only.
  120. SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=03h
  121. --------m-672763CL03-------------------------
  122. INT 67 - VIDEMS.SYS v1.31+ - RELOAD EMS FROM VIDEO RAM
  123.     AX = 2763h
  124.     CL = 03h
  125.     BX = signature AAFFh
  126. Return: AH = 00h if successful
  127. Notes:    This call is normally used by Conea products only.
  128. SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=03h
  129. --------m-672763CL04-------------------------
  130. INT 67 - VIDEMS.SYS v1.31+ - RETURN HIDDEN BLOCK SIZE
  131.     AX = 2763h
  132.     CL = 04h
  133.     BX = signature AAFFh
  134. Return: AH = 00h if successful
  135.         DX = block size in kilobytes
  136. Desc:    Returns the amount of EMS which can be safely used at any time, and
  137.       can't be destroyed by writing anything to the B800:0000 buffer.
  138. Note:    this function normally returns 184K, while the driver provides up to
  139.       240K of EMS.
  140. SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=02h
  141. --------m-672763CL05-------------------------
  142. INT 67 - VIDEMS.SYS v1.31+ - RETURN PHYSICAL PAGE SIZE
  143.     AX = 2763h
  144.     CL = 05h
  145.     BX = signature AAFFh
  146. Return: AH = 00h
  147.     DX = size in bytes
  148. Desc:    Used by Conea products to determine if addressing mode has changed.
  149.       Normally, all VIDEMS versions beginning from 1.15 use 4K "physical"
  150.       pages.
  151. Notes:    this function will probably become raw page size in future releases of
  152.       VIDEMS, which    will support the LIM 4.0 standard.
  153. SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=02h
  154. --------m-672763CL06-------------------------
  155. INT 67 - VIDEMS.SYS v1.50+ - RETURN VIDEO RAM SIZE
  156.     AX = 2763h
  157.     CL = 06h
  158.     BX = signature AAFFh
  159. Return: AH = 00h
  160.     DX = total amount of video RAM
  161. Desc:    beginning with version 1.50, VIDEMS can use more adapter memory on
  162.       some chipsets, and is no longer limited to the first 240K.
  163. Notes:    this call is not officially documented, and Conea programmers use it
  164.       mainly for debugging purposes.
  165. --------u-672833-----------------------------
  166. INT 67 - Q87 v4+ - PREPARE TO UNLOAD AND GET XMS HANDLE FOR Q87 MEMORY
  167.     AX = 2833h
  168.     EAX = 29482833h (entire EAX value required)
  169. Return: EAX = XMS handle for memory allocated when Q87 was installed
  170.     EBX = status
  171.         00000000h Q87 is in demo mode (countdown running);
  172.               Q87 remains active
  173.         00000001h Q87 is in registered mode; memory manager's IDT, GDT,
  174.               and optionally CR0 (if BL <> 5Fh on entry) have
  175.               been restored
  176.         00000002h Q87 is in demo mode (demo time has expired);
  177.               Q87 remains active
  178. Note:    this call is used by UNLOAD87 to release the memory used by Q87
  179. BUG:    v4.00-v4.03 will hang on most machines when run under bare DOS with
  180.       no memory manager, because neither Q87 nor UNLOAD87 checks whether
  181.       there is a valid INT 67 handler before performing an installation
  182.       check via INT 67
  183. SeeAlso: AX=4321h,INT 21/AX=4321h/BX=0000h
  184. --------m-673F--CX5145-----------------------
  185. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  186.     AH = 3Fh
  187.     CX = 5145h ("QE")
  188.     DX = 4D4Dh ("MM")
  189. Return: AH = 00h if installed
  190.         ES:DI -> QEMM API entry point (see #3196,#3199,#3311)
  191. Notes:    if no other program has hooked INT 67, an alternate installation
  192.       check is to test for the string
  193.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  194.       handler's segment; the word at offset 12h contains the offset in
  195.       the handler's segment of the API entry point
  196.     although this function is still undocumented, Quarterdeck has recently
  197.       documented two alternate methods for determining the QEMM API entry
  198.       point, as well as several of the API functions
  199.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  200.       the alternate QEMM installation check and entry point functions 00h,
  201.       02h, and 03h; version 4D only provides the signature string if the
  202.       commandline argument "DV" is provided
  203.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  204.       recognize the returned entry point as providing QEMM's capabilities
  205.       because a) only functions 0Ch (different from QEMM 0Ch) and
  206.             1000h-1009h are supported,
  207.           b) status is returned as for EMS functions, not QEMM funcs
  208.           c) the protected-mode entry point returned by function 1000h
  209.             only supports functions 0Ch, 1004h, 1005h, and 100Ah
  210.     the string check mentioned above is not supported by 386MAX
  211. SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
  212. SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  213.  
  214. (Table 3196)
  215. Values for calling QEMM "QPI_GetStatus" function:
  216.     AH = 00h get QEMM state
  217. Return: CF clear
  218.     AL = QEMM state
  219.         bit 0 set if QEMM turned OFF
  220.         bit 1 set if in "Auto" mode
  221. Note:    this function is officially documented
  222. SeeAlso: #3197,#3198,#3199,#3311
  223.  
  224. (Table 3197)
  225. Values for calling QEMM "QPI_SetStatus" function:
  226.     AH = 01h set QEMM state
  227.     AL = new state
  228.         bit 0 set: place QEMM in OFF state
  229. Return: CF clear if successful
  230.     CF set on error
  231. Note:    this function is officially documented
  232. SeeAlso: #3196
  233.  
  234. (Table 3198)
  235. Values for calling QEMM QPI function 02h:
  236.     AH = 02h get ???
  237. Return: CF clear
  238.     AX = segment of ??? data structure
  239.     Data Structure
  240.     Offset    Size    Description
  241.      00h    DWORD    page table entry for ???
  242.         ???
  243. SeeAlso: #3199
  244.  
  245. (Table 3199)
  246. Values for calling QEMM "QPI_GetVersion" function:
  247.     AH = 03h get QEMM version
  248. Return: CF clear
  249.     AX = BX = version in BCD
  250. Notes:    this function is officially documented.     The most recent official docs
  251.       state that the version is returned in both AX and BX; older
  252.       documentation only mentions BX
  253.     MICEMM returns AX=0001h, BX unchanged
  254. SeeAlso: #3196,#3200
  255.  
  256. (Table 3200)
  257. Values for calling QEMM QPI function 04h:
  258.     AH = 04h allocate 4K page and set AUTO/ON mode
  259. Return: CF clear if successful
  260.         DX = page number of a 4K page
  261.     CF set if unable to allocate page
  262. Note:    QEMM mode unchanged if not AUTO/OFF
  263. SeeAlso: #3201
  264.  
  265. (Table 3201)
  266. Values for calling QEMM QPI function 05h:
  267.     AH = 05h free 4K page and turn QEMM off
  268.     DX = page number returned by function 04h
  269. Return: CF clear
  270. Note:    QEMM mode unchanged if not AUTO/ON
  271. SeeAlso: #3200,#3202
  272.  
  273. (Table 3202)
  274. Values for calling QEMM QPI function 06h:
  275.     AH = 06h make new mapping context???
  276.     DX = page number of 4K page to hold page table
  277. Return: CF clear
  278. Note:    copies page table into given page and then sets ??? page table entry
  279.       to point at copy
  280. SeeAlso: #3203,#3204
  281.  
  282. (Table 3203)
  283. Values for calling QEMM QPI function 07h:
  284.     AH = 07h get mapping context
  285. Return: CF clear
  286.     DX = page number of page table for current mapping context
  287. SeeAlso: #3199,#3202,#3204
  288.  
  289. (Table 3204)
  290. Values for calling QEMM QPI function 08h:
  291.     AH = 08h set mapping context???
  292.     DX = linear page number of page table
  293. Return: CF clear
  294. SeeAlso: #3199,#3202,#3203,#3205,#3207
  295.  
  296. (Table 3205)
  297. Values for calling QEMM QPI function 09h:
  298.     AH = 09h get linear page number for page table entry
  299.     CX = page table index
  300. Return: CF clear
  301.     DX = linear page number
  302. SeeAlso: #3206
  303.  
  304. (Table 3206)
  305. Values for calling QEMM QPI function 0Ah:
  306.     AH = 0Ah set linear page number for page table entry
  307.     CX = page table index
  308.     DX = linear page number
  309. Return: CF clear
  310. SeeAlso: #3205
  311.  
  312. (Table 3207)
  313. Values for calling QEMM QPI function 0Bh:
  314.     AH = 0Bh map 4K pages
  315.     BX = number of pages
  316.     CX = first page number (must be 0100h to allocate HMA)
  317.     DX = EMS handle (memory belonging to EMS handle will be mapped
  318.           into the address space beginning with the first page
  319.           allocated to the handle)
  320. Return: AH = 00h
  321. SeeAlso: #3204,#3208
  322.  
  323. (Table 3208)
  324. Values for calling QEMM QPI function 0Ch:
  325.     AH = 0Ch get available memory
  326. Return: CF clear
  327.     BX = 0001h
  328.     CX = total 4K pages???
  329.     DX = number of 4K pages free
  330. SeeAlso: #3207,#3209
  331.  
  332. (Table 3209)
  333. Values for calling QEMM QPI function 0Dh:
  334.     AH = 0Dh CRT controller I/O port trapping
  335.     AL = mode
  336.         00h only trap on I/O ports 03C0h-03C5h, 03C7h, 03CAh-03CFh
  337.         01h trap on ports 03B4h, 03B5h, 03B8h, 03C6h, 03C8h, 03C9h,
  338.           03D4h, and 03D5h
  339.         02h only trap on I/O ports 03C6h, 03C8h, and 03C9h
  340. Return: CF clear
  341.  
  342. (Table 3210)
  343. Values for calling QEMM QPI function 0Eh:
  344.     AH = 0Eh set cursor virtualization callbacks
  345.     DS:BX -> FAR routine for getting hardware cursor address
  346.     ES:DX -> FAR routine for setting hardware cursor address
  347. Return: CF clear
  348. Note:    both callbacks are invoked with CL indicating which
  349.       CRT controller register to access (0Eh for high
  350.       byte of cursor address, 0Fh for low byte)
  351.     the DS:BX callback should return BX=cursor address;
  352.       ES:DX is called with BL or BH (depending on CL)
  353.       set to the appropriate half of the cursor's address
  354.  
  355. (Table 3211)
  356. Values for calling QEMM QPI function 0Fh:
  357.     AH = 0Fh unmap 4K pages
  358.     CX = first page number
  359.     DX = number of pages
  360. Return: CF clear
  361.     AL = 00h/01h if ???
  362. Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  363.       simulate a disabled A20
  364.  
  365. (Table 3212)
  366. Values for calling QEMM QPI function 1000h:
  367.     AX = 1000h get protected-mode interface
  368.     DS:SI -> 16-byte buffer for two GDT entries
  369.     ES:DI -> buffer for 4K page table
  370. Return: CF clear
  371.     EAX = offset of protected-mode API entry point
  372.     DS:SI buffer filled with two GDT descriptors
  373.         first is QEMM code segment, second is data???
  374.     ES:DI buffer filled with 4K page table
  375.     DI points to first unused page table entry
  376. SeeAlso: INT 67/AX=DE01h
  377.  
  378. (Table 3213)
  379. Values for calling QEMM QPI function 1001h:
  380.     AX = 1001h get CPU debug registers
  381.     ES:DI -> buffer for debug registers (8 DWORDs)
  382. Return: CF clear
  383.     BL = INT01 handling (see #3214)
  384.     ES:DI buffer filled
  385.  
  386. (Table 3214)
  387. Values for calling QEMM QPI function 1002h:
  388.     AX = 1002h set CPU debug registers
  389.     BL = INT01 handling
  390.         00h     reflect all debugging exceptions as V86-mode INT 01's
  391.         else convert debugging exceptions other than single-step
  392.           into V86-mode INT 03's, single-step to INT 01's
  393.     ES:DI -> buffer containing debug registers (8 DWORDs)
  394. Return: CF clear
  395. Notes:    identical to INT 67/AX=DE09h if BL=01h
  396.     the INT01 handling flag is set to 01h by the general-protection
  397.       violation handler for certain privileged instructions
  398. SeeAlso: #3213
  399.  
  400. (Table 3215)
  401. Values for calling QEMM QPI function 1003h:
  402.     AX = 1003h get machine status word CR0
  403. Return: CF clear
  404.     EAX = contents of CR0
  405. SeeAlso: INT 67/AX=DE07h
  406.  
  407. (Table 3216)
  408. Values for calling QEMM QPI function 1004h:
  409.     AX = 1004h allocate a 4K page
  410. Return: CF clear if successful
  411.         EDX = linear address of allocated page
  412.     CF set on error
  413. SeeAlso: INT 67/AX=DE04h
  414.  
  415. (Table 3217)
  416. Values for calling QEMM QPI function 1005h:
  417.     AX = 1005h free 4K page
  418.     EDX = linear address of page to free
  419. Return: CF clear
  420. SeeAlso: INT 67/AX=DE05h
  421.  
  422. (Table 3218)
  423. Values for calling QEMM QPI function 1006h:
  424.     AX = 1006h NOP
  425. Return: CF set
  426.  
  427. (Table 3219)
  428. Values for calling QEMM QPI function 1007h:
  429.     AX = 1007h get maximum physical memory address
  430. Return: CF clear
  431.     EDX = physical address of highest 4K memory page
  432. SeeAlso: INT 67/AX=DE02h
  433.  
  434. (Table 3220)
  435. Values for calling QEMM QPI function 1008h:
  436.     AX = 1008h get physical address of page in first megabyte
  437.     CX = page number (linear address shifted right 12 bits)
  438. Return: CF clear
  439.     EDX = linear address of page
  440. SeeAlso: #3219,#3295,#3296
  441.  
  442. (Table 3221)
  443. Values for calling QEMM QPI function 1009h:
  444.     AX = 1009h switch to protected mode
  445.     ESI = linear address in first megabyte of system reg values
  446.           (see INT 67/AX=DE0Ch)
  447.     interrupts disabled
  448. Return: interrupts disabled
  449.     GDTR, IDTR, LDTR, TR loaded
  450.     SS:ESP must have at least 16 bytes space, and the
  451.           entry point is required to set up a new stack
  452.           before enabling interrupts
  453.     EAX, ESI, DS, ES, FS, GS destroyed
  454.  
  455. (Table 3222)
  456. Values for calling QEMM QPI function 100Ah:
  457.     AX = 100Ah switch back to virtual-86 mode
  458.     DS = selector for data segment from function 1000h
  459.     SS:ESP in first megabyte of linear memory
  460.     interrupts disabled
  461.     STACK:    QWORD  return address from FAR call to 32-bit segment
  462.         DWORD  EIP
  463.         DWORD  CS
  464.         DWORD  reserved for EFLAGS
  465.         DWORD  ESP
  466.         DWORD  SS
  467.         DWORD  ES
  468.         DWORD  DS
  469.         DWORD  FS
  470.         DWORD  GS
  471.     will switch to virtual86 mode with interrupts disabled, all
  472.       segment registers loaded, and EAX destroyed.
  473.  
  474. (Table 3223)
  475. Values for calling QEMM QPI function 11h:
  476.     AH = 11h get memory type map
  477.     AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  478.           by QEMM 6.00)
  479.     ES:DI -> 256-byte buffer for memory types
  480. Return: CF clear
  481.     BL = ???
  482.     ES:DI buffer filled
  483. Note:    each byte of the buffer corresponds to a 4K page, and
  484.       contains the type of that page: 00h = mappable,
  485.       02h = mapped ROM, 03h = high RAM, 04h = excluded,
  486.       05h = video, 06h = ROM, 07h = adapter ROM,
  487.       08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  488.       0Bh = conventional, 83h = high RAM under MS Windows
  489.  
  490. (Table 3224)
  491. Values for calling QEMM QPI function 12h:
  492.     AH = 12h get HIRAM chain
  493. Return: CF clear
  494.     BX = segment of first MCB in high memory
  495.         0000h if no high memory
  496.  
  497. (Table 3225)
  498. Values for calling QEMM QPI function 1300h:
  499.     AX = 1300h VIDRAMEGA???
  500.     BL = 00h copy ???
  501.          nonzero copy ??? (reverse)
  502. Return: CF clear
  503.     AL = status
  504.         00h if all pages clean
  505.         01h if any page dirty
  506.  
  507. (Table 3226)
  508. Values for calling QEMM QPI function 1301h:
  509.     AX = 1301h check if pages modified
  510.     DX:DI = start address of range to check
  511.     CX = length of range in paragraphs
  512. Return: CF clear
  513.     CX = status
  514.         0000h none of the indicated pages is dirty
  515.         DI destroyed
  516.         1000h one or more pages is dirty
  517.         DI = low word of first dirty page's linear addr
  518.  
  519. (Table 3227)
  520. Values for calling QEMM QPI function 1302h:
  521.     AX = 1302h ???
  522.     BL = ???
  523.     BH = ???
  524.     CX = ???
  525.     SI = offset of ???
  526.     DI = offset of ???
  527.     ???
  528. Return: CF clear
  529.     ???
  530. Note:    disables certain interrupts at the two 8259 PICs during
  531.       execution; also modifies CRT controller during
  532.       execution under certain circumstances
  533.  
  534. (Table 3228)
  535. Values for calling QEMM QPI function 1303h:
  536.     AX = 1303h initialize EGA graphics virtualization
  537.     BX = number of pages (less 1) of EMS to allocate
  538. Return: CF clear if successful
  539.         DX = EMS handle
  540.     CF set on error
  541.  
  542. (Table 3229)
  543. Values for calling QEMM QPI function 1304h:
  544.     AX = 1304h shutdown EGA graphics virtualization
  545.     DX = EMS handle being used for virtualization
  546. Return: CF clear
  547.  
  548. (Table 3230)
  549. Values for calling QEMM QPI function 1305h:
  550.     AX = 1305h select portion of EGA graphics to virtualize???
  551.     (related to graphics virtualization, changes memory mappings)
  552.     CX = start offset within A000h segment of virtualized mem???
  553. Return: CF clear
  554. Note:    disables certain interrupts at the two 8259 PICs during
  555.       execution (see #3237) and runs inside a QEMM
  556.       critical section
  557.  
  558. (Table 3231)
  559. Values for calling QEMM QPI function 1306h:
  560.     AX = 1306h set DESQview critical section counter address
  561.     ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  562. Return: CF clear
  563. Note:    also sets a pointer in the low-memory part of QEMM to
  564.       the current value of INT 15 if ES:BX not 0000h:0000h
  565.  
  566. (Table 3232)
  567. Values for calling QEMM QPI function 1307h:
  568.     AX = 1307h ??? (changes memory mappings for entire A000h segment)
  569. Return: CF clear
  570. Note:    disables certain interrupts at the two 8259 PICs during
  571.       execution (see #3237) and runs inside a QEMM
  572.       critical section
  573.  
  574. (Table 3233)
  575. Values for calling QEMM QPI function 1308h:
  576.     AX = 1308h start/reset CRT controller I/O trapping
  577.     BL = subfunction
  578.         00h restore CRTC I/O port trapping to previous state
  579.         else start trapping all accesses to I/O ports 03B0-03DF
  580. Return: CF clear
  581. Note:    if called more than once in a row with BL nonzero, the
  582.       original state of the I/O port trapping will be lost
  583.  
  584. (Table 3234)
  585. Values for calling QEMM QPI function 1309h:
  586.     AX = 1309h Hercules mode-change support
  587.     ES:BX -> new address for Hercules mode-change callback
  588. Return: CF clear
  589. Note:    the callback function is called whenever the CRTC mode
  590.       register is written, with AL set to the value written
  591.  
  592. (Table 3235)
  593. Values for calling QEMM QPI function 130Ah:
  594.     AX = 130Ah virtualize EGA/VGA DAC registers (I/O ports 03C8h/03C9h)
  595.     CX:DX -> DAC register virtualization buffer (see #3318)
  596.         or 0000h:0000h to disable
  597. Return: CF clear
  598.  
  599. (Table 3236)
  600. Values for calling QEMM QPI function 130Bh:
  601.     AX = 130Bh ???
  602.     BL = ??? (??? or 00h)
  603. Return: CF clear
  604.     ???
  605. Note:    calls AX=130Eh in some cases
  606.  
  607. (Table 3237)
  608. Values for calling QEMM QPI function 130Ch:
  609.     AX = 130Ch set interrupts to mask
  610.     BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  611.           AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  612. Return: CF clear
  613.  
  614. (Table 3238)
  615. Values for calling QEMM QPI function 130Dh:
  616.     AX = 130Dh map EGA memory at A0000h
  617.     ???
  618. Return: CF clear
  619. Note:    disables certain interrupts at the two 8259 PICs during execution
  620.       (see #3237) and runs inside a QEMM critical section
  621.     calls AX=1307h (see #3232)
  622.  
  623. (Table 3239)
  624. Values for calling QEMM QPI function 130Eh:
  625.     AX = 130Eh ??? (modifies CRT controller setup)
  626.     ???
  627. Return: CF clear
  628.  
  629. (Table 3240)
  630. Values for calling QEMM QPI function 130Fh:
  631.     AX = 130Fh reset ???
  632. Return: CF clear
  633.  
  634. (Table 3241)
  635. Values for calling QEMM QPI function 1310h:
  636.     AX = 1310h copy modified pages to physical video RAM???
  637.     ???
  638. Return: CF clear
  639. Note:    disables certain interrupts at the two 8259 PICs during execution
  640.       (see #3237) and runs inside a QEMM critical section
  641.     also calls AX=130Dh (see #3238)
  642.  
  643. (Table 3242)
  644. Values for calling QEMM QPI function 1311h:
  645.     AX = 1311h set ???
  646.     BL = zero/nonzero???
  647. Return: CF clear
  648. Note:    certain operations will be performed with interrupts
  649.       (as set by AX=130Ch) enabled rather than disabled if
  650.       called with BL nonzero
  651.  
  652. (Table 3243)
  653. Values for calling QEMM QPI function 1312h:
  654.     AX = 1312h (v6.02) NOP???
  655. Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  656.  
  657. (Table 3244)
  658. Values for calling QEMM QPI function 1400h:
  659.     AX = 1400h initialize DESQview "protection level" support
  660.     ES:DI -> protection level configuration (at least 24 bytes)
  661.         (see #3312)
  662.     BL = highest ??? to return (one less than number of words)
  663. Return: CF clear
  664.     AX = ??? (4204h for v6.00)
  665. Note:    QEMM also sets the protected mode INT 02 and INT 06
  666.       vectors to alternate handlers in certain cases
  667.  
  668. (Table 3245)
  669. Values for calling QEMM QPI function 1401h:
  670.     AX = 1401h turn off DESQview protection level support
  671.         Return: CF clear
  672.             ???
  673.         Notes:    clears the DV critical-section flag address set with
  674.               function 1306h
  675.             QEMM also sets the protected mode INT 02 and INT 06
  676.               vectors to the default handlers if they had been
  677.               revectored by function 1400h
  678.  
  679. (Table 3246)
  680. Values for calling QEMM QPI function 1402h:
  681.     AX = 1402h set protection level???
  682.         BL = protection level???
  683.             00h NOP
  684.             01h ???
  685.             02h ???
  686.             other (03h) ???
  687.         ES:DI -> ???
  688.         Return: CF clear
  689.             ???
  690.         Format of Data structure:
  691.         Offset    Size    Description
  692.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  693.          02h    WORD    segment of ??? (word at X:0124h set to this)
  694.          04h    WORD    number of paragraphs of ???
  695.          06h  3 WORDs    ??? (copied to X:0000h)
  696.          0Ch    WORD    ???
  697.  
  698. (Table 3247)
  699. Values for calling QEMM QPI function 1403h:
  700.     AX = 1403h add ??? to end of list and ??? (execute func 1406h)
  701.         ES:DI -> ??? structure added to end of ??? list
  702.             (at least 31 bytes, DWORD at offset 06h used for
  703.              storing pointer to next struc, WORD at offset 00h
  704.              seems to be a key or index)
  705.         Return: CF clear
  706.  
  707. (Table 3248)
  708. Values for calling QEMM QPI function 1404h:
  709.     AX = 1404h NOP
  710.         Return: CF clear
  711.  
  712. (Table 3249)
  713. Values for calling QEMM QPI function 1405h:
  714.     AX = 1405h remove ??? from ??? list
  715.         BX = key???
  716.         Return: CF clear
  717.  
  718. (Table 3250)
  719. Values for calling QEMM QPI function 1406h:
  720.     AX = 1406h ???
  721.         ???
  722.         Return: CF clear
  723.             ???
  724.         Notes:    this function is a NOP unless protection level 2 or 3
  725.               is active
  726.             when not a NOP, one of the actions is to write-protect
  727.               certain memory pages
  728.  
  729. (Table 3251)
  730. Values for calling QEMM QPI function 1407h:
  731.     AX = 1407h ???
  732.         ???
  733.         Return: CF clear
  734.             ???
  735.         Note:    same as function 1406h, but only does anything if
  736.               protection level 2 is active
  737.  
  738. (Table 3252)
  739. Values for calling QEMM QPI function 1408h:
  740.     AX = 1408h unprotect???
  741.         ???
  742.         Return: CF clear
  743.             ???
  744.  
  745. (Table 3253)
  746. Values for calling QEMM QPI function 1409h:
  747.     AX = 1409h abort program causing protection violation???
  748.         ???
  749.         Return: CF clear
  750.             ???
  751.  
  752. (Table 3254)
  753. Values for calling QEMM QPI function 140Ah:
  754.     AX = 140Ah set ???
  755.         BX = index of ???
  756.         Return: CF clear
  757.             ???
  758.         Notes:    no range checking is performed on BX
  759.             this function is a NOP unless protection level 3 active
  760.  
  761. (Table 3255)
  762. Values for calling QEMM QPI function 140Bh:
  763.     AX = 140Bh get ???
  764.         BX = index of ???
  765.         SI = 0000h
  766.         Return: CF clear
  767.             SI = segment of 256-byte buffer??? or 0000h
  768.         Notes:    no range checking is performed on BX
  769.             this function is a NOP unless protection level 3 active
  770.  
  771. (Table 3256)
  772. Values for calling QEMM QPI function 15h:
  773.     AH = 15h set timer channel 0 virtualization buffer
  774.         ES:BX -> WORD buffer for timer channel 0 divisor
  775.             0000h:0000h to disable virtualization
  776.         Return: CF clear
  777.  
  778. (Table 3257)
  779. Values for calling QEMM v5.00+ QPI function 1600h:
  780.     AX = 1600h get memory access status
  781.         ES:DI -> 256-byte buffer
  782.         Return: ES:DI buffer filled
  783.         Note:    each byte of the buffer indicates the status of a 4K
  784.               page (bit 0 set if read, bit 1 set if written)
  785.  
  786. (Table 3258)
  787. Values for calling QEMM v5.00+ QPI function 1601h:
  788.     AX = 1601h set memory access status
  789.         ES:DI -> 256-byte buffer containing access statuses (see #3257)
  790.  
  791. (Table 3259)
  792. Values for calling QEMM v5.00+ QPI function 17h:
  793.     AH = 17h get memory usage statistics
  794.         ES:DI -> 81-byte buffer for memory statistics (see #3316)
  795.         Return: CF clear
  796.  
  797. (Table 3260)
  798. Values for calling QEMM v5.11+ QPI function 18h:
  799.     AH = 18h check whether conventional memory mapped into address range
  800.         ES:BX = starting address
  801.         CX = number of 4K pages
  802.         Return: CF clear
  803.             AL = 00h one or more pages is remapped
  804.                  01h all pages in range are conventional memory
  805.                 (physical address == virtual address)
  806.  
  807. (Table 3261)
  808. Values for calling QEMM v5.11+ QPI function 19h:
  809.     AH = 19h NOP
  810.         Return: CF set
  811.  
  812. (Table 3262)
  813. Values for calling QEMM v5.11+ "QPI_UntrappedIORead" function:
  814.     AX = 1A00h get byte from I/O port
  815.     DX = port number
  816. Return: CF clear
  817.     BL = port value
  818. Note:    this function was officially documented with the release of QEMM 7.50
  819.  
  820. (Table 3263)
  821. Values for calling QEMM v5.11+ "QPI_UntrappedIOWrite" function:
  822.     AX = 1A01h send byte to I/O port
  823.     BL = value to send
  824.     DX = port number
  825. Return: CF clear
  826. Note:    this function was officially documented with the release of QEMM 7.50
  827.  
  828. (Table 3264)
  829. Values for calling QEMM v5.11+ "QPI_UntrappedIOReadIndexed" function:
  830.     AX = 1A02h
  831.     BH = index value to send
  832.     DX = base port number
  833. Return: CF clear
  834.     BL = value read from I/O port (DX+1)
  835. Note:    this function was officially documented with the release of QEMM 7.50
  836.  
  837. (Table 3265)
  838. Values for calling QEMM v5.11+ "QPI_UntrappedIOWriteIndexed" function:
  839.     AX = 1A03h send bytes to two consecutive I/O ports
  840.     BH = value for first I/O port (DX)
  841.     BL = value for second I/O port (DX+1)
  842.     DX = base port number
  843. Return: CF clear
  844. Note:    this function was officially documented with the release of QEMM 7.50
  845.  
  846. (Table 3266)
  847. Values for calling QEMM v7.03+ "QPI_UntrappedIO" function:
  848.     AX = 1A04h
  849.     BX = value to write to port
  850.     CX = direction and size
  851.         bit 2: output instead of input
  852.         bit 3: word instead of byte
  853.     DX = I/O port to be accessed
  854. Return: CF clear
  855.     BX = value read (if CX indicates read)
  856. Note:    this function was officially documented with the release of QEMM 7.50
  857.  
  858. (Table 3267)
  859. Values for calling QEMM v7.03+ function 1A05h
  860.     AX = 1A05h
  861.     ???
  862. Return: ???
  863.  
  864. (Table 3268)
  865. Values for calling QEMM v7.03+ "QPI_GetIOCallback" function:
  866.     AX = 1A06h
  867. Return: CF clear
  868.     ES:DI -> current I/O callback function (see #3270)
  869. Note:    this function was officially documented with the release of QEMM 7.50
  870.  
  871. (Table 3269)
  872. Values for calling QEMM v7.03+ "QPI_SetIOCallback" function:
  873.     AX = 1A07h
  874.     ES:DI -> new I/O callback function (see #3270)
  875. Return: CF clear
  876. Note:    this function was officially documented with the release of QEMM 7.50
  877.  
  878. (Table 3270)
  879. Values QEMM v7.03+ I/O callback function is called with:
  880.     AL/AX = data to/from trapped port
  881.     CL = I/O direction (00h = IN instruction, else OUT instruction)
  882.     DX = I/O port address
  883. Return: CF clear if port handled by callback function
  884.     CF set if not handled
  885.     all other registers returned to application executing the IN or OUT
  886.       instruction (allowing arbitrary changes to port address, data value,
  887.       etc.)
  888. SeeAlso: #3268,#3269
  889.  
  890. (Table 3271)
  891. Values for calling QEMM v7.03+ "QPI_GetPortTrap" function:
  892.     AX = 1A08h
  893.     DX = I/O port number
  894. Return: CF clear
  895.     BL = trapping state (00h not being trapped, 01h trap installed)
  896. Note:    this function was officially documented with the release of QEMM 7.50
  897.  
  898. (Table 3272)
  899. Values for calling QEMM v7.03+ "QPI_SetPortTrap" function:
  900.     AX = 1A09h
  901.     DX = I/O port number
  902. Return: CF clear
  903. Note:    this function was officially documented with the release of QEMM 7.50
  904.  
  905. (Table 3273)
  906. Values for calling QEMM v7.03+ "QPI_ClearPortTrap" function:
  907.     AX = 1A0Ah
  908.     DX = I/O port number
  909. Return: CF clear
  910. Note:    this function was officially documented with the release of QEMM 7.50
  911.  
  912. (Table 3274)
  913. Values for calling QEMM v5.11+ QPI function 1B00h:
  914.     AX = 1B00h get EMM Import Structure address
  915.     ES:DI -> buffer for EMM import data structure (see #3314)
  916. Return: CF set on error
  917.     CF clear if successful
  918. SeeAlso: INT 21/AX=4402h/SF=01h
  919.  
  920. (Table 3275)
  921. Values for calling QEMM v5.11+ QPI function 1B01h:
  922.     AX = 1B01h disable V86 mode
  923. Return: CF set on error
  924.         (i.e. no Global EMM Import rec. allocated)
  925.     CF clear if successful
  926. Note:    shuts down EMS and initializes Global EMM Import record; this function
  927.       is invoked from the callback supplied by INT 2F/AX=1605h
  928.  
  929. (Table 3276)
  930. Values for calling QEMM v5.11+ QPI function 1B02h:
  931.     AX = 1B02h enable V86 mode
  932. Return: CF set on error
  933.     CF clear if successful
  934. Note:    restarts EMS and frees Global EMM Import record; this function is
  935.       invoked from the callback supplied by INT 2F/AX=1605h
  936.  
  937. (Table 3277)
  938. Values for calling QEMM v5.11+ QPI function 1B03h:
  939.     AX = 1B03h MS Windows initializing
  940.     CX = segment from which Windows init broadcast made???
  941.     DX = Windows startup flags
  942.     DI = Windows version number (major in upper byte)
  943. Return: CF clear if successful
  944.         DS:SI -> V86 mode enable/disable callback
  945.           (see #2321 at INT 2F/AX=1605h)
  946.         ES:BX -> startup info structure (see #2318 at INT 2F/AX=1605h)
  947.     CF set on error (unable to start Windows)
  948. SeeAlso: INT 2F/AX=1605h
  949.  
  950. (Table 3278)
  951. Values for calling QEMM v5.11+ QPI function 1B04h:
  952.     AX = 1B04h MS Windows terminating
  953. Return: CF clear
  954.  
  955. (Table 3279)
  956. Values for calling QEMM v5.11+ QPI function 1B05h:
  957.     AX = 1B05h determine whether program is driver
  958.     DS:DX -> ASCIZ filename
  959. Return: CF clear
  960.     AL = status
  961.         01h if string ends in ".DRV"
  962.         FFh if string ends in "GDI.EXE"
  963.         00h otherwise
  964. Note:    when MS Windows 3.0 standard mode starts, QEMM patches all drivers
  965.       until GDI.EXE is loaded
  966.  
  967. (Table 3280)
  968. Values for calling QEMM v5.11+ QPI function 1B06h:
  969.     AX = 1B06h patch protected-mode check in Windows driver
  970.     CX = length of data pointed at by DS:DX
  971.     DS:DX -> buffer containing Windows driver code
  972. Return: CF clear
  973. Note:    patches all SMSW x/TEST x,1 instruction sequences into MOV x,CS/VERW x
  974.       sequences, which has the effect that the protected-mode check will
  975.       only indicate protected mode in native protected mode and not in V86
  976.       mode
  977.  
  978. (Table 3281)
  979. Values for calling QEMM v5.11+ QPI function 1B07h:
  980.     AX = 1B07h
  981. BUG: QEMM 6.00-7.01 accept this and branch randomly
  982.  
  983. (Table 3282)
  984. Values for calling QEMM v5.11+ QPI function 1Bxxh:
  985.     AX = 1B08h to 1BFFh
  986. Return: CF set
  987.  
  988. (Table 3283)
  989. Values for calling QEMM v5.11+ QPI function 1C00h:
  990.     AX = 1C00h disable IRQ0-7 calldowns
  991. Return: CF clear
  992.  
  993. (Table 3284)
  994. Values for calling QEMM v5.11+ QPI function 1C01h:
  995.     AX = 1C01h set V86-mode IRQ0-7 handlers
  996.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  997. Return: CF clear
  998.  
  999. (Table 3285)
  1000. Values for calling QEMM v5.11+ QPI function 1C02h:
  1001.     AX = 1C02h disable IRQ8-15 handlers
  1002. Return: CF clear
  1003.  
  1004. (Table 3286)
  1005. Values for calling QEMM v5.11+ QPI function 1C03h:
  1006.     AX = 1C03h set V86-mode IRQ8-15 handlers
  1007.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  1008. BUG:    although the jump table only contains four entries, QEMM 6.00 will
  1009.       attempt to use it for any value of AL between 00h and 2Ah, thus
  1010.       branching unpredictably for AL=04h-2Ah; QEMM v7.01 behaves
  1011.       similarly for AL=04h-1Bh
  1012. Note:    when enabled, the appropriate IRQs are reflected back to the specified
  1013.       handlers in virtual-86 mode after the CPU automatically invokes the
  1014.       protected-mode handler inside QEMM
  1015.  
  1016. (Table 3287)
  1017. Values for calling QEMM v7.03+ "QPI_SimulateHWInt" function:
  1018.     AX = 1C04h
  1019.     BX = number of interrupt to simulate
  1020. Return: ???
  1021. Notes:    this function will allow proper simulation of a hardware interrupt
  1022.       under DESQview and DESQview/X, where the correct interrupt handler
  1023.       may be in a different process with a completely different address
  1024.       space
  1025.     this function was officially documented with the release of QEMM v7.50
  1026.  
  1027. (Table 3288)
  1028. Values for calling QEMM v6.0x only QPI function 1D00h:
  1029.     AX = 1D00h switch to pre-Stealth interrupt vector table
  1030. Return: CF clear if supported (QEMM v6.x)
  1031.     CF set if not supported (QEMM v7+)
  1032. Notes:    also switches VGA Save table pointer (0040h:00A8h) and overwrites the
  1033.       vectors currently assigned for use by the two interrupt controllers
  1034.       (see INT 67/AX=DE0Ah) with the vectors for INT 08-0F and 70-77 (to
  1035.       avoid crashing the system).
  1036.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  1037.       set
  1038.  
  1039. (Table 3289)
  1040. Values for calling QEMM v6.0x only QPI function 1D01h:
  1041.     AX = 1D01h restore user interrupt vector table
  1042. Return: CF clear if supported (QEMM v6.x)
  1043.     CF set if not supported (QEMM v7+)
  1044. Notes:    interrupts should be disabled around the AX=1D00h and AX=1D01h calls
  1045.       because QEMM does not modify the memory maps to map in ROM, so
  1046.       an interrupt could be disastrous
  1047.     clears any pending IRQ7 at end of function
  1048.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  1049.       set
  1050.  
  1051. (Table 3290)
  1052. Values for calling QEMM v6.00+ QPI function 1Dxxh:
  1053.     AX = 1D02h to 1DFFh
  1054. Return: CF set
  1055.  
  1056. (Table 3291)
  1057. Values for calling QEMM v6.00+ "QEMM_GET_INFO"/"QPI_GetInfo" function:
  1058.     AX = 1E00h get Stealth configuration
  1059. Return: CF clear
  1060.     BL = memory configuration flags (documented as "reserved") (see #3315)
  1061.     BH = (v7.00+) disk buffer flags
  1062.         bit 0: DISKBUFFRAME buffer instead of DISKBUF buffer
  1063.         bit 1: buffer has already been used
  1064.     CL = stealth type (00h none, 46h Frame, 4Dh Map, 50h Protect)
  1065.     CH = suspend/resume interrupt (00h none)
  1066.     DL = (v7.00+) size of QEMM disk buffer in KB (00h none)
  1067.     DH = reserved (always 00h for v6.00)
  1068.     SI = reserved (always 0000h for v6.00)
  1069.     DI = reserved (always 0000h for v6.00)
  1070. Note:    this function is officially documented
  1071.  
  1072. (Table 3292)
  1073. Values for calling QEMM v6.00+ "QPI_GetStealthCount" function:
  1074.     AX = 1E01h get number of Stealth'ed ROMs
  1075. Return: CF clear
  1076.     BX = number of Stealth'ed ROMs
  1077. Note:    this function is officially documented
  1078.  
  1079. (Table 3293)
  1080. Values for calling QEMM v6.00+ "QPI_GetStealthList" function:
  1081.     AX = 1E02h
  1082.     ES:DI -> buffer for Stealth ROM info (see #3317)
  1083. Return: CF clear
  1084.     BX = number of Stealth'ed ROMs
  1085.     ES:DI buffer filled
  1086. Note:    this function is officially documented
  1087.  
  1088. (Table 3294)
  1089. Values for unimplemented Stealth information functions:
  1090.     AX = 1E03h to 1EFFh
  1091. Return: CF set
  1092.  
  1093.  
  1094. (Table 3295)
  1095. Values for calling QEMM v6.00+ "QEMM_GET_PTE"/"QPI_GetPTE" function:
  1096.     AX = 1F00h get page table entry
  1097.     CX = page number (0000h-010Fh)
  1098. Return: CF clear
  1099.     EDX = page table entry
  1100. Note:    this function is officially documented
  1101.  
  1102. (Table 3296)
  1103. Values for calling QEMM v6.00+ "QEMM_SET_PTE"/"QPI_SetPTE" function:
  1104.     AX = 1F01h set page table entry
  1105.     CX = page number (0000h-010Fh)
  1106.     EDX = new page table entry
  1107. Return: CF clear
  1108. Note:    this function is officially documented
  1109. SeeAlso: #3220
  1110.  
  1111. (Table 3297)
  1112. Values for calling QEMM v6.00+ QPI function 1Fxxh:
  1113.     AX = 1F02h to 1FFFh
  1114. Return: CF set
  1115.  
  1116. (Table 3298)
  1117. Values for calling QEMM v6.00+ "QEMM_GET_VHI_INFO"/"QPI_GetVHIInfo" function:
  1118.     AX = 2000h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
  1119. Return: CF clear
  1120.     BL = flags
  1121.         bit 7: VirtualHDIRQ setting respected
  1122.           (set if Stealth active)
  1123.         bits 6-1 reserved
  1124.         bit 0: VirtualHDIRQ currently enabled
  1125.         (INT 15/AH=90h suppressed when enabled)
  1126. Note:    this function is officially documented
  1127. SeeAlso: #3299
  1128.  
  1129. (Table 3299)
  1130. Values for calling QEMM v6.00+ "QEMM_SET_VHI_INFO"/"QPI_SetVHIInfo" function:
  1131.     AX = 2001h set VirtualHDIRQ state
  1132.     BL bit 0 = new VirtualHDIRQ state
  1133. Return: CF clear
  1134.     BL = old VHI setting (bits 0 and 7, see #3298)
  1135. Note:    this function is officially documented
  1136. SeeAlso: #3298
  1137.  
  1138. (Table 3300)
  1139. Values for calling QEMM v6.00+ QPI function 20xxh:
  1140.     AX = 2002h to 20FFh
  1141. Return: CF set
  1142.  
  1143. (Table 3301)
  1144. Values for calling QEMM v6.00+ "QEMM_COPY_STEALTH_ROMS"/"QPI_CopyStealthRoms":
  1145.     AX = 2100h copy data from Stealthed address space
  1146.     DS:SI -> start address of hidden memory to copy
  1147.     ES:DI -> buffer for copied data
  1148.     ECX = number of bytes to copy
  1149. Return: CF clear if successful
  1150.     CF set on error (no Stealth or DS:SI < C000h:0000h or DS:SI + ECX > 1M)
  1151. Note:    this function was officially documented with the release of QEMM 7.50
  1152.  
  1153. (Table 3302)
  1154. Values for calling QEMM v6.00+ QPI function 21xxh:
  1155.     AX = 2101h to 21FFh
  1156. Return: CF set
  1157.  
  1158. (Table 3303)
  1159. Values for calling QEMM v6.03+ QPI function 2200h:
  1160.     AX = 2200h DESQview/X support -- get ???
  1161. Return: CF clear
  1162.     ES:DI -> ???
  1163.  
  1164. (Table 3304)
  1165. Values for calling QEMM v6.03+ QPI function 2201h:
  1166.     AX = 2201h DESQview/X support -- set ???
  1167.     ES:DI -> ??? or 0000h:0000h
  1168. Return: CF clear if successful
  1169.     CF set on error
  1170.  
  1171. (Table 3305)
  1172. Values for calling QEMM v6.04+ QPI function 2300h:
  1173.     AX = 2300h get ???
  1174.     BX = which ??? to get (must be 0000h for v6.04)
  1175. Return: CF clear if successful
  1176.         ES:DI -> ???
  1177.     CF set on error
  1178.  
  1179. (Table 3306)
  1180. Values for calling QEMM v6.04+ QPI function 2301h:
  1181.     AX = 2301h set ???
  1182.     BX = which ??? to set (must be 0000h for v6.04)
  1183.     ES:DI -> ???
  1184. Return: CF clear if successful
  1185.     CF set on error
  1186.  
  1187. (Table 3307)
  1188. Values for calling QEMM v6.04+ QPI function 2302h:
  1189.     AX = 2302h clear specified ???
  1190.     BX = which ??? to clear (must be 0000h for v6.04)
  1191. Return: CF clear if successful
  1192.     CF set on error
  1193.  
  1194. (Table 3308)
  1195. Values for calling QEMM v6.04+ QPI function 23FFh:
  1196.     AX = 23FFh clear all ???
  1197. Return: CF clear if successful
  1198.     CF set on error
  1199.  
  1200. (Table 3309)
  1201. Values for calling QEMM v6.04+ QPI function 23xxh:
  1202.     AX = 2303h to 23FEh
  1203. Return: CF set
  1204.  
  1205. (Table 3310)
  1206. Values for calling QEMM v7.01+ QPI function 24h:
  1207.     AH = 24h ST-DBL support
  1208.     AL = subfunction
  1209.         00h set ???
  1210.         EDX -> information table (EDX = segment SHL 16 + offset)
  1211.         01h ???
  1212. Return: CF clear if successful
  1213.     CF set on error
  1214.  
  1215. (Table 3311)
  1216. Values for calling QEMM unimplemented QPI functions:
  1217.     AH = 25h to FFh
  1218. Return: CF set
  1219.  
  1220. Format of QEMM protection level configuration:
  1221. Offset    Size    Description    (Table 3312)
  1222.  00h    WORD    segment of 128 breakpoint (INT 3) instructions for use in
  1223.           DESQview protection level 3 interrupt vector checking, or
  1224.           0000h to disable; in pl3, INTs 00-7F are pointed at these
  1225.           breakpoints
  1226.  02h    DWORD    -> array of actual interrupt handler addresses for INT 00-7F
  1227.           when interrupt vectors are pointed at protection level 3
  1228.           breakpoints
  1229.  06h    DWORD    far pointer to ??? region list (see #3313)
  1230.  0Ah    DWORD    far pointer to buffer for returned ???
  1231.  0Eh    DWORD    seg:ofs of function to call on protection violation???
  1232.  12h    WORD    segment of ???
  1233.  14h    DWORD    far pointer to DWORD containing number of paragraphs of
  1234.           ??? for segment at offset 12h
  1235.     ???
  1236.  
  1237. Format of protection level Region List:
  1238. Offset    Size    Description    (Table 3313)
  1239.  00h    WORD    number of PAIRS of pointers to follow
  1240.  02h 2N DWORDs    start/end seg:ofs addresses of ??? regions
  1241. Note:    QEMM converts the segmented addresses into linear addresses in place
  1242.  
  1243. Format of EMM Import structure:
  1244. Offset    Size    Description    (Table 3314)
  1245.  00h    DWORD    physical address of EMM import struct
  1246.  04h    BYTE    major version (v6.00 sets to 01h)
  1247.  05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  1248. SeeAlso: INT 21/AX=4402h/SF=01h
  1249.  
  1250. Bitfields for memory configuration flags:
  1251. Bit(s)    Description    (Table 3315)
  1252.  0    conventional memory sorted
  1253.  1    conventional memory filled
  1254.  2    ???
  1255.  3    ???
  1256.  4    expanded memory is in use
  1257.  5    ???
  1258.  
  1259. Format of QEMM 6.0 memory statistics:
  1260. Offset    Size    Description    (Table 3316)
  1261.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  1262.  01h    DWORD    initial conventional memory in bytes
  1263.  05h    DWORD    initial extended memory in bytes
  1264.  09h    DWORD    initial expanded memory in bytes
  1265.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  1266.  11h    DWORD    Unavailable conventional memory in bytes
  1267.  15h    DWORD    Unavailable extended memory in bytes
  1268.  19h    DWORD    Unavailable expanded memory in bytes
  1269.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  1270.         Add to offset 49h for Total unavailable top/shadow.
  1271.  21h    DWORD    QEMM code size in bytes
  1272.  25h    DWORD    QEMM data size in bytes
  1273.  29h    DWORD    bytes used for TASKS=
  1274.  2Dh    DWORD    DMA buffer size
  1275.  31h    DWORD    bytes used for MAPS=
  1276.  35h    DWORD    bytes of high RAM
  1277.  39h    DWORD    bytes used by mapped ROMs
  1278.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  1279.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  1280.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  1281.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  1282.         Add to offset 1Dh for Total unavailable top/shadow.
  1283.  4Dh    DWORD    conventional memory overhead in bytes
  1284.         (set to 0 by QEMM.COM prior to call)
  1285.  
  1286. Format of Stealth ROM info [array]:
  1287. Offset    Size    Description    (Table 3317)
  1288.  00h    WORD    starting segment of ROM
  1289.  02h    WORD    length of ROM in paragraphs
  1290.  
  1291. Format of QEMM EGA/VGA DAC register virtualization buffer:
  1292. Offset    Size    Description    (Table 3318)
  1293.  00h    BYTE    (temp) current color register number
  1294.  01h    BYTE    (temp) number of bytes written so far for current color reg
  1295.  02h 768 BYTEs    three bytes per color register
  1296. --------m-6740-------------------------------
  1297. INT 67 - LIM EMS - GET MANAGER STATUS
  1298.     AH = 40h
  1299. Return: AH = status (00h,80h,81h,84h) (see #3319)
  1300. Note:    this call can be used only after establishing that the EMS driver is in
  1301.       fact present
  1302. SeeAlso: AH=3Fh,AX=FFA5h,@xxxxh:xxxxh"PMM"
  1303.  
  1304. (Table 3319)
  1305. Values for EMS function status:
  1306.  00h    successful
  1307.  80h    internal error
  1308.  81h    hardware malfunction
  1309.  83h    invalid handle
  1310.  84h    undefined function requested by application
  1311.  85h    no more handles available
  1312.  86h    error in save or restore of mapping context
  1313.  87h    insufficient memory pages in system
  1314.  88h    insufficient memory pages available
  1315.  89h    zero pages requested
  1316.  8Ah    invalid logical page number encountered
  1317.  8Bh    invalid physical page number encountered
  1318.  8Ch    page-mapping hardware state save area is full
  1319.  8Dh    save of mapping context failed
  1320.  8Eh    restore of mapping context failed
  1321.  8Fh    undefined subfunction
  1322.  90h    undefined attribute type
  1323.  91h    feature not supported
  1324.  92h    successful, but a portion of the source region has been overwritten
  1325.  93h    length of source or destination region exceeds length of region
  1326.       allocated to either source or destination handle
  1327.  94h    conventional and expanded memory regions overlap
  1328.  95h    offset within logical page exceeds size of logical page
  1329.  96h    region length exceeds 1M
  1330.  97h    source and destination EMS regions have same handle and overlap
  1331.  98h    memory source or destination type undefined
  1332.  9Ah    specified alternate map register or DMA register set not supported
  1333.  9Bh    all alternate map register or DMA register sets currently allocated
  1334.  9Ch    alternate map register or DMA register sets not supported
  1335.  9Dh    undefined or unallocated alternate map register or DMA register set
  1336.  9Eh    dedicated DMA channels not supported
  1337.  9Fh    specified dedicated DMA channel not supported
  1338.  A0h    no such handle name
  1339.  A1h    a handle found had no name, or duplicate handle name
  1340.  A2h    attempted to wrap around 1M conventional address space
  1341.  A3h    source array corrupted
  1342.  A4h    operating system denied access
  1343. --------m-6741-------------------------------
  1344. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  1345.     AH = 41h
  1346. Return: AH = status (see also AH=40h)
  1347.         00h function successful
  1348.         BX = segment of page frame
  1349. SeeAlso: AH=58h,AH=68h
  1350. --------m-6742-------------------------------
  1351. INT 67 - LIM EMS - GET NUMBER OF PAGES
  1352.     AH = 42h
  1353. Return: AH = status (see also AH=40h)
  1354.         00h function successful
  1355.         BX = number of unallocated pages
  1356.         DX = total number of pages
  1357. BUG:    DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
  1358.       when this call is made; use AH=46h to ensure that EMM386 is ON
  1359.       before making this call
  1360. SeeAlso: INT 2F/AX=2702h
  1361. --------m-6743-------------------------------
  1362. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  1363.     AH = 43h
  1364.     BX = number of logical pages to allocate
  1365. Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see #3319)
  1366.     DX = handle if AH=00h
  1367. SeeAlso: AH=45h
  1368. --------u-674321-----------------------------
  1369. INT 67 - Q87 v4+ - INSTALLATION CHECK
  1370.     AX = 4321h
  1371.     EAX = 87654321h (entire EAX value required)
  1372. Return: EAX = 12345678h if Q87 is installed
  1373. Note:    this call requires that VCPI services be available; if they are not,
  1374.       this call will not be recognized
  1375. BUG:    v4.00-v4.03 will hang on most machines when run under bare DOS with
  1376.       no memory manager, because neither Q87 nor UNLOAD87 checks whether
  1377.       there is a valid INT 67 handler before performing an installation
  1378.       check via INT 67
  1379. SeeAlso: AX=2833h,INT 21/AX=4321h
  1380. --------m-6744-------------------------------
  1381. INT 67 - LIM EMS - MAP MEMORY
  1382.     AH = 44h
  1383.     AL = physical page number (0-3)
  1384.     BX = logical page number
  1385.         or FFFFh to unmap (QEMM)
  1386.     DX = handle
  1387. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see #3319)
  1388. SeeAlso: AH=69h
  1389. --------m-6745-------------------------------
  1390. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  1391.     AH = 45h
  1392.     DX = EMM handle
  1393. Return: AH = status (00h,80h,81h,83h,84h,86h) (see #3319)
  1394. SeeAlso: AH=43h
  1395. --------m-6746-------------------------------
  1396. INT 67 - LIM EMS - GET EMM VERSION
  1397.     AH = 46h
  1398. Return: AH = status (00h,80h,81h,84h) (see #3319)
  1399.     AL = EMM version number if AH=00h
  1400. --------m-6747-------------------------------
  1401. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  1402.     AH = 47h
  1403.     DX = handle
  1404. Return: AH = status (00h,80h,81h,83h,84h,8Ch-8Eh) (see #3319)
  1405. SeeAlso: AH=48h
  1406. --------m-6748-------------------------------
  1407. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  1408.     AH = 48h
  1409.     DX = handle
  1410. Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see #3319)
  1411. SeeAlso: AH=47h
  1412. --------m-6749-------------------------------
  1413. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  1414.     AH = 49h
  1415. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  1416. --------m-674A-------------------------------
  1417. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  1418.     AH = 4Ah
  1419. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  1420. --------m-674B-------------------------------
  1421. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  1422.     AH = 4Bh
  1423. Return: AH = status (00h,80h,81h,83h,84h) (see #3319)
  1424.     BX = number of EMM handles if AH=00h
  1425. --------m-674C-------------------------------
  1426. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  1427.     AH = 4Ch
  1428.     DX = EMM handle
  1429. Return: AH = status (see #2472)
  1430.     BX = number of logical pages if AH=00h
  1431. SeeAlso: AH=4Dh
  1432. --------m-674D-------------------------------
  1433. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  1434.     AH = 4Dh
  1435.     ES:DI -> array to receive information
  1436. Return: AH = status (00h,80h,81h,84h) (see #3319)
  1437.     ---if AH=00h---
  1438.     BX = number of active EMM handles
  1439.     array filled with 2-word entries, consisting of a handle and the
  1440.       number of pages allocated to that handle
  1441. SeeAlso: AH=4Ch
  1442. --------m-674E-------------------------------
  1443. INT 67 - LIM EMS - GET OR SET PAGE MAP
  1444.     AH = 4Eh
  1445.     AL = subfunction
  1446.         00h get mapping registers
  1447.         01h set mapping registers
  1448.         02h get and set mapping registers at once
  1449.         03h get size of page-mapping array
  1450.     DS:SI -> array holding information (AL=01h/02h)
  1451.     ES:DI -> array to receive information (AL=00h/02h)
  1452. Return: AH = status (00h,80h,81h,84h,8Fh,A3h) (see also AH=40h)
  1453.         00h successful
  1454.         AL = bytes in page-mapping array (AL=03h only)
  1455.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  1456. Notes:    this function was designed to be used by multitasking operating systems
  1457.       and should not ordinarily be used by appplication software.
  1458.     MD386 returns the size of the page-mapping array in AX instead of AL
  1459. SeeAlso: AH=4Fh
  1460. --------m-674F-------------------------------
  1461. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  1462.     AH = 4Fh
  1463.     AL = subfunction
  1464.         00h get partial page map
  1465.            DS:SI -> structure containing list of segments whose mapping
  1466.             contexts are to be saved
  1467.            ES:DI -> array to receive page map
  1468.         01h set partial page map
  1469.            DS:SI -> structure containing saved partial page map
  1470.         02h get size of partial page map
  1471.            BX = number of mappable segments in the partial map to be saved
  1472. Return: AH = status (00h,80h,81h,84h,8Bh,8Fh,A3h) (see also AH=40h)
  1473.         8Bh one of the specified segments is not mappable
  1474.         A3h contents of partial page map corrupted or count of mappable
  1475.         segments exceeds total number of mappable segments in system
  1476.     AL = size of partial page map for subfunction 02h
  1477. SeeAlso: AH=4Eh
  1478. --------m-6750-------------------------------
  1479. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  1480.     AH = 50h
  1481.     AL = subfunction
  1482.         00h use physical page numbers
  1483.         01h use segment addresses
  1484.     DX = handle
  1485.     CX = number of entries in array
  1486.     DS:SI -> mapping array (see #3320)
  1487. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #3319)
  1488. SeeAlso: AH=40h
  1489.  
  1490. Format of EMS mapping array entry:
  1491. Offset    Size    Description    (Table 3320)
  1492.  00h    WORD    logical page number or FFFFh to unmap physical page
  1493.  02h    WORD    physical page number or segment address
  1494. --------m-6751-------------------------------
  1495. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  1496.     AH = 51h
  1497.     DX = handle
  1498.     BX = number of pages to be allocated to handle
  1499. Return: AH = status (00h,80h,81h,83h,84h,87h,88h) (see #3321)
  1500.     BX = actual number of pages allocated to handle
  1501.  
  1502. (Table 3321)
  1503. Values for EMS function status:
  1504.  00h    successful
  1505.  80h    internal error
  1506.  81h    hardware malfunction
  1507.  83h    invalid handle
  1508.  84h    undefined function requested
  1509.  87h    more pages requested than present in system
  1510.  88h    more pages requested than currently available
  1511.  8Ah    invalid logical page number encountered
  1512.  8Bh    invalid physical page number encountered
  1513.  8Fh    undefined subfunction
  1514.  90h    undefined attribute type
  1515.  91h    feature not supported
  1516.  A0h    no such handle name
  1517.  A1h    duplicate handle name
  1518. --------m-6752-------------------------------
  1519. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  1520.     AH = 52h
  1521.     AL = subfunction
  1522.         00h get handle attributes
  1523.         Return: AL = attribute
  1524.                 00h handle is volatile
  1525.                 01h handle is nonvolatile
  1526.         01h set handle attributes
  1527.         BL = new attribute
  1528.            00h handle is volatile
  1529.            01h handle is nonvolatile
  1530.         02h get attribute capability
  1531.         Return: AL = attribute capability
  1532.                 00h only volatile handles supported
  1533.                 01h both volatile and non-volatile supported
  1534.     DX = handle
  1535. Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see #3319)
  1536. SeeAlso: AH=53h
  1537. --------m-6753-------------------------------
  1538. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  1539.     AH = 53h
  1540.     AL = subfunction
  1541.         00h get handle name
  1542.            ES:DI -> 8-byte buffer for handle name
  1543.         01h set handle name
  1544.            DS:SI -> 8-byte handle name
  1545.     DX = handle
  1546. Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see #3319)
  1547. SeeAlso: AH=52h
  1548. --------m-6754-------------------------------
  1549. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  1550.     AH = 54h
  1551.     AL = subfunction
  1552.         00h get handle directory
  1553.            ES:DI -> buffer for handle directory (see #3322)
  1554.         01h search for named handle
  1555.            DS:SI -> 8-byte name
  1556.         02h get total number of handles
  1557. Return: AL = number of entries in handle directory (subfunction 00h)
  1558.     DX = value of named handle (subfunction 01h)
  1559.     BX = total number of handles (subfunction 02h)
  1560.     AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also #3321)
  1561.         A1h a handle found had no name
  1562.  
  1563. Format of EMS handle directory entry:
  1564. Offset    Size    Description    (Table 3322)
  1565.  00h    WORD    handle
  1566.  02h  8 BYTEs    handle's name
  1567. --------m-6755-------------------------------
  1568. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  1569.     AH = 55h
  1570.     AL = subfunction
  1571.         00h physical page numbers provided by caller
  1572.         01h segment addresses provided by caller
  1573.     DX = handle
  1574.     DS:SI -> structure containing map and jump address
  1575. Return: (at target address unless error)
  1576.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #3319)
  1577. SeeAlso: AH=56h
  1578. --------m-6756-------------------------------
  1579. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  1580.     AH = 56h
  1581.     AL = subfunction
  1582.         00h physical page numbers provided by caller
  1583.         DX = handle
  1584.         DS:SI -> structure containing page map and call address
  1585.         01h segment addresses provided by caller
  1586.         DX = handle
  1587.         DS:SI -> structure containing page map and call address
  1588.         02h get page map stack space required
  1589.         Return: BX = stack space required
  1590. Return: (if successful, the target address is called.  Use a RETF to return
  1591.      and restore mapping context)
  1592.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #3319)
  1593. SeeAlso: AH=55h
  1594. --------m-6756FF-----------------------------
  1595. INT 67 - RM386 v6.00 - ???
  1596.     AX = 56FFh
  1597.     DS:SI -> ???
  1598.     ???
  1599. Return: ???
  1600. --------m-6757-------------------------------
  1601. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  1602.     AH = 57h
  1603.     AL = subfunction
  1604.         00h move memory region
  1605.         01h exchange memory region
  1606.     DS:SI -> structure describing source and destination (see #3324)
  1607. Return: AH = status (see #3323)
  1608. Note:    source and destination may overlap for a move, in which case the copy
  1609.       direction is chosen such that the destination receives an intact copy
  1610.       of the source region
  1611.  
  1612. (Table 3323)
  1613. Values for EMS function status:
  1614.  00h    successful
  1615.  80h    internal error
  1616.  81h    hardware failure
  1617.  83h    invalid handle
  1618.  84h    undefined function requested
  1619.  8Ah    invalid logical page number encountered
  1620.  8Fh    undefined subfunction
  1621.  92h    successful, but a portion of the source region has been overwritten
  1622.  93h    length of source or destination region exceeds length of region
  1623.       allocated to either source or destination handle
  1624.  94h    conventional and expanded memory regions overlap
  1625.  95h    offset within logical page exceeds size of logical page
  1626.  96h    region length exceeds 1M
  1627.  97h    source and destination EMS regions have same handle and overlap
  1628.  98h    memory source or destination type undefined
  1629.  A2h    attempted to wrap around 1M conventional address space
  1630.  
  1631. Format of EMS copy data:
  1632. Offset    Size    Description    (Table 3324)
  1633.  00h    DWORD    region length in bytes
  1634.  04h    BYTE    source memory type
  1635.         00h conventional
  1636.         01h expanded
  1637.  05h    WORD    source handle (0000h if conventional memory)
  1638.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  1639.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  1640.  0Bh    BYTE    destination memory type
  1641.         00h conventional
  1642.         01h expanded
  1643.  0Ch    WORD    destination handle
  1644.  0Eh    WORD    destination initial offset
  1645.  10h    WORD    destination initial segment or page
  1646. --------m-6758-------------------------------
  1647. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  1648.     AH = 58h
  1649.     AL = subfunction
  1650.         00h get mappable physical address array
  1651.         ES:DI -> buffer to be filled with array (see #3325)
  1652.         01h get number of entries in m.p.a. array
  1653. Return: CX = number of entries in array
  1654.     AH = status (00h,80h,81h,84h,8Fh) (see #3323)
  1655. Note:    the returned array for subfunction 00h is filled in physical segment
  1656.       address order
  1657.  
  1658. Format of EMS mappable physical address entry:
  1659. Offset    Size    Description    (Table 3325)
  1660.  00h    WORD    physical page segment
  1661.  02h    WORD    physical page number
  1662. --------m-675857-----------------------------
  1663. INT 67 U - NETROOM??? - ???
  1664.     AX = 5857h
  1665.     BX = function??? (0057h,0059h,0159h seen)
  1666.     ???
  1667. Return: ???
  1668. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  1669.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  1670.       AX=580xh or AX=5857h/BX=0x59h should be used
  1671. SeeAlso: AX=5BF0h
  1672. --------m-6759-------------------------------
  1673. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  1674.     AH = 59h
  1675.     AL = subfunction
  1676.         00h get hardware configuration array
  1677.         ES:DI -> buffer to be filled with array (see #3326)
  1678.         01h get unallocated raw page count
  1679.         Return: BX = unallocated raw pages
  1680.             DX = total raw pages
  1681. Return: AH = status (see also AH=58h"EMS 4.0")
  1682.         A4h access denied by operating system
  1683. Note:    subfunction 00h is for use by operating systems only, and can be
  1684.       enabled or disabled at any time by the operating system
  1685.  
  1686. Format of EMS hardware configuration array:
  1687. Offset    Size    Description    (Table 3326)
  1688.  00h    WORD    size of raw EMM pages in paragraphs
  1689.  02h    WORD    number of alternate register sets
  1690.  04h    WORD    size of mapping-context save area in bytes
  1691.  06h    WORD    number of register sets assignable to DMA
  1692.  08h    WORD    DMA operation type
  1693.         0000h DMA with alternate register sets
  1694.         0001h only one DMA register set
  1695. --------m-675A-------------------------------
  1696. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  1697.     AH = 5Ah
  1698.     AL = subfunction
  1699.         00h allocate standard pages
  1700.         01h allocate raw pages
  1701.     BX = number of pages to allocate
  1702. Return: DX = handle
  1703.     AH = status (00h,80h,81h,84h,85h,87h,88h,8Fh) (see #3319)
  1704. --------m-675B-------------------------------
  1705. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  1706.     AH = 5Bh
  1707.     AL = subfunction
  1708.         00h get alternate map register set
  1709.         Return: BL = current active alternate map register set number
  1710.             ES:DI -> map register context save area if BL=00h
  1711.         01h set alternate map register set
  1712.         BL = new alternate map register set number
  1713.         ES:DI -> map register context save area if BL=0
  1714.         02h get alternate map save array size
  1715.         Return: DX = array size in bytes
  1716.         03h allocate alternate map register set
  1717.         Return: BL = number of map register set; 00h = not supported
  1718.         04h deallocate alternate map register set
  1719.         BL = number of alternate map register set
  1720. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see #3327)
  1721. Note:    this function is for use by operating systems only, and can be
  1722.       enabled or disabled at any time by the operating system
  1723.  
  1724. (Table 3327)
  1725. Values for EMS function status:
  1726.  00h    successful
  1727.  80h    internal error
  1728.  81h    hardware malfunction
  1729.  84h    undefined function requested
  1730.  8Fh    undefined subfunction
  1731.  9Ah    specified alternate map register or DMA register set not supported
  1732.  9Bh    all alternate map register or DMA register sets currently allocated
  1733.  9Ch    alternate map register or DMA register sets not supported
  1734.  9Dh    undefined or unallocated alternate map register/DMA register set
  1735.  9Eh    dedicated DMA channels not supported
  1736.  9Fh    specified dedicated DMA channel not supported
  1737.  A3h    source array corrupted
  1738.  A4h    operating system denied access
  1739. --------m-675B-------------------------------
  1740. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  1741.     AH = 5Bh
  1742.     AL = subfunction
  1743.         05h allocate DMA register set
  1744.         Return: BL = DMA register set number, 00h if not supported
  1745.         06h enable DMA on alternate map register set
  1746.            BL = DMA register set number
  1747.            DL = DMA channel number
  1748.         07h disable DMA on alternate map register set
  1749.            BL = DMA register set number
  1750.         08h deallocate DMA register set
  1751.            BL = DMA register set number
  1752. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see #3327)
  1753. Note:    this function is for use by operating systems only, and can be
  1754.       enabled or disabled at any time by the operating system
  1755. --------m-675BE0-----------------------------
  1756. INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
  1757.     AX = 5BE0h
  1758.     ES:BX -> memory for which to get linear address
  1759. Return: AH = 00h
  1760.     CX:DX = linear address of physical memory corresponding to ES:BX
  1761. Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
  1762.       MICEMM is a memory manager for some Micronics motherboards
  1763. Note:    this has been superceded by AX=DE06h, which should be used instead
  1764. SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
  1765. --------m-675BE1-----------------------------
  1766. INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
  1767.     AX = 5BE1h
  1768. Return: AH = 00h
  1769.     CX = code and data size in bytes
  1770.     DX:BX = physical address of RM386 code
  1771.     DI:SI = total size of RM386 area including handle tables
  1772.     BP = number of additional pages (high DOS, etc.)
  1773. SeeAlso: AX=5BE0h,AX=5BE2h
  1774. --------m-675BE2-----------------------------
  1775. INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
  1776.     AX = 5BE2h
  1777. Return: DS:SI -> V86-mode table (see #3328)
  1778.     ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
  1779. SeeAlso: AX=5BE0h,AX=5BE1h
  1780.  
  1781. Format of RM386 V86-mode table:
  1782. Offset    Size    Description    (Table 3328)
  1783.  00h    DWORD    original INT 13 vector
  1784.  04h    DWORD    original INT 15 vector
  1785.  08h    DWORD    original INT 19 vector
  1786.  0Ch    DWORD    original INT 21 vector
  1787.  10h    DWORD    original INT 4B vector
  1788.  14h    DWORD    original INT 67 vector
  1789. --------m-675BF0-----------------------------
  1790. INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
  1791.     AX = 5BF0h
  1792. Return: AH = 00h if MICEMM or RM386 present
  1793.         BX = code segment of driver
  1794. Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
  1795.       manager included in Helix Software's Netroom
  1796. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  1797. --------m-675BF1-----------------------------
  1798. INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
  1799.     AX = 5BF1h
  1800.     ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
  1801. Return: AH = 00h
  1802.     ES:BX buffer filled (see #3329)
  1803. Note:    each byte in the buffer specifies the type of a 4K page of memory
  1804. SeeAlso: AX=5BE0h,AX=5BF0h
  1805.  
  1806. (Table 3329)
  1807. Values for MICEMM/RM386 memory type:
  1808.  00h    unused (MICEMM), RAM/available (RM386)
  1809.  02h    DOS extension (XMS UMB)
  1810.  04h    shadowed ROM
  1811.  08h    mappable EMS
  1812.  10h    page frame
  1813.  20h    ROM
  1814.  40h    reserved (video memory, etc)
  1815.  80h    RAM (MICEMM), Windows UMB (RM386)
  1816. --------m-675BF2-----------------------------
  1817. INT 67 - RM386 - GET RM386 INTERNAL DATA
  1818.     AX = 5BF2h
  1819.     CX = size of buffer
  1820.     DS:SI -> buffer for internal data
  1821.     (documentation says ES:BX -> buffer, SI = offset within RM386)
  1822. Return: buffer filled
  1823. Note:    the data returned by this function is release-specific
  1824. SeeAlso: AX=5BF0h
  1825. --------m-675BF3-----------------------------
  1826. INT 67 - RM386 - RETURN TO REAL MODE
  1827.     AX = 5BF3h
  1828. Return: nothing
  1829. Note:    use AX=5DE0h instead of this functin
  1830. SeeAlso: AX=5BF0h,AX=5DE0h
  1831. --------m-675BF4-----------------------------
  1832. INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
  1833.     AX = 5BF4h
  1834. Return: AH = 00h
  1835.     BX = global flags 1 (see #3330)
  1836.     CX = global flags 2 (see #3331)
  1837.     DX = global flags 3 (see #3332)
  1838.     SI = global flags 4 (see #3333)
  1839. SeeAlso: AX=5BF0h
  1840.  
  1841. Bitfields for RM386 global flags 1:
  1842. Bit(s)    Description    (Table 3330)
  1843.  0-3    reserved
  1844.  4    V86 mode
  1845.  5    reserved
  1846.  6    80386 or higher CPU
  1847.  7,8    reserved
  1848.  9    A20 enabled at startup
  1849.  10    "HIGH_IO"
  1850.  11    ROM
  1851.  12    large frame
  1852.  13,14    reserved
  1853.  15    PS/2-style A20 control
  1854.  
  1855. Bitfields for RM386 global flags 2:
  1856. Bit(s)    Description    (Table 3331)
  1857.  0    HMA in use
  1858.  1    XMS present
  1859.  2    using XMS driver memory
  1860.  3    HIGH (NEAT only)
  1861.  4-7    reserved
  1862.  8    NOBKTRAP
  1863.  9    NORESET
  1864.  10    ALTMAP
  1865.  11    NOFRAME
  1866.  12-15    reserved
  1867.  
  1868. Bitfields for RM386 global flags 3:
  1869. Bit(s)    Description    (Table 3332)
  1870.  0    NOTEST
  1871.  1    NOEBDA
  1872.  2    Windows3 support
  1873.  3    system board mouse
  1874.  4    DISKBUF
  1875.  5    EBDALOW
  1876.  6    A20 global enable flag
  1877.  7    A20 flag
  1878.  8    EBDA moved to stub
  1879.  9    VXD file was found
  1880.  10    reserved
  1881.  11    NOBOOTMAP
  1882.  12    AUTO
  1883.  13    PS/2 machine
  1884.  14    Compaq ROM merge active
  1885.  15    NOHMA set
  1886.  
  1887. Bitfields for RM386 global flags 4:
  1888. Bit(s)    Description    (Table 3333)
  1889.  0    "NOV8259" don't virtualize interrupt controller
  1890.  1    NOSCSI
  1891.  2    NOSCAN
  1892.  3    NOTR
  1893.  4    ALTBOOT
  1894.  5    NOCOMPQ
  1895.  6    KB2TRAP
  1896.  7    DESHADOW
  1897.  8    Video 7 VGA detected
  1898.  9    reserved
  1899.  10    NOVGA
  1900.  11    NOPS2
  1901.  12    DEBUG
  1902.  13    NOVKB
  1903.  14,15    reserved
  1904. --------m-675BF5-----------------------------
  1905. INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
  1906.     AX = 5BF5h
  1907. Return: AH = status
  1908.         00h successful
  1909.         BX = current number of allocated EMS handles
  1910.         84h function not available
  1911. SeeAlso: AX=5BF0h
  1912. --------m-675C-------------------------------
  1913. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  1914.     AH = 5Ch
  1915. Return: AH = status (see #3334)
  1916. Note:    when MS-DOS v6.xx EMM386 is loaded and the keyboard driver supports
  1917.       INT 15/AH=4Fh (keyboard intercept) calls, the system may hang
  1918.       instead of booting if this function is called just prior to a jump
  1919.       to F000h:FFF0h
  1920.  
  1921. (Table 3334)
  1922. Values for EMS function status:
  1923.  00h    successful
  1924.  80h    internal error
  1925.  81h    hardware malfunction
  1926.  84h    undefined function requested
  1927. --------m-675D-------------------------------
  1928. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  1929.     AH = 5Dh
  1930.     AL = subfunction
  1931.         00h enable OS Function Set
  1932.         01h disable OS Function Set
  1933.         02h return access key (resets memory manager, returns access key at
  1934.         next invocation)
  1935.     BX,CX = access key returned by first invocation
  1936. Return: BX,CX = access key, returned only on first invocation of function
  1937.     AH = status (see also AH=5Ch)
  1938.         8Fh undefined subfunction
  1939.         A4h operating system denied access
  1940. --------m-675D03-----------------------------
  1941. INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
  1942.     AX = 5D03h
  1943.     ???
  1944. Return: ???
  1945. Program: MD386 is a subset EMS memory manager by Nanosoft specifically
  1946.       designed for use with the MultiDOS Plus multitasker
  1947. SeeAlso: AX=5D04h,AX=5E00h
  1948. --------m-675D04-----------------------------
  1949. INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
  1950.     AX = 5D04h
  1951.     BX = alternate register set number
  1952.     ES:DI -> 1024-byte buffer for map structure
  1953. Return: AH = status (see #3319)
  1954.     buffer filled if AH=00h
  1955. Note:    used for debugging purposes
  1956. SeeAlso: AX=5D05h
  1957. --------m-675D05-----------------------------
  1958. INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
  1959.     AX = 5D05h
  1960.     BX = handle number
  1961.     ES:DI -> 1024-byte buffer for handle table
  1962. Return: AH = status (see #3319)
  1963.     buffer filled if AH=00h
  1964. Note:    used for debugging purposes
  1965. SeeAlso: AX=5D04h
  1966. --------m-675DE0-----------------------------
  1967. INT 67 - RM386 - DISABLE RM386
  1968.     AX = 5DE0h
  1969. Note:    RM386 traps this function on the initial transition to protected
  1970.       mode caused by the INT instruction, which means it can not be
  1971.       overridden simply by hooking the interrupt
  1972. SeeAlso: AX=5DE1h
  1973. --------m-675DE1-----------------------------
  1974. INT 67 - RM386 - ENABLE RM386
  1975.     AX = 5DE1h
  1976. Note:    RM386 traps this function on the initial transition to protected
  1977.       mode caused by the INT instruction, which means it can not be
  1978.       overridden simply by hooking the interrupt
  1979. SeeAlso: AX=5DE0h
  1980. --------m-675DE2-----------------------------
  1981. INT 67 - RM386 - GET PAGE TABLE
  1982.     AX = 5DE2h
  1983.     ES:DI -> 1088-byte buffer for page table
  1984. Return: ES:DI buffer filled
  1985. Note:    RM386 traps this function on the initial transition to protected
  1986.       mode caused by the INT instruction, which means it can not be
  1987.       overridden simply by hooking the interrupt
  1988. SeeAlso: AX=5DE3h
  1989. --------m-675DE3-----------------------------
  1990. INT 67 - RM386 - SET PAGE TABLE
  1991.     AX = 5DE3h
  1992.     ES:DI -> 1088-byte buffer containing page table
  1993. Notes:    only the access bits of the page table are used, the remainder is
  1994.       ignored
  1995.     RM386 traps this function on the initial transition to protected
  1996.       mode caused by the INT instruction, which means it can not be
  1997.       overridden simply by hooking the interrupt
  1998. SeeAlso: AX=5DE2h
  1999. --------m-675DE4-----------------------------
  2000. INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
  2001.     AX = 5DE4h
  2002.     BL = page number
  2003.     BH = access (00h read-only, 01h read-write)
  2004. Note:    RM386 traps this function on the initial transition to protected
  2005.       mode caused by the INT instruction, which means it can not be
  2006.       overridden simply by hooking the interrupt
  2007. --------m-675DE5-----------------------------
  2008. INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
  2009.     AX = 5DE5h
  2010.     EBX = physical page number
  2011.     DX = page number in first megabyte to be remapped (linear-addr SHR 12)
  2012. Return: AH = status
  2013.         00h successful
  2014.         8Bh invalid destination page (not in first megabyte)
  2015. Note:    RM386 traps this function on the initial transition to protected
  2016.       mode caused by the INT instruction, which means it can not be
  2017.       overridden simply by hooking the interrupt
  2018. SeeAlso: AX=5DE6h
  2019. --------m-675DE6-----------------------------
  2020. INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
  2021.     AX = 5DE6h
  2022.     BX = logical page number in 4K pages from beginning of memory for EMS
  2023.           handle
  2024.     CX = segment in first megabyte to be remapped
  2025.     DX = previously-allocated EMS handle
  2026. Return: AH = status
  2027.         00h successful
  2028.         83h invalid handle
  2029.         8Ah invalid logical page (out of handle's range)
  2030.         8Bh invalid destination page (not in first megabyte)
  2031. Note:    RM386 traps this function on the initial transition to protected
  2032.       mode caused by the INT instruction, which means it can not be
  2033.       overridden simply by hooking the interrupt
  2034. SeeAlso: AX=5DE5h
  2035. --------m-675DE7-----------------------------
  2036. INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
  2037.     AX = 5DE7h
  2038.     BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
  2039.     CX = number of pages to set
  2040.     DX = first page number to set (in first megabyte)
  2041. Return: AH = status
  2042.         00h successful
  2043.         8Bh invalid destination page (not in first megabyte)
  2044.         A5h invalid page bits
  2045.         A6h invalid page count (overflows first megabyte)
  2046. Note:    RM386 traps this function on the initial transition to protected
  2047.       mode caused by the INT instruction, which means it can not be
  2048.       overridden simply by hooking the interrupt
  2049. --------m-675DE8-----------------------------
  2050. INT 67 - RM386 - GET PARTIAL PAGE TABLE
  2051.     AX = 5DE8h
  2052.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  2053.     CX = number of page table entries to get
  2054.     ES:DI -> buffer for DWORD page table entries
  2055. Return: AH = status (00h successful, 8Bh invalid page)
  2056. Note:    RM386 traps this function on the initial transition to protected
  2057.       mode caused by the INT instruction, which means it can not be
  2058.       overridden simply by hooking the interrupt
  2059. SeeAlso: AX=5DE9h
  2060. --------m-675DE9-----------------------------
  2061. INT 67 - RM386 - SET PARTIAL PAGE TABLE
  2062.     AX = 5DE9h
  2063.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  2064.     CX = number of page table entries to get
  2065.     DS:SI -> buffer of DWORD page table entries
  2066. Return: AH = status (00h successful, 8Bh invalid destination page)
  2067. Note:    RM386 traps this function on the initial transition to protected
  2068.       mode caused by the INT instruction, which means it can not be
  2069.       overridden simply by hooking the interrupt
  2070. SeeAlso: AX=5DE8h
  2071. --------m-675DEA-----------------------------
  2072. INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
  2073.     AX = 5DEAh
  2074.     BX = function
  2075.         00h globally disable V86-mode trapping
  2076.         01h globally enable V86-mode trapping
  2077.         CL = interrupt to use for trapping
  2078.         02h get I/O trapping state
  2079. Return: AH = status
  2080.         00h successful
  2081.         BX = current trapping state (function 02h)
  2082.             0000h disabled, 0001h enabled
  2083.         CX = interrupt used as trap interrupt (functions 00h and 02h)
  2084. Notes:    RM386 traps this function on the initial transition to protected
  2085.       mode caused by the INT instruction, which means it can not be
  2086.       overridden simply by hooking the interrupt
  2087.     when I/O trapping is enabled and I/O port access occurs, RM386
  2088.       simulates an INT instruction for the specified interrupt; the
  2089.       interrupt handler is responsible for decoding the trapped instruction
  2090.       and performing the appropriate action.  INT 2C/AX=002Dh provides a
  2091.       similar but more-easily used interface.
  2092. SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
  2093. --------m-675DEB-----------------------------
  2094. INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
  2095.     AX = 5DEBh
  2096.     BX = function
  2097.         00h disable V86-mode trapping for specified port
  2098.         01h enable V86-mode trapping for specified port
  2099.         02h get V86-mode trapping state for specified port
  2100.     DX = port for which to enable/disable/query trapping
  2101. Return: AH = status
  2102.         00h successful
  2103.         BX = current trapping state (00h off, 01h on) (function 02)
  2104.         A7h invalid port ID
  2105.         A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
  2106. Notes:    RM386 traps this function on the initial transition to protected
  2107.       mode caused by the INT instruction, which means it can not be
  2108.       overridden simply by hooking the interrupt
  2109. SeeAlso: AX=5DEAh
  2110. --------m-675DFD-----------------------------
  2111. INT 67 U - RM386 v6.00 - ???
  2112.     AX = 5DFDh
  2113.     ???
  2114. Return: ???
  2115. Note:    RM386 traps this function on the initial transition to protected
  2116.       mode caused by the INT instruction, which means it can not be
  2117.       overridden simply by hooking the interrupt
  2118. SeeAlso: AX=5DFEh
  2119. --------m-675DFE-----------------------------
  2120. INT 67 U - RM386 v6.00 - ???
  2121.     AX = 5DFEh
  2122.     ???
  2123. Return: ???
  2124. Note:    RM386 traps this function on the initial transition to protected
  2125.       mode caused by the INT instruction, which means it can not be
  2126.       overridden simply by hooking the interrupt
  2127. SeeAlso: AX=5DFDh
  2128. --------m-675DFF-----------------------------
  2129. INT 67 U - RM386 v6.00 - ???
  2130.     AX = 5DFFh
  2131.     ???
  2132. Return: ???
  2133. Note:    RM386 traps this function on the initial transition to protected
  2134.       mode caused by the INT instruction, which means it can not be
  2135.       overridden simply by hooking the interrupt
  2136. SeeAlso: AX=5DFDh,AX=5DFEh
  2137. --------m-675E00-----------------------------
  2138. INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
  2139.     AX = 5E00h
  2140.     DH = breakpoint number (0-3)
  2141.     DL = breakpoint attributes (used to set DR7)
  2142.     CX:BX = linear address of breakpoint
  2143. SeeAlso: AX=5D03h,AX=5E01h
  2144. --------m-675E01-----------------------------
  2145. INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
  2146.     AX = 5E01h
  2147.     BL = register number (0-3,7)
  2148. Return: CX:BX = value of specified DRx register
  2149. SeeAlso: AX=5E00h
  2150. --------m-675E02-----------------------------
  2151. INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
  2152.     AX = 5E02h
  2153.     CX:BX -> exception handler
  2154. Note:    the specified exception handler is called with a simulated interrupt
  2155.       whenever a debug exception occurs which was caused by a hardware
  2156.       breakpoint set with the debug registers
  2157. SeeAlso: AX=5E04h,AX=5E05h
  2158. --------m-675E03-----------------------------
  2159. INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
  2160.     AX = 5E03h
  2161.     BL = register map set number
  2162.     BH = new state (00h read-only, else read-write)
  2163.     CX = linear page number (linear address SHR 12)
  2164. Note:    setting write protection in map set 0 will cause the setting to become
  2165.       the default for newly-allocated map sets
  2166. --------m-675E04-----------------------------
  2167. INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
  2168.     AX = 5E04h
  2169. Return: BL = debug exception (low byte of DR6 register)
  2170. SeeAlso: AX=5E02h,AX=5E05h
  2171. --------m-675E05-----------------------------
  2172. INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
  2173.     AX = 5E05h
  2174. Note:    may be required when using AX=5E02h for handling instruction
  2175.       breakpoints
  2176. SeeAlso: AX=5E02h,AX=5E04h
  2177. --------m-6760-------------------------------
  2178. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  2179.     AH = 60h
  2180.     ES:DI -> buffer
  2181. Return: AH = status (see also AH=40h)
  2182.     AL = number of entries
  2183.     buffer at ES:DI filled
  2184. --------m-6761-------------------------------
  2185. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  2186.     AH = 61h
  2187.     ???
  2188. Return: ???
  2189. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  2190.       ensuring that the cache accurately reflects what the processor would
  2191.       see without the cache.
  2192. --------m-676100-----------------------------
  2193. INT 67 - EEMS - STB GENERIC ACCELERATOR CARD SUPPORT - INSTALLATION CHECK???
  2194.     AX = 6100h
  2195. Return: AH = status (00h if installed???)
  2196. Note:    STB's RAPIDMAP.SYS EMS driver calls this function and AX=6101h if
  2197.       the signature "GACXXX" is found at offset 0Ah in the INT 67 handler's
  2198.       segment (i.e. a device driver named GACXXX?? has hooked INT 67)
  2199. SeeAlso: AX=6101h,INT 02/SI=0714h
  2200. --------m-676101-----------------------------
  2201. INT 67 - EEMS - STB GENERIC ACCELERATOR CARD SUPPORT - GET ??? ENTRY POINT
  2202.     AX = 6101h
  2203. Return: AH = status
  2204.     ---if AH=00h---
  2205.     ES:BX -> ??? entry point
  2206. SeeAlso: AX=6100h
  2207. --------m-6768-------------------------------
  2208. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  2209.     AH = 68h
  2210.     ES:DI -> buffer
  2211. Return: AH = status (see also AH=40h)
  2212.     AL = number of entries
  2213.     buffer at ES:DI filled
  2214. Note:    equivalent to LIM 4.0 function 58h
  2215. --------m-6769-------------------------------
  2216. INT 67 - EEMS - MAP PAGE INTO FRAME
  2217.     AH = 69h
  2218.     AL = frame number
  2219.     BX = page number
  2220.     DX = handle
  2221. Return: AH = status (see also AH=40h)
  2222. Note:    similar to EMS function 44h
  2223. SeeAlso: AH=44h,AH=50h,AH=6Ah
  2224. --------m-676A-------------------------------
  2225. INT 67 - EEMS - PAGE MAPPING
  2226.     AH = 6Ah
  2227.     AL = subfunction
  2228.         00h save partial page map
  2229.         CH = first page frame
  2230.         CL = number of frames
  2231.         ES:DI -> buffer which is to be filled
  2232.         01h restore partial page map
  2233.         CH = first page frame
  2234.         CL = number of frames
  2235.         DI:SI -> previously saved page map
  2236.         02h save and restore partial page map
  2237.         CH = first page frame
  2238.         CL = number of frames
  2239.         ES:DI = buffer for current page map
  2240.         DI:SI = new page map
  2241.         03h get size of save array
  2242.         CH = first page frame
  2243.         CL = number of frames
  2244.         Return: AL = size of array in bytes
  2245.         04h switch to standard map register setting
  2246.         05h switch to alternate map register setting
  2247.         06h deallocate pages mapped to frames in conventional memory
  2248.         CH = first page frame
  2249.         CL = number of frames
  2250. Return: AH = status (see #3319)
  2251. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  2252.       specified
  2253. SeeAlso: AH=69h
  2254. --------m-676B-------------------------------
  2255. INT 67 - DESQview 2.42-2.53 - BUG
  2256.     AH = 6Bh
  2257. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  2258.       function due to a fencepost error
  2259. --------m-67DD-------------------------------
  2260. INT 67 - Quadtel QMAPS - API
  2261.     AH = DDh
  2262.     AL = function
  2263.     ???
  2264. Return: ???
  2265. Notes:    details are not yet available
  2266.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  2267.       supports this API
  2268. SeeAlso: AH=3Fh,AX=FFA5h
  2269. --------E-67DE00-----------------------------
  2270. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  2271.     AX = DE00h
  2272. Return: AH = status
  2273.         00h VCPI is present
  2274.         BH = major version number
  2275.         BL = minor version number
  2276.         nonzero  VCPI not present
  2277. BUG:    MS Windows 3.00 is reported to "object violently" to this call.
  2278. SeeAlso: INT 2F/AX=1687h
  2279. --------E-67DE01-----------------------------
  2280. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  2281.     AX = DE01h
  2282.     ES:DI -> 4K page table buffer
  2283.     DS:SI -> three descriptor table entries in GDT
  2284.         first becomes code segment descriptor, other two for use by
  2285.           main control program
  2286. Return: AH = 00h successful
  2287.         DI -> first unused page table entry in buffer
  2288.         EBX -> protected mode entry point in code segment (see #3335)
  2289.     AH = nonzero  failed
  2290. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  2291.       AX=DE0Ch (in each case, all other registers as appropriate for
  2292.       the function)
  2293. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  2294.  
  2295. (Table 3335)
  2296. Call QEMM v6.03 protected mode entry point additionally with:
  2297.     AX = DF00h ???
  2298.         ???
  2299.         Return: ???
  2300.     AX = DF01h ???
  2301.         ???
  2302.         Return: ???
  2303. --------E-67DE02-----------------------------
  2304. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  2305.     AX = DE02h
  2306. Return: AH = 00h  successful
  2307.         EDX = physical address of highest 4K memory page
  2308.     AH nonzero: failed
  2309. SeeAlso: AH=3Fh
  2310. --------E-67DE03-----------------------------
  2311. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  2312.     AX = DE03h
  2313. Return: AH = 00h  successful
  2314.         EDX = number of free 4K pages
  2315.     AH nonzero: failed
  2316. Notes:    returns total number of pages available to ALL tasks in system
  2317.     also available in protected mode by calling the protected-mode VCPI
  2318.       entry point (see AX=DE01h,#3335)
  2319. SeeAlso: AX=DE04h
  2320. --------E-67DE04-----------------------------
  2321. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  2322.     AX = DE04h
  2323. Return: AH = 00h successful
  2324.         EDX = physical address of allocated page
  2325.     AH nonzero: failed
  2326. Notes:    the client program is responsible for freeing all memory allocated
  2327.       with this call before terminating
  2328.     also available in protected mode by calling the protected-mode VCPI
  2329.       entry point (see AX=DE01h,#3335)
  2330. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  2331. --------E-67DE05-----------------------------
  2332. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  2333.     AX = DE05h
  2334.     EDX = physical address of 4K page
  2335. Return: AH = status
  2336.         00h successful
  2337.         nonzero failed
  2338. Note:    also available in protected mode by calling the protected-mode VCPI
  2339.       entry point (see AX=DE01h,#3335)
  2340. SeeAlso: AH=3Fh,AX=DE04h
  2341. --------E-67DE06-----------------------------
  2342. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  2343.     AX = DE06h
  2344.     CX = page number (linear address shifted right 12 bits)
  2345. Return: AH = status
  2346.         00h successful
  2347.         EDX = physical address of page
  2348.         nonzero invalid page number (AH = 8Bh recommended)
  2349. SeeAlso: AX=5BE0h
  2350. --------E-67DE07-----------------------------
  2351. INT 67 - Virtual Control Program Interface - READ CR0
  2352.     AX = DE07h
  2353. Return: AH = 00h
  2354.     EBX = value of Control Register 0
  2355. SeeAlso: AH=3Fh,AX=DE07h
  2356. --------E-67DE08-----------------------------
  2357. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  2358.     AX = DE08h
  2359.     ES:DI -> array of 8 DWORDs
  2360. Return: AH = 00h
  2361.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  2362. SeeAlso: AH=3Fh,AX=DE09h
  2363. --------E-67DE09-----------------------------
  2364. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  2365.     AX = DE09h
  2366.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  2367. Return: AH = 00h
  2368. Note:    values for DR4 and DR5 ignored
  2369. SeeAlso: AH=3Fh,AX=DE08h
  2370. --------E-67DE0A-----------------------------
  2371. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  2372.     AX = DE0Ah
  2373. Return: AH = 00h successful
  2374.         BX = first vector used by master 8259 (IRQ0)
  2375.         CX = first vector used by slave 8259 (IRQ8)
  2376.     AH nonzero: failed
  2377. Note:    CX is undefined in systems without a slave 8259
  2378. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  2379. --------E-67DE0B-----------------------------
  2380. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  2381.     AX = DE0Bh
  2382.     BX = first vector used by master 8259
  2383.     CX = first vector used by slave 8259
  2384.     interrupts disabled
  2385. Return: AH = 00h successful
  2386.     AH nonzero: failed
  2387. Notes:    This call merely informs the server that the client has changed the
  2388.       interrupt mappings.  The client may not change the mappings if they
  2389.       have already been changed by the server or another client, and is
  2390.       responsible for restoring the original mappings before terminating.
  2391. SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
  2392. --------E-67DE0C-----------------------------
  2393. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  2394.     AX = DE0Ch
  2395.     ESI = linear address in first megabyte of values for system
  2396.           registers (see #3336)
  2397.     interrupts disabled
  2398. Return: interrupts disabled
  2399.     GDTR, IDTR, LDTR, TR loaded
  2400.     SS:ESP must have at least 16 bytes space, and the entry point is
  2401.           required to set up a new stack before enabling interrupts
  2402.     EAX, ESI, DS, ES, FS, GS destroyed
  2403. Note:    in protected mode, calling the protected-mode VCPI entry point with
  2404.       AX = DE0Ch
  2405.       DS = segment selector mapping entire linear address space obtained
  2406.           via AX=DE01h
  2407.       SS:ESP in first megabyte of linear memory
  2408.       STACK:QWORD  return address from FAR call to 32-bit segment
  2409.         DWORD  EIP
  2410.         DWORD  CS
  2411.         DWORD  reserved for EFLAGS
  2412.         DWORD  ESP
  2413.         DWORD  SS
  2414.         DWORD  ES
  2415.         DWORD  DS
  2416.         DWORD  FS
  2417.         DWORD  GS
  2418.       and interrupts disabled, will switch to virtual86 mode with
  2419.         interrupts disabled, all segment registers loaded, and EAX
  2420.         destroyed.
  2421. SeeAlso: AH=3Fh,INT 15/AH=89h,INT D4/AH=10h
  2422.  
  2423. Format of system register values for switch to protected mode:
  2424. Offset    Size    Description    (Table 3336)
  2425.  00h    DWORD    value for CR3
  2426.  04h    DWORD    linear address in first megabyte of value for GDTR
  2427.  08h    DWORD    linear address in first megabyte of value for IDTR
  2428.  0Ch    WORD    value for LDTR
  2429.  0Eh    WORD    value for TR
  2430.  10h    PWORD    CS:EIP of protected mode entry-point
  2431. --------m-67DE0F-----------------------------
  2432. INT 67 - Netroom3 - ???
  2433.     AX = DE0Fh
  2434.     ???
  2435. Return: ???
  2436. Note:    called by Netroom's DPMI.EXE
  2437. --------m-67EF-------------------------------
  2438. INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
  2439.     AH = EFh
  2440.     AL = function (00h-12h,80h-8Fh)
  2441.     other register as appropriate for XMS function
  2442. Return: varies by function (see INT 2F/AX=4310h"XMS")
  2443. Note:    these functions appear to be equivalent to the XMS functions with the
  2444.       same numbers
  2445. SeeAlso: AX=5DFFh"RM386",INT 2F/AX=4310h"XMS"
  2446. --------m-67FFA5-----------------------------
  2447. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  2448.     AX = FFA5h
  2449. Return: AX = 845Ah/84A5h if loaded
  2450.         BX:CX -> API entry point (see #3337)
  2451. Notes:    this call is available even if EMM386 is not providing EMS
  2452.     the returned AX is 845Ah inside of MSWindows, 84A5h under bare DOS
  2453.     if no other program has hooked INT 67, an alternate installation
  2454.       check is to test for the string
  2455.       "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  2456.       handler's segment; the word immediately preceding this string
  2457.       contains the offset of the API entry point
  2458. SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
  2459.  
  2460. (Table 3337)
  2461. Call EMM386.EXE API entry point with:
  2462.     AH = 00h get memory manager's status
  2463.         Return: AH = status
  2464.             bit 0: not active (OFF)
  2465.             bit 1: in "Auto" mode
  2466.     AH = 01h set memory manager's state
  2467.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  2468.     AH = 02h Weitek coprocessor support
  2469.         AL = subfunction
  2470.         00h get Weitek support state
  2471.             Return: AL = status
  2472.                 bit 0: Weitek coprocessor is present
  2473.                 bit 1: Weitek support is enabled
  2474.         01h turn on Weitek support
  2475.         02h turn off Weitek support
  2476.      --- v4.20-4.41 only ---
  2477.     AH = 03h Windows support???
  2478.         AL = subfunction (00h, 01h)
  2479.     AH = 04h print copyright notice to standard output
  2480.          (using INT 21/AH=09h)
  2481.     AH = 05h print available report
  2482.          (the one shown when running EMM386 from the DOS prompt)
  2483. SeeAlso: #1200 at INT 21/AX=4402h/SF=02h,#2304 at INT 2F/AX=12FFh/BX=0106h
  2484. --------m-67FFA5BX4345-----------------------
  2485. INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
  2486.     AX = FFA5h
  2487.     BX = 4345h ("CE")
  2488.     DX = subfunction
  2489.         0000h unshadow video ROM???
  2490.         0001h shadow video ROM???
  2491.         0002h map pages
  2492.         CX = number of pages (00h=one)
  2493.         ESI = linear address of first page to map into address space
  2494.         EDI = linear starting address at which pages are to be visible
  2495.         0003h get ???
  2496.         Return: DX = ??? (0-2)
  2497.         0004h BUG: crashes system due to fencepost error
  2498. Return: AH = 84h
  2499.     AL = status (84h = error, FFh = success)
  2500. Note:    if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
  2501.       Microsoft's EMM386 (see AX=FFA5h"EMM386")
  2502. SeeAlso: AX=FFA5h"EMM386",#1200 at INT 21/AX=4402h/SF=02h,#3337
  2503. --------I-68---------------------------------
  2504. INT 68 - Sangoma CCPOP 3270 resident module
  2505. SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
  2506. --------N-68---------------------------------
  2507. INT 68 - Novell NetWare LU6.2
  2508. InstallCheck:    test for the signature string "APPC/PC" nine bytes before the
  2509.       interrupt handler
  2510. SeeAlso: AH=01h/SF=1B00h,AH=FAh
  2511. --------h-68---------------------------------
  2512. INT 68 C - HP Vectra AT - IRQ16 - 8041 SERVICE REQUEST
  2513. SeeAlso: INT 08"IRQ0",INT 69"HP Vectra",INT 6F/AH=00h"HP"
  2514. --------N-6801--SF1B00-----------------------
  2515. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DISPLAY
  2516.     AH = 01h subfn 1B00h
  2517.     DS:DX -> control block (see #3338)
  2518. Return: control block updated
  2519. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2B00h,INT 68"Novell"
  2520.  
  2521. Format of APPC/PC "DISPLAY" control block:
  2522. Offset    Size    Description    (Table 3338)
  2523.  00h 12 BYTEs    reserved
  2524.  0Ch    WORD    1B00h (verb "DISPLAY")
  2525.  0Eh  6 BYTEs    00h
  2526.  14h    DWORD    (big-endian) return code (see #3339)
  2527.  18h    WORD    00h
  2528.  1Ah  8 BYTEs    (big-endian) logical unit ID
  2529.  22h  8 BYTEs    (big-endian) partner logical unit name
  2530.  2Ah  8 BYTEs    (big-endian) mode name
  2531.  32h    BYTE    logical unit session limit
  2532.  33h    BYTE    partner logical unit session limit
  2533.  34h    BYTE    node maximum negotiable session limit
  2534.  35h    BYTE    current session limit
  2535.  36h    BYTE    minimum negotiated winner limit
  2536.  37h    BYTE    maximum negotiated loser limit
  2537.  38h    BYTE    active session count
  2538.  39h    BYTE    active CONWINNER session count
  2539.  3Ah    BYTE    active CONLOSER session count
  2540.  3Bh    BYTE    session termination count
  2541.  3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
  2542.         bit 6: SESSION_TERMINATION_SOURCE_DRAIN
  2543.  
  2544. (Table 3339)
  2545. Values for APPC/PC return code:
  2546.  0000h    successful
  2547.  0001h    BAD_TP_ID
  2548.  0002h    BAD_CONV_ID
  2549.  0003h    bad logical unit ID
  2550.  0008h    no physical unit attached
  2551.  0110h    bad state
  2552.  01B1h    BAD_PART_LUNAME
  2553.  01B2h    bad mode name
  2554.  0201h    physical unit already active
  2555.  0211h    logical unit already active
  2556.  0212h    BAD_PART_SESS
  2557.  0213h    BAD_RU_SIZES
  2558.  0214h    BAD_MODE_SESS
  2559.  0216h    BAD_PACING_CNT
  2560.  0219h    EXTREME_RUS
  2561.  021Ah    SNASVCMG_1
  2562.  0223h    SSCP_CONNECTED_LU
  2563.  0230h    invalid change
  2564.  0243h    too many TPs
  2565.  0272h    adapter close failure
  2566.  0281h    GET_ALLOC_BAD_TYPE
  2567.  0282h    unsuccessful
  2568.  0283h    DLC failure
  2569.  0284h    unrecognized DLC
  2570.  0286h    duplicate DLC
  2571.  0301h    SSCP_PU_SESSION_NOT_ACTIVE
  2572.  0302h    data exceeds RU size
  2573.  0401h    invalid direction
  2574.  0402h    invalid type
  2575.  0403h    segment overlap
  2576.  0404h    invalid first character
  2577.  0405h    table error
  2578.  0406h    conversion error
  2579.  F0010000h    APPC disabled
  2580.  F0020000h    APPC busy
  2581.  F0030000h    APPC abended
  2582.  F0040000h    incomplete
  2583. --------N-6801--SF2000-----------------------
  2584. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH PHYSICAL UNIT
  2585.     AH = 01h subfn 2000h
  2586.     DS:DX -> control block (see #3340)
  2587. Return: control block updated
  2588. SeeAlso: AH=01h/SF=2100h,AH=01h/SF=2B00h
  2589.  
  2590. Format of APPC/PC "Attach Physical Unit" control block:
  2591. Offset    Size    Description    (Table 3340)
  2592.  00h 12 BYTEs    reserved
  2593.  0Ch    WORD    2000h (verb "Attach Physical Unit")
  2594.  0Eh  6 BYTEs    00h
  2595.  14h    DWORD    (big-endian) return code (see #3339)
  2596.  18h    WORD    00h
  2597.  1Ah    BYTE    version
  2598.  1Bh    BYTE    release
  2599.  1Ch  8 BYTEs    (big-endian) net name
  2600.  24h  8 BYTEs    (big-endian) physical unit name
  2601.  2Ch  8 BYTEs    00h
  2602.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  2603.         (see also AH=01h/SF=2100h)
  2604.  38h    DWORD    00h
  2605.  3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
  2606.         01h RETURN_CONTROL: INCOMPLETE
  2607. --------N-6801--SF2100-----------------------
  2608. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH LOGICAL UNIT
  2609.     AH = 01h subfn 2100h
  2610.     DS:DX -> control block (see #3341)
  2611. Return: control block updated
  2612. SeeAlso: #3344,#3345,#3347,AH=01h/SF=2000h,AH=01h/SF=2200h,AH=01h/SF=2B00h
  2613.  
  2614. Format of APPC/PC "Attach Logical Unit" control block:
  2615. Offset    Size    Description    (Table 3341)
  2616.  00h 12 BYTEs    reserved
  2617.  0Ch    WORD    2100h (verb "Attach Logical Unit")
  2618.  0Eh  6 BYTEs    00h
  2619.  14h    DWORD    (big-endian) return code (see #3339)
  2620.  18h    WORD    70  offset to partner logical unit record
  2621.  1Ah  8 BYTEs    (big-endian) logical unit name
  2622.  22h  8 BYTEs    (big-endian) logical unit ID
  2623.  2Ah    BYTE    logical unit local address
  2624.  2Bh    BYTE    logical unit session limit
  2625.  2Ch    DWORD    pointer to CREATE_TP_EXIT routine,
  2626.         FFFFFFFFh = reject incoming ALLOCATEs
  2627.         00000000h = queue ALLOCATEs
  2628.  30h    DWORD    00h
  2629.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  2630.  38h    DWORD    00h
  2631.  3Ch    BYTE    maximum TPs
  2632.  3Dh    BYTE    queue depth
  2633.  3Eh    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
  2634.  42h    DWORD    00h
  2635.  46h    WORD    total length of partner records
  2636.  48h    var    array of partner logical unit records (see #3342)
  2637. SeeAlso: #3344,#3345,#3347
  2638.  
  2639. Format of APPC/PC partner logical unit record:
  2640. Offset    Size    Description    (Table 3342)
  2641.  00h    WORD    length of this partner logical unit record
  2642.  02h    WORD    42  offset to mode records
  2643.  04h  8 BYTEs    (big-endian) partner logical unit name
  2644.  0Ch    BYTE    partner logical unit security capabilities
  2645.         bit 7: already verified
  2646.         bit 6: conversation level security
  2647.         bit 5: session level security
  2648.  0Dh    BYTE    partner logical unit session limit
  2649.  0Eh    WORD    partner logical unit maximum MC_SEND_LL
  2650.  10h  8 BYTEs    (big-endian) partner logical unit DLC name
  2651.  18h    BYTE    partner logical unit adapter number
  2652.  19h 17 BYTEs    (counted string) partner logical unit adapter address
  2653.  2Ah    WORD    total length of mode records
  2654.  2Ch 16N BYTEs    array of mode records (see #3343)
  2655.  
  2656. Format of mode record:
  2657. Offset    Size    Description    (Table 3343)
  2658.  00h    WORD    16  length of this mode record
  2659.  02h  8 BYTEs    (big-endian) mode name
  2660.  0Ah    WORD    RU_SIZE high bound
  2661.  0Ch    WORD    RU_SIZE low bound
  2662.  0Eh    BYTE    mode maximum negotiable session limit
  2663.  0Fh    BYTE    pacing size for receive
  2664.  
  2665. Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
  2666. pointers are called by pushing the DWORD pointer to the verb on the stack and
  2667. then performing a FAR call.
  2668.  
  2669. Format of ACCESS_LU_LU_PW verb:
  2670. Offset    Size    Description    (Table 3344)
  2671.  00h 12 BYTEs    reserved
  2672.  0Ch    WORD    1900h (verb "ACCESS_LU_LU_PW")
  2673.  0Eh  8 BYTEs    (big-endian) logical unit ID
  2674.  16h  8 BYTEs    (big-endian) logical unit name
  2675.  1Eh  8 BYTEs    (big-endian) partner logical unit name
  2676.  26h 17 BYTEs    (counted string) partner fully qualified logical unit name
  2677.  37h    BYTE    password available (0=no, 1=yes)
  2678.  38h  8 BYTEs    password
  2679. SeeAlso: #3341,#3345,#3347
  2680.  
  2681. Format of CREATE_TP verb:
  2682. Offset    Size    Description    (Table 3345)
  2683.  00h 12 BYTEs    reserved
  2684.  0Ch    WORD    2300h (verb "CREATE_TP")
  2685.  0Eh  6 BYTEs    00h
  2686.  14h    DWORD    (big-endian) sense code (see #3346)
  2687.  18h  8 BYTEs    (big-endian) TP ID
  2688.  20h  8 BYTEs    (big-endian) logical unit ID
  2689.  28h    DWORD    (big-endian) conversation ID
  2690.  2Ch    BYTE    0 basic conversation, 1 mapped conversation
  2691.  2Dh    BYTE    0 no sync level, 1 confirm
  2692.  2Eh    BYTE    reserved
  2693.  2Fh 65 BYTEs    (counted string) transaction program name
  2694.  70h  6 BYTEs    00h
  2695.  76h    WORD    length of ERROR_LOG_DATA to return
  2696.  78h    DWORD    pointer to ERROR_LOG_DATA buffer
  2697.  7Ch  8 BYTEs    (big-endian) partner logical unit name
  2698.  84h 18 BYTEs    (counted string) partner fully qualified logical unit name
  2699.  96h  8 BYTEs    (big-endian) mode name
  2700.  9Eh 12 BYTEs    00h
  2701.  AAh 11 BYTEs    (counted string) password
  2702.  B5h 11 BYTEs    (counted string) user ID
  2703.  C0h    BYTE    0 verification should be performed
  2704.         1 already verified
  2705. SeeAlso: #3344,#3347
  2706.  
  2707. (Table 3346)
  2708. Values for APPC/PC sense code:
  2709.  00000000h    Ok
  2710.  080F6051h    SECURITY_NOT_VALID
  2711.  084B6031h    TP_NOT_AVAIL_RETRY
  2712.  084C0000h    TP_NOT_AVAIL_NO_RETRY
  2713.  10086021h    TP_NAME_NOT_RECOGNIZED
  2714.  10086034h    CONVERSATION_TYPE_MISMATCH
  2715.  10086041h    SYNC_LEVEL_NOT_SUPPORTED
  2716.  
  2717. Format of SYSLOG verb:
  2718. Offset    Size    Description    (Table 3347)
  2719.  00h 12 BYTEs    reserved
  2720.  0Ch    WORD    2600h (verb "SYSLOG")
  2721.  0Eh 10 BYTEs    00h
  2722.  18h    WORD    (big-endian) type
  2723.  1Ah    DWORD    (big-endian) subtype
  2724.  1Eh    DWORD    pointer to ADDITIONAL_INFO
  2725.  22h    DWORD    (big-endian) conversation ID
  2726.  26h  8 BYTEs    (big-endian) TP ID
  2727.  2Eh  8 BYTEs    (big-endian) physical unit or logical unit name
  2728.  36h    WORD    length of data
  2729.  38h    DWORD    pointer to data
  2730.  3Ch    BYTE    00h
  2731. SeeAlso: #3344,#3345
  2732. --------N-6801--SF2200-----------------------
  2733. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH LOGICAL UNIT
  2734.     AH = 01h subfn 2200h
  2735.     DS:DX -> control block (see #3348)
  2736. Return: control block updated
  2737. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2700h
  2738.  
  2739. Format of APPC/PC "Detach Logical Unit" control block:
  2740. Offset    Size    Description    (Table 3348)
  2741.  00h 12 BYTEs    reserved
  2742.  0Ch    WORD    2200h (verb "Detach Logical Unit")
  2743.  0Eh  6 BYTEs    00h
  2744.  14h    DWORD    (big-endian) return code (see #3339)
  2745.  18h  8 BYTEs    (big-endian) logical unit ID
  2746.  20h    BYTE    00h
  2747. --------N-6801--SF2700-----------------------
  2748. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH PHYSICAL UNIT
  2749.     AH = 01h subfn 2700h
  2750.     DS:DX -> control block (see #3349)
  2751. Return: control block updated
  2752. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2200h
  2753.  
  2754. Format of APPC/PC "Detach Physical Unit" control block:
  2755. Offset    Size    Description    (Table 3349)
  2756.  00h 12 BYTEs    reserved
  2757.  0Ch    WORD    2700h (verb "Detach Physical Unit")
  2758.  0Eh  6 BYTEs    00h
  2759.  14h    DWORD    (big-endian) return code (see #3339)
  2760.  18h    BYTE    00h  type: hard
  2761.         01h  type: soft
  2762. --------N-6801--SF2B00-----------------------
  2763. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ACTIVATE DLC
  2764.     AH = 01h subfn 2B00h
  2765.     DS:DX -> control block (see #3350)
  2766. Return: control block updated
  2767. SeeAlso: AH=01h/SF=1B00h,AH=01h/SF=2000h
  2768.  
  2769. Format of APPC/PC "Activate DLC" control block:
  2770. Offset    Size    Description    (Table 3350)
  2771.  00h 12 BYTEs    reserved
  2772.  0Ch    WORD    2B00h (verb "Activate DLC")
  2773.  0Eh  6 BYTEs    00h
  2774.  14h    DWORD    (big-endian) return code (see #3339)
  2775.  18h  8 BYTEs    (big-endian) DLC name
  2776.  20h    BYTE    adapter number
  2777. --------N-6802--SF0100-----------------------
  2778. INT 68 - APPC/PC - CONNECTION CONTROL - ALLOCATE
  2779.     AH = 02h subfn 0100h
  2780.     DS:DX -> control block (see #3351)
  2781. Return: control block updated
  2782. SeeAlso: AH=02h/SF=0500h
  2783.  
  2784. Format of APPC/PC "Allocate" control block:
  2785. Offset    Size    Description    (Table 3351)
  2786.  00h 12 BYTEs    reserved
  2787.  0Ch    WORD    0100h (verb "Allocate" or "MC_Allocate")
  2788.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2789.         0 if basic verb
  2790.  0Fh  5 BYTEs    reserved (0)
  2791.  14h    WORD    (big-endian) primary return code (see #3352)
  2792.  16h    DWORD    (big-endian) error code (see #3353)
  2793.  1Ah  8 BYTEs    (big-endian) TP_ID
  2794.  22h    DWORD    (big-endian) conversation ID
  2795.  26h    BYTE    (MC_Allocate only) conversation type
  2796.         0 basic conversation
  2797.         1 mapped conversation
  2798.  27h    BYTE    SYNC_LEVEL (00h none, 01h confirm)
  2799.  28h    WORD    0000h
  2800.  2Ah    BYTE    RETURN_CONTROL
  2801.         00h when session allocated
  2802.         01h immediate
  2803.         02h when session free
  2804.  2Bh  8 BYTEs    00h
  2805.  33h  8 BYTEs    (big-endian) partner logical unit name
  2806.  3Bh  8 BYTEs    (big-endian) mode name
  2807.  43h 65 BYTEs    (counted string) TP name
  2808.  84h    BYTE    security (00h none, 01h same, 02h pgm)
  2809.  85h 11 BYTEs    00h
  2810.  90h 11 BYTEs    (counted string) password
  2811.  9Bh 11 BYTEs    (counted string) user ID
  2812.  A6h    WORD    PIP_DATA length
  2813.  A8h    DWORD    pointer to PIP_DATA
  2814.  
  2815. (Table 3352)
  2816. Values for APPC/PC primary return code:
  2817.  0000h    successful
  2818.  0001h    parameter check
  2819.  0002h    state check
  2820.  0003h    allocation error
  2821.  0005h    deallocate abended
  2822.  0006h    deallocate abended program
  2823.  0007h    deallocate abended SVC
  2824.  0008h    deallocate abended timer
  2825.  0009h    deallocate normal return
  2826.  000Ah    data posting blocked
  2827.  000Bh    posting not active
  2828.  000Ch    PROG_ERROR_NO_TRUNC
  2829.  000Dh    PROG_ERROR_TRUNC
  2830.  000Eh    PROG_ERROR_PURGING
  2831.  000Fh    CONV_FAILURE_RETRY
  2832.  0010h    CONV_FAILURE_NO_RETRY
  2833.  0011h    SVC_ERROR_NO_TRUNC
  2834.  0012h    SVC_ERROR_TRUNC
  2835.  0013h    SVC_ERROR_PURGING
  2836.  0014h    unsuccessful
  2837.  0018h    CNOS partner logical unit reject
  2838.  0019h    conversation type mixed
  2839.  F001h    APPC disabled
  2840.  F002h    APPC busy
  2841.  F003h    APPC abended
  2842.  F004h    incomplete
  2843.  
  2844. (Table 3353)
  2845. Values for APPC/PC error code:
  2846.  0001h    bad TP ID
  2847.  0002h    bad conversation ID
  2848.  0004h    allocation error, no retry
  2849.  0005h    allocation error, retry
  2850.  0006h    data area crosses segment boundary
  2851.  0010h    bad TPN length
  2852.  0011h    bad CONV length
  2853.  0012h    bad SYNC level
  2854.  0013h    bad security selection
  2855.  0014h    bad return control
  2856.  0015h    SEC_TOKENS too big
  2857.  0016h    PIP_LEN incorrect
  2858.  0017h    no use of SNASVCMG
  2859.  0018h    unknown partner mode
  2860.  0031h    confirm: SYNC_NONE
  2861.  0032h    confirm: bad state
  2862.  0033h    confirm: NOT_LL_BDY
  2863.  0041h    confirmed: bad state
  2864.  0051h    deallocate: bad type
  2865.  0052h    deallocate: flush bad state
  2866.  0053h    deallocate: confirm bad state
  2867.  0055h    deallocate: NOT_LL_BDY
  2868.  0057h    deallocate: log LL_WRONG
  2869.  0061h    flush: not send state
  2870.  0091h    post on receipt: invalid length
  2871.  0092h    post on receipt: not in receive state
  2872.  0093h    post on receipt: bad fill
  2873.  00A1h    prepare to receive:invalid type
  2874.  00A2h    prepare to receive: unfinished LL
  2875.  00A3h    prepare to receive: not in send state
  2876.  00B1h    receive and wait: bad state
  2877.  00B2h    receive and wait: NOT_LL_BDY
  2878.  00B5h    receive and wait: bad fill
  2879.  00C1h    receive immediate: not in receive state
  2880.  00C4h    receive immediate: bad fill
  2881.  00E1h    request to send: not in receive state
  2882.  00F1h    send data: bad LL
  2883.  00F2h    send data: not in send state
  2884.  0102h    send error: log LL wrong
  2885.  0103h    send error: bad type
  2886.  0121h    test: invalid type
  2887.  0122h    test: not in receive state
  2888. --------N-6802--SF0300-----------------------
  2889. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRM
  2890.     AH = 02h subfn 0300h
  2891.     DS:DX -> control block (see #3354)
  2892. Return: control block updated
  2893. SeeAlso: AH=02h/SF=0400h
  2894.  
  2895. Format of APPC/PC "Confirm" control block:
  2896. Offset    Size    Description    (Table 3354)
  2897.  00h 12 BYTEs    reserved
  2898.  0Ch    WORD    0300h (verb "Confirm" or "MC_Confirm")
  2899.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2900.         0 if basic verb
  2901.  0Fh  5 BYTEs    reserved (0)
  2902.  14h    WORD    (big-endian) primary return code (see #3352)
  2903.  16h    DWORD    (big-endian) error code (see #3353)
  2904.  1Ah  8 BYTEs    (big-endian) TP_ID
  2905.  22h    DWORD    (big-endian) conversation ID
  2906.  26h    BYTE    request to send received (0=no, 1=yes)
  2907. --------N-6802--SF0400-----------------------
  2908. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRMED
  2909.     AH = 02h subfn 0400h
  2910.     DS:DX -> control block (see #3355)
  2911. Return: control block updated
  2912. SeeAlso: AH=02h/SF=0300h
  2913.  
  2914. Format of APPC/PC "Confirmed" control block:
  2915. Offset    Size    Description    (Table 3355)
  2916.  00h 12 BYTEs    reserved
  2917.  0Ch    WORD    0400h (verb "Confirmed" or "MC_Confirmed")
  2918.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2919.         0 if basic verb
  2920.  0Fh  5 BYTEs    reserved (0)
  2921.  14h    WORD    (big-endian) primary return code (see #3352)
  2922.  16h    DWORD    (big-endian) error code (see #3353)
  2923.  1Ah  8 BYTEs    (big-endian) TP_ID
  2924.  22h    DWORD    (big-endian) conversation ID
  2925. --------N-6802--SF0500-----------------------
  2926. INT 68 - APPC/PC - CONNECTION CONTROL - DEALLOCATE
  2927.     AH = 02h subfn 0500h
  2928.     DS:DX -> control block (see #3356)
  2929. Return: control block updated
  2930. SeeAlso: AH=02h/SF=0100h,AH=02h/SF=0300h
  2931.  
  2932. Format of APPC/PC "Deallocate" control block:
  2933. Offset    Size    Description    (Table 3356)
  2934.  00h 12 BYTEs    reserved
  2935.  0Ch    WORD    0500h (verb "Deallocate" or "MC_Deallocate")
  2936.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2937.         0 if basic verb
  2938.  0Fh  5 BYTEs    reserved (0)
  2939.  14h    WORD    (big-endian) primary return code (see #3352)
  2940.  16h    DWORD    (big-endian) error code (see #3353)
  2941.  1Ah  8 BYTEs    (big-endian) TP_ID
  2942.  22h    DWORD    (big-endian) conversation ID
  2943.  26h    BYTE    00h
  2944.  27h    BYTE    type
  2945.         00h SYNC_LEVEL
  2946.         01h FLUSH
  2947.         02h ABEND_PROC
  2948.         03h ABEND_SVC
  2949.         04h ABEND_TIMER
  2950.         05h ABEND
  2951.  28h    WORD    (MC_Deallocate only) length of error log data
  2952.  2Ah    DWORD    (MC_Deallocate only) pointer to error log data
  2953. --------N-6802--SF0600-----------------------
  2954. INT 68 - APPC/PC - CONNECTION CONTROL - FLUSH
  2955.     AH = 02h subfn 0600h
  2956.     DS:DX -> control block (see #3357)
  2957. Return: control block updated
  2958. SeeAlso: AH=02h/SF=0300h
  2959.  
  2960. Format of APPC/PC "Flush" control block:
  2961. Offset    Size    Description    (Table 3357)
  2962.  00h 12 BYTEs    reserved
  2963.  0Ch    WORD    0600h (verb "Flush" or "MC_Flush")
  2964.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2965.         0 if basic verb
  2966.  0Fh  5 BYTEs    reserved (0)
  2967.  14h    WORD    (big-endian) primary return code (see #3352)
  2968.  16h    DWORD    (big-endian) error code (see #3353)
  2969.  1Ah  8 BYTEs    (big-endian) TP_ID
  2970.  22h    DWORD    (big-endian) conversation ID
  2971. --------N-6802--SF0700-----------------------
  2972. INT 68 - APPC/PC - CONNECTION CONTROL - GET ATTRIBUTES
  2973.     AH = 02h subfn 0700h
  2974.     DS:DX -> control block (see #3358)
  2975. Return: control block updated
  2976. SeeAlso: AH=02h/SF=0300h
  2977.  
  2978. Format of APPC/PC "Get_Attributes" control block:
  2979. Offset    Size    Description    (Table 3358)
  2980.  00h 12 BYTEs    reserved
  2981.  0Ch    WORD    0700h (verb "Get_Attributes" or "MC_Get_Attributes")
  2982.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2983.         0 if basic verb
  2984.  0Fh  5 BYTEs    reserved (0)
  2985.  14h    WORD    (big-endian) primary return code (see #3352)
  2986.  16h    DWORD    (big-endian) error code (see #3353)
  2987.  1Ah  8 BYTEs    (big-endian) TP_ID
  2988.  22h    DWORD    (big-endian) conversation ID
  2989.  26h  8 BYTEs    (big-endian) logical unit ID
  2990.  2Eh    BYTE    00h
  2991.  2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
  2992.  30h  8 BYTEs    (big-endian) mode name
  2993.  38h  8 BYTEs    (big-endian) own net name
  2994.  40h  8 BYTEs    (big-endian) own logical unit name
  2995.  48h  8 BYTEs    (big-endian) partner logical unit name
  2996.  50h 18 BYTEs    (counted string) partner's fully qualified logical unit name
  2997.  62h    BYTE    00h
  2998.  63h 11 BYTEs    (counted string) user ID
  2999. --------N-6802--SF0800-----------------------
  3000. INT 68 - APPC/PC - CONNECTION CONTROL - GET CONVERSATION TYPE
  3001.     AH = 02h subfn 0800h
  3002.     DS:DX -> control block (see #3359)
  3003. Return: control block updated
  3004. SeeAlso: AH=02h/SF=0300h
  3005.  
  3006. Format of APPC/PC "Get_Type" control block:
  3007. Offset    Size    Description    (Table 3359)
  3008.  00h 12 BYTEs    reserved
  3009.  0Ch    WORD    0800h (verb "Get_Type")
  3010.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3011.         0 if basic verb
  3012.  0Fh  5 BYTEs    reserved (0)
  3013.  14h    WORD    (big-endian) primary return code (see #3352)
  3014.  16h    DWORD    (big-endian) error code (see #3353)
  3015.  1Ah  8 BYTEs    (big-endian) TP_ID
  3016.  22h    DWORD    (big-endian) conversation ID
  3017.  26h    BYTE    (ret) type (0=basic conversation, 1=mapped conversation)
  3018. --------N-6802--SF0900-----------------------
  3019. INT 68 - APPC/PC - CONNECTION CONTROL - POST ON RECEIPT
  3020.     AH = 02h subfn 0900h
  3021.     DS:DX -> control block (see #3360)
  3022. Return: control block updated
  3023. SeeAlso: AH=02h/SF=0A00h
  3024.  
  3025. Format of APPC/PC "Post_on_Receipt" control block:
  3026. Offset    Size    Description    (Table 3360)
  3027.  00h 12 BYTEs    reserved
  3028.  0Ch    WORD    0900h (verb "Post_on_Receipt")
  3029.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3030.         0 if basic verb
  3031.  0Fh  5 BYTEs    reserved (0)
  3032.  14h    WORD    (big-endian) primary return code (see #3352)
  3033.  16h    DWORD    (big-endian) error code (see #3353)
  3034.  1Ah  8 BYTEs    (big-endian) TP_ID
  3035.  22h    DWORD    (big-endian) conversation ID
  3036.  26h    WORD    maximum length
  3037.  28h    BYTE    fill (0=buffer, 1=LL)
  3038. --------N-6802--SF0A00-----------------------
  3039. INT 68 - APPC/PC - CONNECTION CONTROL - PREPARE TO RECEIVE
  3040.     AH = 02h subfn 0A00h
  3041.     DS:DX -> control block (see #3361)
  3042. Return: control block updated
  3043. SeeAlso: AH=02h/SF=0900h,AH=02h/SF=0B00h
  3044.  
  3045. Format of APPC/PC "Prepare_to_Receive" control block:
  3046. Offset    Size    Description    (Table 3361)
  3047.  00h 12 BYTEs    reserved
  3048.  0Ch    WORD    0A00h (verb "Prepare_to_Receive" or "MC_Prepare_to_Receive")
  3049.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3050.         0 if basic verb
  3051.  0Fh  5 BYTEs    reserved (0)
  3052.  14h    WORD    (big-endian) primary return code (see #3352)
  3053.  16h    DWORD    (big-endian) error code (see #3353)
  3054.  1Ah  8 BYTEs    (big-endian) TP_ID
  3055.  22h    DWORD    (big-endian) conversation ID
  3056.  26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
  3057.  27h    BYTE    locks (0=short, 1=long)
  3058. --------N-6802--SF0B00-----------------------
  3059. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE AND WAIT
  3060.     AH = 02h subfn 0B00h
  3061.     DS:DX -> control block (see #3362)
  3062. Return: control block updated
  3063. SeeAlso: AH=02h/SF=0C00h,AH=02h/SF=0F00h
  3064.  
  3065. Format of APPC/PC "Receive_and_Wait" control block:
  3066. Offset    Size    Description    (Table 3362)
  3067.  00h 12 BYTEs    reserved
  3068.  0Ch    WORD    0B00h (verb "Receive_and_Wait" or "MC_Receive_and_Wait")
  3069.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3070.         0 if basic verb
  3071.  0Fh  5 BYTEs    reserved (0)
  3072.  14h    WORD    (big-endian) primary return code (see #3352)
  3073.  16h    DWORD    (big-endian) error code (see #3353)
  3074.  1Ah  8 BYTEs    (big-endian) TP_ID
  3075.  22h    DWORD    (big-endian) conversation ID
  3076.  26h    BYTE    type of information received (see #3363)
  3077.  27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
  3078.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  3079.  29h    WORD    maximum length
  3080.  2Bh    WORD    data length
  3081.  2Dh    DWORD    pointer to data
  3082.  
  3083. (Table 3363)
  3084. Values for type of information received:
  3085.  00h    data
  3086.  01h    data complete
  3087.  02h    data incomplete
  3088.  03h    confirm
  3089.  04h    confirm send
  3090.  05h    confirm deallocate
  3091.  06h    send
  3092. --------N-6802--SF0C00-----------------------
  3093. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE IMMEDIATE
  3094.     AH = 02h subfn 0C00h
  3095.     DS:DX -> control block (see #3364)
  3096. Return: control block updated
  3097. SeeAlso: AH=02h/SF=0B00h,AH=02h/SF=0F00h
  3098.  
  3099. Format of APPC/PC "Receive_Immediate" control block:
  3100. Offset    Size    Description    (Table 3364)
  3101.  00h 12 BYTEs    reserved
  3102.  0Ch    WORD    0C00h (verb "Receive_Immediate" or "MC_Receive_Immediate")
  3103.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3104.         0 if basic verb
  3105.  0Fh  5 BYTEs    reserved (0)
  3106.  14h    WORD    (big-endian) primary return code (see #3352)
  3107.  16h    DWORD    (big-endian) error code (see #3353)
  3108.  1Ah  8 BYTEs    (big-endian) TP_ID
  3109.  22h    DWORD    (big-endian) conversation ID
  3110.  26h    BYTE    type of information received (see #3363)
  3111.  27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
  3112.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  3113.  29h    WORD    maximum length
  3114.  2Bh    WORD    data length
  3115.  2Dh    DWORD    pointer to data
  3116. --------N-6802--SF0E00-----------------------
  3117. INT 68 - APPC/PC - CONNECTION CONTROL - REQUEST TO SEND
  3118.     AH = 02h subfn 0E00h
  3119.     DS:DX -> control block (see #3365)
  3120. Return: control block updated
  3121. SeeAlso: AH=02h/SF=0F00h,AH=02h/SF=1000h
  3122.  
  3123. Format of APPC/PC "Request_to_Send" control block:
  3124. Offset    Size    Description    (Table 3365)
  3125.  00h 12 BYTEs    reserved
  3126.  0Ch    WORD    0E00h (verb "Request_to_Send" or "MC_Request_to_Send")
  3127.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3128.         0 if basic verb
  3129.  0Fh  5 BYTEs    reserved (0)
  3130.  14h    WORD    (big-endian) primary return code (see #3352)
  3131.  16h    DWORD    (big-endian) error code (see #3353)
  3132.  1Ah  8 BYTEs    (big-endian) TP_ID
  3133.  22h    DWORD    (big-endian) conversation ID
  3134. --------N-6802--SF0F00-----------------------
  3135. INT 68 - APPC/PC - CONNECTION CONTROL - SEND DATA
  3136.     AH = 02h subfn 0F00h
  3137.     DS:DX -> control block (see #3366)
  3138. Return: control block updated
  3139. SeeAlso: AH=02h/SF=0E00h,AH=02h/SF=1000h
  3140.  
  3141. Format of APPC/PC "Send_Data" control block:
  3142. Offset    Size    Description    (Table 3366)
  3143.  00h 12 BYTEs    reserved
  3144.  0Ch    WORD    0F00h (verb "Send_Data" or "MC_Send_Data")
  3145.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3146.         0 if basic verb
  3147.  0Fh  5 BYTEs    reserved (0)
  3148.  14h    WORD    (big-endian) primary return code (see #3352)
  3149.  16h    DWORD    (big-endian) error code (see #3353)
  3150.  1Ah  8 BYTEs    (big-endian) TP_ID
  3151.  22h    DWORD    (big-endian) conversation ID
  3152.  26h    BYTE    request to send received (0=no, 1=yes)
  3153.  27h    BYTE    00h
  3154.  28h    WORD    data length
  3155.  2Ah    DWORD    pointer to data
  3156. --------N-6802--SF1000-----------------------
  3157. INT 68 - APPC/PC - CONNECTION CONTROL - SEND ERROR
  3158.     AH = 02h subfn 1000h
  3159.     DS:DX -> control block (see #3367)
  3160. Return: control block updated
  3161. SeeAlso: AH=02h/SF=0F00h
  3162.  
  3163. Format of APPC/PC "Send_Error" control block:
  3164. Offset    Size    Description    (Table 3367)
  3165.  00h 12 BYTEs    reserved
  3166.  0Ch    WORD    1000h (verb "Send_Error" or "MC_Send_Error")
  3167.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3168.         0 if basic verb
  3169.  0Fh  5 BYTEs    reserved (0)
  3170.  14h    WORD    (big-endian) primary return code (see #3352)
  3171.  16h    DWORD    (big-endian) error code (see #3353)
  3172.  1Ah  8 BYTEs    (big-endian) TP_ID
  3173.  22h    DWORD    (big-endian) conversation ID
  3174.  26h    BYTE    request to send received (0=no, 1=yes)
  3175.  27h    BYTE    type (0=program, 1=SVC)
  3176.  28h    DWORD    00h
  3177.  2Ch    WORD    (MC_Send_Error only) LOG_DATA length
  3178.  2Eh    DWORD    (MC_Send_Error only) pointer to LOG_DATA
  3179. --------N-6802--SF1200-----------------------
  3180. INT 68 - APPC/PC - CONNECTION CONTROL - TEST
  3181.     AH = 02h subfn 1200h
  3182.     DS:DX -> control block (see #3368)
  3183. Return: control block updated
  3184. SeeAlso: AH=02h/SF=1300h
  3185.  
  3186. Format of APPC/PC "Test" control block:
  3187. Offset    Size    Description    (Table 3368)
  3188.  00h 12 BYTEs    reserved
  3189.  0Ch    WORD    1200h (verb "Test" or "MC_Test")
  3190.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3191.         0 if basic verb
  3192.  0Fh  5 BYTEs    reserved (0)
  3193.  14h    WORD    (big-endian) primary return code (see #3352)
  3194.  16h    DWORD    (big-endian) error code (see #3353)
  3195.  1Ah  8 BYTEs    (big-endian) TP_ID
  3196.  22h    DWORD    (big-endian) conversation ID
  3197.  26h    BYTE    (MC_Test only) test (0=posted, 1=request_to_send received)
  3198. Note:    error code has different interpretations for:
  3199.     0 posted data
  3200.     1 posted not data (primary return code = 0)
  3201.     1 bad TP_ID (primary return code = 1)
  3202. --------N-6802--SF1300-----------------------
  3203. INT 68 - APPC/PC - CONNECTION CONTROL - WAIT
  3204.     AH = 02h subfn 1300h
  3205.     DS:DX -> control block (see #3369)
  3206. Return: control block updated
  3207. SeeAlso: AH=02h/SF=1200h
  3208.  
  3209. Format of APPC/PC "Wait" control block:
  3210. Offset    Size    Description    (Table 3369)
  3211.  00h 12 BYTEs    reserved
  3212.  0Ch    WORD    1300h (verb "Wait")
  3213.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3214.         0 if basic verb
  3215.  0Fh  5 BYTEs    reserved (0)
  3216.  14h    WORD    (big-endian) primary return code (see #3352)
  3217.  16h    DWORD    (big-endian) error code (see #3353,#3368)
  3218.  1Ah  8 BYTEs    (big-endian) TP_ID
  3219.  22h    DWORD    (big-endian) conversation ID
  3220.  26h    BYTE    number of conversations to wait on
  3221.         Note: error codes have interpretations as for AH=02h/SF=1200h
  3222. --------N-6803--SF2400-----------------------
  3223. INT 68 - APPC/PC - TP STARTED
  3224.     AH = 03h subfn 2400h
  3225.     DS:DX -> control block (see #3370)
  3226. Return: control block updated
  3227.  
  3228. Format of APPC/PC "TP Started" control block:
  3229. Offset    Size    Description    (Table 3370)
  3230.  00h 12 BYTEs    reserved
  3231.  0Ch    WORD    2400h (verb "TP Started")
  3232.  0Eh  6 BYTEs    00h
  3233.  14h    DWORD    (big-endian) return code (see #3339)
  3234.  18h    WORD    00h
  3235.  1Ah  8 BYTEs    (big-endian) logical unit ID
  3236.  22h  8 BYTEs    (big-endian) TP ID
  3237. --------N-6803--SF2800-----------------------
  3238. INT 68 - APPC/PC - GET ALLOCATE
  3239.     AH = 03h subfn 2800h
  3240.     DS:DX -> control block (see #3371)
  3241. Return: control block updated
  3242.  
  3243. Format of APPC/PC "Get ALLOCATE" control block:
  3244. Offset    Size    Description    (Table 3371)
  3245.  00h 12 BYTEs    reserved
  3246.  0Ch    WORD    2800h (verb "Get ALLOCATE")
  3247.  0Eh  6 BYTEs    00h
  3248.  14h    DWORD    (big-endian) return code (see #3339)
  3249.  18h    WORD    00h
  3250.  1Ah  8 BYTEs    (big-endian) logical unit ID
  3251.  22h    BYTE    type (00h dequeue, 01h test)
  3252.  23h    DWORD    pointer to CREATE_TP record
  3253. --------N-6803--SF2A00-----------------------
  3254. INT 68 - APPC/PC - CHANGE LOGICAL UNIT
  3255.     AH = 03h subfn 2A00h
  3256.     DS:DX -> control block (see #3372)
  3257. Return: control block updated
  3258.  
  3259. Format of APPC/PC "Change Logical Unit" control block:
  3260. Offset    Size    Description    (Table 3372)
  3261.  00h 12 BYTEs    reserved
  3262.  0Ch    WORD    2A00h (verb "Change Logical Unit")
  3263.  0Eh  6 BYTEs    00h
  3264.  14h    DWORD    (big-endian) return code (see #3339)
  3265.  18h    WORD    00h
  3266.  1Ah  8 BYTEs    (big-endian) logical unit ID
  3267.  22h    DWORD    pointer to CREATE_TP_EXIT routine
  3268.         00000000h queue ALLOCATEs
  3269.         FFFFFFFFh reject incoming ALLOCATEs
  3270.  26h    DWORD    00000000h
  3271.  2Ah    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
  3272.  2Eh    DWORD    00000000h
  3273.  32h    BYTE    maximum TPs
  3274.  33h    BYTE    00h stop QUEUE_ALLOCATEs
  3275.         01h resume QUEUE_ALLOCATEs
  3276.  34h    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
  3277.  38h    DWORD    00000000h
  3278. --------N-6804-------------------------------
  3279. INT 68 - APPC/PC - TRANSACTION PROCESSING
  3280.     AH = 04h
  3281.     DS:DX -> control block (see #3373)
  3282. Return: control block updated
  3283.  
  3284. Format of APPC/PC control block:
  3285. Offset    Size    Description    (Table 3373)
  3286.  00h 12 BYTEs    reserved
  3287.  0Ch    WORD    verb (action)
  3288.         2500h TP_ENDED
  3289.         2900h TP_VALID
  3290.  0Eh  6 BYTEs    00h
  3291.  14h    DWORD    (big-endian) return code (see #3339)
  3292.  18h    WORD    00h
  3293.  1Ah  8 BYTEs    (big-endian) TP_ID
  3294.  22h    DWORD    -> CREATE_TP record (only if verb = 2900h)
  3295. --------N-6805-------------------------------
  3296. INT 68 - APPC/PC - TRANSFER MESSAGE DATA
  3297.     AH = 05h
  3298.     DS:DX -> control block (see #3374)
  3299. Return: control block updated
  3300.  
  3301. Format of APPC/PC "Transfer Message Data" control block:
  3302. Offset    Size    Description    (Table 3374)
  3303.  00h 12 BYTEs    reserved
  3304.  0Ch    WORD    1C00h (verb "Transfer Message Data")
  3305.  0Eh    BYTE    data type
  3306.         00h user defined
  3307.         01h NMVT
  3308.         02h alert subvectors
  3309.         03h PDSTATS subvectors
  3310.  0Fh  5 BYTEs    00h
  3311.  14h    DWORD    (big-endian) return code (see #3339)
  3312.  18h 12 BYTEs    00h
  3313.  24h    BYTE    flags (see #3375)
  3314.  25h    BYTE    00h
  3315.  26h    WORD    length of data
  3316.  28h  N BYTEs    data
  3317.  
  3318. Bitfields for APPC/PC message transfer flags:
  3319. Bit(s)    Description    (Table 3375)
  3320.  0    don't add correlation subvector
  3321.  1    don't add product set ID subvector
  3322.  2    don't do SYSLOG
  3323.  3    don't send SSCP_PU_SESSION
  3324. SeeAlso: #3374
  3325. --------N-6806-------------------------------
  3326. INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
  3327.     AH = 06h
  3328.     DS:DX -> control block (see #3376)
  3329. Return: control block updated
  3330.  
  3331. Format of APPC/PC "Change Number of Sessions" control block:
  3332. Offset    Size    Description    (Table 3376)
  3333.  00h 12 BYTEs    reserved
  3334.  0Ch    WORD    1500h (verb "Change Number of Sessions")
  3335.  0Eh  6 BYTEs    00h
  3336.  14h    WORD    (big-endian) primary return code (see #3352)
  3337.  16h    DWORD    (big-endian) secondary return code (see #3339,#3377)
  3338.  1Ah  8 BYTEs    (big-endian) logical unit ID
  3339.  22h  8 BYTEs    blanks
  3340.  2Ah  8 BYTEs    (big-endian) partner logical unit name
  3341.  32h  8 BYTEs    (big-endian) mode name
  3342.  3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
  3343.         bit 6: set negotiable values
  3344.  3Bh    BYTE    partner logical unit mode session limit
  3345.  3Ch    BYTE    minimum CONWINNERS_SOURCE
  3346.  3Dh    BYTE    maximum CONWINNERS_TARGET
  3347.  3Eh    BYTE    automatic activation
  3348.  3Fh    BYTE    00h
  3349.  40h    BYTE    flags
  3350.         bit 7: drain target
  3351.         bit 6: drain source
  3352.         bit 5: target responsible, not source
  3353.  
  3354. (Table 3377)
  3355. Values for secondary return code (see also AH=01h/SF=1B00h):
  3356.  0000h    accepted
  3357.  0001h    negotiated
  3358.  0003h    bad logical unit ID
  3359.  0004h    allocation failure, no retry
  3360.  0005h    allocation failure, retry
  3361.  0151h    can't raise limits
  3362.  0153h    all modes must reset
  3363.  0154h    bad SNASVCMG limits
  3364.  0155h    minimum greater than total
  3365.  0156h    mode closed (primary return code = 1)
  3366.     CNOS mode closed (primary return code = 18h)
  3367.  0157h    bad mode name (primary return code = 1)
  3368.     CNOS bad mode name (primary return code = 18h)
  3369.  0159h    reset SNA drains
  3370.  015Ah    single not SRC response
  3371.  015Bh    bad partner logical unit
  3372.  015Ch    exceeds maximum allowed
  3373.  015Dh    change SRC drains
  3374.  015Eh    logical unit detached
  3375.  015Fh    CNOS command race reject
  3376. --------N-6807-------------------------------
  3377. INT 68 - APPC/PC - PASSTHROUGH
  3378.     AH = 07h
  3379.     DS:DX -> control block (format depends on application subsystem)
  3380. Return: control block updated
  3381. SeeAlso: AH=FFh
  3382. ----------684300-----------------------------
  3383. INT 68 U - ??? - INSTALLATION CHECK???
  3384.     AX = 4300h
  3385. Return: AX = F386h if ???
  3386.     ???
  3387. Note:    called by Novell DOS 7.0 EMM386.EXE
  3388. SeeAlso: AX=4400h,INT 41/AX=004Fh
  3389. ----------684400-----------------------------
  3390. INT 68 U - ???
  3391.     AX = 4400h
  3392.     BX = ???
  3393.     CX = ???
  3394.     DX = ???
  3395.     DS:SI = real-mode address of protected-mode GDT
  3396.     ES:DI = real-mode address of protected-mode IDT
  3397. Return: ???
  3398. Note:    called by Novell DOS 7.0 EMM386.EXE if AX=4300h returns AX=F386h
  3399. SeeAlso: AX=4300h
  3400. --------W-6847-------------------------------
  3401. INT 68 - MS Windows debugging kernel - OUTPUT STRING
  3402.     AH = 47h
  3403.     ES:SI -> string
  3404. Notes:    output a string (to inform a debugger of some events)
  3405.     KERNEL outputs "Windows Kernel Entry\r\n" on startup
  3406. SeeAlso: INT 41/AX=0012h
  3407. --------N-68FA-------------------------------
  3408. INT 68 - APPC/PC - ENABLE/DISABLE APPC
  3409.     AH = FAh
  3410.     AL bit 0 = new state (0 enable, 1 disable)
  3411. SeeAlso: AH=FDh,INT 68"Novell"
  3412. --------N-68FB-------------------------------
  3413. INT 68 - APPC/PC - CONVERT
  3414.     AH = FBh
  3415.     DS:DX -> control block (see #3378)
  3416. Return: control block updated
  3417.  
  3418. Format of APPC/PC "CONVERT" control block:
  3419. Offset    Size    Description    (Table 3378)
  3420.  00h 12 BYTEs    reserved
  3421.  0Ch    WORD    1A00h (verb "CONVERT")
  3422.  0Eh  6 BYTEs    00h
  3423.  14h    DWORD    (big-endian) return code
  3424.  18h    BYTE    conversion
  3425.         00h ASCII to EBCDIC
  3426.         01h EBCDIC to ASCII
  3427.  19h    BYTE    character set
  3428.         00h AE
  3429.         01h A
  3430.         02h G
  3431.  1Ah    WORD    length of string to convert
  3432.  1Ch    DWORD    pointer to source
  3433.  20h    DWORD    pointer to target
  3434. --------N-68FC-------------------------------
  3435. INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
  3436.     AH = FCh
  3437.     AL = new state
  3438.         00h disable tracing
  3439.         01h enable tracing
  3440.         DX = number of bytes to keep (0=all)
  3441. SeeAlso: AH=FDh,AH=FEh
  3442. --------N-68FD-------------------------------
  3443. INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
  3444.     AH = FDh
  3445.     AL = new tracing state (00h disabled, 01h enabled)
  3446. SeeAlso: AH=FAh,AH=FCh,AH=FEh
  3447. --------N-68FE-------------------------------
  3448. INT 68 - APPC/PC - SET TRACE DESTINATION
  3449.     AH = FEh
  3450.     AL = trace destinations (see #3379)
  3451.     DS:DX -> trace stats record if AL bit 0 set (see #3380)
  3452. SeeAlso: AH=FCh,AH=FDh
  3453.  
  3454. Bitfields for trace destinations:
  3455. Bit(s)    Description    (Table 3379)
  3456.  0    storage (DS:DX -> trace stats record)
  3457.  1    display
  3458.  2    file (trace written to file OUTPUT.PC)
  3459.  3    printer
  3460.  
  3461. Format of APPC/PC Trace Statistics Record:
  3462. Offset    Size    Description    (Table 3380)
  3463.  00h    DWORD    pointer to storage trace buffer
  3464.  04h    WORD    max number of 80-byte records in trace
  3465.  06h    WORD    (high-order byte first!) current record number (must init to 0)
  3466.  08h    DWORD    (high-order byte first!) number of records written (init to 0)
  3467.  0Ch    DWORD    reserved
  3468. Note:    do not move record while trace is active
  3469. --------N-68FF-------------------------------
  3470. INT 68 - APPC/PC - SET PASSTHROUGH
  3471.     AH = FFh
  3472.     DS:DX -> passthrough exit routine
  3473. SeeAlso: AH=07h,INT 68"Novell"
  3474. --------b-69---------------------------------
  3475. INT 69 - Zenith AT BIOS - ???
  3476. Note:    called by INT 09 handler
  3477. --------h-69---------------------------------
  3478. INT 69 C - HP Vectra AT - IRQ17 - KEYBOARD OUTPUT-BUFFER-FULL SERVICE ROUTINE
  3479. SeeAlso: INT 09"IRQ1",INT 68"HP Vectra",INT 6A"HP Vectra"
  3480. --------N-690100-----------------------------
  3481. INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
  3482.     AX = 0100h
  3483. Return: AL = FFh if present
  3484. SeeAlso: AX=010Fh
  3485. --------N-690101-----------------------------
  3486. INT 69 - DECnet DOS CTERM - SEND BYTE
  3487.     AX = 0101h
  3488.     BL = character
  3489.     DX = session handle
  3490. Return: AH >= 80h on error
  3491. SeeAlso: AX=0102h
  3492. --------N-690102-----------------------------
  3493. INT 69 - DECnet DOS CTERM - READ BYTE
  3494.     AX = 0102h
  3495.     DX = session handle
  3496. Return: AH >= 80h on error
  3497.     AH < 80h if successful
  3498.         AL = character
  3499. SeeAlso: AX=0101h
  3500. --------N-690103-----------------------------
  3501. INT 69 - DECnet DOS CTERM - STATUS
  3502.     AX = 0103h
  3503.     DX = session handle
  3504. Return: AH status flags (see #3381)
  3505.     AL = reason code if DECnet error (see #3382)
  3506. SeeAlso: AX=0104h
  3507.  
  3508. Bitfields for DECnet DOS CTERM status flags:
  3509. Bit(s)    Description    (Table 3381)
  3510.  7    session has been aborted
  3511.  6    DECnet error
  3512.  1    trace data available
  3513.  0    receive data available
  3514.  
  3515. (Table 3382)
  3516. Values for reason code:
  3517.  00h    normal disconnect
  3518.  01h    unknown message from host
  3519.  02h    protocol violation from host
  3520.  03h    could not process the initiate message
  3521.  04h    error receiving message from host
  3522.  05h    error sending message to host
  3523.  06h    error checking for message from host
  3524.  07h    remote system does not support CTERM
  3525.  08h    remote system does not support correct protocol version
  3526.  09h    did not receive BIND message from host
  3527.  0Ah    could not send BIND message to host
  3528.  0Bh    no more sessions available
  3529.  0Ch    session does not exist
  3530.  0Dh    not enough memory to complete operation
  3531.  0Eh    connection has broken
  3532. Index:    error codes;DECnet DOS CTERM|DECnet DOS CTERM;error codes
  3533. --------N-690104-----------------------------
  3534. INT 69 - DECnet DOS CTERM - DECnet STATUS
  3535.     AX = 0104h
  3536.     DX = session handle
  3537. Return: AX = reason code (see #3382)
  3538. Note:    use this call when AX=0103h returns a DECnet error
  3539. SeeAlso: AX=0103h
  3540. --------N-690105-----------------------------
  3541. INT 69 - DECnet DOS CTERM - OPEN SESSION
  3542.     AX = 0105h
  3543.     DS:BX -> ASCIZ node name
  3544.     ES:DX -> buffer for session control block (see #3398 at INT 6A/AH=D0h)
  3545. Return: AX <= 0 on error
  3546.     AX > 0 session handle
  3547. SeeAlso: AX=0103h,AX=0106h,AX=010Ah
  3548. --------N-690106-----------------------------
  3549. INT 69 - DECnet DOS CTERM - CLOSE SESSION
  3550.     AX = 0106h
  3551.     DX = session handle
  3552. Return: AH = status
  3553.         00h good close
  3554.         other error code (see #3382)
  3555. SeeAlso: AX=0103h,AX=0105h
  3556. --------N-69010A-----------------------------
  3557. INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
  3558.     AX = 010Ah
  3559. Return: AX = length of session control block in bytes
  3560. SeeAlso: AX=0105h
  3561. --------N-69010B-----------------------------
  3562. INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
  3563.     AX = 010Bh
  3564.     DX = session handle
  3565. Return: AX > 0    DECnet socket for the session
  3566.     AX = 0    no match for handle
  3567. --------N-69010F-----------------------------
  3568. INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
  3569.     AX = 010Fh
  3570. Return: AH = status
  3571.         00h successful uninstall
  3572.         other error code (see #3382)
  3573. Note:    CTERM must have been the last TSR loaded in order to deinstall it
  3574. SeeAlso: AX=0100h
  3575. Index:    uninstall;DECnet DOS CTERM
  3576. --------N-690A-------------------------------
  3577. INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
  3578.     AH = 0Ah
  3579.     AL = function number (see #3383)
  3580.     ES:BX -> Datalink Communication Block (see #3385)
  3581. Return: AX = status (see #3384)
  3582. SeeAlso: INT 6D"DECnet"
  3583.  
  3584. (Table 3383)
  3585. Values for DECnet DOS Data Link Layer function:
  3586.  00h    initialize
  3587.  01h    open portal
  3588.  02h    close portal
  3589.  03h    enable multicast address
  3590.  04h    disable multicast address
  3591.  05h    transmit
  3592.  06h    request transmit buffer
  3593.  07h    deallocate transmit buffer
  3594.  08h    read channel status
  3595.  09h    read datalink portal list
  3596.  0Ah    read information about a datalink portal
  3597.  0Bh    read and/or clear counters
  3598.  0Ch    request to boot from a network server
  3599.  0Dh    enable Ethernet channel
  3600.  0Eh    disable Ethernet channel
  3601.  0Fh    start MOP/send a System ID message
  3602.  10h    stop MOP
  3603.  11h    get DECPARM
  3604.  12h    set DECPARM
  3605.  13h    external loopback
  3606.  
  3607. (Table 3384)
  3608. Values for DECnet DOS Data Link Layer status:
  3609.  00h    successful
  3610.  01h    hardware failed to initialize
  3611.  02h    channel state was not off (must be off to execute that command)
  3612.  03h    channel state is off (must be on to execute that command)
  3613.  04h    address not set
  3614.  05h    hardware missing
  3615.  06h    buffer too small
  3616.  07h    no more buffers available
  3617.  08h    no more resources available
  3618.  09h    promiscuous receiver active
  3619.  0Ah    non exclusive
  3620.  0Bh    unrecognized portal
  3621.  0Ch    protocol type in use
  3622.  0Dh    not a valid Multicast address
  3623.  0Eh    outstanding calls
  3624.  0Fh    hardware doesn't support receiving bad frames
  3625.  10h    none outstanding
  3626.  11h    no events
  3627.  12h    broken
  3628.  13h    buffer quota exceeded
  3629.  14h    already initialized
  3630.  15h    loopback failure
  3631. Index:    error codes;DECnet DOS|DECnet DOS;error codes
  3632.  
  3633. Format of Datalink Communication Block:
  3634. Offset    Size    Description    (Table 3385)
  3635.  00h    WORD    portal ID
  3636.  02h  6 BYTEs    source address
  3637.  08h  6 BYTEs    destination address
  3638.  0Eh    DWORD    buffer pointer
  3639.  12h    WORD    buffer length
  3640.  14h    WORD    operation
  3641.  16h    BYTE    pad flag (used on open)
  3642.         00h no pad
  3643.         01h pad
  3644.  17h    BYTE    mode flag (used on open)
  3645.         00h 802.3
  3646.         01h Ethernet
  3647.         02h promiscuous
  3648.  18h    DWORD    line status change function
  3649.  1Ch    DWORD    received data function
  3650.  20h    DWORD    transmitted data function
  3651.  24h    BYTE    maximum outstanding transmits/receives
  3652.  25h  2 BYTEs    protocol type
  3653.  27h    WORD    buffers lost
  3654. --------N-694001-----------------------------
  3655. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  3656.     AX = 4001h
  3657. Return: CF clear
  3658.     AX = 0000h
  3659.     ES:SI -> ???
  3660. InstallCheck:    test for the signature "SYSV" immediately before the interrupt
  3661.       handler
  3662. Range:    INT 60 to INT 7F, selected by configuration
  3663. SeeAlso: AX=4002h
  3664. Index:    installation check;10NET SYSSVC
  3665. --------N-694002-----------------------------
  3666. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  3667.     AX = 4002h
  3668.     ???
  3669. Return: ???
  3670. InstallCheck:    test for the signature "SYSV" immediately before the interrupt
  3671.       handler
  3672. Range:    INT 60 to INT 7F, selected by configuration
  3673. --------N-694101-----------------------------
  3674. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  3675.     AX = 4101h
  3676. Return: CF clear
  3677.     ES:SI -> ???
  3678. Range:    INT 60 to INT 7F, selected by configuration
  3679. SeeAlso: AX=4102h,AX=4103h,AX=4104h
  3680. --------N-694102-----------------------------
  3681. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  3682.     AX = 4102h
  3683.     ???
  3684. Return: ???
  3685. --------N-694103-----------------------------
  3686. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  3687.     AX = 4103h
  3688.     ???
  3689. Return: ???
  3690. --------N-694104-----------------------------
  3691. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  3692.     AX = 4104h
  3693.     ???
  3694. Return: ???
  3695. --------N-6942-------------------------------
  3696. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  3697.     AH = 42h
  3698.     AL = function (01h-14h)
  3699.     ???
  3700. Return: ???
  3701. Range:    INT 60 to INT 7F, selected by configuration
  3702. --------N-6943-------------------------------
  3703. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  3704.     AH = 43h
  3705.     AL = function (01h-05h)
  3706.     ???
  3707. Return: ???
  3708. --------N-6944-------------------------------
  3709. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  3710.     AH = 44h
  3711.     AL = function (01h-03h)
  3712.     ???
  3713. Return: ???
  3714. Range:    INT 60 to INT 7F, selected by configuration
  3715. --------N-6949-------------------------------
  3716. INT 69 - 10NET v5.0 - SYSSVC.COM - BUG
  3717.     AH = 49h
  3718. Note:    due to a fencepost error, this function branches to hyperspace
  3719. SeeAlso: AX=4001h,AH=FFh
  3720. --------G-696996-----------------------------
  3721. INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
  3722.     AX = 6996h
  3723.     DS:DX -> interrupt handler or 0000h:0000h to disable
  3724. Return: AX = 9669h
  3725. Program: ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
  3726.       a program to provide hardware interrupt handlers even while being
  3727.       debugged with a debugger that swaps interrupt vectors during
  3728.       debugging.
  3729. Note:    the interrupt vector which is to be reflected is set at installation
  3730.       time and cannot be changed
  3731. --------N-69FF-------------------------------
  3732. INT 69 - 10NET v5.0 - SYSSVC.COM - SIGNAL SYSTEM ERROR
  3733.     AH = FFh
  3734. Return: never???
  3735. Desc:    displays "System Error" message and register dump, then halts system
  3736. InstallCheck:    test for the signature "SYSV" immediately before the interrupt
  3737.       handler
  3738. Range:    INT 60 to INT 7F, selected by configuration
  3739. SeeAlso: AX=4001h,AH=49h
  3740. --------U-6A---------------------------------
  3741. INT 6A - OPTHELP.COM
  3742. Program: OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
  3743.       assembler
  3744. Range:    INT 60h to INT 7Fh, selected by configuration
  3745. --------N-6A---------------------------------
  3746. INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM - INSTALLATION CHECK
  3747. InstallCheck:    test for a signature area immediately preceding the interrupt
  3748.       handler (see #3386)
  3749. SeeAlso: AH=01h/DH=FFh,INT 6B"DECnet",INT 6D"DECnet"
  3750. Index:    installation check;DECnet DOS Local Area Transport
  3751.  
  3752. Format of DECnet DOS signature area:
  3753. Offset    Size    Description    (Table 3386)
  3754.  -5    BYTE    major version number
  3755.  -4    BYTE    minor version number
  3756.  -3   3 BYTEs    signature (ASCII "LAT")
  3757. --------h-6A---------------------------------
  3758. INT 6A C - HP Vectra AT - IRQ18 - RESERVED HARDWARE INTERRUPT
  3759. SeeAlso: INT 0A"IRQ2",INT 69"HP Vectra",INT 6B"HP Vectra"
  3760. --------N-6A0000-----------------------------
  3761. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - INSTALLATION CHECK
  3762.     AX = 0000h
  3763. Return: AX = 4357h ('CW')
  3764. Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
  3765. Note:    an alternate installation check is to test for the ASCIZ signature
  3766.       "FTC Super-TCP" three bytes past the interrupt handler
  3767. SeeAlso: AX=0001h,AX=0002h,AX=000Fh,AX=0010h,INT 21/AH=3Fh"BW-TCP"
  3768. SeeAlso: INT 61"FTP Software",INT 62/AH=00h"ETHDEV"
  3769. --------N-6A0001-----------------------------
  3770. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
  3771.     AX = 0001h
  3772.     BH = function number
  3773.         01h ???
  3774.         DS:SI -> ??? 24-byte record1 (see #3388)
  3775.         ES:DI -> buffer containing ???
  3776.         02h ???
  3777.         DS:SI -> ??? 18-byte record2 (see #3389)
  3778.         ES:DI -> buffer containing ???
  3779.         04h ???
  3780.         BL = subfunction
  3781.             01h
  3782.             DS:SI -> ??? 28-byte record3 (see #3390)
  3783.             ES:DI -> buffer containing ???
  3784.             02h
  3785.             DS:SI -> ??? 28-byte record3 (see #3390)
  3786.             ES:DI -> buffer containing ???
  3787.             03h
  3788.             DS:SI -> ??? 28-byte record3 (see #3390)
  3789.             else Return: AX = 0005h
  3790.         05h ???
  3791.         DS:SI -> ??? 20-byte record4 (see #3391)
  3792.         ES:DI -> buffer containing ???
  3793.         06h ???
  3794.         BL = subfunction
  3795.             01h
  3796.             DS:SI -> ??? 40-byte record5 (see #3392)
  3797.             02h
  3798.             DS:SI -> ??? 20-byte record6 (see #3393)
  3799.             ES:DI -> ???
  3800.             03h
  3801.             DS:SI -> ??? 20-byte record6 (see #3393)
  3802.             04h
  3803.             DS:SI -> ??? 46-byte record7 (see #3394)
  3804.             else Return: AX = 0005h
  3805.         11h ???
  3806.         DS:SI -> ??? 28-byte record8 (see #3395)
  3807.         ES:DI -> ???
  3808. Return: AX = function status (see #3387)
  3809. SeeAlso: AX=0000h
  3810.  
  3811. (Table 3387)
  3812. Values for Super-TCP function status:
  3813.  0000h    successful
  3814.  0005h    unsupported function
  3815.  000Ah    out of memory
  3816.  
  3817. Format of record1:
  3818. Offset    Size    Description    (Table 3388)
  3819.  00h  4 BYTEs    ???
  3820.  04h    WORD    size of ES:DI buffer
  3821.  06h 18 BYTEs    ???
  3822.  
  3823. Format of record2:
  3824. Offset    Size    Description    (Table 3389)
  3825.  00h  4 BYTEs    ???
  3826.  04h    WORD    size of ES:DI buffer
  3827.  06h 12 BYTEs    ???
  3828.  
  3829. Format of record3:
  3830. Offset    Size    Description    (Table 3390)
  3831.  00h  2 BYTEs    ???
  3832.  02h    WORD    ???
  3833.  04h    WORD    size of ES:DI buffer
  3834.  06h    WORD    ???
  3835.  08h    WORD    operation number (for function 0401h)
  3836.  0Ah    DWORD    -> ???
  3837.  0Eh    WORD    (ret) ???
  3838.  10h 12 BYTEs    ???
  3839.  
  3840. Format of record4:
  3841. Offset    Size    Description    (Table 3391)
  3842.  00h  4 BYTEs    ???
  3843.  04h    WORD    size of ES:DI buffer
  3844.  06h 14 BYTEs    ???
  3845.  
  3846. Format of record5:
  3847. Offset    Size    Description    (Table 3392)
  3848.  00h    BYTE    operation??? (00h-07h)
  3849.  01h    BYTE    ???
  3850.  02h    WORD    (ret) ???
  3851.  04h    DWORD    -> ???
  3852.  08h  4 BYTEs    ???
  3853.  0Ch    DWORD    -> ??? or 0000h:0000h
  3854.  10h 16 BYTEs    ???
  3855.  20h    DWORD    ???
  3856.  24h  4 BYTEs    ???
  3857.  
  3858. Format of record6:
  3859. Offset    Size    Description    (Table 3393)
  3860.  00h  4 BYTEs    ???
  3861.  04h    WORD    size of ES:DI buffer
  3862.  06h 14 BYTEs    ???
  3863.  
  3864. Format of record7:
  3865. Offset    Size    Description    (Table 3394)
  3866.  00h    WORD    ???
  3867.  02h    WORD    ???
  3868.  04h    WORD    ???
  3869.  06h 40 BYTEs    ???
  3870.  
  3871. Format of record8:
  3872. Offset    Size    Description    (Table 3395)
  3873.  00h  4 BYTEs    ???
  3874.  04h    WORD    size of ES:DI buffer
  3875.  06h  6 BYTEs    ???
  3876.  0Ch    WORD    (ret) ???
  3877.  0Eh    WORD    operation??? (01h-03h)
  3878.  10h 12 BYTEs    ???
  3879. --------N-6A0002-----------------------------
  3880. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
  3881.     AX = 0002h
  3882.     BX = ??? (zero/nonzero)
  3883.     CX = ??? identifier (see AX=0004h)
  3884.     DS:SI -> 40-byte buffer for ??? or 0000h:0000h
  3885.     ES:DI -> buffer for ??? or 0000h:0000h
  3886. Return: AX = 0000h (successful) ???
  3887.     BL = ???
  3888.     BH = ???
  3889.     CX = ???
  3890.     DX = ???
  3891. --------N-6A0003-----------------------------
  3892. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - GET ??? DATA AREA
  3893.     AX = 0003h
  3894. Return: CX:DX -> data area (see #3396)
  3895.  
  3896. Format of Super-TCP data area:
  3897. Offset    Size    Description    (Table 3396)
  3898.  00h  2 BYTEs    ???
  3899.  02h    DWORD    original INT 6A vector
  3900.  06h  2 BYTEs    ???
  3901.  08h 96 BYTEs    array of 16 6-byte ???
  3902.  68h    WORD    number of elements of above array in use
  3903.  6Ah    WORD    ???
  3904.     ???
  3905. --------N-6A0004-----------------------------
  3906. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ALLOCATE ???
  3907.     AX = 0004h
  3908.     CX = size in ???
  3909. Return: AX = 0000h (successful)
  3910.     CX = DX = ???
  3911. SeeAlso: AX=0005h,AX=000Fh
  3912. --------N-6A0005-----------------------------
  3913. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ???
  3914.     AX = 0005h
  3915.     CX = ??? identifier (from AX=0004h)
  3916. Return: AX = status (0000h successful, FFFFh failed)
  3917. SeeAlso: AX=0004h,AX=000Fh
  3918. --------N-6A000F-----------------------------
  3919. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ALL ???
  3920.     AX = 000Fh
  3921. Return: AX = 0000h (successful)
  3922. SeeAlso: AX=0000h,AX=0004h,AX=0005h
  3923. --------N-6A0010-----------------------------
  3924. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - UNINSTALL
  3925.     AX = 0010h
  3926. Return: AX = status
  3927.         0000h successful
  3928.         0002h can't uninstall, interrupt vector hooked by another program
  3929. Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
  3930. Note:    if AX is not one of the values listed here on entry, Super-TCP
  3931.       returns AX=FFFEh
  3932. SeeAlso: AX=0000h
  3933. --------N-6A01--DHFF-------------------------
  3934. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
  3935.     AH = 01h
  3936.     DH = FFh
  3937.     AL = character
  3938.     DL = handle
  3939. Return: AH >= 80h on error
  3940. SeeAlso: AH=02h
  3941. --------N-6A02--DHFF-------------------------
  3942. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
  3943.     AH = 02h
  3944.     DH = FFh
  3945.     DL = handle
  3946. Return: AH < 80h if successful
  3947.         AL = character
  3948.     AH >= 80h on error
  3949. SeeAlso: AH=01h
  3950. --------N-6A03--DHFF-------------------------
  3951. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
  3952.     AH = 03h
  3953.     DH = FFh
  3954.     DL = handle
  3955. Return: AH = status flags (see #3397)
  3956.  
  3957. Bitfields for DECnet DOS LAT status flags:
  3958. Bit(s)    Description    (Table 3397)
  3959.  5    transmit buffer empty
  3960.  3    session in start state
  3961.  2    session not active
  3962.  1    unable to queue transmit data
  3963.  0    receive data available
  3964. --------N-6AD0--DHFF-------------------------
  3965. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
  3966.     AH = D0h
  3967.     DH = FFh
  3968.     AL = password flag
  3969.         FFh no password
  3970.         0Fh password at ES:DI
  3971.     ES:BX -> LAT session control block (see #3398)
  3972.     ES:DI -> 16-byte blank-padded password (optional)
  3973. Return: AH = 00h success
  3974.         DL = handle
  3975. SeeAlso: AX=D000h
  3976.  
  3977. Format of LAT Session Control Block:
  3978. Offset    Size    Description    (Table 3398)
  3979.  00h 18 BYTEs    service name
  3980.  12h 18 BYTEs    node name (future use)
  3981.  24h 18 BYTEs    port name (future use)
  3982.  36h    DWORD    -> session stopped post routine
  3983.  3Ah    DWORD    -> service table overflow post routine
  3984.  3Eh    DWORD    -> transmit post routine
  3985.  42h    DWORD    -> receive post routine
  3986.  46h    WORD    session status
  3987.         04h circuit failure
  3988.         08h stop slot received
  3989. ---LAT v???---
  3990.  48h    WORD    slot state (LAT driver use)
  3991.  4Ah    WORD    local credits (LAT driver use)
  3992.  4Ch    DWORD    -> VCB (LAT driver use)
  3993.  50h    WORD    backward slot (LAT driver use)
  3994.  52h    WORD    forward slot (LAT driver use)
  3995.  54h    WORD    remote slot ID (LAT driver use)
  3996.  56h    WORD    local slot ID (LAT driver use)
  3997.  58h    WORD    slot byte count (LAT driver use)
  3998.  5Ah    BYTE    remote credits (LAT driver use)
  3999.  5Bh 255 BYTEs    transmitted data slot
  4000. 15Ah    BYTE    number of receive data slots (4 recommended)
  4001. 15Bh    BYTE    number of occupied slots
  4002. 15Ch    BYTE    index of next receive slot to use
  4003. 15Dh    BYTE    index of current receive slot
  4004. 15Eh    WORD    pointer to first received character
  4005. 160h  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  4006.      259N BYTEs    buffers
  4007. Note:    set post routines to 0000h:0000h if polled operation will be used
  4008. ---LAT v4.1.17---
  4009.  48h    WORD    session state (LAT driver use)
  4010.  4Ah    BYTE    local credits (LAT driver use)
  4011.  4Bh    DWORD    -> VCB (LAT driver use)
  4012.  4Fh    WORD    backward slot (LAT driver use)
  4013.  51h    WORD    forward slot (LAT driver use)
  4014.  53h    BYTE    remote slot ID (LAT driver use)
  4015.  54h    BYTE    local slot ID (LAT driver use)
  4016.  55h    BYTE    slot byte count (LAT driver use)
  4017.  56h    BYTE    remote credits (LAT driver use)
  4018.  57h 255 BYTEs    transmitted data slot
  4019. 156h    BYTE    number of receive data slots (4 recommended)
  4020. 157h    BYTE    number of occupied slots
  4021. 158h    BYTE    index of next receive slot to use
  4022. 159h    BYTE    index of current receive slot
  4023. 15Ah    WORD    pointer to first received character
  4024. 15Ch  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  4025.      259N BYTEs    buffers
  4026. Note:    set post routines to 0000h:0000h if polled operation will be used
  4027. --------N-6AD000DHFF-------------------------
  4028. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
  4029.     AX = D000h
  4030.     DH = FFh
  4031.     DL = handle
  4032. Return: AX = status (see #3399)
  4033. SeeAlso: AH=D0h
  4034.  
  4035. (Table 3399)
  4036. Values for DECnet DOS LAT function status:
  4037.  0000h    successful
  4038.  0001h    no such session
  4039.  0002h    session not running, try again later
  4040. --------N-6AD100DHFF-------------------------
  4041. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
  4042.     AX = D100h
  4043.     DH = FFh
  4044.     DL = handle
  4045. Return: AX = 0000h if successful
  4046.     AH bit 7 set if unable to send break
  4047. --------N-6AD300DHFF-------------------------
  4048. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
  4049.     AX = D300h
  4050.     DH = FFh
  4051. SeeAlso: AX=D400h
  4052. --------N-6AD400DHFF-------------------------
  4053. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
  4054.     AX = D400h
  4055.     DH = FFh
  4056.     CX = buffer size
  4057.     ES:BX -> buffer for LAT counters
  4058. Return: AX = status
  4059.         0000h counters copied into buffer
  4060.         FFFFh buffer too small
  4061. SeeAlso: AX=D300h
  4062. --------N-6AD500DHFF-------------------------
  4063. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
  4064.     AX = D500h
  4065.     DH = FFh
  4066.     ES:BX -> 17-byte buffer for name
  4067. Return: AH = 00h if successful
  4068.        ES:BX buffer filled
  4069.     AX = FFFFh if end of table or no name available
  4070. Notes:    use this function to get the names of the hosts on the network
  4071.     successive calls are necessary to get all names
  4072. SeeAlso: AX=D600h/DH=FFh
  4073. --------N-6AD600DHFF-------------------------
  4074. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
  4075.     AX = D600h
  4076.     DH = FFh
  4077. Return: AX = number of service table entries
  4078.     BX = status
  4079.         0000h service table has not overflowed
  4080.         FFFFh service table has overflowed
  4081. SeeAlso: AX=D500h
  4082. --------N-6B---------------------------------
  4083. INT 6B - DECnet DOS - PORT DRIVER
  4084. InstallCheck:    test for a signature area (see #3400) immediately preceding
  4085.       the interrupt handler
  4086. SeeAlso: INT 6A"DECnet",INT 6C"DECnet"
  4087. Index:    installation check;DECnet DOS Port Driver
  4088.  
  4089. Format of DECnet DOS signature area:
  4090. Offset    Size    Description    (Table 3400)
  4091.  -5    BYTE    major version number
  4092.  -4    BYTE    minor version number
  4093.  -3   3 BYTEs    signature (ASCII "PDV")
  4094. --------v-6B---------------------------------
  4095. INT 6B - VIRUS - "Saddam" - ORIGINAL INT 21h VECTOR
  4096. SeeAlso: INT 21/AX=FFFFh,INT 61"VIRUS",INT 70"VIRUS"
  4097. --------h-6B---------------------------------
  4098. INT 6B C - HP Vectra AT - IRQ19 - RESERVED HARDWARE INTERRUPT
  4099. SeeAlso: INT 0B"IRQ3",INT 6A"HP Vectra",INT 6C"HP Vectra"
  4100. --------S-6B0000-----------------------------
  4101. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
  4102.     AX = 0000h
  4103.     CX = length
  4104.     ES:BX -> buffer
  4105. Return: CX = number of bytes written
  4106. Program: NASI is Novell's NetWare Asynchronous Services Interface (purchased
  4107.       from Network Products Corp, who call it NCSI) which runs on
  4108.       workstations; NACS is the NetWare Asynchronous Communications
  4109.       Services module which runs on servers
  4110. InstallCheck:    test for the signature string "NCSI" three bytes past the
  4111.       interrupt handler; see also AH=02h.
  4112.     As of version 3.0, Novell's NASI can be distinguished from NPC's
  4113.       NCSI by the presence of an 'A' immediately following the signature
  4114. Notes:    this function is also supported by TelAPI, NPC NCSI, and Connection
  4115.       Manager CLIENT.EXE; for TelAPI, nonzero values in AL specify a
  4116.       connection ID
  4117.     Connection Manager returns CF set/AL=FFh if called while an INT 6B
  4118.       call is already in progress
  4119. SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h,INT 14/AH=E3h
  4120. --------S-6B0100-----------------------------
  4121. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
  4122.     AX = 0100h
  4123.     CX = length of buffer
  4124.     ES:BX -> buffer
  4125. Return: CX = number of bytes read
  4126. Note:    also supported by TelAPI and NPC NCSI; for TelAPI, nonzero values in
  4127.       AL specify a connection ID
  4128. SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AH=E2h,INT 14/AX=FF02h
  4129. --------S-6B02-------------------------------
  4130. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
  4131.     AH = 02h
  4132.     AL nonzero
  4133. Return: AL = 00h if present and OK
  4134. Note:    this function is also supported by TelAPI and NPC NCSI
  4135. SeeAlso: AX=0700h
  4136. --------S-6B0600-----------------------------
  4137. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
  4138.     AX = 0600h
  4139.     CX = command
  4140.         02h send break
  4141.         04h disconnect
  4142.         06h hold
  4143. Return: CF clear if successful
  4144.         AL = 00h
  4145.     CF set on error
  4146.         AX < 0
  4147. Note:    this function is also supported by TelAPI and NPC NCSI
  4148. --------S-6B0700-----------------------------
  4149. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
  4150.     AX = 0700h
  4151. Return: CH <> 00h if connection active
  4152. Notes:    this function is also supported by TelAPI and NPC NCSI
  4153.     Novell TelAPI returns CX=FF01h and CF clear
  4154. SeeAlso: AH=02h,AH=10h
  4155. --------N-6B08-------------------------------
  4156. INT 6B - TelAPI - CHECK FOR BREAK SIGNAL
  4157.     AH = 08h
  4158.     AL = circuit number
  4159. Return: CF clear if no breaks
  4160.         AL = 00h
  4161.         CX = 0000h
  4162.     CF set if one or more breaks received
  4163. Note:    this function also clears ??? flag
  4164. SeeAlso: INT 14/AX=FF00h
  4165. --------S-6B10-------------------------------
  4166. INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
  4167.     AH = 10h
  4168.     AL = connection ID (Novell TELAPI.EXE)
  4169.     CX = ???
  4170.     ES:BX -> buffer for status (see #3401)
  4171. Return: CF clear if successful
  4172.         CL = ???
  4173.         CH = ???
  4174.     CF set on error
  4175.     ???
  4176. Notes:    this function is also supported by TelAPI
  4177.     when shelled out to an external protocol from Novell NASI, the circuit
  4178.       whose status indicates that it is connected is the currently active
  4179.       circuit
  4180. SeeAlso: AX=0700h,AH=12h,AH=1Fh
  4181.  
  4182. Format of NASI status:
  4183. Offset    Size    Description    (Table 3401)
  4184.  00h    BYTE    number of allocated virtual circuits
  4185.  01h    BYTE    reserved
  4186.  02h  9 BYTEs    states of emulated circuits 0-8
  4187.         00h idle
  4188.         01h attached Telnet session, in command state
  4189.         02h attached Telnet session, connected with host
  4190.         03h-06h ??? (not returned by TelAPI)
  4191. Note:    this description is derived from the Novell TelAPI emulation of NASI
  4192. --------S-6B11--DX0001-----------------------
  4193. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
  4194.     AH = 11h
  4195.     DX = 0001h
  4196.     AL = 00h
  4197.     ES:BX -> service name string (8 characters, blank-padded)
  4198. Return: CF clear if successful
  4199.         AL = virtual circuit number allocated (01h for Novell TELAPI.EXE)
  4200.         CL = ??? (01h for Novell TELAPI.EXE)
  4201.         CH = ??? (01h for Novell TELAPI.EXE)
  4202.     CF set on error
  4203.         ???
  4204. Note:    this function is also supported by TelAPI
  4205. SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
  4206. --------S-6B12-------------------------------
  4207. INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
  4208.     AH = 12h
  4209.     AL = virtual circuit number (0-8)
  4210. Return: CF clear if successful
  4211.         AL = virtual circuit number
  4212.         CL = virtual circuit's state
  4213.         00h idle
  4214.         01h Telnet session, in command state
  4215.         02h Telnet session, connected to host
  4216.         03h-06h ??? (not returned by TelAPI)
  4217.     CF set on error
  4218.         AL = error code
  4219.         E2h invalid virtual circuit number
  4220.         E4h specified virtual circuit not allocated
  4221. Note:    this function is also supported by TelAPI
  4222. SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
  4223. --------S-6B13-------------------------------
  4224. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
  4225.     AH = 13h
  4226.     AL = virtual circuit number
  4227.     CL = direction (00h get, nonzero set)
  4228.     ES:BX -> buffer for/containing service name
  4229. Return: ???
  4230. Note:    this function is also supported by TelAPI
  4231. SeeAlso: AH=14h,AH=15h
  4232. --------S-6B14-------------------------------
  4233. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
  4234.     AH = 14h
  4235.     AL = virtual circuit number
  4236.     ES:BX -> buffer for/containing service address
  4237. Return: ???
  4238. Note:    this function is also supported by TelAPI, which only supports
  4239.       retrieving the address
  4240. SeeAlso: AH=13h,AH=15h,AH=21h
  4241. --------S-6B15-------------------------------
  4242. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
  4243.     AH = 15h
  4244.     AL = virtual circuit number
  4245.     CL = direction (00h get, nonzero set)
  4246.     ES:BX -> buffer for/containing virtual circuit config (see #3402)
  4247. Return: ES:BX buffer filled
  4248. Note:    this function is also supported by TelAPI
  4249. SeeAlso: AH=13h"NCSI",AH=14h"NCSI"
  4250.  
  4251. Format of virtual circuit configuration:
  4252. Offset    Size    Description    (Table 3402)
  4253.  00h    WORD    buffer length
  4254.  02h    WORD    port ID
  4255.  04h    WORD    receive rate
  4256.  06h    WORD    receive word length
  4257.  08h    WORD    receive stop bits
  4258.  0Ah    WORD    receive parity
  4259.  0Ch    WORD    transmit rate
  4260.  0Eh    WORD    transmit word length
  4261.  10h    WORD    transmit stop bits
  4262.  12h    WORD    transmit parity
  4263.  14h    WORD    DTR
  4264.  16h    WORD    RTS
  4265. --------S-6B16-------------------------------
  4266. INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
  4267.     AH = 16h
  4268.     AL = virtual circuit number
  4269.     CL = ??? switch (00h, ???)
  4270. Return: CF clear if successful
  4271.         AL = virtual circuit number
  4272.     CF set on error
  4273.         ???
  4274. Note:    this function is also supported by TelAPI, which always returns CF
  4275.       clear and AL=00h
  4276. SeeAlso: AH=11h,AH=12h,AH=17h
  4277. --------S-6B17-------------------------------
  4278. INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
  4279.     AH = 17h
  4280.     AL = virtual circuit number
  4281. Return: CF clear if successful
  4282.     CF set on error
  4283.     ???
  4284. Note:    this function is also supported by TelAPI, which always returns CF
  4285.       clear and AL=00h
  4286. SeeAlso: AH=11h,AH=16h
  4287. --------S-6B18-------------------------------
  4288. INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
  4289.     AH = 18h
  4290.     AL = virtual circuit number
  4291.     CX = number of characters to send
  4292.     ES:BX -> buffer containing characters to be sent
  4293. Return: CF clear if successful
  4294.     CF set on error
  4295.     ???
  4296. Note:    this function is also supported by TelAPI, which always returns CF
  4297.       clear and AL=30h
  4298. SeeAlso: AX=0000h,AH=12h,AH=19h
  4299. --------S-6B19-------------------------------
  4300. INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
  4301.     AH = 19h
  4302.     AL = virtual circuit number
  4303.     CX = number of characters to read
  4304.     ES:BX -> buffer for received characters
  4305. Return: CX = 0000h if failed
  4306.     CX = nonzero (possibly number of characters received) if successful
  4307. Note:    this function is also supported by TelAPI
  4308. SeeAlso: AX=0100h,AH=12h,AH=18h
  4309. --------S-6B1A-------------------------------
  4310. INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
  4311.     AH = 1Ah
  4312.     ???
  4313. Return: ???
  4314. SeeAlso: AH=12h,AH=1Bh
  4315. --------S-6B1B-------------------------------
  4316. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
  4317.     AH = 1Bh
  4318.     ???
  4319. Return: ???
  4320. SeeAlso: AH=12h,AH=1Ah
  4321. --------S-6B1C-------------------------------
  4322. INT 6B - NPC NCSI EXTENDED SERIAL I/O - CLEAR RECEIVE BUFFER
  4323.     AH = 1Ch
  4324.     AL = circuit number
  4325. Return: nothing
  4326. SeeAlso: AH=1Dh"NCSI",AH=1Eh"NCSI"
  4327. --------S-6B1D-------------------------------
  4328. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
  4329.     AH = 1Dh
  4330.     ???
  4331. Return: ???
  4332. SeeAlso: AH=1Ch,AH=1Eh
  4333. --------S-6B1E-------------------------------
  4334. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
  4335.     AH = 1Eh
  4336.     ???
  4337. Return: ???
  4338. SeeAlso: AH=1Ch,AH=1Dh
  4339. --------S-6B1F-------------------------------
  4340. INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
  4341.     AH = 1Fh
  4342.     ???
  4343. Return: ???
  4344. SeeAlso: AH=10h,AH=12h
  4345. --------S-6B20-------------------------------
  4346. INT 6B - Connection Manager CLIENT.EXE - ???
  4347.     AH = 20h
  4348.     ???
  4349. Return: ???
  4350. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4351.       serial ports over an IPX or NetBIOS-based network
  4352. Note:    CLIENT.EXE returns CF set/AL=F9h if AH is not 00h to 21h on entry
  4353. --------S-6B21-------------------------------
  4354. INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
  4355.     AH = 21h
  4356.     AL = virtual circuit number
  4357.     CL = ??? (00h or 01h)
  4358.     ES:BX -> buffer for service name structure (see #3403)
  4359. Return: CF clear if successful
  4360.         ES:BX buffer filled
  4361.     CF set on error
  4362. Notes:    a program should call this function after allocating a virtual circuit
  4363.       and check that the general name matches the requested service
  4364.     prior to version 3.0, Novell's NASI returned the first available port;
  4365.       v3.0+ returns the first port found--check the returned status to
  4366.       determine whether the port is available
  4367. SeeAlso: AH=14h"NCSI"
  4368.  
  4369. Format of NCSI service name structure:
  4370. Offset    Size    Description    (Table 3403)
  4371.  00h    WORD    buffer length
  4372.  02h  8 BYTEs    service name
  4373.  0Ah  8 BYTEs    general name
  4374.  12h  8 BYTEs    specific name
  4375.  1Ah  4 BYTEs    ???
  4376. ---Novell NASI v3.0+ ---
  4377.  1Eh    BYTE    port number
  4378.  1Fh    BYTE    port status
  4379.         00h idle (available)
  4380.         01h allocated (available)
  4381.         02h connected
  4382.         03h on hold
  4383. ----------6B6B-------------------------------
  4384. INT 6B - Tandy SCHOOLMATE PLUS - API
  4385.     AH = 6Bh
  4386.     AL = E0h to FFh
  4387. Note:    details not yet available
  4388. ----------6C---------------------------------
  4389. INT 6C - system resume vector (CONVERTIBLE)
  4390. ----------6C---------------------------------
  4391. INT 6C - DOS 3.2 Realtime Clock update
  4392. --------N-6C---------------------------------
  4393. INT 6C - DECnet DOS network scheduler
  4394. InstallCheck:    test for a signature area immediately preceding the interrupt
  4395.       handler (see #3404)
  4396. Note:    this function is also supported by DEC Pathworks for DOS
  4397. SeeAlso: INT 6B"DECnet",INT 6D"DECnet",INT 6E"DECnet"
  4398. Index:    installation check;DECnet DOS scheduler
  4399.  
  4400. Format of DECnet DOS signature area:
  4401. Offset    Size    Description    (Table 3404)
  4402.  -5    BYTE    major version number
  4403.  -4    BYTE    minor version number
  4404.  -3   3 BYTEs    signature (ASCII "SCH")
  4405. --------h-6C---------------------------------
  4406. INT 6C C - HP Vectra AT - IRQ20 - HP-HIL CONTROLLER INTERRUPT
  4407. SeeAlso: INT 0C"IRQ4",INT 6B"HP Vectra",INT 6D"HP Vectra"
  4408. --------V-6D---------------------------------
  4409. INT 6D - VIDEO - many VGA - VIDEO BIOS ENTRY POINT
  4410. Desc:    points at the original INT 10 entry point set up by the VGA BIOS
  4411. Notes:    used by IBM, ATI VGA Wonder, Paradise, Video7, and NCR, and many others
  4412.     the Diamond Stealth64 BIOS uses this vector to store the INT 42 vector
  4413.        of the inactive video (see INT 10/AH=12h/BL=35h)
  4414. SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh,INT 10/AH=12h/BL=10h
  4415. --------V-6D---------------------------------
  4416. INT 6D - Trident SVGA - VIDEO BIOS HANDLER
  4417. Note:    the BIOS INT 10 handler on various Trident VGA cards consists merely
  4418.       of a call to INT 6D followed by an IRET.
  4419. --------N-6D---------------------------------
  4420. INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM
  4421.     AH = function
  4422.     ???
  4423. Return: ???
  4424. InstallCheck:    test for a signature area immediately preceding the interrupt
  4425.       handler (see #3405)
  4426. SeeAlso: INT 69/AH=0Ah,INT 6C"DECnet",INT 6E"DECnet"
  4427. Index:    installation check;DECnet DOS Data Link Layer
  4428.  
  4429. Format of DECnet DOS signature area:
  4430. Offset    Size    Description    (Table 3405)
  4431.  -5    BYTE    major version number
  4432.  -4    BYTE    minor version number
  4433.  -3   3 BYTEs    signature (ASCII "DLL")
  4434. --------h-6D---------------------------------
  4435. INT 6D C - HP Vectra AT - IRQ21 - RESERVED HARDWARE INTERRUPT
  4436. SeeAlso: INT 0D"IRQ5",INT 6C"HP Vectra",INT 6E"HP Vectra"
  4437. --------V-6DBD60-----------------------------
  4438. INT 6D U - Matrox Multiple Monitor Support v1.0 - ???
  4439.     AX = BD60h
  4440.     DS:SI -> buffer containing ??? (see #3406)
  4441.     ???
  4442. Return: AX = 00BDh if function executed
  4443.        ???:SI -> 22-byte buffer (inside TSR) filled with ??? (see #3406)
  4444.     AX unchanged if function disabled
  4445. Note:    this function is a NOP if AX=BD6Fh/BL=01h was called
  4446. SeeAlso: AX=BD61h,AX=BD6Fh,AX=BDFFh
  4447.  
  4448. Format of Matrox ??? buffer:
  4449. Offset    Size    Description    (Table 3406)
  4450.  00h  4 BYTEs    ???
  4451.  04h    WORD    video mode width in pixels
  4452.  06h    WORD    video mode height in pixels
  4453.  08h    BYTE    ???
  4454.  09h    BYTE    ???
  4455.  0Ah    BYTE    ???
  4456.  0Bh    BYTE    flags
  4457.         bit 1: ???
  4458.         bit 4: ??? (corresponds to bit 14 for AX=BD61h)
  4459.         bit 5: ??? (corresponds to bit 15 for AX=BD61h)
  4460.  0Ch    DWORD    -> ??? buffer
  4461.  10h    WORD    ???
  4462.         bit 4: ??? (corresponds to bit 14 for AX=BD61h)
  4463.         bit 5: ??? (corresponds to bit 15 for AX=BD61h)
  4464.  12h  4 BYTEs    ???
  4465. SeeAlso: #3407
  4466. --------V-6DBD61-----------------------------
  4467. INT 6D U - Matrox Multiple Monitor Support v1.0 - GET VIDEO MODE INFORMATION
  4468.     AX = BD61h
  4469.     BX = width in pixels (bits 13-0)
  4470.         bit 14: ???
  4471.         bit 15: ???
  4472.     CX = height in pixels
  4473. Return: AL = BDh if function supported
  4474.         AH = status
  4475.         00h successful
  4476.         01h failed (resolution/flags not supported)
  4477.         CX:BX -> video mode data structure (see #3407)
  4478.           (first word is FFFFh if unsupported resolution)
  4479.         EAX high word cleared
  4480. SeeAlso: AX=BD60h,AX=BD6Fh,AX=BDFFh
  4481.  
  4482. Format of Matrox video mode information (VCE structure):
  4483. Offset    Size    Description    (Table 3407)
  4484.  00h    WORD    width in pixels
  4485.  02h    WORD    height in pixels
  4486.  04h    WORD    ???
  4487.  06h    DWORD    dot clock frequency
  4488.  0Ah 25 BYTEs    ???
  4489. SeeAlso: #3406
  4490. --------V-6DBD6F-----------------------------
  4491. INT 6D U - Matrox Multiple Monitor Support v1.0 - INSTALLATION CHECK
  4492.     AX = BD6Fh
  4493.     BL = subfunction
  4494.         00h installation check
  4495.         01h disable TSR
  4496.         02h enable TSR (see AX=BD60h)
  4497. Return: AX = 00BDh if installed
  4498. SeeAlso: AX=BD60h,AX=BD61h,AX=BDFFh
  4499. --------V-6DBDFF-----------------------------
  4500. INT 6D U - Matrox Multiple Monitor Support v1.0 - UNHOOK INTERRUPT (UNINSTALL)
  4501.     AX = BDFFh
  4502. Return: AX = 00BDh if supported
  4503. Note:    this function revectors INT 6D without checking that it points at the
  4504.       TSR, and does not release the memory occupied by the TSR
  4505. SeeAlso: AX=BD60h,AX=BD61h,AX=BD6Fh
  4506. --------N-6E---------------------------------
  4507. INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
  4508. InstallCheck:    test for the signature/data area (see #3408) immediately prior
  4509.       to the interrupt handler
  4510. Note:    this is the main DECnet DOS access, and is described in Digital manual
  4511.       AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
  4512. Index:    installation check;DECnet DOS
  4513.  
  4514. Format of DECnet DOS signature area:
  4515. Offset    Size    Description    (Table 3408)
  4516.  -5    BYTE    major version number
  4517.  -4    BYTE    minor version number
  4518.  -3   3 BYTEs    signature (ASCII "DNP")
  4519. --------h-6E---------------------------------
  4520. INT 6E C - HP Vectra AT - IRQ22 - RESERVED HARDWARE INTERRUPT
  4521. SeeAlso: INT 0E"IRQ6",INT 6D"HP Vectra",INT 6F/AH=00h"HP Vectra"
  4522. --------N-6F---------------------------------
  4523. INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
  4524.     AX = function
  4525.         0000h enter terminal mode
  4526.         Return: AX = status
  4527.                 0000h no action requested
  4528.                 0001h screen save
  4529.         0001h reset interface and set configuration parameters
  4530.         DX = bitfields
  4531.             bits 2-0: model number
  4532.             bits 4-3: I/O address
  4533.             bits 6-5: DMA channel
  4534.         Return: nothing
  4535.         0002h set display parameters
  4536.         DX = bitfields
  4537.             bits 1-0: OIA mode
  4538.             bits 4-2: monitor support
  4539.         Return: nothing
  4540.         0003h read status
  4541.         Return: AX = status word (see #3409)
  4542.         0004h read cursor position
  4543.         Return: AX = cursor position
  4544.         0005h get character from device buffer
  4545.         DX = cursor position
  4546.         Return: AH = type (00h data, 01h attribute)
  4547.             AL = data or attribute character
  4548.         0006h send character
  4549.         DH = type (00h ASCII, 01h extended code)
  4550.         DL = ASCII character or extended code
  4551.         Return: nothing
  4552.         0007h set timeout
  4553.         DX = timeout in seconds
  4554.         Return: nothing
  4555.         0008h wait for location to be modified
  4556.         DX = cursor position
  4557.         Return: AX = status (0000h modified, nonzero timeout)
  4558.         0009h NOP
  4559.         000Ah restore display
  4560.         Return: nothing
  4561.         000Bh update device buffer
  4562.         Return: AX = cursor positoin
  4563.         000Ch write string to add information area
  4564.         DS:DX -> string
  4565.         Return: nothing
  4566.         000Dh maintenance operations
  4567.         DX = maintenance operation code
  4568.         Return: AX = operation status
  4569.         000Eh get control program version
  4570.         Return: AH = release number (major version)
  4571.             AL = level number (minor version)
  4572.         000Fh get microcode version
  4573.         Return: AH = release number (major version)
  4574.             AL = level number (minor version)
  4575.         0010h save or display graphics
  4576.         BX = length of data buffer
  4577.         CX = subfunction request code
  4578.         DS:DX -> data buffer
  4579.         Return: AX = return code
  4580.             CX = length of PIF data
  4581.         0011h perform structured field operation
  4582.         CX = request number
  4583.         DS:DX -> parameter list
  4584.         Return: AX = status word (see #3409)
  4585.             CX = error number
  4586.         0012h set cursor position for direct write buffer
  4587.         DX = new cursor position
  4588.         Return: AX = status word (see #3409)
  4589.         0013h write direct to buffer
  4590.         DL = character to be written
  4591.         DH = translation option
  4592.         Return: AX = status word (see #3409)
  4593.         0014h write direct to buffer without echo
  4594.         DL = character to be written
  4595.         DH = translation option
  4596.         Return: AX = status word (see #3409)
  4597.         0015h set direct write string length
  4598.         DX = string value
  4599.         Return: nothing
  4600.         0016h write string direct to buffer
  4601.         DS:DX -> string
  4602.         Return: AX = status word (see #3409)
  4603.         0017h write string direct to buffer, untranslated
  4604.         DS:DX -> string
  4605.         Return: AX = status word (see #3409)
  4606.         0018h get direct-write cursor position
  4607.         Return: AX = cursor position
  4608.         0019h convert row/column to cursor position
  4609.         DH = display row (1-43)
  4610.         DL = display column (1-132)
  4611.         Return: AX = cursor position
  4612.         001Ah convert cursor position to row/column
  4613.         DX = cursor position
  4614.         Return: AH = display row
  4615.             AL = display column
  4616.         001Bh find next field
  4617.         DX = initial cursor position
  4618.         Return: AX = field cursor position
  4619.         001Ch find previous field
  4620.         DX = initial cursor position
  4621.         Return: AX = field cursor position
  4622.         001Dh find next unprotected field
  4623.         DX = initial cursor position
  4624.         Return: AX = field cursor position
  4625.         001Eh find previous unprotected field
  4626.         DX = initial cursor position
  4627.         Return: AX = field cursor position
  4628.         001Fh find next protected field
  4629.         DX = initial cursor position
  4630.         Return: AX = field cursor position
  4631.         0020h find previous protected field
  4632.         DX = initial cursor position
  4633.         Return: AX = field cursor position
  4634.         0021h masked search forward
  4635.         DH = mask
  4636.         DL = search pattern
  4637.         Return: AX = cursor position or 0000h
  4638.         0022h masked search backward
  4639.         DH = mask
  4640.         DL = search pattern
  4641.         Return: AX = cursor position or 0FFFh
  4642.         0023h find field length
  4643.         DX = cursor position
  4644.         Return: AX = field length
  4645.         0024h read field
  4646.         DS:DX -> buffer for field contents
  4647.         Return: AX = status word (see #3409)
  4648.         0025h read screen
  4649.         DS:DX -> buffer for screen contents
  4650.         Return: AX = status word (see #3409)
  4651.         0026h read buffer untranslated
  4652.         DX = cursor position
  4653.         Return: AX = buffer code
  4654.             CX:BX -> 3278/79 device buffer image
  4655.         0027h enable/disable keyboard
  4656.         DL = new state of keyboard breaks (00h enabled, 01h disabled)
  4657.         Return: nothing
  4658.         0028h select host session
  4659.         DL = session short name
  4660.         Return: AX = session information
  4661.         0029h retrieve host session name
  4662.         AX = short name (DFT) or 0000h (not available, CUT mode)
  4663.         002Ah get current device buffer size
  4664.         Return: AX = device buffer size
  4665.             CX = segment of EAB
  4666.         002Bh arm modified location trigger
  4667.         DX = cursor position
  4668.         Return: AX = status (0000h not available, 0001h successful)
  4669.  
  4670. Bitfields for PCOX status word:
  4671. Bit(s)    Description    (Table 3409)
  4672.  0,1    cursor type
  4673.  2    cursor inhibited
  4674.  3    display inhibited
  4675.  4    feature step inhibited
  4676.  5    480-character format code
  4677.  6,7    unused
  4678.  8-10    model number (2-5)
  4679.  11    unit has been reset by controller (cleared after status returned)
  4680.  12    buffer has been written into (cleared after status returned)
  4681.  13    alarm has been sounded (cleared after status returned)
  4682.  14-15    monitor type (01 mono, 10 color, 11 hybrid)
  4683. --------N-6F00-------------------------------
  4684. INT 6F - 10NET - LOGIN
  4685.     AH = 00h
  4686.     DS:DX -> login record (see #3410)
  4687. Return: CL = security level
  4688.     AX = status (see #3411)
  4689. SeeAlso: AH=01h,AH=80h,INT 21/AX=4402h"10MEMMGR"
  4690.  
  4691. Format of 10NET login record:
  4692. Offset    Size    Description    (Table 3410)
  4693.  00h  8 BYTEs    user name
  4694.  08h  8 BYTEs    password
  4695.  10h 12 BYTEs    name of SuperStation
  4696.  
  4697. (Table 3411)
  4698. Values for 10NET status:
  4699.  0000h    successful
  4700.  01FFh    "RTO_NERR" transmit interrupt lost (time out on response)
  4701.  02FFh    "NET_NERR" network (hardware) error
  4702.  03FFh    "PAS_NERR" invalid password
  4703.  04FFh    "LRN_NERR" local resource not available
  4704.  05FFh    "SRN_NERR" server resource not available
  4705.  06FFh    "LNM_NERR" already logged in under different name
  4706.  07FFh    "LSF_NERR" login security failure (node)
  4707.  08FFh    "NLI_NERR" not logged in
  4708.  09FFh    "DIVZ_NERR" position calc error
  4709.  0AFFh    "NT1_NERR" receive subfunction not = send subfunction (i.e. read,write)
  4710.  0BFFh    "RFNC_NERR" request function not in range
  4711.  0CFFh    "NSFH_NERR" no more server file handle entries left
  4712.  0DFFh    "NFTAB_NERR" no more shared file table entries left
  4713.  0EFFh    "NUFH_NERR" no more user file handle entries left
  4714.  0FFFh    "CHAT_NERR" chat permit not on
  4715.  10FFh    "NSRV_NERR" not a server on request
  4716.  11FFh    "NOBD_NERR" no transporter board error
  4717.  12FFh    "STO_NERR" time out on send
  4718.  13FFh    "INF_NERR" item not found (spool item not on queue)
  4719.  14FFh    "DACS_NERR" DOS access incompatible
  4720.  15FFh    "RLOCK_NERR" record already locked
  4721.  16FFh    "IVP_NERR" invalid parameter
  4722.  17FFh    "RLTO_NERR" record lock time out error
  4723.  18FFh    "CSPL_NERR" currently spooling to named device
  4724.  19FFh    "DRP_NERR" dropped receive message (throttle)
  4725.  1AFFh    "SOPV_NERR" open sharing violation
  4726.  1BFFh    "NTUF_NERR" no more tuf entries left
  4727.  1CFFh    "NOWN_NERR" not file owner on open
  4728.  1DFFh    "RSEC_NERR" read security not passed
  4729.  1EFFh    "WSEC_NERR" write security not passed
  4730.  1FFFh    "GSEC_NERR" group security not passed
  4731.  20FFh    "SEC1_NERR" security file failure
  4732.  21FFh    "ACT1_NERR" activity file failure
  4733.  22FFh    "SPL1_NERR" spool control file failure
  4734.  23FFh    "NMT_NERR" device not mounted (spooling)
  4735.  24FFh    "RSPL_NERR" spool file has not been terminated
  4736.  25FFh    "DNSH_NERR" device not mounted or is not being shared
  4737.  26FFh    "DUP_NERR" duplicate node ID
  4738.  27FFh    "FNF_NERR" file not found error
  4739.  28FFh    "NMF_NERR" no more files
  4740.  29FFh    "UN_NERR" unknown internal system error
  4741.  2AFFh    "QCP_NERR" print queue is full or corrupted
  4742.  2BFFh    "IFNC_NERR" invalid function
  4743.  2CFFh    "IVH_NERR" invalid handle
  4744.  2DFFh    "TOF_NERR" too many files opened
  4745.  2EFFh    "PNF_NERR" path not found
  4746.  2FFFh    "SACT_NERR" named file is active
  4747. ---10NET v5.0+ ---
  4748.  30FFh    "NAK_NERR" received NAK on send (destination out of buffers)
  4749.  31FFh    "RENT_NERR" reentrancy in driver F_SEND
  4750.  32FFh    "RECV_NERR" driver could not be put in receive mode
  4751.  33FFh    "NRLT_NERR" no more RLTAB entries left
  4752.  34FFh    "DIAL_NERR" function requires an unsupported dialect
  4753.  35FFh    "IVD_NERR" invalid device
  4754.  36FFh    "NALV_NERR" netname access level violated
  4755.  37FFh    "NPIDNF_NERR" network path not found
  4756.  38FFh    "SP_NERR" server is paused
  4757.  39FFh    "TMNM_NERR" too many remote user names
  4758.  3AFFh    "DUPD_NERR" duplicate network device
  4759.  3BFFh    "DIU_NERR" shared device in use, can't delete
  4760.  3CFFh    "NNWD_NERR" network name was deleted
  4761.  3DFFh    "NPFS_NERR" not enough space for print file
  4762.  3EFFh    "NNNF_NERR" network name not found (can't find the call name)
  4763.  3FFFh    "NB_NERR" network busy
  4764.  40FFh    "NDNLE_NERR" network device no longer exists
  4765.  41FFh    "NBCLE_NERR" NetBIOS command limit exceeded
  4766.  42FFh    "FINT24_NERR" Fail on INT 24h
  4767.  43FFh    "PEXP_NERR" password expired
  4768.  44FFh    "NPUP_NERR" new password error
  4769.  45FFh    "MAXS_NERR" maximum allowed disk space exceeded
  4770.  46FFh    "TDOW_NERR" time-of-day/day-of-week error
  4771. SeeAlso: #3438
  4772. Index:    error codes;10Net|10Net;error codes
  4773. --------b-6F00-------------------------------
  4774. INT 6F - HP Vectra EX-BIOS - "F_ISR" (internal) - RESPOND TO LOGICAL ISR
  4775.     AH = 00h
  4776.     BP = ID for driver (see #3412)
  4777.     DH = data type (see #3413)
  4778.     DL = physical device driver's index (driver ID / 6)
  4779.     BX,CX = data
  4780.     ES:0000h -> physical device's Describe Record (see #3420)
  4781.     ---keypress event data---
  4782.         BH = keyboard state (only if bit 5 of DH set) (see #3414)
  4783.         BL = scancode (if bit 4 of DH clear)
  4784.         CX = number of scancodes in list (if bit 4 of DH set)
  4785.         ES:SI -> scancode list (if bit 4 of DH set)
  4786.     ---motion event data---
  4787.         BX = new X position (abs device) or X increment (relative device)
  4788.         CX = new Y position (abs device) or Y increment (relative device)
  4789.     ---button event data
  4790.         BL = button information
  4791.         bits 15-8 reserved
  4792.         bit 7: button state (0 = down, 1 = up)
  4793.         bits 6-0: button number (0-7)
  4794.         BH = reserved
  4795. Return: AH = status (see #3415)
  4796.     BP,DS destroyed
  4797.     ---if device is keyboard translator---
  4798.         BL = translated scancode
  4799.         BH = new keyboard state (if DH bit 5 set) (see #3414)
  4800.         DH = new scancode type (see #3413)
  4801. Notes:    INT 6F corresponds to IRQ23 on the original HP Vectra AT, which is
  4802.       unavailable because of its use as a BIOS extension software interrupt
  4803.     the INT 6F handler consists of an instruction to load DS with the
  4804.       driver's data segment followed by an indexed far jump using BP to
  4805.       select the destination vector; since the interrupt handler is
  4806.       located immediately following the dispatch table, the HP_VECTOR_TABLE
  4807.       may be found by looking at offset 0000h in the INT 6F segment, and
  4808.       its size is equal to the offset of the interrupt handler
  4809.     each entry in the HP_VECTOR table consists of a DWORD for the driver's
  4810.       entry point address and a WORD for the driver's data segment
  4811.     this function is not user-callable, as it is a response to a physical
  4812.       event, and assumes that the caller has already handled the physical
  4813.       interrupt and updated the Describe Record (see #3420) to reflect
  4814.       the event
  4815. SeeAlso: INT 6C"HP Vectra",INT 6F/AX=0200h"HP Vectra"
  4816.  
  4817. (Table 3412)
  4818. Values for HP Vectra EX-BIOS driver ID:
  4819.  0000h    V_SCOPY (null driver, but DS value points at system copyright string)
  4820.  0006h    V_DOLITTLE (null driver)
  4821.  000Ch    V_PNULL (null driver)
  4822.  0012h    V_SYSTEM
  4823.  0018h    reserved
  4824.  001Eh    V_S8259
  4825.  0024h    reserved
  4826.  002Ah    V_SINPUT
  4827.  0030h    reserved
  4828.  0036h    V_QWERTY (keyboard translator)
  4829.  003Ch    V_SOFTKEY (keyboard translator)
  4830.  0042h    V_FUNCTION (keyboard translator)
  4831.  0048h    V_NUMPAD (keyboard translator)
  4832.  004Eh    V_CCP (keyboard translator)
  4833.  0054h    V_SVIDEO
  4834.  005Ah    V_STRACK
  4835.  0060h    V_EVENT_TOUCH
  4836.  0066h    V_EVENT_TABLET
  4837.  006Ch    V_EVENT_POINTER
  4838.  0072h    reserved
  4839.  0078h    reserved
  4840.  007Eh    reserved
  4841.  0084h    reserved
  4842.  008Ah    V_CCPCUR (keyboard translator)
  4843.  0090h    V_RAW (keyboard translator)
  4844.  0096h    V_CCPNUM (keyboard translator)
  4845.  009Ch    V_OFF (keyboard translator)
  4846.  00A2h    V_CCPGID (translator: cursor control pad keys to GID data)
  4847.  00A8h    V_SKEY2FKEY (keyboard translator)
  4848.  00AEh    V_8041
  4849.  00B4h    V_PGID_CCP
  4850.  00BAh    C_LTABLET
  4851.  00C0h    V_LPOINTER (pointing device: mouse, etc.)
  4852.  00C6h    V_LTOUCH (touch screen)
  4853.  00CCh    V_LHPMOUSE
  4854.  00D2h    ???
  4855.  ...
  4856.  0102h    ???
  4857.  0108h    V_LNULL
  4858.  010Eh    reserved
  4859.  0114h    V_HPHIL
  4860.  011Ah-01C2h reserved
  4861.  016Eh    V_SCANDOOR (scancode management chip driver) (ES/QS/RS only)
  4862.  01C8h-0228h available
  4863.  
  4864. (Table 3413)
  4865. Values for HP Vectra EX-BIOS ISR data type:
  4866.  00h    reserved "T_KC_R0"
  4867.  01h    reserved "T_KC_R1"
  4868.  02h    ASCII data
  4869.  03h    reserved "T_KC_R3"
  4870.  04h    HP150 keyboard (ITF) scancode
  4871.  05h    reserved "T_KC_R5"
  4872.  06h    device-definable type
  4873.  07h    HP Vectra keyboard set
  4874.  08h    IBM AT scancode set
  4875.  09h    button data
  4876.  0Ah    IBM PC scancode set
  4877.  0Bh    Softkey keypad (F1-F8)
  4878.  0Ch    function key keypad (F1-F10)
  4879.  0Dh    HP Cursor Control Pad keypad
  4880.  0Eh    Qwerty keypad
  4881.  0Fh    Numeric keypad
  4882.  1xh    bit 4 set: string of CX scancode of type 0xh at ES:SI
  4883.  2xh    bit 5 set: BH contains current keyboard state
  4884.  40h    signed 8-bit relative data
  4885.  41h    signed 16-bit relative data
  4886.  42h    unsigned 8-bit absolute data
  4887.  43h    unsigned 16-bit absolute data
  4888.  45h    specially-formed data (80x25) generated by V_LTOUCH
  4889.  46h    specially-formed data (640x200) generated by V_LTABLET
  4890.  47h    specially-formed data (640x200) generated by V_LPOINTER
  4891.  
  4892. Bitfields for HP Vectra EX-BIOS keyboard state:
  4893. Bit(s)    Description    (Table 3414)
  4894.  0    Alt pressed
  4895.  1    Left Shift pressed
  4896.  2    Right Shift pressed
  4897.  3    Ctrl pressed
  4898.  4    CapsLock active
  4899.  5    NumLock active
  4900.  6    Right unlabeled key pressed (some international keyboards)
  4901.  7    Left unlabeled key pressed (some international keyboards)
  4902. SeeAlso: #0506
  4903.  
  4904. (Table 3415)
  4905. Values for HP Vectra EX-BIOS status:
  4906.  00h    successful
  4907.  02h    unsupported function
  4908.  04h    not serviced
  4909.  06h    done (no further processing should be performed on the ISR event)
  4910.  F2h    device is out of paper
  4911.  F4h    device is offline
  4912.  F6h    no more space for more drivers
  4913.  F8h    driver is busy
  4914.  FAh    bad parameter
  4915.  FEh    operation failed
  4916. Note:    status codes are always even; negative values (>= 80h) indicate errors
  4917.       while positive values indicate exceptional conditions
  4918.  
  4919. Format of HP EX-BIOS driver header data:
  4920. Offset    Size    Description    (Table 3416)
  4921.  00h    WORD    driver attributes (see #3417)
  4922.  02h    WORD    string index of driver's name
  4923.  04h    WORD    driver's default logical device vector (see #3412)
  4924.  06h    WORD    driver's parent class (bitset) (see #3418)
  4925.  08h    WORD    driver's child class (bitset)
  4926.  0Ah    WORD    driver's parent vector
  4927.  0Ch    WORD    driver's child vector
  4928.  0Eh    BYTE    major subaddress
  4929.  0Fh    BYTE    minor subaddress
  4930. Notes:    this structure is located at offset 0 in the driver's data segment,
  4931.       which in turn may be read from the HP_VECTOR_TABLE (refer to note in
  4932.       main entry)
  4933.     only the first WORD is required, and everything from offset 6 onward
  4934.       is only required if the device wishes to perform device mapping
  4935. SeeAlso: #3419,#3420
  4936.  
  4937. Bitfields for HP EX-BIOS driver header attributes:
  4938. Bit(s)    Description    (Table 3417)
  4939.  15    this is a complete driver header
  4940.  14    "ATR_DEVCFG" reserved
  4941.  13    driver can be mapped with the parent vector at offset 0Ah
  4942.  12    driver can be mapped with the child vector at offset 0Ch
  4943.  11-9    driver type
  4944.     000 reserved vector
  4945.     001 free vector
  4946.     010 EX-BIOS service
  4947.     011 logical driver (mapped from parent to child)
  4948.     100 mappable driver (cannot be last in driver chain)
  4949.     101 mappable driver that is last in driver chain
  4950.     110 input driver (mappable)
  4951.     111 reserved
  4952.  8    "ATR_STRING" reserved
  4953.  7    call SF_START whenever driver is remapped
  4954.  6-5    addressing requirements
  4955.     00 no subaddresses required
  4956.     01 requires major address be stored at offset 0Eh
  4957.     10 requires minor address be stored at offset 0Fh
  4958.     11 required major,minor, and mid addresses (minor in low nybble of
  4959.           offset 0Fh, mid address in high nybble of 0Fh)
  4960.  4    driver can be shared between several parent drivers
  4961.  3    driver can be shared between several child drivers
  4962.  2    this driver header is in ROM
  4963.  1    "ATR_YIELD" reserved
  4964.  0    reserved
  4965. SeeAlso: #3416,#3418
  4966.  
  4967. Bitfields for HP EX-BIOS driver class:
  4968. Bit(s)    Description    (Table 3418)
  4969.  15    maps F1 to F8 softkeys
  4970.  14    keyboard
  4971.  13    cursor pad
  4972.  12    console device
  4973.  11    serial output device (may be capable of limited input)
  4974.  10    "CL_COMM" reserved
  4975.  9    interfaces multiple resources transparent to operating system
  4976.  8    serial output device filter (can be mapped between logical and physical
  4977.       driver to perform translations)
  4978.  7    addressed block device
  4979.  6    priority boot device
  4980.  5    logical graphics input device
  4981.  4    physical graphics input device (can map to child of another driver)
  4982.  3    "CL_GID" can map to an event
  4983.  2    physical touch device
  4984.  1    reserved
  4985.  0    class extension bit
  4986. Note:    special values: FFFFh maps to all other devices (V_PNULL), and 0000h
  4987.       maps to no other driver
  4988. SeeAlso: #3416
  4989.  
  4990. Format of HP EX-BIOS global data area:
  4991. Offset    Size    Description    (Table 3419)
  4992.  00h 20 BYTEs    reserved
  4993.  14h    BYTE    sound driver status
  4994.  15h    BYTE    number of pending key clicks (max 4) (see AH=34h/BP=0012h)
  4995.  16h    BYTE    current tick duration scaling factor
  4996.  17h    BYTE    current key click volume
  4997.  18h    WORD    current beep period (10 us increments) (see AH=3Ch/BP=0012h)
  4998.  1Ah    WORD    current beep duration (10 us increments)
  4999.  1Ch    BYTE    number of pending beep functions (max 4) (see AH=3Ah/BP=0012h)
  5000.  1Dh    BYTE    reserved
  5001.  1Eh    WORD    next unused string index number
  5002.  20h    ...    reserved
  5003. SeeAlso: #3416
  5004.  
  5005. Format of HP EX-BIOS Driver Describe Record:
  5006. Offset    Size    Description    (Table 3420)
  5007.  00h 16 BYTEs    EX-BIOS driver header data (see #3416)
  5008.  10h    BYTE    device GID type
  5009.         bits 7-4: device type
  5010.         bits 3-0: physical device link address
  5011.  11h    BYTE    physical device ID (see #3422)
  5012.  12h    WORD    logical device status bits (see #3421)
  5013.  14h    BYTE    physical device vector number (driver ID / 6)
  5014.  15h    BYTE    maximum number of axes reported (0-2)
  5015.  16h    BYTE    device class
  5016.         bits 7-4: current class
  5017.         bits 3-0: default class
  5018.  17h    BYTE    number of buttons/prompts
  5019.         bits 7-4: number of prompts
  5020.         bits 3-0: number of buttons
  5021.  18h    BYTE    reserved
  5022.  19h    BYTE    (physical devices only) maximum output burst length
  5023.  1Ah    BYTE    (physical devices only) number of write registers
  5024.  1Bh    BYTE    (physical devices only) number of read registers
  5025.  1Ch    BYTE    button transition flags (bit 0 = button0, etc.)
  5026.  1Dh    BYTE    current button states (bit 0 = button0, etc.)
  5027.  1Eh    WORD    device resolution
  5028.  20h    WORD    maximum x-axis count
  5029.  22h    WORD    maximum y-axis count
  5030.  24h    WORD    X position data for absolute devices
  5031.  26h    WORD    Y position data for absolute devices
  5032.  28h    WORD    X delta for relative devices
  5033.  2Ah    WORD    Y delta for relative devices
  5034.  2Ch    WORD    (logical devices only) X-axis scaling accumulator
  5035.         (fraction of one logical unit)
  5036.  2Eh    WORD    (logical devices only) Y-axis scaling accumulator
  5037.         (fraction of one logical unit)
  5038.  
  5039. Bitfields for HP logical device status flags:
  5040. Bit(s)    Description    (Table 3421)
  5041.  15-5    reserved
  5042.  4    event enabled
  5043.  3    tracking enabled
  5044.  2    clipping enabled
  5045.  1    button error occurred
  5046.  0    interrupt in progress
  5047. SeeAlso: #3420
  5048.  
  5049. (Table 3422)
  5050. Values for HP-HIL device ID:
  5051.  00h-02h reserved
  5052.  03h    Swiss-French keyboard
  5053.  04h-06h reserved
  5054.  07h    Canadian-English keyboard
  5055.  08h-0Ah reserved
  5056.  0Bh    Italian keyboard
  5057.  0Ch    reserved
  5058.  0Dh    Dutch keyboard
  5059.  0Eh    Swedish keyboard
  5060.  0Fh    German keyboard
  5061.  10h-12h reserved
  5062.  13h    Spanish keyboard
  5063.  14h    reserved
  5064.  15h    Belgian (Flemish) keyboard
  5065.  16h    Finnish keyboard
  5066.  17h    UK keyboard
  5067.  18h    French-Canadian keyboard
  5068.  19h    Swiss-German keyboard
  5069.  1Ah    Nerwegian keyboard
  5070.  1Bh    Frensh keyboard
  5071.  1Ch    Danish keyboard
  5072.  1Dh    Katakana keyboard
  5073.  1Eh    Latin American-Spanish keyboard
  5074.  1Fh    US-American keyboard
  5075.  20h-2Bh reserved
  5076.  2Ch-2Fh tone generator
  5077.  30h-3Fh reserved
  5078.  40h-5Bh reserved (character entry)
  5079.  5Ch-5Fh barcode reader
  5080.  60h-67h reserved (relative positions)
  5081.  68h-6Bh mouse
  5082.  6Ch-6Fh trackball
  5083.  70h-7Fh reserved (relative positions)
  5084.  80h-87h reserved (absolute positions)
  5085.  88h-8Bh touchpad
  5086.  8Ch-8Fh touch screen
  5087.  90h-97h graphics tablet
  5088.  98h-9Fh reserved (absolute positions)
  5089.  A0h-BFh compressed keyboard (91-93 keys)
  5090.  C0h-DFh extended keyboard (107-109 keys)
  5091.  E0h-FFh standard keyboard (85-87 keys)
  5092. --------N-6F01-------------------------------
  5093. INT 6F - 10NET - LOGOFF
  5094.     AH = 01h
  5095.     DS:DX -> superstation ID or nulls (12 bytes)
  5096. Return: CX = number of files closed
  5097.     AX = status (see also #3411)
  5098.         08FFh superstation ID not already logged in
  5099. SeeAlso: AH=00h"10NET",AH=81h
  5100. --------N-6F02-------------------------------
  5101. INT 6F - 10NET - STATUS OF NODE
  5102.     AH = 02h
  5103.     DS:DX -> 512-byte status record (see #3424)
  5104. Return: CF clear if successful
  5105.     CF set on error
  5106.         AX = error code (see #3411)
  5107. SeeAlso: INT 21/AX=5E01h"10NET"
  5108.  
  5109. (Table 3423)
  5110. Values for 10NET station type:
  5111.  00h    workstation
  5112.  01h    superstation
  5113.  02h    gateway station
  5114.  03h    gateway active
  5115.  04h    logged into multiple superstations
  5116.  05h    reserved
  5117.  
  5118. Format of 10NET node status record:
  5119. Offset    Size    Description    (Table 3424)
  5120.  00h  8 BYTEs    user name (0 if none)
  5121.  08h    BYTE    station type (see #3423)
  5122.  09h 24 BYTEs    list of superstations logged into more than one superstation
  5123.  21h 12 BYTEs    node ID
  5124.  2Dh    WORD    message count for this station (send for user node, receive for
  5125.           superstations)
  5126. ---for superstations only---
  5127.  2Fh    WORD    drives allocated (bit 0=A:, bit 1=B:,...)
  5128.  31h    BYTE    user service flags (see #3425)
  5129.  32h    BYTE    printers allocated (bit 0=LPT1,...)
  5130.  33h    BYTE    number of unprinted spool files
  5131.  34h    BYTE    number of opened files
  5132.  35h    BYTE    number of logged on nodes
  5133.  36h    BYTE    primary drive (1=A:)
  5134.  37h    BYTE    reserved
  5135.  38h  N BYTEs    list of logged on node IDs (each 12 bytes, max 37 IDs)
  5136. 1F4h  3 BYTEs    time: sec/min/hrs
  5137. 1F7h  3 BYTEs    date: day/mon/year-1980
  5138.  
  5139. Bitfields for 10NET user service flags:
  5140. Bit(s)    Description    (Table 3425)
  5141.  7    gate
  5142.  6    print permit on
  5143.  4    SUBMIT is on
  5144.  3    mail waiting for node
  5145.  2    calendar waiting for you
  5146.  1    news waiting for you
  5147.  0    mail waiting for you
  5148. --------b-6F0200-----------------------------
  5149. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_INIT" - START INITIALIZING DRIVER
  5150.     AX = 0200h
  5151.     BP = driver ID (see #3412)
  5152.     BX = "last-used DS" value from HP global data area (see #3419)
  5153. Return: AH = status (see #3415)
  5154.     BX = new "last-used DS" value
  5155.     BP,DS destroyed
  5156. SeeAlso: AH=00h"HP Vectra",AX=0202h,AH=0Ch"F_INS_FIXOWNDS"
  5157. --------b-6F0202-----------------------------
  5158. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_START" - COMPLETE DRIVER INITIALIZ.
  5159.     AX = 0202h
  5160.     BP = driver ID (see #3412)
  5161. Return: AH = status (see #3415)
  5162.     BP,DS destroyed
  5163. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0204h"HP Vectra"
  5164. --------W-6F0204-----------------------------
  5165. INT 6F C - MS Windows 3.0 - DOS APPLICATION SWITCH HOOK
  5166.     AX = 0204h
  5167. Return: AX = status
  5168.         0000h switch is allowed
  5169.         other switch not allowed
  5170. Note:    intercepting this call will allow a DOS application to ensure that
  5171.       Windows will not switch away from it.
  5172. --------b-6F0204-----------------------------
  5173. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_REPORT_STATE" - GET DRIVER STATE
  5174.     AX = 0204h
  5175.     BP = driver ID (see #3412)
  5176. Return: AH = status (see #3415)
  5177.     DX = device state from Logical Describe Record (see #3420,#3426)
  5178.     BP,DS destroyed
  5179. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0206h"HP Vectra"
  5180.  
  5181. Bitfields for HP Vectra V_HPHIL driver state:
  5182. Bit(s)    Description    (Table 3426)
  5183.  0    link configuration in progress
  5184.  1    reserved
  5185.  2    no devices attached
  5186.  3    general failure
  5187.  4,5    reserved
  5188.  6    HP-HIL driver open
  5189.  7    reserved
  5190.  8    link has been reconfigured
  5191.  9    error during output request
  5192.  10    reserved
  5193.  11    output request complete
  5194.  12    timeout
  5195.  13-15    reserved
  5196. --------b-6F0206-----------------------------
  5197. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_VERSION_DESC" - GET DRIVER VERSION
  5198.     AX = 0206h
  5199.     BP = driver ID (see #3412)
  5200. Return: AH = status (see #3415)
  5201.     BX = driver release date code
  5202.         (BL = BCD years since 1960, BH = BCD week number within year)
  5203.     CX = length of version string
  5204.     ES:DI -> version string
  5205.     BP,DS destroyed
  5206. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0204h"HP Vectra",AX=0208h
  5207. --------b-6F0208-----------------------------
  5208. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_DEF_ATTR" - RESET TO DEFAULT ATTR
  5209.     AX = 0208h
  5210.     BP = driver ID (see #3412)
  5211. Return: AH = status (see #3415)
  5212.     BP,DS destroyed
  5213. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=020Ah,AX=020Ch
  5214. --------b-6F020A-----------------------------
  5215. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_GET_ATTR" - GET CURRENT ATTRIBUTES
  5216.     AX = 020Ah
  5217.     BP = driver ID (see #3412)
  5218. Return: AH = status (see #3415)
  5219.     BX,CX = current attributes
  5220.     BP,DS destroyed
  5221.     ---for V_LTOUCH, V_LPOINTER---
  5222.         BX = logical width
  5223.         CX = logical height
  5224. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Ch
  5225. --------b-6F020C-----------------------------
  5226. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_SET_ATTR" - SET DEVICE ATTRIBUTES
  5227.     AX = 020Ch
  5228.     BP = driver ID (see #3412)
  5229.     BX,CX = new attributes
  5230.     ---for V_LTOUCH, V_LPOINTER---
  5231.         BX = new logical width
  5232.         CX = new logical height
  5233. Return: AH = status (see #3415)
  5234.     BP,DS destroyed
  5235. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Ah
  5236. --------b-6F020E-----------------------------
  5237. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_OPEN" - RESERVE DRIVER FOR ACCESS
  5238.     AX = 020Eh
  5239.     BP = driver ID (see #3412) for V_HPHIL, others
  5240. Return: AH = status (see #3415)
  5241.     BP,DS destroyed
  5242. Desc:    place device in open state, which allows output to the device
  5243. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=0210h
  5244. --------b-6F0210-----------------------------
  5245. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_CLOSE" - RELEASE DRIVER
  5246.     AX = 0210h
  5247.     BP = driver ID (see #3412) for V_HPHIL, others
  5248. Return: AH = status (see #3415)
  5249.     BP,DS destroyed
  5250. Desc:    place device in closed state, which disallows output to the device
  5251. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh
  5252. --------b-6F0212-----------------------------
  5253. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_TIMEOUT" - REPORT REQUESTED TIMEOUT
  5254.     AX = 0212h
  5255.     BP = driver ID (see #3412)
  5256. Return: AH = status (see #3415)
  5257.     BP,DS destroyed
  5258. Desc:    report to driver that a previously-requested timeout interval has
  5259.       expired
  5260. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0214h,AX=0216h
  5261. --------b-6F0214-----------------------------
  5262. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_INTERVAL" - 60 HZ INTERVAL EXPIRED
  5263.     AX = 0214h
  5264.     BP = driver ID (see #3412)
  5265. Return: AH = status (see #3415)
  5266.     BP,DS destroyed
  5267. Desc:    report to driver that a previously-requested 60 Hz interval has
  5268.       expired
  5269. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0212h,AX=0216h
  5270. --------b-6F0216-----------------------------
  5271. INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_TEST" - PERFORM HARDWARE TEST
  5272.     AX = 0216h
  5273.     BP = driver ID (see #3412)
  5274. Return: AH = status (see #3415)
  5275.     BP,DS destroyed
  5276.     ---on failure---
  5277.     CX = length of reason string
  5278.     ES:DI -> string describing error
  5279. SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0212h,AX=0214h
  5280. --------N-6F03-------------------------------
  5281. INT 6F - 10NET - GET ADDRESS OF CONFIGURATION TABLE
  5282.     AH = 03h
  5283.     DS:DI -> node ID (optional)
  5284. Return: ES:BX -> configuration table (see #3427)
  5285. SeeAlso: AH=13h,INT 21/AX=5E01h"10NET"
  5286.  
  5287. Format of 10NET configuration table:
  5288. Offset    Size    Description    (Table 3427)
  5289. -41    WORD    local device table address
  5290. -39    WORD    extended network error mapping table address
  5291. -37    WORD    shared device table address
  5292. -35    WORD    mounted device table address
  5293. -33    BYTE    receive buffer counter
  5294. -32    BYTE    collect buffer counter
  5295. -31    WORD    TUF address
  5296. -29    BYTE    enable flag
  5297. -28    BYTE    FCB keep flag
  5298. -27    WORD    reserved
  5299. ---up to here, 10NET v3.3---
  5300. -25    WORD    count of dropped Send6F
  5301. -23    WORD    buffer start address
  5302. -21    WORD    comm driver base address
  5303. -19    WORD    send/receive retry count
  5304. -17    BYTE    number of 550ms loops before timeout
  5305. -16    WORD    UFH address
  5306. -14    WORD    CDIR address
  5307. -12    WORD    LTAB address
  5308. -10    WORD    SFH address
  5309. -8    WORD    FTAB address
  5310. -6    WORD    RLTAB address
  5311. -4    WORD    SMI address
  5312. -2    WORD    NTAB address
  5313.  00h    WORD    address of first CT_DRV
  5314.  02h    BYTE    number of DRV entries
  5315.  03h  8 BYTEs    login name
  5316.  0Bh 12 BYTEs    node ID (blank-padded)
  5317.  17h  6 BYTEs    node address
  5318.  1Dh    BYTE    flag
  5319.  1Eh    BYTE    CT_CFLG (chat permit)
  5320.         bit 1: sound bell
  5321.         bit 0: CHAT permit
  5322.  1Fh    BYTE    CT_PSFLG (see #3428)
  5323.  20h    BYTE    in 10Net flag
  5324.  21h    WORD    receive message count
  5325.  23h    WORD    send message count
  5326.  25h    WORD    retry count
  5327.  27h    WORD    failed count
  5328.  29h    WORD    driver errors
  5329.  2Bh    WORD    dropped responses/CHATs
  5330.  2Dh  9 BYTEs    LIST ID/NTAB address (3 entries--LPT1-3)
  5331.  36h  6 BYTEs    AUX ID/NTAB address (2 entries--COM1-2)
  5332.  3Ch    BYTE    active CB channel
  5333.  3Dh    BYTE    received 6F messages on queue
  5334.  3Eh  9 BYTEs    activity counters for channels 1-9
  5335. ---beyond here, 10NET v3.3---
  5336.  47h    BYTE    bit 0: RS232 gate
  5337.         bit 1: Send6F gate (user set)
  5338.  48h    DWORD    pointer into gate (user set)
  5339.  4Ch    DWORD    pointer into 10Net send
  5340.  50h  N WORDs    addresses of timer blocks
  5341.  
  5342. Bitfields for CT_PSFLG:
  5343. Bit(s)    Description    (Table 3428)
  5344.  5    PRINT permit
  5345.  4    KB initiated
  5346.  3    CHAT called FOXPTRM
  5347.  2    SUBMIT active
  5348.  1    SUBMIT received
  5349.  0    SUBMIT permit
  5350. --------N-6F04-------------------------------
  5351. INT 6F - 10NET - SEND
  5352.     AH = 04h
  5353.     DS:BX -> send record (see #3429)
  5354.     DS:DX -> data (max 1024 bytes)
  5355. Return: CF clear if successful
  5356.     CF set on error
  5357.         AX = error code (see #3411)
  5358. SeeAlso: AH=05h"10NET",AH=09h"10NET",AH=0Ah"10NET"
  5359.  
  5360. Format of 10NET send record:
  5361. Offset    Size    Description    (Table 3429)
  5362.  00h 12 BYTEs    receiving node's ID
  5363.         if first byte has high-order bit set, message is directed to
  5364.           the CT_RGATE vector at the receiver
  5365.         if second byte is 00h, first byte is taken as a CB
  5366.           channel number and delivered to all nodes on same channel
  5367.  0Ch    WORD     length of data at DX
  5368. --------b-6F04--BP0012-----------------------
  5369. INT 6F - HP Vectra EX-BIOS - "F_INS_BASEHPVT" - GET HP_VECTOR_TABLE ADDRESS
  5370.     AH = 04h
  5371.     BP = 0012h (driver ID for V_SYSTEM)
  5372. Return: AH = status (see #3415)
  5373.     ES = segment of HP_VECTOR_TABLE (see also AH=00h"HP Vectra")
  5374.     BP,DS destroyed
  5375. SeeAlso: AH=00h"HP Vectra",AH=06h"F_INS_XCHGFIX",AH=08h"F_INS_XCHGRSVD"
  5376. --------b-6F04--BP005A-----------------------
  5377. INT 6F - HP Vectra EX-BIOS - "F_TRACK_INIT" - RESET TRACKING DRIVER TO DEFAULTS
  5378.     AH = 04h
  5379.     BP = 005Ah (driver ID for V_STRACK)
  5380. Return: AH = status (see #3415)
  5381.     BP,DS destroyed
  5382. SeeAlso: AH=00h"HP Vectra",AH=06h"F_TRACK_ON",AH=08h"F_TRACK_OFF"
  5383. SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
  5384. --------b-6F0400-----------------------------
  5385. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_LOCK" - RESERVE SUB-ADDRESSES
  5386.     AX = 0400h
  5387.     BP = driver ID (see #3412)
  5388.     DH,DL = major,minor address (optional)
  5389. Return: AH = status (see #3415)
  5390.     BP,DS destroyed
  5391. Desc:    reserve specified sub-addresses on an already-allocated driver for
  5392.       exclusive access
  5393. Note:    this function is documented as present but unsupported in the drivers
  5394.       V_LTABLET, V_LPOINTER, and V_LTOUCH
  5395. SeeAlso: AX=0200h"HP Vectra",AX=0402h"SF_UNLOCK"
  5396. --------b-6F0400BP001E-----------------------
  5397. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_SVC" - UNMASK 8041 SVC INT
  5398.     AX = 0400h
  5399.     BP = 001Eh (driver ID for V_S8259)
  5400. Return: AH = status (see #3415)
  5401.     BP,DS destroyed
  5402. SeeAlso: AH=00h"HP Vectra",AX=0402h"SF_DISABLE_SVC",AX=0404h"SF_ENABLE_KBD"
  5403. SeeAlso: AX=0408h"SF_ENABLE_HPHIL"
  5404. --------b-6F0400BP002A-----------------------
  5405. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DEF_LINKS" - SET DEFAULT PARENTS
  5406.     AX = 0400h
  5407.     BP = 002Ah (driver ID for V_SINPUT)
  5408. Return: AH = status (see #3415)
  5409.     BP,DS destroyed
  5410. Desc:    set the parent vectors in the physical device driver headers to their
  5411.       system defaults
  5412. SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=002Ah,AX=0404h/BP=002Ah
  5413. SeeAlso: AH=06h"F_INQUIRE"
  5414. --------b-6F0400BP0054-----------------------
  5415. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_ID_HP" - INSTALLATION CHECK
  5416.     AX = 0400h
  5417.     BP = 0054h (driver ID for V_SVIDEO)
  5418.     ???
  5419. Return: AH = status (see #3415)
  5420.     BX = 4850h ('BP')
  5421.     BP,DS destroyed
  5422.     ???
  5423. Note:    only partially documented
  5424. SeeAlso: AX=0402h/BP=0054h,AX=0404h/BP=0054h,AX=0406h/BP=0054h
  5425. SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
  5426. --------b-6F0400BP00CC-----------------------
  5427. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_MOUSE_COM" - INIT INT 33 HANDLER
  5428.     AX = 0400h
  5429.     BP = 00CCh (driver ID for V_LHPMOUSE)
  5430. Return: AH = status (see #3415)
  5431.     BP,DS destroyed
  5432. SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=00CCh
  5433. --------b-6F0402-----------------------------
  5434. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_UNLOCK" - RELEASE SUB-ADDRESSES
  5435.     AX = 0402h
  5436.     BP = driver ID (see #3412)
  5437.     DH,DL = major,minor address (optional)
  5438. Return: AH = status (see #3415)
  5439.     BP,DS destroyed
  5440. Desc:    release specified sub-addresses from exclusive access
  5441. Note:    this function is documented as present but unsupported in the drivers
  5442.       V_LTABLET, V_LPOINTER, and VLTOUCH
  5443. SeeAlso: AX=0200h"HP Vectra",AX=0400h"SF_LOCK"
  5444. --------b-6F0402BP001E-----------------------
  5445. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_SVC" - MASK 8041 SVC INT
  5446.     AX = 0402h
  5447.     BP = 001Eh (driver ID for V_S8259)
  5448. Return: AH = status (see #3415)
  5449.     BP,DS destroyed
  5450. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=001Eh,AX=0406h/BP=001Eh
  5451. SeeAlso: AX=040Ah/BP=001Eh
  5452. --------b-6F0402BP002A-----------------------
  5453. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_GET_LINKS" - GET DRIVER LINK FIELDS
  5454.     AX = 0402h
  5455.     BP = 002Ah (driver ID for V_SINPUT)
  5456.     ES:SI -> buffer for link table (see #3430)
  5457. Return: AH = status (see #3415)
  5458.     ES:SI buffer filled
  5459.     BP,DS destroyed
  5460. Desc:    get the parent and child vectors for the seven supported physical
  5461.       device drivers
  5462. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_DEF_LINKS",AX=0404h"SF_SET_LINKS"
  5463. SeeAlso: AH=06h"F_INQUIRE"
  5464.  
  5465. Format of HP Vectra EX-BIOS driver link table:
  5466. Offset    Size    Description    (Table 3430)
  5467.  00h    BYTE    vector number of HP-HIL device #1's child
  5468.  01h    BYTE    vector number of HP-HIL device #1's parent
  5469.     ...
  5470.  0Ch    BYTE    vector number of HP-HIL device #7's child
  5471.  0Dh    BYTE    vector number of HP-HIL device #7's parent
  5472. --------b-6F0402BP0054-----------------------
  5473. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_GET_INFO" - GET DISPLAY INFO
  5474.     AX = 0402h
  5475.     BP = 0054h (driver ID for V_SVIDEO)
  5476.     ???
  5477. Return: AH = status (see #3415)
  5478.     BP,DS destroyed
  5479.     ???
  5480. Note:    only partially documented
  5481. SeeAlso: AX=0400h/BP=0054h,AX=0404h/BP=0054h,AX=0406h/BP=0054h
  5482. SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
  5483. --------b-6F0402BP00CC-----------------------
  5484. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_MOUSE_COM" - FORCE INT 33 INIT
  5485.     AX = 0402h
  5486.     BP = 00CCh (driver ID for V_LHPMOUSE)
  5487. Return: AH = status (see #3415)
  5488.     BP,DS destroyed
  5489. Desc:    set up INT 33 even if no mouse is installed
  5490. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=00CCh
  5491. --------b-6F0404-----------------------------
  5492. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_TRACK_ON" - GRAPHICS CURSOR ON
  5493.     AX = 0404h
  5494.     BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
  5495. Return: AH = status (see #3415)
  5496.     BP,DS destroyed
  5497. Desc:    enables graphics cursor tracking of the logical device's movement
  5498. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0406h"SF_TRACK_OFF"
  5499. --------b-6F0404BP001E-----------------------
  5500. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_KBD" - UNMASK 8041 OBF INT
  5501.     AX = 0404h
  5502.     BP = 001Eh (driver ID for V_S8259)
  5503. Return: AH = status (see #3415)
  5504.     BP,DS destroyed
  5505. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_ENABLE_SVC",AX=0406h"SF_DISABLE_KBD"
  5506. SeeAlso: AX=0408h"SF_ENABLE_HPHIL"
  5507. --------b-6F0404BP002A-----------------------
  5508. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_LINKS" - SET DRIVER LINK FIELDS
  5509.     AX = 0404h
  5510.     BP = 002Ah (driver ID for V_SINPUT)
  5511.     ES:SI -> buffer containing link table (see #3430)
  5512. Return: AH = status (see #3415)
  5513.     BP,DS destroyed
  5514. Desc:    specify the parent and child vectors for the seven supported physical
  5515.       device drivers
  5516. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_DEF_LINKS",AX=0402h"SF_GET_LINKS"
  5517. SeeAlso: AH=06h"F_INQUIRE"
  5518. --------b-6F0404BP0054-----------------------
  5519. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_SET_INFO" - SET EXT-CTRL INFO
  5520.     AX = 0404h
  5521.     BP = 0054h (driver ID for V_SVIDEO)
  5522.     ???
  5523. Return: AH = status (see #3415)
  5524.     BP,DS destroyed
  5525.     ???
  5526. Note:    only partially documented
  5527. SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0406h/BP=0054h
  5528. SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
  5529. --------b-6F0406-----------------------------
  5530. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_TRACK_OFF" - GRAPHICS CURSOR OFF
  5531.     AX = 0406h
  5532.     BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
  5533. Return: AH = status (see #3415)
  5534.     BP,DS destroyed
  5535. Desc:    disables graphics cursor tracking of the logical device's movement
  5536. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0404h"SF_TRACK_ON"
  5537. SeeAlso: AX=0408h"SF_CREATE_EVENT"
  5538. --------b-6F0406BP001E-----------------------
  5539. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_KBD" - MASK 8041 OBF INT
  5540.     AX = 0406h
  5541.     BP = 001Eh (driver ID for V_S8259)
  5542. Return: AH = status (see #3415)
  5543.     BP,DS destroyed
  5544. SeeAlso: AH=00h"HP Vectra",AX=0402h"SF_DISABLE_SVC",AX=0404h"SF_ENABLE_KBD"
  5545. SeeAlso: AX=040Ah"SF_DISABLE_HPHIL"
  5546. --------b-6F0406BP0054-----------------------
  5547. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_MOD_INFO" - SET EXT-CTRL REG
  5548.     AX = 0406h
  5549.     BP = 0054h (driver ID for V_SVIDEO)
  5550.     ???
  5551. Return: AH = status (see #3415)
  5552.     BP,DS destroyed
  5553.     ???
  5554. Note:    only partially documented
  5555. SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
  5556. SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
  5557. --------b-6F0406BP0114-----------------------
  5558. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_RECONFIGURE" - RECONFIG LINK
  5559.     AX = 0406h
  5560.     BP = 0114h (driver ID for V_HPHIL)
  5561. Return: AH = status (see #3415)
  5562.     BP,DS destroyed
  5563. SeeAlso: AH=00h"HP Vectra",AX=020Eh,AX=0408h"SF_CRV_WR_PROMPTS"
  5564. SeeAlso: AX=0410h"SF_CRV_SELF_TEST"
  5565. --------b-6F0408-----------------------------
  5566. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CREATE_EVENT" - SET EVENT HANDLER
  5567.     AX = 0408h
  5568.     BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
  5569.     ES:SI -> new event handler (see AH=00h"HP Vectra")
  5570.     DX = new handler's DS
  5571. Return: AH = status (see #3415)
  5572.     ES:SI -> old event handler
  5573.     DX = old handler's DS
  5574.     BP,DS destroyed
  5575. Desc:    specify routine to be called on logical device events
  5576. Note:    when events occur, the event handler is called with the same registers
  5577.       as the "F_ISR" function on AH=00h"HP Vectra"
  5578. SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0406h"SF_TRACK_OFF"
  5579. SeeAlso: AX=040Ah"SF_EVENT_ON",AX=040Ch"SF_EVENT_OFF",AH=06h"F_SAMPLE"
  5580. --------b-6F0408BP001E-----------------------
  5581. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_HPHIL" - UNMASK HP-HIL INT
  5582.     AX = 0408h
  5583.     BP = 001Eh (driver ID for V_S8259)
  5584. Return: AH = status (see #3415)
  5585.     BP,DS destroyed
  5586. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=001Eh,AX=0404h/BP=001Eh
  5587. SeeAlso: AX=040Ah/BP=001Eh
  5588. --------b-6F0408BP0054-----------------------
  5589. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_GET_RES" - GET VIDMODE RESOLUTN
  5590.     AX = 0408h
  5591.     BP = 0054h (driver ID for V_SVIDEO)
  5592.     ???
  5593. Return: AH = status (see #3415)
  5594.     BP,DS destroyed
  5595.     ???
  5596. Note:    only partially documented
  5597. SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
  5598. SeeAlso: AX=0406h/BP=0054h,AX=040Ah/BP=0054h
  5599. --------b-6F0408BP0114-----------------------
  5600. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_WR_PROMPTS" - WRITE PROMPT
  5601.     AX = 0408h
  5602.     BP = 0114h (driver ID for V_HPHIL)
  5603.     BX = device address indicator (see #3431)
  5604.     DH = HP HIL device major address
  5605.     DL = prompt number
  5606. Return: AH = status (see #3415)
  5607.     BP,DS destroyed
  5608. SeeAlso: AH=00h"HP Vectra",AX=020Eh,AX=0406h/BP=0114h,AX=040Ah/BP=0114h
  5609.  
  5610. Bitfields for HP Vectra V_HPHIL device address indicator:
  5611. Bit(s)    Description    (Table 3431)
  5612.  15-14    reserved
  5613.  13    address in DH is valid (must be set, clear is reserved)
  5614.  12    valid value in DL
  5615.  11-0    reserved
  5616. --------b-6F040A-----------------------------
  5617. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_EVENT_ON" - ENABLE EVENT HANDLER
  5618.     AX = 040Ah
  5619.     BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
  5620. Return: AH = status (see #3415)
  5621.     BP,DS destroyed
  5622. SeeAlso: AH=00h"HP Vectra",AX=0408h"SF_CREATE_EVENT",AX=040Ch"SF_EVENT_OFF"
  5623. SeeAlso: AX=040Eh"SF_CLIPPING_ON"
  5624. --------b-6F040ABP001E-----------------------
  5625. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_HPHIL" - MASK HP-HIL INT
  5626.     AX = 040Ah
  5627.     BP = 001Eh (driver ID for V_S8259)
  5628. Return: AH = status (see #3415)
  5629.     BP,DS destroyed
  5630. SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=001Eh,AX=0406h/BP=001Eh
  5631. SeeAlso: AX=0408h/BP=001Eh
  5632. --------b-6F040ABP0054-----------------------
  5633. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_SET_MODE" - SET VIDEO MODE
  5634.     AX = 040Ah
  5635.     BP = 0054h (driver ID for V_SVIDEO)
  5636.     ???
  5637. Return: AH = status (see #3415)
  5638.     BP,DS destroyed
  5639.     ???
  5640. Note:    only partially documented
  5641. SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
  5642. SeeAlso: AX=0406h/BP=0054h,AX=0408h/BP=0054h
  5643. --------b-6F040ABP00AE-----------------------
  5644. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CREATE_INTR" - CREATE INTERVAL ENTRY
  5645.     AX = 040Ah
  5646.     BP = 00AEh (driver ID for V_8041)
  5647.     BH = vector number of driver to be called regularly (vector addr / 6)
  5648. Return: AH = status (see #3415)
  5649.     BP,DS destroyed
  5650. Desc:    add a driver to the list (max eight) of drivers which will be called
  5651.       by the HP's 8041 at 60 Hz
  5652. Note:    the newly added entry will not be called until enabled with
  5653.       AX=040Eh/BP=00AEh
  5654. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  5655. SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  5656. --------b-6F040ABP0114-----------------------
  5657. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_WR_ACK" - ACKNOWLEDGE DEVICE
  5658.     AX = 040Ah
  5659.     BP = 0114h (driver ID for V_HPHIL)
  5660.     BX = device address indicator (see #3431)
  5661.     DH = HP HIL device major address
  5662.     DL = acknowledge number (specific if 01h-07h, generic otherwise)
  5663. Return: AH = status (see #3415)
  5664.     BP,DS destroyed
  5665. SeeAlso: AH=00h"HP Vectra",AX=0406h/BP=0114h,AX=040Ch/BP=0114h
  5666. --------b-6F040C-----------------------------
  5667. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_EVENT_OFF" - DISABLE EVENT HANDLER
  5668.     AX = 040Ch
  5669.     BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
  5670. Return: AH = status (see #3415)
  5671.     BP,DS destroyed
  5672. SeeAlso: AH=00h"HP Vectra",AX=0408h"SF_CREATE_EVENT",AX=040Ah"SF_EVENT_ON"
  5673. --------b-6F040CBP00AE-----------------------
  5674. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DELET_INTR" - DELETE INTERVAL ENTRY
  5675.     AX = 040Ch
  5676.     BP = 00AEh (driver ID for V_8041)
  5677.     BH = vector number of driver to be removed (vector addr / 6)
  5678. Return: AH = status (see #3415)
  5679.     BP,DS destroyed
  5680. Desc:    remove a driver to the list (max eight) of drivers which will be called
  5681.       by the HP's 8041 at 60 Hz
  5682. SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=0410h/BP=00AEh
  5683. SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  5684. --------b-6F040CBP0114-----------------------
  5685. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPEAT" - SET KEY REPEAT RATE
  5686.     AX = 040Ch
  5687.     BP = 0114h (driver ID for V_HPHIL)
  5688.     BX = device address indicator (see #3431)
  5689.     DH = HP HIL device major address
  5690.     DL = repeat rate (00h = 30 Hz, 01h = 60 Hz)
  5691. Return: AH = status (see #3415)
  5692.     BP,DS destroyed
  5693. Note:    this function is only available if the driver is in the open state
  5694.       (see AX=020Eh"SF_OPEN")
  5695. SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=0114h,AX=040Eh/BP=0114h
  5696. --------b-6F040E-----------------------------
  5697. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLIPPING_ON" - ENABLE CLIPPING
  5698.     AX = 040Eh
  5699.     BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
  5700. Return: AH = status (see #3415)
  5701.     BP,DS destroyed
  5702. Desc:    causes the physical device's motion to be clipped to prevent overflow
  5703.       or underflow of the logical position
  5704. SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=0410h"SF_CLIPPING_OFF"
  5705. --------b-6F040EBP00AE-----------------------
  5706. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABL_INTR" - START INTERRUPT SRVICE
  5707.     AX = 040Eh
  5708.     BP = 00AEh (driver ID for V_8041)
  5709.     BH = vector number of driver to be called regularly (vector addr / 6)
  5710. Return: AH = status (see #3415)
  5711.     BP,DS destroyed
  5712. Desc:    enable 60 Hz calling of a driver previously added to the list of
  5713.       drivers to be called by the HP's 8041
  5714. SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=0410h/BP=00AEh
  5715. SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  5716. --------b-6F040EBP0114-----------------------
  5717. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_DISABLE_REPEAT" - KEY REPT OFF
  5718.     AX = 040Eh
  5719.     BP = 0114h (driver ID for V_HPHIL)
  5720.     BX = device address indicator (see #3431)
  5721.     DH = HP HIL device major address
  5722. Return: AH = status (see #3415)
  5723.     BP,DS destroyed
  5724. Note:    this function is only available if the driver is in the open state
  5725.       (see AX=020Eh"SF_OPEN")
  5726. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=0114h,AX=0410h/BP=0114h
  5727. SeeAlso: AX=0416h/BP=0114h
  5728. --------b-6F0410-----------------------------
  5729. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLIPPING_OFF" - DISABLE CLIPPING
  5730.     AX = 0410h
  5731.     BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
  5732. Return: AH = status (see #3415)
  5733.     BP,DS destroyed
  5734. Desc:    disables clipping of the physical device's motion, which may cause
  5735.       overflow or underflow of the logical position
  5736. SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=040Eh"SF_CLIPPING_ON"
  5737. --------b-6F0410BP00AE-----------------------
  5738. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISBL_INTR" - END INTERRUPT SERVICE
  5739.     AX = 0410h
  5740.     BP = 00AEh (driver ID for V_8041)
  5741.     BH = vector number of driver (vector addr / 6)
  5742. Return: AH = status (see #3415)
  5743.     BP,DS destroyed
  5744. Desc:    disable 60 Hz interval calls to the specified driver
  5745. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  5746. SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  5747. --------b-6F0410BP0114-----------------------
  5748. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_SELF_TEST" - PERFORM SELFTEST
  5749.     AX = 0410h
  5750.     BP = 0114h (driver ID for V_HPHIL)
  5751.     BX = device address indicator (see #3431)
  5752.     DH = HP HIL device major address
  5753.     ES:SI -> buffer for result
  5754. Return: AH = status (see #3415)
  5755.     CX = number of bytes in buffer
  5756.     BP,DS destroyed
  5757. Note:    this function is only available if the driver is in the open state
  5758.       (see AX=020Eh"SF_OPEN")
  5759. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=0114h,AX=0412h/BP=0114h
  5760. --------b-6F0412BP00AE-----------------------
  5761. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_RAMSW" - SET RAM SWITCH IN 8041
  5762.     AX = 0412h
  5763.     BP = 00AEh (driver ID for V_8041)
  5764. Return: AH = status (see #3415)
  5765.     BP,DS destroyed
  5766. Desc:    sets a flag in the 8041 indicating that a second 256K bank of RAM
  5767.       on the motherboard is enabled
  5768. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  5769. SeeAlso: AX=0414h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  5770. --------b-6F0412BP0114-----------------------
  5771. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPORT_STATUS" - GET DEVSTATUS
  5772.     AX = 0412h
  5773.     BP = 0114h (driver ID for V_HPHIL)
  5774.     BX = device address indicator (see #3431)
  5775.     DH = HP HIL device major address
  5776.     ES:SI -> 15-byte buffer for status
  5777. Return: AH = status (see #3415)
  5778.     CX = number of bytes returned in buffer
  5779.     BP,DS destroyed
  5780. Note:    this function is only available if the driver is in the open state
  5781.       (see AX=020Eh"SF_OPEN")
  5782. SeeAlso: AH=00h"HP Vectra",AX=0410h/BP=0114h,AX=0414h/BP=0114h
  5783. --------b-6F0414BP00AE-----------------------
  5784. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLR_RAMSW" - CLEAR 8041 RAM SWITCH
  5785.     AX = 0414h
  5786.     BP = 00AEh (driver ID for V_8041)
  5787. Return: AH = status (see #3415)
  5788.     BP,DS destroyed
  5789. Desc:    clears a flag in the 8041 indicating that a second 256K bank of RAM
  5790.       on the motherboard is enabled, causing the second bank to be disabled
  5791. Note:    this function should normally never be called
  5792. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  5793. SeeAlso: AX=0412h/BP=00AEh,AX=0418h/BP=00AEh,AX=041Ah/BP=00AEh
  5794. --------b-6F0414BP0114-----------------------
  5795. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPORT_NAME" - GET DEV NAME
  5796.     AX = 0414h
  5797.     BP = 0114h (driver ID for V_HPHIL)
  5798.     BX = device address indicator (see #3431)
  5799.     DH = HP HIL device major address
  5800.     ES:SI -> 15-byte buffer for name
  5801. Return: AH = status (see #3415)
  5802.     CX = number of bytes returned in buffer
  5803.     BP,DS destroyed
  5804. Note:    this function is only available if the driver is in the open state
  5805.       (see AX=020Eh"SF_OPEN")
  5806. SeeAlso: AH=00h"HP Vectra",AX=0412h/BP=0114h
  5807. --------b-6F0416BP00AE-----------------------
  5808. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_CRTSW" - SET CRT TO MULTIMODE
  5809.     AX = 0416h
  5810.     BP = 00AEh (driver ID for V_8041)
  5811. Return: AH = status (see #3415)
  5812.     BP,DS destroyed
  5813. Desc:    sets a flag in the 8041 indicating that the primary display is the
  5814.       Multimode graphics adapter (default)
  5815. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  5816. SeeAlso: AX=0412h/BP=00AEh,AX=0418h/BP=00AEh,AX=041Ah/BP=00AEh
  5817. --------b-6F0416BP0114-----------------------
  5818. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_KEYBOARD_REPEAT" - SET TYPEMATIC
  5819.     AX = 0416h
  5820.     BP = 0114h (driver ID for V_HPHIL)
  5821.     BH = what to set (00h typematic rate, 01h delay, 02h both)
  5822.     BL = flag (00h = non-CCP keypad, 01h = Cursor Control Pad only)
  5823.     DL = rate
  5824.         bits 7-4: delay value
  5825.         bits 3-0: typematic rate
  5826. Return: AH = status (see #3415)
  5827.     BP,DS destroyed
  5828. SeeAlso: AH=00h"HP Vectra",AX=040Eh/BP=0114h,AX=0418h/BP=0114h
  5829. --------b-6F0418BP00AE-----------------------
  5830. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLR_CRTSW" - SET CRT TO MONOCHROME
  5831.     AX = 0418h
  5832.     BP = 00AEh (driver ID for V_8041)
  5833. Return: AH = status (see #3415)
  5834.     BP,DS destroyed
  5835. Desc:    clears a flag in the 8041, indicating that the primary display is the
  5836.       monochrome adapter
  5837. SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
  5838. SeeAlso: AX=0414h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
  5839. --------b-6F0418BP0114-----------------------
  5840. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_KEYBOARD_LED" - SET KEYBOARD LEDS
  5841.     AX = 0418h
  5842.     BP = 0114h (driver ID for V_HPHIL)
  5843.     BL = new LED states
  5844.         bit 0: scroll lock
  5845.         bit 1: NumLock
  5846.         bit 2: CapsLock
  5847. Return: AH = status (see #3415)
  5848.     BP,DS destroyed
  5849. SeeAlso: AH=00h"HP Vectra",AX=040Eh/BP=0114h,AX=0416h/BP=0114h
  5850. --------b-6F041ABP00AE-----------------------
  5851. INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_PASS_THRU" - SEND DATA BYTE TO 8041
  5852.     AX = 041Ah
  5853.     BP = 00AEh (driver ID for V_8041)
  5854.     BL = byte to send to 8041
  5855. Return: AH = status (see #3415)
  5856.     BP,DS destroyed
  5857. SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=040Eh/BP=00AEh
  5858. --------N-6F05-------------------------------
  5859. INT 6F - 10NET - RECEIVE
  5860.     AH = 05h
  5861.     CX = number of seconds before timeout
  5862.     DS:DX -> receive buffer (see #3432)
  5863. Return: CF clear if successful
  5864.         AH = FEh if dequeued message is a CB message
  5865.     CF set on error
  5866.         AX = error code (see #3411)
  5867. SeeAlso: AH=04h"10NET"
  5868.  
  5869. Format of 10NET receive buffer:
  5870. Offset    Size    Description    (Table 3432)
  5871.  00h 12 BYTEs    sending node's ID
  5872.  0Ch    WORD    length of message
  5873.  0Eh  N BYTEs    message (maximum 1024 bytes)
  5874. --------b-6F06-------------------------------
  5875. INT 6F - HP Vectra EX-BIOS - "F_PUT_BYTE" - WRITE A BYTE OF DATA TO DEVICE
  5876.     AH = 06h
  5877.     BP = driver ID (see #3412) for V_HPHIL, others
  5878.     AL = value to output
  5879.     ---if driver is V_HPHIL---
  5880.     BX = device address indicator (see #3431)
  5881.     DH = HP HIL device major address
  5882.     DL = HP-HIL device register (00h-7Fh)
  5883. Return: AH = status (see #3415)
  5884.     BP,DS destroyed
  5885. Desc:    output a byte to a specific HP-HIL device register
  5886. Note:    this function is only available if the driver is in the open state
  5887.       (see AX=020Eh"SF_OPEN")
  5888. SeeAlso: AH=04h"HP Vectra",AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BUFFER"
  5889. --------b-6F06-------------------------------
  5890. INT 6F - HP Vectra EX-BIOS - "F_SAMPLE" - POLL CURRENT ABSOLUTE POSITION
  5891.     AH = 06h
  5892.     BP = driver ID (see #3412) for V_LTOUCH, V_LPOINTER, V_LTABLET, etc.
  5893. Return: AH = status (see #3415)
  5894.     BX = current logical X position
  5895.     CX = current logical Y position
  5896.     DL = button transitions (bit N = button N state has changed)
  5897.     DH = current button states (bit N = current button N state)
  5898.     ES:0000h -> logical device's Describe Record (see #3420)
  5899.     BP,DS destroyed
  5900. SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=040Eh"SF_CLIPPING_ON"
  5901. --------b-6F06--BP0012-----------------------
  5902. INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGFIX" - EXCH VALUES WITH FIXED VECTOR
  5903.     AH = 06h
  5904.     BP = 0012h (driver ID for V_SYSTEM)
  5905.     BX = vector address
  5906.     DX = new value for DS
  5907.     ES:DI -> new CS:IP entry point
  5908. Return: AH = status (see #3415)
  5909.     DX = old value for DS
  5910.     ES:DI -> old CS:IP entry point
  5911.     BP,DS destroyed
  5912. Desc:    replace an existing EX-BIOS driver at a fixed HPVT location without
  5913.       initialization
  5914. SeeAlso: AH=00h"HP Vectra",AH=04h"F_INS_BASEHPVT",AH=08h"F_INS_XCHGRSVD"
  5915. SeeAlso: AH=0Ah"F_INS_XCHGFREE",AH=0Ch"F_INS_FIXOWNDS"
  5916. --------b-6F06--BP002A-----------------------
  5917. INT 6F - HP Vectra EX-BIOS - "F_INQUIRE" - GET DRIVER PHYSICAL DESCRIBE RECORD
  5918.     AH = 06h
  5919.     BP = 002Ah (driver ID for V_SINPUT)
  5920.     AL = HP-HIL physical device number (01h-07h)
  5921. Return: AH = status (see #3415)
  5922.     ES:SI -> physical describe record for driver
  5923.     BP,DS destroyed
  5924. Note:    the returned physical describe record must not be modified
  5925. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=08h/BP=002Ah,AH=0Ah/BP=002Ah
  5926. SeeAlso: AH=0Ch/BP=002Ah
  5927. --------b-6F06--BP005A-----------------------
  5928. INT 6F - HP Vectra EX-BIOS - "F_TRACK_ON" - ENABLE CURSOR TRACKING
  5929.     AH = 06h
  5930.     BP = 005Ah (driver ID for V_STRACK)
  5931. Return: AH = status (see #3415)
  5932.     BP,DS destroyed
  5933. SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
  5934. SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
  5935. --------N-6F07-------------------------------
  5936. INT 6F - 10NET - LOCK HANDLE
  5937.     AH = 07h
  5938.     BX = file handle
  5939.     CX:DX = starting offset in file
  5940.     SI = record length
  5941. Return: CF clear if successful
  5942.     CF set on error
  5943.         AX = error code (see also AH=00h)
  5944.         0002h file not found
  5945. SeeAlso: AH=08h"10NET",AH=0Fh,INT 21/AH=5Ch
  5946. --------N-6F08-------------------------------
  5947. INT 6F - 10NET - UNLOCK HANDLE
  5948.     AH = 08h
  5949.     BX = file handle
  5950.     AL = mode
  5951.         00h unlock all
  5952.         01h unlock record at CX:DX
  5953. Return: CF clear if successful
  5954.     CF set on error
  5955.         AX = error code (see also AH=00h)
  5956.         0002h file not found
  5957. SeeAlso: AH=07h,AH=0Fh,INT 21/AH=5Ch
  5958. --------b-6F08-------------------------------
  5959. INT 6F - HP Vectra EX-BIOS - "F_GET_BYTE" - READ A BYTE OF DATA FROM DEVICE
  5960.     AH = 08h
  5961.     BP = driver ID (see #3412) for V_HPHIL (0114h), others
  5962.     ---if device is V_HPHIL---
  5963.     BX = device address indicator (see #3431)
  5964.     DH = HP HIL device major address
  5965.     DL = HP-HIL device register (00h-7Fh)
  5966. Return: AH = status (see #3415)
  5967.     AL = value read from device
  5968.     BP,DS destroyed
  5969. Desc:    generic read-byte function; for driver V_HPHIL, retrieves the value
  5970.       of a specific HP-HIL device register
  5971. Note:    this function is only available if the driver is in the open state
  5972.       (see AX=020Eh"SF_OPEN")
  5973. SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BUFFER"
  5974. --------b-6F08--BP0012-----------------------
  5975. INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGRSVD" - EXCH VALUES WITH RESRVED VECTOR
  5976.     AH = 08h
  5977.     BP = 0012h (driver ID for V_SYSTEM)
  5978.     DX = new value for DS
  5979.     ES:DI -> new CS:IP entry point
  5980. Return: AH = status (00h,F6h) (see also #3415)
  5981.         00h successful
  5982.         BX = vector address used
  5983.         DX = old value for DS
  5984.         ES:DI -> old CS:IP entry point
  5985.     BP,DS destroyed
  5986. Desc:    exchange the supplied entry point and DS with the values in the next
  5987.       reserved entry in the HP_VECTOR_TABLE
  5988. Note:    returns AH=F6h if no more reserved vectors are available
  5989. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=0Ah/BP=0012h
  5990. SeeAlso: AH=0Ch/BP=0012h
  5991. --------b-6F08--BP002A-----------------------
  5992. INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_ALL" - GET DRIVER STATUS TABLE
  5993.     AH = 08h
  5994.     BP = 002Ah (driver ID for V_SINPUT)
  5995.     ES:SI -> buffer for device status table (see #3433)
  5996. Return: AH = status (see #3415)
  5997.     ES:SI buffer filled
  5998.     BP,DS destroyed
  5999. Note:    the returned physical describe record must not be modified
  6000. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=0Ah/BP=002Ah
  6001. SeeAlso: AH=0Ch/BP=002Ah
  6002.  
  6003. Format of HP Vectra HP-HIL physical device status table:
  6004. Offset    Size    Description    (Table 3433)
  6005.  00h    BYTE    status for HP-HIL device #1
  6006.         bit 0: device present
  6007.         bits 7-2 reserved
  6008.  01h    BYTE    device ID for HP-HIL device #1
  6009.     ...
  6010.  0Ch    BYTE    status for HP-HIL device #7
  6011.  0Dh    BYTE    device ID for HP-HIL device #7
  6012. --------b-6F08--BP005A-----------------------
  6013. INT 6F - HP Vectra EX-BIOS - "F_TRACK_OFF" - DISABLE CURSOR TRACKING
  6014.     AH = 08h
  6015.     BP = 005Ah (driver ID for V_STRACK)
  6016. Return: AH = status (see #3415)
  6017.     BP,DS destroyed
  6018. Note:    also removes the graphics cursor sprite from the screen
  6019. SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=06h"F_TRACK_ON"
  6020. SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
  6021. --------N-6F09-------------------------------
  6022. INT 6F - 10NET - SUBMIT
  6023.     AH = 09h
  6024.     DS:BX -> submit record (see #3434)
  6025. SeeAlso: AH=04h"10NET"
  6026.  
  6027. Format of 10NET submit record:
  6028. Offset    Size    Description    (Table 3434)
  6029.  00h 12 BYTEs    destination node ID (must be logged in)
  6030.  0Ch    WORD    length+2 of following 'command line' text
  6031.  0Eh  N BYTEs    command line text (<=100 bytes), system adds CR
  6032. --------N-6F0A-------------------------------
  6033. INT 6F - 10NET - CHAT
  6034.     AH = 0Ah
  6035.     DS:BX -> control parameters (see #3435)
  6036.     DS:DX -> chat message (see #3436)
  6037. SeeAlso: AH=04h"10NET",AH=8Ah
  6038.  
  6039. Format of 10NET chat control parameters:
  6040. Offset    Size    Description    (Table 3435)
  6041.  00h  8 BYTEs    sender ID, defaults to node's userID if nulls
  6042.  08h  8 BYTEs    destination user ID, 'EVERYONE' may be used
  6043.  10h 12 BYTEs    destination node ID
  6044.  
  6045. Format of 10NET chat message:
  6046. Offset    Size    Description    (Table 3436)
  6047.  00h    WORD    length+2 of following text
  6048.  02h  N BYTEs    text, max 101 bytes
  6049. --------b-6F0A-------------------------------
  6050. INT 6F - HP Vectra EX-BIOS - "F_PUT_BUFFER" - WRITE A BUFFER TO DEVICE
  6051.     AH = 0Ah
  6052.     BP = driver ID (see #3412) for V_HPHIL (0114h), others
  6053.     CX = number of bytes to write
  6054.     ES:DI -> buffer containing data
  6055.     ---if driver is V_HPHIL---
  6056.     BX = device address indicator (see #3431)
  6057.     DH = HP HIL device major address
  6058.     DL = HP-HIL device register (00h-7Fh)
  6059. Return: AH = status (see #3415)
  6060.     CX = number of unwritten bytes left in buffer
  6061.     BP,DS destroyed
  6062. SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BLOCK",AH=0Ch"F_GET_BUFFER"
  6063. SeeAlso: AH=0Eh"F_PUT_WORD"
  6064. --------b-6F0A-------------------------------
  6065. INT 6F - HP Vectra EX-BIOS - "F_PUT_BLOCK" - WRITE BLOCKS TO DEVICE
  6066.     AH = 0Ah
  6067.     BP = driver ID (see #3412) for block device
  6068.     DH = device major number
  6069.     DL = device minor number
  6070.     ES:DI -> command block (see #3437)
  6071. Return: AH = status (see #3415)
  6072.     BX = operation status
  6073.     BP,DS destroyed
  6074. SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BUFFER"
  6075. SeeAlso: AH=0Eh"F_PUT_WORD"
  6076.  
  6077. Format of HP Vectra F_PUT_BLOCK/F_GET_BLOCK command block:
  6078. Offset    Size    Description    (Table 3437)
  6079.  00h    DWORD    data transfer address
  6080.  04h    WORD    number of blocks
  6081.  06h    DWORD    block address (some devices only use low word)
  6082. --------b-6F0A--BP0012-----------------------
  6083. INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGFREE" - EXCH VALUES WITH FREE VECTOR
  6084.     AH = 0Ah
  6085.     BP = 0012h (driver ID for V_SYSTEM)
  6086.     DX = new value for DS
  6087.     ES:DI -> new CS:IP entry point
  6088. Return: AH = status (00h,F6h) (see also #3415)
  6089.         00h successful
  6090.         BX = vector address used
  6091.         DX = old value for DS
  6092.         ES:DI -> old CS:IP entry point
  6093.     BP,DS destroyed
  6094. Desc:    exchange the supplied entry point and DS with the values in the next
  6095.       free entry in the HP_VECTOR_TABLE
  6096. Note:    returns AH=F6h if no more reserved vectors are available
  6097. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=08h/BP=0012h
  6098. SeeAlso: AH=0Ch/BP=0012h
  6099. --------b-6F0A--BP002A-----------------------
  6100. INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_FIRST" - GET PHYSICAL DRIVER VECTOR
  6101.     AH = 0Ah
  6102.     BP = 002Ah (driver ID for V_SINPUT)
  6103. Return: AH = status (see #3415)
  6104.     BX = vector address for first HP-HIL device
  6105.     BP,DS destroyed
  6106. Note:    all seven HP-HIL devices use consecutive vectors in the
  6107.       HP_VECTOR_TABLE
  6108. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=08h/BP=002Ah
  6109. SeeAlso: AH=0Ch/BP=002Ah
  6110. --------b-6F0A--BP005A-----------------------
  6111. INT 6F - HP Vectra EX-BIOS - "F_DEF_MASKS" - DEFINE GRAPHICS CURSOR MASKS
  6112.     AH = 0Ah
  6113.     BP = 005Ah (driver ID for V_STRACK)
  6114.     BH = width of save area in bytes
  6115.     BL = hot-spot X coordinate
  6116.     CH = height in scan lines
  6117.     CL = hot-spot Y coordinate
  6118.     ES:SI -> sprite mask (screen mask followed by XOR sprite mask)
  6119. Return: AH = status (see #3415)
  6120.     BP,DS destroyed
  6121. Note:    the save area is one byte wider than the actual sprite mask; the total
  6122.       size of the sprite is at most 144 bytes
  6123. SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
  6124. SeeAlso: AH=0Ch"F_SET_LIMITS_X",AH=10h"F_PUT_SPRITE",AH=12h"F_REMOVE_SPRITE"
  6125. --------N-6F0B-------------------------------
  6126. INT 6F - 10NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
  6127.     AH = 0Bh
  6128.     AL = drive number or 0
  6129.     ES:SI = Ethernet address or 0
  6130.     DS:BX -> 31-byte ASCIZ semaphore name
  6131. Return: AL = status (see #3438)
  6132. Note:    same as INT 60/AH=12h
  6133. SeeAlso: AH=0Ch"10NET",INT 60/AH=12h
  6134.  
  6135. (Table 3438)
  6136. Values for 10NET status:
  6137.  00h    successful
  6138.  01h    semaphore currently locked
  6139.  02h    server not responding
  6140.  03h    invalid semaphore name
  6141.  04h    semaphore list is full
  6142.  05h    invalid drive ID
  6143.  06h    invalid Ethernet address
  6144.  07h    not logged in
  6145.  08h    write to network failed
  6146.  09h    semaphore already logged in this CPU
  6147. SeeAlso: #3411
  6148. Index:    error codes;10-Net|10-Net;error codes
  6149. --------N-6F0C-------------------------------
  6150. INT 6F - 10NET - UNLOCK SEMAPHORE
  6151.     AH = 0Ch
  6152.     AL = drive number or 0
  6153.     ES:SI = Ethernet address or 0
  6154.     DS:BX -> 31-byte ASCIZ semaphore name
  6155. Return: AL = status (see also #3438)
  6156.         01h semaphore not locked
  6157. Note:    same as INT 60/AH=13h
  6158. SeeAlso: AH=0Bh,INT 60/AH=13h
  6159. --------b-6F0C-------------------------------
  6160. INT 6F - HP Vectra EX-BIOS - "F_GET_BUFFER" - READ A BUFFER OF DATA FROM DEVICE
  6161.     AH = 0Ch
  6162.     BP = driver ID (see #3412) for V_HPHIL (0114h), others
  6163.     CX = number of bytes or blocks to read
  6164.     DS:SI -> buffer for received data
  6165. Return: AH = status (see #3415 at AH=00h"HP Vectra")
  6166.     BP,DS destroyed
  6167. SeeAlso: AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BLOCK"
  6168. SeeAlso: AH=10h"F_GET_WORD"
  6169. --------b-6F0C-------------------------------
  6170. INT 6F - HP Vectra EX-BIOS - "F_GET_BLOCK" - READ BLOCKS OF DATA FROM DEVICE
  6171.     AH = 0Ch
  6172.     BP = driver ID (see #3412)
  6173.     DH = device major number
  6174.     DL = device minor number
  6175.     ES:DI -> command block (see #3437)
  6176. Return: AH = status (see #3415 at AH=00h"HP Vectra")
  6177.     BX = operation status
  6178.     BP,DS destroyed
  6179. SeeAlso: AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BLOCK",AH=0Ch"F_GET_BUFFER"
  6180. SeeAlso: AH=10h"F_GET_WORD"
  6181. --------b-6F0C--BP0012-----------------------
  6182. INT 6F - HP Vectra EX-BIOS - "F_INS_FIXOWNDS" - INSTALL VALUES IN FIXED VECTOR
  6183.     AH = 0Ch
  6184.     BP = 0012h (driver ID for V_SYSTEM)
  6185.     BX = vector address used
  6186.     ES:DI -> new CS:IP entry point
  6187. Return: AH = status (00h) (see #3415)
  6188.     BP,DS destroyed
  6189. Note:    on installation, the given entry point will be invoked with an SF_INIT
  6190.       call (see AX=0200h"SF_INIT"), which should return the routine's DS
  6191.       in BX.  If the SF_INIT call returns with error code FEh, the power-on
  6192.       self-test sequence will be called.
  6193. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=08h/BP=0012h
  6194. SeeAlso: AH=0Eh/BP=0012h,AH=12h/BP=0012h
  6195. --------b-6F0C--BP002A-----------------------
  6196. INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_ENTRY" - GET GID DRIVER ENTRY POINT
  6197.     AH = 0Ch
  6198.     BP = 002Ah (driver ID for V_SINPUT)
  6199. Return: AH = status (see #3415)
  6200.     ES:BX -> physical GID driver CS:IP
  6201.     BP,DS destroyed
  6202. SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=08h/BP=002Ah
  6203. SeeAlso: AH=0Ah/BP=002Ah
  6204. --------b-6F0C--BP005A-----------------------
  6205. INT 6F - HP Vectra EX-BIOS - "F_SET_LIMITS_X" - SET HORIZONTAL TRACKING LIMITS
  6206.     AH = 0Ch
  6207.     BP = 005Ah (driver ID for V_STRACK)
  6208.     CX = minimum X coordinate
  6209.     DX = maximum X coordinate
  6210. Return: AH = status (see #3415)
  6211.     BP,DS destroyed
  6212. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=005Ah,AH=08h/BP=005Ah,AH=0Eh/BP=005Ah
  6213. SeeAlso: AH=10h/BP=005Ah,AH=12h/BP=005Ah,INT 33/AX=0007h
  6214. --------N-6F0D-------------------------------
  6215. INT 6F - 10NET - "WHO" - ENUMERATE USERS ON NETWORK
  6216.     AH = 0Dh
  6217.     AL = type code
  6218.         01h return superstations only
  6219.         02h return non-superstations only
  6220.         otherwise return all
  6221.     CX = length of data buffer
  6222.     DS:DX -> array of records to be filled (see #3439)
  6223. Return: CL = number of records returned (responding stations)
  6224. SeeAlso: AH=16h,AH=8Dh
  6225.  
  6226. Format of station record:
  6227. Offset    Size    Description    (Table 3439)
  6228.  00h 12 BYTEs    node ID
  6229.  0Ch    BYTE    station flags (see #3440)
  6230. ---if AL = 01h---
  6231.  0Dh    BYTE    version number
  6232.  0Eh    WORD    level number of 10Net software in responding node
  6233. ---if AL = 02h---
  6234.  0Dh  8 BYTEs    user ID
  6235.  15h    BYTE    version number
  6236.  16h    WORD    level number
  6237.  
  6238. Bitfields for station flags:
  6239. Bit(s)    Description    (Table 3440)
  6240.  1    workstation
  6241.  2    superstation
  6242.  3    xgate
  6243.  4    active gate
  6244. --------N-6F0E-------------------------------
  6245. INT 6F - 10NET - SPOOL/PRINT
  6246.     AH = 0Eh
  6247.     DS:DX -> spool/print record (see #3442)
  6248. Return: CF clear if successful
  6249.     CF set on error
  6250.         AX = error code (see also #3411)
  6251.         17FFh device not mounted
  6252.         18FFh already spooling to named device
  6253.  
  6254. (Table 3441)
  6255. Values for 10NET spooler operation code:
  6256.  0000h    initiate spool
  6257.  0001h    abort print
  6258.  0002h    close spool
  6259.  0003h    delete spool
  6260.  0004h    print
  6261.  0005h    get report info
  6262.  0006h    set chat template
  6263.  0007h    queue
  6264.  0008h    return queue
  6265.  0009h    queue non-spooled file for printing
  6266.  
  6267. Format of 10NET Spool/Print record:
  6268. Offset    Size    Description    (Table 3442)
  6269.  00h    WORD    operation code (see #3441)
  6270.  02h 11 BYTEs    file name in FCB format
  6271. ---if operation code = 00h or 06h---
  6272.  0Dh    BYTE    notification flags (see #3443)
  6273.  0Eh    BYTE    days to keep (FFh=forever)
  6274.  0Fh    BYTE    bits 0,1: device (1=LPT1)
  6275.         bits 4-7: remote drive to store spool file (1=A,...)
  6276.  10h    WORD    length of following data area
  6277.  12h  N BYTEs    up to 64 bytes of description
  6278. ---if operation code = 03h---
  6279.  0Dh  8 BYTEs    user ID to associate with filename
  6280. ---if operation code = 04h---
  6281.  0Dh    WORD    block number
  6282.  0Fh  8 BYTEs    user ID to associate with filename
  6283. ---if operation code = 05h---
  6284.  0Dh    BYTE    RRN to start retrieve
  6285.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  6286.         bit 3: if set, return entries for all users
  6287.  0Fh    WORD    length of following area
  6288.  11h  N BYTEs    up to 1500 bytes to receive $SCNTL records returned
  6289. ---if operation code = 07h---
  6290.  0Dh    BYTE    queue number
  6291.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  6292.  0Fh    WORD    number of bytes of test print to be done
  6293.  11h    BYTE    code:
  6294.         01h print device
  6295.         02h test print count
  6296.         03h prn
  6297. ---if operation code = 08h---
  6298.  0Dh    BYTE    queue location or $SCNTL location to start access
  6299.         returns next item for access:
  6300.             00h-7Fh queued items
  6301.             80h-FEh non-queued, non-printed items
  6302.             FFh    no more items
  6303.  0Eh    WORD    unused
  6304.  10h    WORD    length of following area
  6305.  12h  N BYTEs    up to 64 bytes to receive $SCNTL records (see #3444)
  6306. ---if operation code = 09h---
  6307.  0Dh  3 BYTEs    unused
  6308.  10h  N BYTEs    path to non-spooled file to be queued for printing
  6309.  
  6310. Bitfields for notification flags:
  6311. Bit(s)    Description    (Table 3443)
  6312.  7    queue to top
  6313.  6    do ID page
  6314.  5    no form feed
  6315.  4    reserved
  6316.  3    explicit queuing only
  6317.  2    notify at print completion
  6318.  1    notify server operator, with reply
  6319.  0    notify at print start
  6320.  
  6321. Format of 10NET $SCNTL record:
  6322. Offset    Size    Description    (Table 3444)
  6323.  00h  8 BYTEs    user ID
  6324.  08h 11 BYTEs    filename in FCB format
  6325.  13h  6 BYTEs    node ID
  6326.  19h  3 BYTEs    creation date
  6327.  1Ch    BYTE    notification flags (see #3443)
  6328.  1Dh    BYTE    retention time in days
  6329.  1Eh    BYTE    printing device (LPTx)
  6330.  1Fh  3 BYTEs    date last printed (0 = never)
  6331.  22h    BYTE    device containing spoolfile
  6332.  23h    WORD    bytes to print for test print
  6333.  25h    WORD    block number to start print
  6334.  27h    BYTE    reserved
  6335. --------b-6F0E-------------------------------
  6336. INT 6F - HP Vectra EX-BIOS - "F_PUT_WORD" - WRITE WORD OF DATA TO DEVICE
  6337.     AH = 0Eh
  6338.     BP = driver ID (see #3412)
  6339.     DX = data word
  6340. Return: AH = status (see #3415 at AH=00h"HP Vectra")
  6341.     BP,DS destroyed
  6342. SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=10h"F_GET_WORD"
  6343. --------b-6F0E-------------------------------
  6344. INT 6F - HP Vectra EX-BIOS - "F_PUT_WORD" - WRITE A WORD OF DATA
  6345.     AH = 0Eh
  6346.     BP = driver ID (see #3412)
  6347.     ??? details not yet available
  6348. Return: ???
  6349. SeeAlso: AH=06h"HP Vectra",AH=0Ah"HP Vectra",AH=10h"HP Vectra"
  6350. --------b-6F0E--BP0012-----------------------
  6351. INT 6F - HP Vectra EX-BIOS - "F_INS_FIXGETDS" - INSTALL VALUES IN FIXED VECTOR
  6352.     AH = 0Eh
  6353.     BP = 0012h (driver ID for V_SYSTEM)
  6354.     BX = vector address used
  6355.     ES:DI -> new CS:IP entry point
  6356. Return: AH = status (00h) (see #3415)
  6357.     BP,DS destroyed
  6358. Note:    on installation, the given entry point will be invoked with an SF_INIT
  6359.       call (see AX=0200h"SF_INIT"), with the "last used DS" value in BX;
  6360.       the routine should adjust BX and return the new value.  If the
  6361.       SF_INIT call returns with error code FEh, the power-on self-test
  6362.       sequence will be called.
  6363. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=0Ch/BP=0012h
  6364. SeeAlso: AH=10h/BP=0012h,AH=14h/BP=0012h
  6365. --------b-6F0E--BP005A-----------------------
  6366. INT 6F - HP Vectra EX-BIOS - "F_SET_LIMITS_Y" - SET VERTICAL TRACKING LIMITS
  6367.     AH = 0Eh
  6368.     BP = 005Ah (driver ID for V_STRACK)
  6369.     CX = minimum Y coordinate
  6370.     DX = maximum Y coordinate
  6371. Return: AH = status (see #3415)
  6372.     BP,DS destroyed
  6373. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=005Ah,AH=08h/BP=005Ah,AH=0Ch/BP=005Ah
  6374. SeeAlso: AH=10h/BP=005Ah,AH=12h/BP=005Ah,INT 33/AX=0008h
  6375. --------N-6F0F-------------------------------
  6376. INT 6F - 10NET v5.0 - "RM LOCK" - ???
  6377.     AH = 0Fh
  6378.     ???
  6379. Return: ???
  6380. SeeAlso: AH=07h,AH=08h"10NET"
  6381. --------N-6F10-------------------------------
  6382. INT 6F - 10NET - ATTACH/DETACH PRINTER
  6383.     AH = 10h
  6384.     AL = subfunction
  6385.         00h initiate spooling if LPT1 is mounted
  6386.         01h terminate spooling if LPT1 is mounted
  6387. SeeAlso: INT 21/AX=5D08h
  6388. --------b-6F10-------------------------------
  6389. INT 6F - HP Vectra EX-BIOS - "F_GET_WORD" - READ WORD OF DATA FROM DEVICE
  6390.     AH = 10h
  6391.     BP = driver ID (see #3412)
  6392. Return: AH = status (see #3415 at AH=00h"HP Vectra")
  6393.     DX = data word
  6394.     BP,DS destroyed
  6395. SeeAlso: AH=08h"F_GET_BYTE",AH=0Ch"F_GET_BUFFER",AH=0Eh"F_PUT_WORD"
  6396. --------b-6F10--BP0012-----------------------
  6397. INT 6F - HP Vectra EX-BIOS - "F_INS_FIXGLBDS" - INSTALL VALUES IN FIXED VECTOR
  6398.     AH = 10h
  6399.     BP = 0012h (driver ID for V_SYSTEM)
  6400.     BX = vector address used
  6401.     ES:DI -> new CS:IP entry point
  6402. Return: AH = status (00h) (see #3415)
  6403.     BP,DS destroyed
  6404. Note:    on installation, the given entry point will be invoked with an SF_INIT
  6405.       call (see AX=0200h"SF_INIT"), with BX set to the EX-BIOS global
  6406.       data area. If the SF_INIT call returns with error code FEh, the
  6407.       power-on self-test sequence will be called.
  6408. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h
  6409. SeeAlso: AH=0Ch/BP=0012h,AH=0Eh/BP=0012h,AH=12h/BP=0012h,AH=16h/BP=0012h
  6410. --------b-6F10--BP005A-----------------------
  6411. INT 6F - HP Vectra EX-BIOS - "F_PUT_SPRITE" - DISPLAY GRAPHICS CURSOR SPRITE
  6412.     AH = 10h
  6413.     BP = 005Ah (driver ID for V_STRACK)
  6414.     BX = X coordinate
  6415.     CX = Y coordinate
  6416. Return: AH = status (see #3415)
  6417.     BP,DS destroyed
  6418. SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
  6419. SeeAlso: AH=12h"F_REMOVE_SPRITE",INT 33/AX=0004h
  6420. --------N-6F11-------------------------------
  6421. INT 6F - 10NET - LOCK FCB
  6422.     AH = 11h
  6423.     AL = mode
  6424.         01h sequential
  6425.         02h random
  6426.         03h random block
  6427.         CX = number of records
  6428.     DS:DX -> FCB (see #1034 at INT 21/AH=0Fh)
  6429. Return: CF clear if successful
  6430.     CF set on error
  6431.         AX = error code (see also #3411)
  6432.         0002h file not found
  6433. SeeAlso: AH=12h,INT 21/AH=0Fh
  6434. --------N-6F12-------------------------------
  6435. INT 6F - 10NET - UNLOCK FCB
  6436.     AH = 12h
  6437.     AL = mode
  6438.         00h sequential
  6439.         01h random
  6440.         02h random block
  6441.         CX = number of records
  6442.     DS:DX -> FCB (see #1034 at INT 21/AH=0Fh)
  6443. Return: CF clear if successful
  6444.     CF set on error
  6445.         AX = error code (see also #3411)
  6446.         0002h file not found
  6447. SeeAlso: AH=11h
  6448. --------b-6F12--BP0012-----------------------
  6449. INT 6F - HP Vectra EX-BIOS - "F_INS_FREEOWNDS" - INSTALL VALUES IN FREE VECTOR
  6450.     AH = 12h
  6451.     BP = 0012h (driver ID for V_SYSTEM)
  6452.     ES:DI -> new CS:IP entry point
  6453. Return: AH = status (00h) (see #3415)
  6454.     BP,DS destroyed
  6455. Note:    on installation, the given entry point will be invoked with an SF_INIT
  6456.       call (see AX=0200h"SF_INIT"), which should return the routine's DS
  6457.       in BX.  If the SF_INIT call returns with error code FEh, the power-on
  6458.       self-test sequence will be called.
  6459. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Ch/BP=0012h,AH=14h/BP=0012h
  6460. SeeAlso: AH=16h/BP=0012h,AH=18h/BP=0012h
  6461. --------b-6F12--BP005A-----------------------
  6462. INT 6F - HP Vectra EX-BIOS - "F_REMOVE_SPRITE" - REMOVE GRAPHICS CURSOR SPRITE
  6463.     AH = 12h
  6464.     BP = 005Ah (driver ID for V_STRACK)
  6465. Return: AH = status (see #3415)
  6466.     BP,DS destroyed
  6467. SeeAlso: AH=00h"HP Vectra",AH=06h"F_TRACK_ON",AH=10h"F_PUT_SPRITE"
  6468. --------N-6F13-------------------------------
  6469. INT 6F - 10NET v3.3+ - GET REMOTE CONFIGURATION TABLE ADDRESS
  6470.     AH = 13h
  6471.     DS:DX -> node ID, 12 bytes blank-padded
  6472. Return: CF clear if successful
  6473.         ES:BX = configuration table address on given machine
  6474.     CF set on error
  6475.         AX = error code (see #3411)
  6476. SeeAlso: AH=03h
  6477. --------N-6F14-------------------------------
  6478. INT 6F - 10NET v3.3+ - GET REMOTE MEMORY
  6479.     AH = 14h
  6480.     BX:SI = address of remote memory
  6481.     CX = length (<=1024 bytes)
  6482.     DS:DX -> node ID, 12 bytes blank-padded
  6483.     DS:DI -> area to receive remote memory image
  6484. Return: CF clear if successful
  6485.         CX = amount of memory copied to DS:SI
  6486.     CF set on error
  6487.         AX = error code (see #3411)
  6488. --------b-6F14--BP0012-----------------------
  6489. INT 6F - HP Vectra EX-BIOS - "F_INS_FREEGETDS" - INSTALL VALUES IN FREE VECTOR
  6490.     AH = 14h
  6491.     BP = 0012h (driver ID for V_SYSTEM)
  6492.     ES:DI -> new CS:IP entry point
  6493. Return: AH = status (00h) (see #3415)
  6494.     BP,DS destroyed
  6495. Note:    on installation, the given entry point will be invoked with an SF_INIT
  6496.       call (see AX=0200h"SF_INIT"), with the "last used DS" value in BX;
  6497.       the routine should adjust BX and return the new value.  If the
  6498.       SF_INIT call returns with error code FEh, the power-on self-test
  6499.       sequence will be called.
  6500. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Eh/BP=0012h,AH=12h/BP=0012h
  6501. SeeAlso: AH=16h/BP=0012h
  6502. --------N-6F1501-----------------------------
  6503. INT 6F - 10NET v3.3+ - GET SHARED DEVICE ENTRY
  6504.     AX = 1501h
  6505.     BX = zero-based index
  6506.     DS:SI -> node ID, 12 bytes blank-padded
  6507.     ES:DI -> 85-byte buffer for shared device table entry (see #3445)
  6508. Return: CF clear if successful
  6509.         ES:DI buffer contains shared device table entry of BXth device
  6510.     CF set on error
  6511.         AX = error code (see #3411)
  6512. SeeAlso: AX=1502h,AX=1503h,AX=9501h
  6513.  
  6514. Format of 10NET shared device table entry:
  6515. Offset    Size    Description    (Table 3445)
  6516.  00h  8 BYTEs    device
  6517.  08h  8 BYTEs    alias
  6518.  10h 64 BYTEs    path
  6519.  50h  8 BYTEs    password
  6520.  58h    BYTE    access
  6521.  59h  4 BYTEs    mask
  6522. --------N-6F1502-----------------------------
  6523. INT 6F - 10NET v3.3+ - SET SHARED DEVICE ENTRY
  6524.     AX = 1502h
  6525.     DS:SI -> node ID, 12 bytes blank-padded
  6526.     ES:DI -> valid shared device table entry
  6527. Return: CF clear if successful
  6528.     CF set on error
  6529.         AX = error code (see #3411)
  6530. SeeAlso: AX=1501h,AX=1503h,AX=9502h
  6531. --------N-6F1503-----------------------------
  6532. INT 6F - 10NET v3.3+ - DELETE SHARED DEVICE ENTRY
  6533.     AX = 1503h
  6534.     BX = zero-based index
  6535.     DS:SI -> node ID, 12 bytes blank-padded
  6536. Return: CF clear if successful
  6537.     CF set on error
  6538.         AX = error code (see #3411)
  6539. SeeAlso: AX=1501h,AX=1502h,AX=9503h
  6540. --------N-6F16-------------------------------
  6541. INT 6F - 10NET v5.0 - "GL WHO" - ???
  6542.     AH = 16h
  6543.     ???
  6544. Return: ???
  6545. SeeAlso: AH=0Dh
  6546. --------b-6F16--BP0012-----------------------
  6547. INT 6F - HP Vectra EX-BIOS - "F_INS_FREEGLBDS" - INSTALL VALUES IN FREE VECTOR
  6548.     AH = 16h
  6549.     BP = 0012h (driver ID for V_SYSTEM)
  6550.     ES:DI -> new CS:IP entry point
  6551. Return: AH = status (00h) (see #3415 at INT 6F/AH=00h"HP Vectra")
  6552.     BP,DS destroyed
  6553. Note:    on installation, the given entry point will be invoked with an SF_INIT
  6554.       call (see AX=0200h"SF_INIT"), with BX set to the EX-BIOS global
  6555.       data area.  If the SF_INIT call returns with error code FEh, the
  6556.       power-on self-test sequence will be called.
  6557. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=10h/BP=0012h,AH=12h/BP=0012h
  6558. SeeAlso: AH=14h/BP=0012h,AH=18h/BP=0012h
  6559. --------N-6F17-------------------------------
  6560. INT 6F - 10NET v3.3+ - MOUNT
  6561.     AH = 17h
  6562.     AL = local drive number (0=A:)
  6563.     BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
  6564.     DS:DX -> node ID, 12 bytes blank-padded
  6565. Return: CF clear if successful
  6566.     CF set on error
  6567.         AX = error code (see #3411)
  6568. SeeAlso: AH=18h
  6569. --------N-6F18-------------------------------
  6570. INT 6F - 10NET v3.3+ - UNMOUNT
  6571.     AH = 18h
  6572.     AL = local drive number (0=A:)
  6573.     BL = type
  6574.         00h        disk
  6575.         01h-03h LPTn
  6576.         04h,05h COMx
  6577. Return: CF clear if successful
  6578.     CF set on error
  6579.         AX = error code (see #3411)
  6580. SeeAlso: AH=17h
  6581. --------b-6F18--BP0012-----------------------
  6582. INT 6F - HP Vectra EX-BIOS - "F_INS_FIND" - FIND DRIVER BY ATTRIBUTES
  6583.     AH = 18h
  6584.     BP = 0012h (driver ID for V_SYSTEM)
  6585.     AL = sense of test (00h equal, 02h non-equal)
  6586.     BX = AND mask
  6587.     DX = pattern
  6588.     SI = first vector address to search
  6589.     DI = offset in HP header of field to test
  6590. Return: AH = status (00h,FEh) (see #3415 at INT 6F/AH=00h"HP Vectra")
  6591.     BP,DS destroyed
  6592.     ---if AH=00h---
  6593.     SI = first matching vector address
  6594. Desc:    compare successive drivers' header fields starting at address SI
  6595.       until the header field AND BX is either equal or non-equal to DX
  6596. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Ch/BP=0012h,AH=10h/BP=0012h
  6597. SeeAlso: AH=12h/BP=0012h,AH=16h/BP=0012h
  6598. --------N-6F19-------------------------------
  6599. INT 6F U - 10NET v5.0 - AUDIT
  6600.     AH = 19h
  6601.     ???
  6602. Return: ???
  6603. SeeAlso: AH=99h
  6604. --------N-6F1A-------------------------------
  6605. INT 6F U - 10NET v5.0 - "BULL" - ???
  6606.     AH = 1Ah
  6607.     ???
  6608. Return: ???
  6609. --------N-6F1B-------------------------------
  6610. INT 6F U - 10NET v5.0 - "GMOUNT" - ???
  6611.     AH = 1Bh
  6612.     ???
  6613. Return: ???
  6614. --------N-6F1C-------------------------------
  6615. INT 6F U - 10NET v5.0 - "GLOGIN" - GET LOGIN LIST
  6616.     AH = 1Ch
  6617.     ???
  6618. Return: ???
  6619. --------N-6F1D-------------------------------
  6620. INT 6F U - 10NET v5.0 - "TABDATA" - ???
  6621.     AH = 1Dh
  6622.     ???
  6623. Return: ???
  6624. --------N-6F1E-------------------------------
  6625. INT 6F U - 10NET v5.0 - "SCHED" - ???
  6626.     AH = 1Eh
  6627.     ???
  6628. Return: ???
  6629. --------b-6F1E--BP0012-----------------------
  6630. INT 6F - HP Vectra EX-BIOS - "F_RAM_GET" - GET EX-BIOS FREE RAM AREA
  6631.     AH = 1Eh
  6632.     BP = 0012h (driver ID for V_SYSTEM)
  6633. Return: AH = status (00h) (see #3415 at INT 6F/AH=00h"HP Vectra")
  6634.     BX = last-used DS
  6635.     DX = maximum DS
  6636.     BP,DS destroyed
  6637. SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=20h/BP=0012h,AH=22h/BP=0012h
  6638. --------N-6F1F-------------------------------
  6639. INT 6F U - 10NET v5.0 - "WHOAMI" - ???
  6640.     AH = 1Fh
  6641.     ???
  6642. Return: ???
  6643. --------N-6F20-------------------------------
  6644. INT 6F U - 10NET v5.0 - ???
  6645.     AH = 20h
  6646.     ???
  6647. Return: ???
  6648. --------b-6F20--BP0012-----------------------
  6649. INT 6F - HP Vectra EX-BIOS - "F_RAM_RET" - RESERVE EX-BIOS MEMORY
  6650.     AH = 20h
  6651.     BP = 0012h (driver ID for V_SYSTEM)
  6652.     BX = new value for "last-used DS"
  6653.     DX = new value for "maximum DS"
  6654. Return: AH = status (00h) (see #3415 at INT 6F/AH=00h"HP Vectra")
  6655.     BP,DS destroyed
  6656. Note:    the F_INS_FIXGETDS and F_INS_FREEGETDS functions
  6657.       (see AH=0Eh/BP=0012h,AH=14h/BP=0012h) also modify the values returned
  6658.       by this call, requiring care if both methods are used to allocate
  6659.       memory
  6660. SeeAlso: AH=00h"HP Vectra",AH=0Eh/BP=0012h,AH=14h/BP=0012h,AH=1Eh/BP=0012h
  6661. --------N-6F21-------------------------------
  6662. INT 6F U - 10NET v5.0 - ???
  6663.     AH = 21h
  6664.     ???
  6665. Return: ???
  6666. --------N-6F22-------------------------------
  6667. INT 6F U - 10NET v5.0 - ???
  6668.     AH = 22h
  6669.     ???
  6670. Return: ???
  6671. --------b-6F22--BP0012-----------------------
  6672. INT 6F - HP Vectra EX-BIOS - "F_CMOS_GET" - READ CMOS MEMORY
  6673.     AH = 22h
  6674.     BP = 0012h (driver ID of V_SYSTEM)
  6675.     BL = address of CMOS byte to read
  6676. Return: AH = status (see #3415 at AH=00h"HP Vectra")
  6677.     AL = byte read
  6678.     BP,DS destroyed
  6679. Note:    supported by ES, QS, and RS series HP Vectras
  6680. SeeAlso: AH=00h"HP Vectra",AH=1Eh/BP=0012h,AH=24h/BP=0012h
  6681. --------b-6F24--BP0012-----------------------
  6682. INT 6F - HP Vectra EX-BIOS - "F_CMOS_RET" - WRITE CMOS MEMORY
  6683.     AH = 24h
  6684.     BP = 0012h (driver ID of V_SYSTEM)
  6685.     BL = address of CMOS byte to write
  6686.     AL = new value
  6687. Return: AH = status (see #3415)
  6688.     BP,DS destroyed
  6689. Note:    updates the CMOS checksum fields (both IBM-standard and HP checksums)
  6690. SeeAlso: AH=00h"HP Vectra",AH=22h/BP=0012h
  6691. --------b-6F2A--BP0012-----------------------
  6692. INT 6F - HP Vectra EX-BIOS - "F_YIELD" - GIVE UP CPU TO OTHER TASKS
  6693.     AH = 2Ah
  6694.     BP = 0012h (driver ID of V_SYSTEM)
  6695. Return: AH = status (see #3415)
  6696.     BP,DS destroyed
  6697. Note:    this is a hook for multitasking systems
  6698. SeeAlso: AH=00h"HP Vectra",INT 15/AX=1000h,INT 2F/AX=1680h
  6699. --------b-6F30--BP0012-----------------------
  6700. INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK_ENABLE" - TURN ON KEYCLICKS
  6701.     AH = 30h
  6702.     BP = 0012h (driver ID of V_SYSTEM)
  6703. Return: AH = status (see #3415 at AH=00h"HP Vectra")
  6704.     BP,DS destroyed
  6705. Desc:    enables keyclicks and flushes any pending keyclicks
  6706. SeeAlso: AH=32h/BP=0012h,AH=34h/BP=0012h,AH=36h/BP=0012h
  6707. --------b-6F32--BP0012-----------------------
  6708. INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK_DISABLE" - TURN OFF KEYCLICKS
  6709.     AH = 32h
  6710.     BP = 0012h (driver ID of V_SYSTEM)
  6711. Return: AH = status (see #3415)
  6712.     BP,DS destroyed
  6713. Desc:    disables keyclicks and flushes any pending keyclicks
  6714. SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=38h/BP=0012h
  6715. --------b-6F34--BP0012-----------------------
  6716. INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK" - GENERATE KEYCLICK
  6717.     AH = 34h
  6718.     BP = 0012h (driver ID of V_SYSTEM)
  6719. Return: AH = status (see #3415)
  6720.     BP,DS destroyed
  6721. Desc:    generate a keyclick if fewer than four clicks are already pending
  6722. Note:    if keyclicks are already pending, the remaining click count is
  6723.       incremented and the function returns immediately
  6724. SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=36h/BP=0012h,AH=3Ah/BP=0012h
  6725. --------b-6F36--BP0012-----------------------
  6726. INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP_ENABLE" - ENABLE BEEPS
  6727.     AH = 36h
  6728.     BP = 0012h (driver ID of V_SYSTEM)
  6729. Return: AH = status (see #3415 at AH=00h"HP Vectra")
  6730.     BP,DS destroyed
  6731. SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=34h/BP=0012h,AH=38h/BP=0012h
  6732. --------b-6F38--BP0012-----------------------
  6733. INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP_DISABLE" - DISABLE BEEPS
  6734.     AH = 38h
  6735.     BP = 0012h (driver ID of V_SYSTEM)
  6736. Return: AH = status (see #3415)
  6737.     BP,DS destroyed
  6738. SeeAlso: AH=00h"HP Vectra",AH=32h/BP=0012h,AH=36h/BP=0012h
  6739. --------b-6F3A--BP0012-----------------------
  6740. INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP" - SOUND BEEP WITH CURRENT VALUES
  6741.     AH = 3Ah
  6742.     BP = 0012h (driver ID of V_SYSTEM)
  6743. Return: AH = status (see #3415 at AH=00h"HP Vectra")
  6744.     BP,DS destroyed
  6745. Desc:    make a sound of the frequency and duration defined in the EX-BIOS
  6746.       global data area (see #3419)
  6747. SeeAlso: AH=00h"HP Vectra",AH=34h/BP=0012h,AH=36h/BP=0012h,AH=38h/BP=0012h
  6748. SeeAlso: AH=3Ch/BP=0012h,AH=3Eh/BP=0012h
  6749. --------b-6F3C--BP0012-----------------------
  6750. INT 6F - HP Vectra EX-BIOS - "F_SND_SET_BEEP" - SET BEEP FREQUENCY AND DURATION
  6751.     AH = 3Ch
  6752.     BP = 0012h (driver ID of V_SYSTEM)
  6753.     BX = frequency in Hz (1-25000, 0 = off)
  6754.     DX = duration in 10-microsecond increments
  6755. Return: AH = status (see #3415)
  6756.     BP,DS destroyed
  6757. SeeAlso: AH=00h"HP Vectra",AH=3Ah/BP=0012h,AH=3Eh/BP=0012h,#3419
  6758. --------b-6F3E--BP0012-----------------------
  6759. INT 6F - HP Vectra EX-BIOS - "F_SND_TONE" - SOUND TONE WITH FREQ AND DURATION
  6760.     AH = 3Eh
  6761.     BP = 0012h (driver ID of V_SYSTEM)
  6762.     BX = frequency in Hz (1-25000, 0 = off)
  6763.     DX = duration in 10-microsecond increments
  6764. Return: AH = status (see #3415)
  6765.     BP,DS destroyed
  6766. SeeAlso: AH=00h"HP Vectra",AH=3Ah/BP=0012h,AH=3Ch/BP=0012h,AH=40h/BP=0012h
  6767. --------b-6F40--BP0012-----------------------
  6768. INT 6F - HP Vectra EX-BIOS - "F_STR_GET_FREE_INDEX" - FIND FREE STRING INDEX
  6769.     AH = 40h
  6770.     BP = 0012h (driver ID of V_SYSTEM)
  6771. Return: AH = status (see #3415)
  6772.     BX = next free string index
  6773.     BP,DS destroyed
  6774. Desc:    get the next string index available to user programs
  6775. SeeAlso: AH=00h"HP Vectra",AH=42h/BP=0012h,AH=44h/BP=0012h,AH=46h/BP=0012h
  6776. --------b-6F42--BP0012-----------------------
  6777. INT 6F - HP Vectra EX-BIOS - "F_STR_DEL_BUCKET" - DEL HEADER FROM BUCKET LIST
  6778.     AH = 42h
  6779.     BP = 0012h (driver ID of V_SYSTEM)
  6780.     ES:DI -> bucket header (see #3446)
  6781. Return: AH = status (00h,FEh) (see #3415 at AH=00h"HP Vectra")
  6782.     BP,DS destroyed
  6783. SeeAlso: AH=00h"HP Vectra",AH=40h/BP=0012h,AH=44h/BP=0012h
  6784.  
  6785. Format of HP Vectra EX-BIOS bucket header:
  6786. Offset    Size    Description    (Table 3446)
  6787.  00h    DWORD    pointer to next bucket header (FFFFh:FFFFh if last)
  6788.  04h    WORD    upper bound on string index
  6789.  06h    WORD    lower bound on string index
  6790.  08h    DWORD    pointer to array of string offset pointers
  6791.  0Ch    WORD    segment of strings
  6792. Note:    the strings pointed at by the offset pointers are byte-counted ASCIZ
  6793.       strings
  6794. --------b-6F44--BP0012-----------------------
  6795. INT 6F - HP Vectra EX-BIOS - "F_STR_PUT_BUCKET" - ADD HEADER TO BUCKET HDR LIST
  6796.     AH = 44h
  6797.     BP = 0012h (driver ID of V_SYSTEM)
  6798.     ES:DI -> bucket header (see #3446)
  6799. Return: AH = status (00h) (see #3415)
  6800.     BP,DS destroyed
  6801. SeeAlso: AH=00h"HP Vectra",AH=42h/BP=0012h,AH=46h/BP=0012h
  6802. --------b-6F46--BP0012-----------------------
  6803. INT 6F - HP Vectra EX-BIOS - "F_STR_GET_STRING" - FIND STRING IN BUCKET LIST
  6804.     AH = 46h
  6805.     BP = 0012h (driver ID of V_SYSTEM)
  6806.     BX = string index
  6807. Return: AH = status (00h,other) (see #3415)
  6808.     BP,DS destroyed
  6809.     ---if successful---
  6810.     CX = length of string (excluding count byte and terminating NUL)
  6811.     DS:SI -> header for string
  6812.     ES:DI -> found string
  6813. SeeAlso: AH=00h"HP Vectra",AH=44h/BP=0012h,AH=48h/BP=0012h
  6814. --------b-6F48--BP0012-----------------------
  6815. INT 6F - HP Vectra EX-BIOS - "F_STR_GET_INDEX" - GET INDEX FOR STRING
  6816.     AH = 48h
  6817.     BP = 0012h (driver ID of V_SYSTEM)
  6818.     ES:DI -> ASCIZ string
  6819. Return: AH = status (00h,other) (see #3415 at AH=00h"HP Vectra")
  6820.     BP,DS destroyed
  6821.     ---if successful---
  6822.     BX = index for the given string
  6823. SeeAlso: AH=00h"HP Vectra",AH=40h/BP=0012h,AH=46h/BP=0012h
  6824. --------A-6F636FBX6D70-----------------------
  6825. INT 6F - Clara Empricost - TSR Version - INSTALLATION CHECK
  6826.     AX = 636Fh ('co')
  6827.     BX = 6D70h ('mp')
  6828.     CX = 696Eh ('in')
  6829.     SS:DX -> WORD to set if installed
  6830. Return: SS:DX word set to 636Fh if installed
  6831. Program: Condition List Action Rejection Algorithm for the Evaluation
  6832.       of Music at Pseudo-Random Idea COnstruction STage
  6833.       (CLARA EMPRICOST) is an experimental program by Silas Brown
  6834. SeeAlso: AX=636Fh/BX=6D70h"UNINSTALL"
  6835. --------A-6F636FBX6D70-----------------------
  6836. INT 6F - Clara Empricost - TSR Version - UNINSTALL
  6837.     AX = 636Fh ('co')
  6838.     BX = 6D70h ('mp')
  6839.     CX = 6F73h ('os')
  6840. Return: nothing -- call installation check to determine whether successful
  6841. Program: Condition List Action Rejection Algorithm for the Evaluation
  6842.       of Music at Pseudo-Random Idea COnstruction STage
  6843.       (CLARA EMPRICOST) is an experimental program by Silas Brown
  6844. Notes:     Saves any unfinished task and prevents processing of
  6845.        new tasks, even if can't uninstall
  6846.      If INT 28h or INT 6Fh have been chained since installation,
  6847.        returns without changing interrupts or freeing memory
  6848.      do not call while DOS is active (i.e. InDOS flag is nonzero or INT 28
  6849.        is active and InDOS > 1)
  6850. SeeAlso: AX=636Fh/BX=6D70h"INSTALLATION CHECK"
  6851. --------N-6F80-------------------------------
  6852. INT 6F - 10NET v5.0 - LOGIN
  6853.     AH = 80h
  6854.     DS:DX -> login record (see #3447)
  6855. Return: CF clear if successful
  6856.         BL = number of days until password expires (00h = never)
  6857.         CL = security level
  6858.     CF set on error
  6859.         AX = status (see #3411)
  6860. SeeAlso: AH=00h,AH=81h
  6861.  
  6862. Format of 10NET login record:
  6863. Offset    Size    Description    (Table 3447)
  6864.  00h  8 BYTEs    user name
  6865.  08h  8 BYTEs    password
  6866.  10h 15 BYTEs    server node ID
  6867.  1Fh  8 BYTEs    new password
  6868.  27h    BYTE    invoke mode (00h command line, 01h interactive)
  6869. --------N-6F81-------------------------------
  6870. INT 6F - 10NET v5.0 - LOGOUT
  6871.     AH = 81h
  6872.     DS:DX -> server node ID (DX=0000h for universal logout)
  6873. Return: AX = status (see #3411)
  6874. SeeAlso: AH=01h,AH=80h
  6875. --------N-6F8A-------------------------------
  6876. INT 6F - 10NET v5.0 - CHAT
  6877.     AH = 8Ah
  6878.     DS:BX -> chat parameters (see #3448)
  6879.     DS:DX -> chat message (see #3449)
  6880. Return: CF clear if successful
  6881.     CF set on error
  6882.         AX = status (see #3411)
  6883. SeeAlso: AH=0Ah"10NET"
  6884.  
  6885. Format of 10NET chat parameters:
  6886. Offset    Size    Description    (Table 3448)
  6887.  00h  8 BYTEs    sender's user name
  6888.  08h  8 BYTEs    destination user name
  6889.  10h 15 BYTEs    destination node (0 if broadcast-style chat)
  6890.  
  6891. Format of 10NET chat message:
  6892. Offset    Size    Description    (Table 3449)
  6893.  00h    WORD    message length
  6894.  02h  N BYTEs    chat message contents
  6895. --------N-6F8D-------------------------------
  6896. INT 6F - 10NET v5.0 - "WHO" - ENUMERATE USERS ON NETWORK
  6897.     AH = 8Dh
  6898.     BX = service mask (see #3450)
  6899.     CX = length of buffer
  6900.     DS:DX -> buffer for array of Who data structures (see #3451)
  6901. Return: CF clear if successful
  6902.         CX = number of nodes matching service mask
  6903.         DS:DX buffer filled
  6904.     CF set on error
  6905.         AX = status (see #3411)
  6906. SeeAlso: AH=0Dh
  6907.  
  6908. Bitfields for 10NET service mask:
  6909. Bit(s)    Description    (Table 3450)
  6910.  0    workstation
  6911.  1    file server
  6912.  2    print server
  6913.  3    de-spool server
  6914.  
  6915. Format of 10NET Who data structure:
  6916. Offset    Size    Description    (Table 3451)
  6917.  00h  8 BYTEs    user name
  6918.  08h 15 BYTEs    node ID
  6919.  17h  3 BYTEs    unique portion of Ethernet address
  6920.  1Ah    BYTE    Who group number
  6921.  1Bh    WORD    service mask (see #3450)
  6922.  1Dh    DWORD    serial number
  6923.  21h    BYTE    maximum concurrent users with same serial number allowed on net
  6924.  22h    BYTE    chat mask (see #3452)
  6925.  23h    BYTE    internal system bits (see #3453)
  6926.  24h  9 BYTEs    version number in format MM.mm.xxx
  6927.  2Dh    BYTE    number of shared directories
  6928.  2Eh    BYTE    number of shared printer queues
  6929.  
  6930. Bitfields for 10NET chat mask:
  6931. Bit(s)    Description    (Table 3452)
  6932.  0    chat permitted
  6933.  1    bell enabled
  6934.  2    chat keyboard initiated
  6935.  3    in INT 16 handler
  6936.  4    in Get Input
  6937.  5    display has timed out
  6938.  6    chat is idle
  6939.  
  6940. Bitfields for 10NET internal system bits:
  6941. Bit(s)    Description    (Table 3453)
  6942.  0    submit permitted
  6943.  1    submit initiated
  6944.  2    submit executing
  6945.  3    internal client call/chat/spool/autospool
  6946.  4    in spool termination
  6947.  5    print permitted
  6948.  6    waiting for keyboard input
  6949. --------N-6F9501-----------------------------
  6950. INT 6F - 10NET v5.0 - GET SHARED DEVICE ENTRY
  6951.     AX = 9501h
  6952.     BX = zero-based index
  6953.     DS:SI -> server's node ID
  6954.     ES:DI -> buffer for shared device structure (see #3454)
  6955. Return: CF clear if successful
  6956.     CF set on error
  6957.         AX = status (see #3411)
  6958. SeeAlso: AX=1501h,AX=9502h,AX=9503h,AX=9504h
  6959.  
  6960. Format of 10NET shared device structure:
  6961. Offset    Size    Description    (Table 3454)
  6962.  00h  8 BYTEs    alias
  6963.  08h    BYTE    type (02h modem, 03h print queue, 04h directory)
  6964.  09h    BYTE    access rights
  6965.         bit 0: read
  6966.         bit 1: write
  6967.         bit 2: create
  6968.  0Ah  8 BYTEs    password
  6969.  12h 32 BYTEs    comment
  6970. ---directory---
  6971.  32h 64 BYTEs    pathname of shared directory
  6972. ---print queue---
  6973.  32h    BYTE    notification bit mask (see #3455)
  6974.  33h    BYTE    job control bit mask (see #3456)
  6975.  34h    WORD    number of days to retain file
  6976.  36h    WORD    test print length
  6977.  38h    BYTE    number of copies to print
  6978.  39h    BYTE    compression algorithm
  6979.  3Ah    BYTE    tab width (00h = don't expand)
  6980.  3Bh    BYTE    priority
  6981.  3Ch    WORD    time to open queue (FFFFh = always)
  6982.  3Eh    WORD    time to close queue
  6983.  40h    WORD    pause following queue switch, in clock ticks
  6984.  42h    WORD    pause between print jobs, in clock ticks
  6985.  44h    BYTE    associate queue file existence mask
  6986.         bit 0: queue switch file exists
  6987.         bit 1: initiate file exists
  6988.         bit 2: abort file exists
  6989.  45h  6 BYTEs    character sequence for page eject
  6990.  4Bh    BYTE    status of print queue
  6991.         bit 0: queue is closed
  6992.  4Ch    WORD    number of jobs on queue
  6993.  4Eh    WORD    offset of next print job to be dispatched (FFFFh = none)
  6994.  50h    BYTE    number of print devices in printer pool
  6995.  51h    WORD    offset of first print device structure (FFFFh if empty)
  6996.  
  6997. Bitfields for notification flags:
  6998. Bit(s)    Description    (Table 3455)
  6999.  0    user at print start
  7000.  1    operator at start, with reply
  7001.  2    user at print completion
  7002.  3    operator at completion, with reply
  7003.  4    user on queue switch
  7004.  5    operator on queue switch, with reply
  7005.  6    user on print error
  7006.  
  7007. Bitfields for 10NET job control mask:
  7008. Bit(s)    Description    (Table 3456)
  7009.  0    print banner page
  7010.  1    eject page at end of job
  7011.  2    mark as "held" (queue but don't print)
  7012.  3    rush job (queue at top)
  7013.  4    overwrite file with zeros before deletion
  7014.  5    hyperspool if possible
  7015. --------N-6F9502-----------------------------
  7016. INT 6F - 10NET v5.0 - SET SHARED DEVICE ENTRY
  7017.     AX = 9502h
  7018.     DS:SI -> server's node ID
  7019.     ES:DI -> shared device structure (see #3454)
  7020. Return: CF clear if successful
  7021.     CF set on error
  7022.         AX = status (see #3411)
  7023. SeeAlso: AX=1502h,AX=9501h,AX=9503h,AX=9504h
  7024. --------N-6F9503-----------------------------
  7025. INT 6F - 10NET v5.0 - DELETE SHARED DEVICE
  7026.     AX = 9503h
  7027.     BX = zero-based index
  7028.     DS:SI -> server's node ID
  7029. Return: CF clear if successful
  7030.     CF set on error
  7031.         AX = status (see #3411)
  7032. SeeAlso: AX=1503h,AX=9501h,AX=9502h,AX=9504h
  7033. --------N-6F9504-----------------------------
  7034. INT 6F - 10NET v5.0 - ENUMERATE USERS OF SHARED DEVICE
  7035.     AX = 9504h
  7036.     BX = zero-based shared device index
  7037.     CX = zero-based user index
  7038.     DS:SI -> server's node ID
  7039. Return: CF clear if successful
  7040.         ES:DI -> node ID of the CX'th user of the BX'th device
  7041.     CF set on error
  7042.         AX = status (see #3411)
  7043. SeeAlso: AX=9501h,AX=9502h,AX=9503h
  7044. --------N-6F99-------------------------------
  7045. INT 6F - 10NET v5.0 - AUDIT
  7046.     AH = 99h
  7047.     DS:SI -> server's node ID
  7048.     ES:DI -> data to be appended to audit trail file (max 106 bytes)
  7049. Return: CF clear if successful
  7050.     CF set on error
  7051.         AX = status (see #3411)
  7052. SeeAlso: AH=19h,AH=9Ch
  7053. --------N-6F9C-------------------------------
  7054. INT 6F - 10NET v5.0 - GET LOGIN LIST
  7055.     AH = 9Ch
  7056.     BX = zero-based index
  7057. Return: CF clear if successful
  7058.         DS:DI -> BX'th node ID that caller's machine is logged into
  7059.     CF set on error
  7060.         AX = status (see #3411)
  7061. --------H-70---------------------------------
  7062. INT 70 C - IRQ8 - CMOS REAL-TIME CLOCK
  7063. Desc:    this interrupt is called when the real-time clock chip generates an
  7064.       alarm or periodic interrupt, among others.  The periodic interrupt
  7065.       occurs 1024 times per second.
  7066. Notes:    many BIOSes turn off the periodic interrupt in the INT 70h handler
  7067.       unless in an event wait (see INT 15/AH=83h,INT 15/AH=86h).
  7068.     may be masked by setting bit 0 on I/O port A1h
  7069. SeeAlso: INT 08,INT 0F"HP 95LX",INT 15/AH=01h"Amstrad",INT 15/AH=83h
  7070. SeeAlso: INT 15/AH=86h,INT 1A/AH=02h,INT 58"DESQview",MEM FEE00320h
  7071. SeeAlso: MEM 0040h:006Bh
  7072. --------v-70---------------------------------
  7073. INT 70 - VIRUS - "Stupid" - ORIGINAL INT 21h VECTOR
  7074. Note:    the virus sets this interrupt to be the same as INT 21, and then
  7075.       performs only INT 70 calls; since INT 70 is also generated by the
  7076.       real-time clock on the PC/AT and higher, this could cause random
  7077.       actions on an infected system
  7078. SeeAlso: INT 6B"VIRUS",INT 9E"VIRUS",INT E0"VIRUS"
  7079. --------H-71---------------------------------
  7080. INT 71 C - IRQ9 - REDIRECTED TO INT 0A BY BIOS
  7081. Notes:    may be masked by setting bit 1 on I/O port A1h
  7082.     the default BIOS handler invokes INT 0A for compatibility, since the
  7083.       pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
  7084.       AT expansion bus.
  7085.     under DESQview, only the INT 15h vector and BASIC segment address (the
  7086.       word at 0000h:0510h) may be assumed to be valid for the handler's
  7087.       process
  7088. SeeAlso: INT 0A"IRQ2",INT 59"IRQ9",MEM 0040h:006Bh
  7089. --------H-72---------------------------------
  7090. INT 72 C - IRQ10 - RESERVED
  7091. Note:    may be masked by setting bit 2 on I/O port A1h
  7092. SeeAlso: INT 5A"IRQ10",MEM 0040h:006Bh
  7093. --------H-73---------------------------------
  7094. INT 73 C - IRQ11 - RESERVED
  7095. Note:    may be masked by setting bit 3 on I/O port A1h
  7096. SeeAlso: INT 5B"IRQ11",MEM 0040h:006Bh
  7097. --------H-74---------------------------------
  7098. INT 74 C - IRQ12 - POINTING DEVICE (PS)
  7099. Notes:    may be masked by setting bit 4 on I/O port A1h
  7100.     under DESQview, only the INT 15h vector and BASIC segment address (the
  7101.       word at 0000h:0510h) may be assumed to be valid for the handler's
  7102.       process
  7103. SeeAlso: INT 33/AX=0000h,INT 33/AX=0024h,INT 5C"NetBIOS",MEM 0040h:006Bh
  7104. --------H-75---------------------------------
  7105. INT 75 C - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)
  7106. Desc:    redirected to INT 02 by the BIOS, for compatibility with the PC
  7107. Notes:    may be masked by setting bit 5 on I/O port A1h
  7108.     not all clones wire the coprocessor to generate this IRQ; some systems
  7109.       generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
  7110.       (see INT 10"COPROCESSOR")
  7111.     under DESQview, only the INT 15h vector and BASIC segment address (the
  7112.       word at 0000h:0510h) may be assumed to be valid for the handler's
  7113.       process
  7114. SeeAlso: INT 10"COPROCESSOR",INT 5D"IRQ13",MEM 0040h:006Bh
  7115. --------H-76---------------------------------
  7116. INT 76 C - IRQ14 - HARD DISK CONTROLLER OPERATION COMPLETE (AT and later)
  7117. Notes:    may be masked by setting bit 6 on I/O port A1h
  7118.     on the PS/2, this interrupt is designed to be shared with other
  7119.       devices that produce an operation-complete interrupt, though
  7120.       the only current user is the hard disk
  7121. SeeAlso: INT 0E"IRQ6",INT 15/AH=91h,INT 5E"IRQ14",MEM 0040h:006Bh
  7122. --------H-77---------------------------------
  7123. INT 77 C - IRQ15 - RESERVED (AT,PS)
  7124. Note:    may be masked by setting bit 7 on I/O port A1h
  7125. SeeAlso: INT 5F"IRQ15",MEM 0040h:006Bh
  7126. --------H-77---------------------------------
  7127. INT 77 C - IRQ15 - SECONDARY IDE CONTROLLER - OPERATION COMPLETE
  7128. Note:    may be masked by setting bit 7 on I/O port A1h
  7129. SeeAlso: INT 5F"IRQ15",MEM 0040h:006Bh
  7130. --------H-77---------------------------------
  7131. INT 77 C - IRQ15 - POWER CONSERVATION (Compaq SLT/286)
  7132. Note:    may be masked by setting bit 7 on I/O port A1h
  7133. SeeAlso: INT 15/AX=4600h,INT 5F"IRQ15"
  7134. --------E-78---------------------------------
  7135. INT 78 - UofSalford DBOS DOS extender - API
  7136.     AH = function
  7137.         00h (PB) display 32-bit memory specified by command argument
  7138.         01h (PT) display 32-bit instruction(s) specified by command arg
  7139.         02h specify offset to subsequent PB and PT commands
  7140.         03h switch to protected mode
  7141.         DWORD following INT instruction point to map; protected-mode
  7142.               entry point is immediately following the DWORD
  7143.         Return: never
  7144.         Note:    if bit 31 of the map address is set, only a stub was
  7145.               loaded by DOS and DBOS will load the entire program
  7146.         04h specify that subsequent load (AH=03h) should leave program in
  7147.           memory
  7148.         05h release program from memory
  7149.         06h set break point at address and option count from commandline
  7150.         07h resume program execution
  7151.         08h single-step program
  7152.         09h set read/write breakpoint using 386 debug registers
  7153.         0Ah set write breakpoint using 386 debug register
  7154.         0Bh set memory byte to new value
  7155.         0Ch display CPU registers
  7156.         0Dh run until specified program address reached
  7157.         0Fh print trace from program map
  7158.         10h specify an offset using a map symbol
  7159.         14h print memory without any offset
  7160.         18h switch DBOS into/out of test mode (ON/OFF commandline args)
  7161.         1Dh get address of real/protected-mode communication buffer
  7162.         Return: ES:BP -> comm buffer
  7163.         1Eh set real-mode memory size (specify how much real-mode memory
  7164.           to leave free when running FTN77 programs)
  7165.         22h uninstall DBOS
  7166.         24h force DBOS to emulate coprocessor instructions
  7167.         26h set named DBOS switches from commandline
  7168.         27h reset named DBOS switched from commandline
  7169.         2Ah set list of dynamic link libraries to contents of commandline
  7170.           file
  7171.         35h specify that subsequent load (AH=03h) should stop at first
  7172.           instruction
  7173. Return: ???
  7174. Notes:    DBOS supports functions 00h through 50h; many of these functions
  7175.       provide a low-level debugging interface
  7176.     command arguments are read from the calling program's PSP
  7177. SeeAlso: INT 79"DBOS"
  7178. Index:    uninstall;DBOS DOS extender
  7179. --------E-78---------------------------------
  7180. INT 78 - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ0
  7181. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  7182.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  7183. Notes:    this vector is overwritten when GO32 starts but is not restored by
  7184.       early versions of the extender
  7185.     the newest versions of GO32 dynamically allocate the vectors used
  7186.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  7187. SeeAlso: INT 08,INT 10/AH=FFh"GO32",INT 79"GO32"
  7188. --------A-78---------------------------------
  7189. INT 78 R - AutoCAD Device Interface - PLOTTER - SEND COMMAND
  7190.     AX = function
  7191.         0001h begin plot
  7192.         BX = file level
  7193.             0000h ASCII file
  7194.             0001h binary file
  7195.             0002h AutoCAD DXB file
  7196.             0003h installed ADI driver
  7197.         0002h end plot (close plotter)
  7198.         0003h move (pen up)
  7199.         BX = new X position
  7200.         CX = new Y position
  7201.         0004h move (pen down)
  7202.         BX = new X position
  7203.         CX = new Y position
  7204.         0005h select pen
  7205.         BX = pen number
  7206.         0006h select drawing speed
  7207.         BX = drawing speed N
  7208.         0007h select line style
  7209.         BX = line style N
  7210.         0008h raise pen
  7211.         0009h abort plot
  7212. Return: AX = 0000h (may be used for driver status in future releases)
  7213. SeeAlso: INT 79"AutoCAD",INT 7A/AX=0001h"AutoCAD",INT 7B/AX=8001h"AutoCAD"
  7214. --------d-78---------------------------------
  7215. INT 78 - ADP-60 IDE controller - ORIGINAL INT 13
  7216. SeeAlso: INT 79"ADP-60"
  7217. --------s-78-------------------------------
  7218. INT 78 - ULTRAMID - API
  7219.     AX = function
  7220.     --- digital functions ---
  7221.         0000h start digital
  7222.         ES:DI -> Sound Structure
  7223.         Return: AX = voice used
  7224.         0001h play next buffer
  7225.         ES:DI -> Sound Structure
  7226.         0002h set panning
  7227.         BX = pan
  7228.         CX = voice
  7229.         0003h set volume
  7230.         BX = volume
  7231.         CX = voice
  7232.         0004h set rate (not yet implemented)
  7233.         0005h pause digital
  7234.         CX = voice
  7235.         0006h restart digital
  7236.         CX = voice
  7237.         0007h stop digital
  7238.         CX = voice
  7239.         0008h get digital position
  7240.         CX = voice
  7241.         Return: AX:DX -> position in PC buffer
  7242.         0009h get voice status (not yet implemented)
  7243.     --- MIDI functions ---
  7244.         000Ah load MIDI patches
  7245.         ES:DI -> MIDI track just after the Mtrk header
  7246.         BX:DX = length of MIDI track
  7247.         000Bh load XMIDI patches
  7248.         ES:DI -> event buffer including the EVNT header
  7249.         000Ch load patch
  7250.         CX = MIDI number of patch
  7251.         000Dh unload patch
  7252.         CX = MIDI number of patch
  7253.         000Eh start sequence
  7254.         000Fh unload all patches
  7255.         0010h MIDI out byte
  7256.         CX = MIDI byte
  7257.         0011h MIDI out string
  7258.         CX = length
  7259.         ES:DI -> string of MIDI data
  7260.         0012h all notes off
  7261.     --- resource functions ---
  7262.         0013h allocate memory
  7263.         BX:DX = size of GUS memory needed
  7264.         Return: AX:DX = address of memory, or 0000:0000 if not avaiable
  7265.         0014h free memory
  7266.         BX:DX = address of memory to be freed
  7267.         0015h uninstall
  7268.         0016h sem enter
  7269.         0017h sem leave
  7270.         0018h add external semaphore
  7271.         BX:DX -> external semaphore
  7272.         0019h clear external semaphore
  7273.         BX:DX -> external semaphore
  7274.         001Ah application start
  7275.         001Bh application end
  7276.     --- v1.12 ---
  7277.         001Ch ???
  7278.         001Dh ???
  7279.         001Eh ???
  7280.         001Fh ???
  7281. Program: UltraMid is a TSR from Advanced Gravis to play MIDI and digital data
  7282.        through the Gravis UltraSound (GUS)
  7283. InstallCheck:    test for the signature "ULTRAMID" at offset 0103h in the
  7284.       interrupt handler's segment
  7285. Range:    INT 78 to INT 7F
  7286. SeeAlso: INT 2F/AX=CD00h"ULTRAMID",INT 7E/AH=00h"SBOS",INT 7E/AX=00FEh"SBOS"
  7287. Index:    uninstall;UltraMID
  7288. --------d-7800-------------------------------
  7289. INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
  7290.     AH = 00h
  7291.     DX = interface board I/O port
  7292. Return: CF set on error
  7293.         AL = error code (see #3457)
  7294. InstallCheck:    (used by TARGA.DEV) test for the string "SCSI" at offset 03h
  7295.       into the interrupt handler
  7296. Note:    if this routine is not called, the port is the driver's default
  7297.       (usually 0280h or 0300h)
  7298. SeeAlso: AH=01h,AH=02h
  7299. Index:    installation check;TARGA.DEV
  7300.  
  7301. (Table 3457)
  7302. Values for TARGA.DEV error code:
  7303.  00h    illegal command given to SCSI code
  7304.  01h    invalid I/O port specified (must be from 100H to 3F8H, and must be on
  7305.       an 8-port boundary)
  7306.  02h    invalid DMA channel specified (must be from 1 to 3)
  7307.  03h    invalid SCSI board number specified (must be from 0 to 7)
  7308.  04h    error from data register test during self-test
  7309.  05h    SCSI input signals not all 0 when SCSI RST activated
  7310.  06h    SCSI input signals not all 0 before selecting a SCSI device
  7311.  07h    BSY signal is active; SCSI bus is busy
  7312.  08h    SCSI board not selected, BSY signal did not come on in response to
  7313.       raising SEL
  7314.  09h    time-out waiting for status state, signifying end of DMA transfer
  7315. --------E-780000-----------------------------
  7316. INT 78 - HugeRealMode Driver - INSTALLATION CHECK
  7317.     AX = 0000h
  7318. Return: AX = DBCAh if installed
  7319. Program: the HugeRealMode driver was published in the German DOS Extra Nr. 20
  7320.       (1992), and makes a 4G flat address space (for both data and code)
  7321.       available to real-mode DOS programs
  7322. SeeAlso: AX=0001h
  7323. --------E-780001-----------------------------
  7324. INT 78 - HugeRealMode Driver - GET ENTRY POINT
  7325.     AX = 0001h
  7326. Return: ES:BX -> far call entry point (see #3459,#3474)
  7327. SeeAlso: AX=0000h
  7328.  
  7329. (Table 3458)
  7330. Values for HugeRealMode Server error code:
  7331.  00h    successful
  7332.  01h    unknown function
  7333.  02h    A20 disabled
  7334.  03h    A20 enabled
  7335.  04h    memory allocation error
  7336.  05h    memory not fixeable (LOCK)
  7337.  06h    memory not deallocaable
  7338.  07h    memory not moveable (UNLOCK)
  7339.  08h    change in memory allocation size not possible
  7340.  09h    file error (with .XMF-file)
  7341.  0Ah    memory error (with .XMF-file)
  7342.  0Bh    unknown procedure (currently Turbo Pascal unit only)
  7343.  
  7344. (Table 3459)
  7345. Call HugeRealMode Server "Enable A20" function with:
  7346.     AL = 00h
  7347. Return: AX = error code (see #3458)
  7348. Note:    The HugeRealMode Server requires an XMS-driver like HIMEM.SYS loaded
  7349.       before HUGEREAL (for XMS-memory allocation and A20 control). It
  7350.       utilizes some undocumented 386+ features to enable 4G code and data
  7351.       segments (flat memory model) in the CPUs real-mode. It is not
  7352.       compatible with V86-mode (as with most EMM386). For maximum speed
  7353.       and compatibility with DOS it uses a two stage interrupt model
  7354.       (see #3462)
  7355. SeeAlso: #3460,#3461,#3462
  7356.  
  7357. (Table 3460)
  7358. Call HugeRealMode Server "Disable A20" function with:
  7359.     AL = 01h
  7360. Return: AX = error code (see #3458)
  7361. SeeAlso: #3459,#3461
  7362.  
  7363. (Table 3461)
  7364. Call HugeRealMode Server "Query A20 State" function with:
  7365.     AL = 02h
  7366. Return: AX = A20 state (0000h disabled, 0001h enabled)
  7367. SeeAlso: #3459,#3460
  7368.  
  7369. (Table 3462)
  7370. Call HugeRealMode Server "Enable Two-Stage Interrupt Model" function with:
  7371.     AL = 03h
  7372. Return: AX = error code (see #3458)
  7373. Notes:    If the two stage interrupt model is disabled, the IP must stay below
  7374.       1MB, because the high word of EIP is not saved correctly by the
  7375.       standard interrupt management in real mode.  Routines in extended
  7376.       memory may only be called with interrupts disabled (only usable for
  7377.       very short routines).
  7378.     If the two stage interupt model is enabled, these conventions are not
  7379.       required.  The outer (transparent) ISRs save the higher word of EIP
  7380.       in the high word of CR3 (possible modification: in memory, if this
  7381.       is not safe) and then invoke the standard ISRs.
  7382.     Because of this handling, one should use pseudo segmented code even in
  7383.       extended memory (64K blocks located on 64K boundaries) to avoid the
  7384.       misalignment of the saved EIP (in CR3). Another way is to track and
  7385.       realign CR3 each time when jumping over a 64K boundary in extended
  7386.       memory
  7387. SeeAlso: #3459,#3463
  7388.  
  7389. (Table 3463)
  7390. Call HugeRealMode Server "Disable Two-Stage Interrupt Model" function with:
  7391.     AL = 04h
  7392. Return: AX = error code (see #3458)
  7393. SeeAlso: #3459,#3462
  7394.  
  7395. (Table 3464)
  7396. Call HugeRealMode Server "Get Segment Address Of Server-Management Range" with:
  7397.     AL = 05h
  7398. Return: AX = error code (see #3458)
  7399.     ES = segment address
  7400. SeeAlso: #3474
  7401.  
  7402. (Table 3465)
  7403. Call HugeRealMode Server "Allocate Memory" function with:
  7404.     AL = 06h
  7405.     DX = length in KB
  7406. Return: AX = error code (see #3458)
  7407.     DX = handle
  7408.     EBX = start address of allocated block
  7409. SeeAlso: #3466,#3467
  7410.  
  7411. (Table 3466)
  7412. Call HugeRealMode Server "Deallocate Memory" function with:
  7413.     AL = 07h
  7414.     DX = handle
  7415. Return: AX = error code (see #3458)
  7416. SeeAlso: #3465,#3467
  7417.  
  7418. (Table 3467)
  7419. Call HugeRealMode Server "Modify Allocated Memory Size" function with:
  7420.     AL = 08h
  7421.     DX = handle
  7422.     BX = new size in KB
  7423. Return: AX = error code (see #3458)
  7424.     EBX = new address
  7425. SeeAlso: #3465,#3466
  7426.  
  7427. (Table 3468)
  7428. Call HugeRealMode Server "Load .XMF-file" function with:
  7429.     AL = 09h
  7430.     ES:BX -> filename (see #3469)
  7431. Return: AX = error code (see #3458)
  7432.     ECX = target address
  7433. Notes:    memory must be allocated before loading
  7434.     .XMF file format (eXtended Memory executable File format) is supported
  7435.       by the HugeRealMode server for easier handling of XMS-code.
  7436.     The utility CONFXMF converts .OBJ-files (.COM 'tiny' model) to
  7437.       .XMF-format
  7438. SeeAlso: #3465
  7439.  
  7440. Format of .XMF program file header:
  7441. Offset    Size    Description    (Table 3469)
  7442.  00h    DWORD    signature "XMF_"
  7443.  04h    WORD    length of programs code
  7444.  06h    WORD    count of 32bit addresses to relocate
  7445.  08h    WORD    offset to code start (releative to file start) (see #3470)
  7446.  0Ah    WORD    relocation table
  7447. Note:    each word contains a 16bit address, where a relocation has to be
  7448.       performed
  7449. SeeAlso: #3468,#3470
  7450.  
  7451. Format of .XMF-file code header:
  7452. Offset    Size    Description    (Table 3470)
  7453.  00h    WORD    count of exported functions
  7454.  02h  N PWORDs    48bit pointers (16bit segment+32bit offset) to each function
  7455.         (16bit segment is always zero)
  7456.  var        start of program's code
  7457. SeeAlso: #3468,#3469
  7458.  
  7459. (Table 3471)
  7460. Call HugeRealMode Server "Set Segment Limits" function with:
  7461.     AL = 0Ah
  7462.     BL = segment limits (see #3472)
  7463. Return: AX = error code (see #3458)
  7464. SeeAlso: #3464
  7465.  
  7466. Bitfields for HugeRealMode Server segment limits:
  7467. Bit(s)    Description    (Table 3472)
  7468.  7    CS size: 1=4GB, 0=64KB
  7469.  6-5    not used
  7470.  4    SS size: 1=4GB, 0=64KB
  7471.  3    GS size
  7472.  2    FS size
  7473.  1    ES size
  7474.  0    DS size
  7475. SeeAlso: #3471
  7476.  
  7477. (Table 3473)
  7478. Call HugeRealMode Server "Transfer Memory From DOS To XMS" function with:
  7479.     AL = 0Bh
  7480.     ES:SI = source address
  7481.     EDI = target address
  7482.     ECX = length
  7483. Return: AX = error code
  7484. SeeAlso: #3474
  7485.  
  7486. (Table 3474)
  7487. Call HugeRealMode Server "Transfer Memory From XMS To DOS" function with:
  7488.     AL = 0Ch
  7489.     ESI = source address
  7490.     ES:DI = target address
  7491.     ECX = length
  7492. Return: AX = error code
  7493. SeeAlso: #3473
  7494. --------d-7801-------------------------------
  7495. INT 78 - TARGA.DEV - GET I/O PORT
  7496.     AH = 01h
  7497. Return: DX = current interface board I/O port
  7498. SeeAlso: AH=00h,AH=03h"TARGA"
  7499. --------d-7802-------------------------------
  7500. INT 78 - TARGA.DEV - SET DMA CHANNEL
  7501.     AH = 02h
  7502.     AL = interface board DMA channel
  7503. Return: CF set on error
  7504.     AL = error code (see #3457)
  7505. Note:    if this routine is not called, the DMA channel is the driver's default
  7506.       (usually 3)
  7507. SeeAlso: AH=00h,AH=03h"TARGA"
  7508. --------d-7803-------------------------------
  7509. INT 78 - TARGA.DEV - GET DMA CHANNEL
  7510.     AH = 03h
  7511. Return: AL = current interface board DMA channel
  7512. SeeAlso: AH=01h,AH=02h
  7513. --------d-7804-------------------------------
  7514. INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
  7515.     AH = 04h
  7516.     AL = SCSI device number
  7517. Return: CF set on error
  7518.     AL = error code (see #3457)
  7519. Note:    if this routine is not called, the device number used is the driver's
  7520.       default (usually 0)
  7521. SeeAlso: AH=02h,AH=05h
  7522. --------d-7805-------------------------------
  7523. INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
  7524.     AH = 05h
  7525. Return: AL = current SCSI device number
  7526. SeeAlso: AH=03h"TARGA",AH=04h
  7527. --------d-7806-------------------------------
  7528. INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
  7529.     AH = 06h
  7530.     AL = new state
  7531.         00h clear early return mode
  7532.         01h set early return mode
  7533. Note:    if early return mode is set then SCSI will return with no errors
  7534.       when the last DMA transfer is started in a call with AH=13h or AH=14h
  7535.     if this routine is not called, early return mode is cleared
  7536. SeeAlso: AH=13h,AH=14h,AH=15h
  7537. --------d-7808-------------------------------
  7538. INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
  7539.     AH = 08h
  7540. Return: CF set on error
  7541.     AL = error code (see #3457)
  7542. Note:    the SCSI bus is also reset
  7543. SeeAlso: AH=09h
  7544. --------d-7809-------------------------------
  7545. INT 78 - TARGA.DEV - RESET SCSI BUS
  7546.     AH = 09h
  7547. Return: AL = error code if carry set (see #3457)
  7548. SeeAlso: AH=08h
  7549. --------d-7810-------------------------------
  7550. INT 78 - TARGA.DEV - SEND SCSI COMMAND
  7551.     AH = 10h
  7552.     DS:SI -> command bytes (see #3475)
  7553. Return: AH = SCSI status byte
  7554.     CF clear if successful
  7555.         AL = SCSI message byte
  7556.     CF set on error
  7557.         AL = error code (see #3457)
  7558. SeeAlso: AH=11h,INT 21/AX=4403h"ST-01"
  7559.  
  7560. Format of SCSI Command:
  7561. Offset    Size    Description    (Table 3475)
  7562.  00h    BYTE    length of command
  7563.  01h    ???    command bytes
  7564. --------d-7811-------------------------------
  7565. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
  7566.     AH = 11h
  7567.     DS:SI -> command bytes (see #3476)
  7568.     ES:BX -> data storage area
  7569.     CX = number of data bytes to transfer
  7570. Return: AH = SCSI status byte
  7571.     CF clear if successful
  7572.         AL = SCSI message byte
  7573.     CF set on error
  7574.         AL = error code (see #3457)
  7575. Note:    this command receives data internally one byte at a time
  7576. SeeAlso: AH=10h,AH=13h
  7577.  
  7578. Format of TARGA.DEV SCSI Command:
  7579. Offset    Size    Description    (Table 3476)
  7580.  00h    BYTE    length of command
  7581.  01h    ???    command bytes
  7582. --------d-7812-------------------------------
  7583. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
  7584.     AH = 12h
  7585.     DS:SI -> command bytes (see #3477)
  7586.     ES:BX -> data storage area
  7587.     CX = number of data bytes to transfer
  7588. Return: AH = SCSI status byte
  7589.     CF clear if successful
  7590.         AL = SCSI message byte
  7591.     CF set on error
  7592.         AL = error code (see #3457)
  7593. Note:    this command sends data internally one byte at a time
  7594. SeeAlso: AH=14h
  7595.  
  7596. Format of TARGA.DEV SCSI Command:
  7597. Offset    Size    Description    (Table 3477)
  7598.  00h    BYTE    length of command
  7599.  01h    ???    command bytes
  7600. --------d-7813-------------------------------
  7601. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
  7602.     AH = 13h
  7603.     DS:SI -> command bytes (see #3478)
  7604.     ES:BX -> data storage area
  7605.     DX:CX = number of data bytes to transfer
  7606. Return: AH = SCSI status byte (if early return mode is clear)
  7607.     CF clear if successful
  7608.         AL = SCSI message byte (if early return mode is clear)
  7609.     CF set on error
  7610.         AL = error code (see #3457)
  7611. Note:    this command receives data using DMA
  7612. SeeAlso: AH=11h,AH=12h
  7613.  
  7614. Format of TARGA.DEV SCSI Command:
  7615. Offset    Size    Description    (Table 3478)
  7616.  00h    BYTE    length of command
  7617.  01h    ???    command bytes
  7618. --------d-7814-------------------------------
  7619. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
  7620.     AH = 14h
  7621.     DS:SI -> command bytes (see #3479)
  7622.     ES:BX -> data storage area
  7623.     DX:CX = number of data bytes to transfer
  7624. Return: AH = SCSI status byte (if early return mode is clear)
  7625.     CF clear if successful
  7626.         AL = SCSI message byte (if early return mode is clear)
  7627.     CF set on error
  7628.         AL = error code (see #3457)
  7629. Note:    this command sends data using DMA
  7630. SeeAlso: AH=12h,AH=13h
  7631.  
  7632. Format of TARGA.DEV SCSI Command:
  7633. Offset    Size    Description    (Table 3479)
  7634.  00h    BYTE    length of command
  7635.  01h    ???    command bytes
  7636. --------d-7815-------------------------------
  7637. INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
  7638.     AH = 15h
  7639. Return: AH = SCSI status byte
  7640.     CF clear if successful
  7641.         AL = SCSI message byte
  7642.     CF set on error
  7643.         AL = error code (see #3457)
  7644. Note:    if AH=06h was previously called to set the early return mode, this
  7645.       function finishes a command AH=13h or AH=14h which returned before
  7646.       the last DMA transfer was finished
  7647. SeeAlso: AH=06h,AH=13h,AH=14h
  7648. --------V-79---------------------------------
  7649. INT 79 - AVATAR.SYS - FAST GET KEYSTROKE
  7650. Return: CF set if no keystroke available
  7651.         AX = FFFFh
  7652.     CF clear if key pressed
  7653.         AX = keystroke
  7654. Program: AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
  7655.       AVATAR command codes just as ANSI.SYS interprets ANSI commands
  7656. Note:    if a keystroke is available, it is removed from the keyboard buffer
  7657.       before being returned
  7658. SeeAlso: INT 29,INT 2F/AX=1A00h/BX=4156h
  7659. --------E-79---------------------------------
  7660. INT 79 - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ1
  7661. Notes:    this vector is overwritten when GO32 starts but is not restored by
  7662.       early versions of the extender
  7663.     the newest versions of GO32 dynamically allocate the vectors used
  7664.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  7665. SeeAlso: INT 09,INT 78"GO32",INT 7A"GO32"
  7666. --------d-79---------------------------------
  7667. INT 79 U - ADP-60 IDE adapter - ???
  7668. SeeAlso: INT 78"ADP-60"
  7669. --------E-79---------------------------------
  7670. INT 79 - DBOS DOS Extender
  7671.     details not available
  7672. Desc:    this interrupt is used by an MS Windows virtual device driver with
  7673.       which the DBOS extender communicates when run inside a Windows
  7674.       Enhanced Mode DOS box
  7675. SeeAlso: INT 78"DBOS"
  7676. --------A-790001-----------------------------
  7677. INT 79 R - AutoCAD Device Interface - DIGITIZER - INITIALIZE
  7678.     AX = 0001h
  7679.     BX = interface level (0001h)
  7680. Return: AX = status (0000h initialization failed, 0001h init successful)
  7681.     BX = digitizer type
  7682.         0000h relative pointing device (mouse, etc.)
  7683.         0001h digitizing tablet
  7684.     CX = digitizer dataflow type
  7685.         0000h continuous
  7686.         0001h pauses between packets
  7687. SeeAlso: AX=0002h,AX=0003h,INT 7A/AX=0001h"AutoCAD"
  7688. --------A-790002-----------------------------
  7689. INT 79 R - AutoCAD Device Interface - DIGITIZER - TERMINATE
  7690.     AX = 0002h
  7691. SeeAlso: AX=0001h,AX=0003h
  7692. --------A-790003-----------------------------
  7693. INT 79 R - AutoCAD Device Interface - DIGITIZER - GET DIGITIZER STATUS
  7694.     AX = 0003h
  7695. Return: AX = status
  7696.         0000h nothing
  7697.         0002h tracking point (no button pressed)
  7698.         BX = X coordinate
  7699.         CX = Y coordinate
  7700.         0003h picked point (button 0,A,B,C,D pressed)
  7701.         BX = X coordinate
  7702.         CX = Y coordinate
  7703.         0004h button pick
  7704.         BX = button number
  7705.         0005h button and coordinates
  7706.         BX = button number
  7707.         CX = X coordinate
  7708.         DX = Y coordinate
  7709. SeeAlso: AX=0001h,AX=0002h
  7710. --------N-7A---------------------------------
  7711. INT 7A U - Topware Network Operating System - ???
  7712.     AL = ???
  7713.     ???
  7714. Return: ???
  7715. SeeAlso: INT 21/AX=FF00h"Topware",INT 2F/AX=FF00h
  7716. --------N-7A---------------------------------
  7717. INT 7A - X.PC Packet software interface
  7718.     ES:BX -> parameter block
  7719. SeeAlso: INT 60/AX=01FFh
  7720. --------E-7A---------------------------------
  7721. INT 7A - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ2
  7722. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  7723.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  7724. Notes:    this vector is overwritten when GO32 starts but is not restored by
  7725.       early versions of the extender
  7726.     the newest versions of GO32 dynamically allocate the vectors used
  7727.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  7728. SeeAlso: INT 0A"IRQ2",INT 79"GO32",INT 7B"GO32"
  7729. --------P-7A---------------------------------
  7730. INT 7A O - PRINDIR - API (moved to INT 7C, then INT 2F/AX=7F00h)
  7731. SeeAlso: INT 7C"PRINDIR",INT 2F/AX=7F00h"PRINDIR"
  7732. --------N-7A---------------------------------
  7733. INT 7A - Novell NetWare - LOW-LEVEL API - Notes
  7734. Note:    this interrupt is used for IPX/SPX access in NetWare versions through
  7735.       2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
  7736.       entry point even though INT 7A still exists.    For both INT 7A and
  7737.       the FAR entry point, BX contains the function number; IPX is
  7738.       sometimes called internally with BX bit 15 set, which causes the
  7739.       handler to bypass some initial checks and an optional call to the
  7740.       IPX Windows support handler set with INT 2F/AX=7AFFh/BX=0000h
  7741.       (see #2612)
  7742. SeeAlso: INT 2F/AX=7A00h,INT 64"Novell",INT 7A/BX=0000h
  7743. --------N-7A----BX0000-----------------------
  7744. INT 7A - Novell NetWare - IPX Driver - OPEN SOCKET
  7745.     BX = 0000h
  7746.     AL = socket longevity
  7747.         00h open until close or terminate
  7748.         FFh open until close
  7749.     DX = socket number (high byte in DL)
  7750.         0000h dynamic allocation
  7751.         else  socket to open (see #3480)
  7752. Return: AL = return code
  7753.         00h success
  7754.         DX = socket number
  7755.         FEh socket table full
  7756.         FFh socket already open
  7757. Notes:    TSRs which need to use sockets should set AL to FFh, non-resident
  7758.       programs should normally use AL=00h
  7759.     IPX can be configured to support up to 150 open sockets on a
  7760.       workstation, and defaults to 20
  7761.     this function is supported by Advanced NetWare 1.02+
  7762. SeeAlso: INT 7A/BX=0001h,INT 7A/BX=0004h,INT 7A/BX=0023h
  7763.  
  7764. (Table 3480)
  7765. Values for IPX socket number:
  7766.  0451h    File Service (NetWare Core Protocol)
  7767.  0452h    Service Advertising Protocol (see #3488)
  7768.  0453h    Routing Information Packet (see #3491)
  7769.  0455h    NetBIOS Packet
  7770.  0456h    diagnostics
  7771.  0457h    server serial numbers (labeled "Copy Protection" by Lanalyzer)
  7772.  2222h    NetWare Core Protocol
  7773.  4000h-7FFFh used for dynamic allocation
  7774.  4444h    Brightwork Development's SiteLock server
  7775.  5555h    Brightwork Development's SiteLock client (workstation)
  7776.  8000h-FFFFh assigned by Novell
  7777.  869Ch    ID Software's DOOM
  7778. Note:    SiteLock is an application metering product using IPX to communicate
  7779.       between the application and the license server
  7780. --------N-7A----BX0001-----------------------
  7781. INT 7A - Novell NetWare - IPX Driver - CLOSE SOCKET
  7782.     BX = 0001h
  7783.     DX = socket number (high byte in DL) (see #3480)
  7784. Notes:    also cancels events set by any Event Control Blocks for the socket
  7785.     the program must close all open sockets before terminating
  7786.     this function is supported by Advanced NetWare 1.02+
  7787. SeeAlso: BX=0000h
  7788. --------N-7A----BX0002-----------------------
  7789. INT 7A - Novell NetWare - IPX Driver - GET LOCAL TARGET
  7790.     BX = 0002h
  7791.     ES:SI -> target internetwork address (see #3495 at INT 7A/BX=000Bh)
  7792.     ES:DI -> 6-byte buffer for local target
  7793. Return: AL = return code
  7794.         00h success
  7795.            CX = expected one-way transfer time (clock ticks) for a 576-byte
  7796.               packet
  7797.            ES:DI -> local target
  7798.         FAh unsuccessful (no path to destination)
  7799. Notes:    the internetwork address consists of a 4-byte network address followed
  7800.       by a 6-byte node address.  The local target is only a 6-byte node
  7801.       address.  If the target is in the same network, the local target is
  7802.       just the node address of target; otherwise, the local target is the
  7803.       node address of the bridge that leads to the target.
  7804.     this function may be called from inside IPX and AES Event Service
  7805.       Routines, but not from other interrupt handlers
  7806.     this function is supported by Advanced NetWare 1.02+
  7807. SeeAlso: BX=0009h
  7808. --------N-7A----BX0003-----------------------
  7809. INT 7A - Novell NetWare - IPX Driver - SEND PACKET
  7810.     BX = 0003h
  7811.     ES:SI -> Event Control Block (see #3481,#3482)
  7812. Notes:    returns immediately; IPX attempts to send the packet in the background
  7813.     this function is supported by Advanced NetWare 1.02+
  7814.     this function is nearly identical to BX=000Fh, except that it always
  7815.       copies the source address into the IPX header assumed to be at the
  7816.       beginning of the first fragment
  7817. SeeAlso: BX=0004h,BX=000Fh,INT 21/AH=EEh"Novell"
  7818.  
  7819. Format of IPX Event Control Block:
  7820. Offset    Size    Description    (Table 3481)
  7821.  00h    DWORD    Link
  7822.  04h    DWORD    -> Event Service Routine (00000000h if none) (see #3485)
  7823.  08h    BYTE    in use flag (see #3483)
  7824.  09h    BYTE    completion code (see #3484)
  7825.  0Ah    WORD    (big-endian) socket number (see #3480)
  7826.  0Ch  4 BYTEs    IPX workspace
  7827.  10h 12 BYTEs    driver workspace
  7828.  1Ch  6 BYTEs    immediate local node address
  7829.  22h    WORD    fragment count
  7830.  24h    var    fragment descriptors
  7831.         Offset    Size    Description
  7832.          00h    DWORD    -> fragment data
  7833.          04h    WORD    size of fragment in bytes.
  7834. Notes:    ESR is a far procedure that is called when the ECB has been handled.
  7835.       On call, the in use flag is zero if the ECB has been handled,
  7836.       non-zero otherwise. If the flag is zero, the completion code holds
  7837.       the result of the event.
  7838.     the first fragment should start with an IPX header (see #3486)
  7839.     all fragments are concatenated and sent in one piece
  7840.     node address FFh FFh FFh FFh FFh FFh broadcasts to all nodes
  7841. SeeAlso: #3482
  7842.  
  7843. Format of AES-ECB:
  7844. Offset    Size    Description    (Table 3482)
  7845.  00h    DWORD    Link
  7846.  04h    DWORD    ESR (Event Service Routine) address (see #3485)
  7847.  08h    BYTE    in use flag (see #3483)
  7848.  09h  5 BYTEs    AES workspace
  7849. SeeAlso: #3481
  7850.  
  7851. (Table 3483)
  7852. Values for ECB in use flag:
  7853.  00h    available
  7854.  E0h    AES temporary
  7855.  F6h    \ special IPX/SPX processing for v3.02+
  7856.  F7h    /
  7857.  F8h    IPX in critical section
  7858.  F9h    SPX listening
  7859.  FAh    processing
  7860.  FBh    holding
  7861.  FCh    AES waiting
  7862.  FDh    AES couting down delay time
  7863.  FEh    awaiting packet reception
  7864.  FFh    sending packet
  7865. SeeAlso: #3481,#3482,#3484
  7866.  
  7867. (Table 3484)
  7868. Values for ECB completion code:
  7869.  00h    success
  7870.  ECh    remote terminated connection without acknowledging packet
  7871.  EDh    abnormal connection termination
  7872.  EEh    invalid connection ID
  7873.  EFh    SPX connection table full
  7874.  F9h    event should not be cancelled
  7875.  FAh    cannot establish connection with specified destination
  7876.  FCh    cancelled
  7877.  FDh    malformed packet
  7878.  FEh    packet undeliverable
  7879.  FFh    physical error
  7880. SeeAlso: #3481,#3483
  7881.  
  7882. (Table 3485)
  7883. Values Event Service Routine is called with:
  7884.     AL = caller's identity (00h = AES, FFh = IPX)
  7885.     ES:SI -> event control block
  7886.     interrupts disabled
  7887. Return: all registers preserved
  7888. SeeAlso: #3481,#3486
  7889.  
  7890. Format of IPX header:
  7891. Offset    Size    Description    (Table 3486)
  7892.  00h    WORD    (big-endian) checksum
  7893.  02h    WORD    (big-endian) length in bytes of total packet
  7894.  04h    BYTE    transport control
  7895.  05h    BYTE    packet type (see #3487)
  7896.  06h 10 BYTEs    destination internetwork address
  7897.  10h    WORD    (big-endian) destination socket
  7898.  12h 10 BYTEs    source internetwork address
  7899.  1Ch    WORD    (big-endian) source socket
  7900. Notes:    an IPX packet has the identical format as a Xerox Network Standard
  7901.       (XNS) packet
  7902.     the application must set packet type, destination address, and
  7903.       destination socket; IPX/SPX set the remaining fields
  7904. SeeAlso: #3481,#3497
  7905.  
  7906. (Table 3487)
  7907. Values for IPX packet type:
  7908.  00h    unknown packet type
  7909.  01h    routing information packet
  7910.  02h    echo packet
  7911.  03h    error packet
  7912.  04h    packet exchange packet (always use this one for data)
  7913.  05h    SPX packet (see #3497)
  7914.  11h    NetWare Core Protocol (also used by Service Advertising Protocol)
  7915.  14h    Propagated Packet (for NetWare), NetBIOS name packet
  7916.  15h-1Eh experimental protocols
  7917. Note:    undocumented packet type 14h will cross up to 16 networks deep in
  7918.       all directions; as Aaron Martin of Origin Systems discovered, the
  7919.       first 64 bytes of the IPX data in such packets should be considered
  7920.       reserved, as IPX places the traversed server nodes there.
  7921.  
  7922. Format of Service Advertising Protocol Service Query Packet:
  7923. Offset    Size    Description    (Table 3488)
  7924.  00h 30 BYTEs    IPX header
  7925.  1Eh    WORD    (big-endian) query type
  7926.         0001h general find service
  7927.         0003h find nearest server
  7928.  20h    WORD    (big-endian) server type
  7929.         (see #1578 at INT 21/AH=E3h"CONNECTION CONTROL")
  7930. SeeAlso: #3489
  7931.  
  7932. Format of Service Advertising Protocol Server Identification Packet:
  7933. Offset    Size    Description    (Table 3489)
  7934.  00h 30 BYTEs    IPX header
  7935.  1Eh    WORD    (big-endian) response type
  7936.         0002h general service
  7937.         0004h nearest service
  7938.  20h 64N BYTEs    server entries (1-7) (see #3490)
  7939. SeeAlso: #3488,#3491
  7940.  
  7941. Format of SAP server entry:
  7942. Offset    Size    Description    (Table 3490)
  7943.  00h    WORD    (big-endian) server type
  7944.         (see #1578 at INT 21/AH=E3h"CONNECTION CONTROL")
  7945.  02h 48 BYTEs    ASCIZ server name
  7946.  32h  2 WORDs    (big-endian) network number
  7947.  34h  3 WORDs    (big-endian) node number
  7948.  3Ch    WORD    (big-endian) socket number
  7949.  3Eh    WORD    (big-endian) number of hops between caller and server
  7950.         10h = Server Shutdown Advertising Packet
  7951. SeeAlso: #3489
  7952.  
  7953. Format of IPX Routing Information packet:
  7954. Offset    Size    Description    (Table 3491)
  7955.  00h 30 BYTEs    IPX header
  7956.  1Eh    WORD    operation (0001h request, 0002h response)
  7957.  20h 8N BYTEs    network entries (1-50) (see #3492)
  7958. SeeAlso: #3489
  7959.  
  7960. Format of RIP network entry:
  7961. Offset    Size    Description    (Table 3492)
  7962.  00h    DWORD    network number (FFFFFFFFh = general request)
  7963.  04h    WORD    (response) number of hops
  7964.  06h    WORD    (response) number of clock ticks to reach destination
  7965. --------N-7A----BX0004-----------------------
  7966. INT 7A - Novell NetWare - IPX Driver - LISTEN FOR PACKET
  7967.     BX = 0004h
  7968.     ES:SI -> Event Control Block (see BX=0003h)
  7969. Return: AL = status
  7970.         00h successful
  7971.         FFh no listening socket for packet
  7972. Desc:    this function provides IPX with an ECB for receiving an IPX packet, but
  7973.       does not wait for a packet to arrive
  7974. Notes:    the application must open a socket and initialize the ECB's ESR
  7975.       address, socket number, fragment count, and fragment descriptor
  7976.       fields before invoking this function
  7977.     there is no limit on the number of ECBs which may simultaneously be
  7978.       listening on a socket
  7979.     this function is supported by Advanced NetWare 1.02+
  7980. SeeAlso: BX=0000h,BX=0003h
  7981. --------N-7A----BX0005-----------------------
  7982. INT 7A - Novell NetWare - IPX Driver - SCHEDULE IPX EVENT
  7983.     BX = 0005h
  7984.     AX = delay time in clock ticks
  7985.     ES:SI -> Event Control Block (see BX=0003h)
  7986. Note:    this function is supported by Advanced NetWare 1.02+
  7987. SeeAlso: BX=0006h,BX=0007h,BX=0008h
  7988. --------N-7A----BX0006-----------------------
  7989. INT 7A - Novell NetWare - IPX Driver - CANCEL EVENT
  7990.     BX = 0006h
  7991.     ES:SI -> Event Control Block (see BX=0003h)
  7992. Return: AL = return code (see #3493)
  7993. Notes:    cannot cancel packets which the node's driver has already sent
  7994.     this function is supported by Advanced NetWare 1.02+
  7995. SeeAlso: BX=0005h
  7996.  
  7997. (Table 3493)
  7998. Values for IPX return code:
  7999.  00h    success
  8000.  F9h    event in use
  8001.  FCh    event cancelled
  8002.  FFh    unsuccessful, event not in use, or unrecognized ECB flag
  8003. --------N-7A----BX0007-----------------------
  8004. INT 7A - Novell NetWare - IPX Driver - SCHEDULE SPECIAL EVENT
  8005.     BX = 0007h
  8006.     AX = delay time
  8007.     ES:SI -> Event Control Block (see BX=0003h)
  8008. Note:    this function is supported by Advanced NetWare 1.02+
  8009. SeeAlso: BX=0006h
  8010. --------N-7A----BX0008-----------------------
  8011. INT 7A - Novell NetWare - IPX Driver - GET INTERVAL MARKER
  8012.     BX = 0008h
  8013. Return: AX = interval marker in clock ticks (big-endian???)
  8014. Notes:    may be used to measure the time elapsed between two events, up to one
  8015.       hour
  8016.     this function is supported by Advanced NetWare 1.02+
  8017. SeeAlso: BX=0005h
  8018. --------N-7A----BX0009-----------------------
  8019. INT 7A - Novell NetWare - IPX Driver - GET INTERNETWORK ADDRESS
  8020.     BX = 0009h
  8021.     ES:SI -> buffer for own internetwork address (see #3494)
  8022. Return: ES:SI buffer filled
  8023.     SI destroyed
  8024. Note:    this function is supported by Advanced NetWare 1.02+
  8025. SeeAlso: BX=0002h,BX=000Bh
  8026.  
  8027. Format of IPX internetwork address:
  8028. Offset    Size    Description    (Table 3494)
  8029.  00h  4 BYTEs    (big-endian) network number
  8030.  04h  6 BYTEs    (big-endian) node number within network
  8031. --------N-7A----BX000A-----------------------
  8032. INT 7A - Novell NetWare - IPX Driver - RELINQUISH CONTROL
  8033.     BX = 000Ah
  8034. Desc:    this call indicates that the application is idle and permits the IPX
  8035.       driver to do some work
  8036. Note:    this function is supported by Advanced NetWare 1.02+
  8037. SeeAlso: INT 15/AX=1000h,INT 21/AH=89h,INT 2F/AX=1680h
  8038. --------N-7A----BX000B-----------------------
  8039. INT 7A - Novell NetWare - IPX Driver - DISCONNECT FROM TARGET
  8040.     BX = 000Bh
  8041.     ES:SI -> internetwork address (see #3495)
  8042. Return: nothing
  8043. Notes:    this function permits the network software on the remote machine to
  8044.       remove any virtual connection with the calling machine
  8045.     only use in point-to-point networks
  8046.     should never be called from within an Event Service Routine
  8047.     this function is supported by Advanced NetWare 1.02+
  8048. SeeAlso: BX=0002h,BX=0009h
  8049.  
  8050. Format of IPX internetwork address:
  8051. Offset    Size    Description    (Table 3495)
  8052.  00h  4 BYTEs    (big-endian) destination network
  8053.  04h  6 BYTEs    (big-endian) destination node
  8054.  0Ah  2 BYTEs    (big-endian) destination socket
  8055. --------N-7A----BX000C-----------------------
  8056. INT 7A U - Novell NetWare - IPX Driver - internal - INITIALIZE NETWORK ADDRESS
  8057.     BX = 000Ch
  8058.     CX:DX = global network address (see INT 7A/BX=0002h)
  8059.     ES:DI -> "OSINCRITICALSECTION" flag
  8060.     DS:SI -> current mode for socket
  8061. Note:    the address cannot be changed once it has been initialized
  8062. SeeAlso: INT 7A/BX=0024h
  8063. --------N-7A----BX000D-----------------------
  8064. INT 7A U - Novell NetWare - IPX Driver - internal - IPX GET PACKET SIZE
  8065.     BX = 000Dh
  8066. Return: AX = maximum packet size
  8067.     CX = retry count
  8068. SeeAlso: BX=001Ah
  8069. --------N-7A----BX000E-----------------------
  8070. INT 7A U - Novell NetWare - IPX Driver - internal - TERMINATE SOCKETS
  8071.     BX = 000Eh
  8072. Return: nothing
  8073. Notes:    this function terminates all sockets opened with the current mode; this
  8074.       may be intended for future enhancements as the socket mode never
  8075.       changes in v2.15
  8076.     called by the NetWare shell if a program terminates
  8077. --------N-7A----BX000F-----------------------
  8078. INT 7A - Novell NetWare - IPX Driver - INTERNAL - SEND PACKET
  8079.     BX = 000Fh
  8080.     ES:SI -> Event Control Block (see BX=0003h)
  8081. Note:    nearly identical to function 0003h, but does not copy address into
  8082.       the first fragment, and bypasses normal error checking
  8083. SeeAlso: BX=0003h
  8084. --------N-7A----BX0010-----------------------
  8085. INT 7A - Novell NetWare - SPX Driver - INSTALLATION CHECK
  8086.     BX = 0010h
  8087.     AL = 00h
  8088. Return: AL = status
  8089.         00h if SPX not installed
  8090.         F0h if IPX not installed
  8091.         FFh if SPX loaded
  8092.         BH = SPX major version
  8093.         BL = SPX minor version
  8094.         CX = maximum SPX connections
  8095.         DX = SPX connections available
  8096. Notes:    this function is supported by Advanced NetWare 2.1+
  8097.     this interrupt is used for IPX/SPX access in NetWare versions through
  8098.       2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
  8099.       entry point even though INT 7A still exists.    For both INT 7A and
  8100.       the FAR entry point, BX contains the function number
  8101.     IPX is sometimes called internally with BX bit 15 set, which causes the
  8102.       entry point handler to bypass some checks and an optional call to
  8103.       the IPX Windows support handler set with INT 2F/AX=7AFFh/BX=0000h
  8104.       (see #2612)
  8105. SeeAlso: BX=0015h
  8106. --------N-7A----BX0011-----------------------
  8107. INT 7A - Novell NetWare - SPX Driver - ESTABLISH SPX CONNECTION
  8108.     BX = 0011h
  8109.     AL = retry count
  8110.     AH = watchdog flag
  8111.     ES:SI -> Event Control Block (see #3481 at BX=0003h)
  8112. Return: AL = status (00h,EFh,FDh,FFh) (see #3496)
  8113.     DX = assigned connection ID number
  8114. Desc:    attempt to establish a connection with a listening socket
  8115. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  8116.       that NetWare can perform its internal packet exchanges
  8117.     the first fragment should start with a SPX header (see #3497).    Fill
  8118.       in all destination addresses.
  8119.     this function is supported by Advanced NetWare 2.1+
  8120. SeeAlso: BX=0000h,BX=0012h,BX=0013h,BX=0014h,BX=0015h
  8121.  
  8122. (Table 3496)
  8123. Values for SPX function status:
  8124.  00h    attempting to contact destination socket
  8125.  EEh    no such connection
  8126.  EFh    local connection table full
  8127.  FDh    buffer size not 42 or fragment count not 1
  8128.  FFh    sending socket not open
  8129.  
  8130. Format of SPX header:
  8131. Offset    Size    Description    (Table 3497)
  8132.  00h    WORD    (big-endian) checksum
  8133.  02h    WORD    (big-endian) length in bytes of total packet
  8134.  04h    BYTE    transport control
  8135.  05h    BYTE    packet type (see #3487 at INT 7A/BX=0003h)
  8136.  06h 10 BYTEs    destination internet address
  8137.  10h    WORD    (big-endian) destination socket
  8138.  12h 10 BYTEs    source internet address
  8139.  1Ch    WORD    (big-endian) source socket
  8140.  1Eh    BYTE    connection control (see #3498)
  8141.  1Fh    BYTE    datastream type
  8142.         FEh terminate connection request packet
  8143.         FFh terminate connection acknowledgement packet
  8144.         other user-defined, ignored by SPX
  8145.  20h    WORD    (big-endian) source connection ID
  8146.  22h    WORD    (big-endian) destination connection ID
  8147.  24h    WORD    (big-endian) sequence number
  8148.  26h    WORD    (big-endian) acknowledge number
  8149.  28h    WORD    (big-endian) allocation number
  8150. SeeAlso: #3486
  8151.  
  8152. Bitfields for SPX connection control:
  8153. Bit(s)    Description    (Table 3498)
  8154.  3-0    unused???
  8155.  4    end of message
  8156.  5    reserved
  8157.  6    acknowledgement required
  8158.  7    system packet
  8159. --------N-7A----BX0012-----------------------
  8160. INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX CONNECTION
  8161.     BX = 0012h
  8162.     AH = watchdog flag (00h disabled, 01h enabled)
  8163.     AL = retry count (00h = default)
  8164.     ES:SI -> Event Control Block (see #3481 at BX=0003h)
  8165. Return: nothing
  8166. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  8167.       that NetWare can perform its internal packet exchanges
  8168.     this function is supported by Advanced NetWare 2.1+
  8169. SeeAlso: BX=0011h,BX=0013h,BX=0014h
  8170. --------N-7A----BX0013-----------------------
  8171. INT 7A - Novell NetWare - SPX Driver - TERMINATE SPX CONNECTION
  8172.     BX = 0013h
  8173.     DX = connection ID to terminate
  8174.     ES:SI -> Event Control Block (see #3481 at BX=0003h)
  8175. Note:    this function is supported by Advanced NetWare 2.1+
  8176. SeeAlso: BX=0011h,BX=0012h,BX=0014h
  8177. --------N-7A----BX0014-----------------------
  8178. INT 7A - Novell NetWare - SPX Driver - ABORT SPX CONNECTION
  8179.     BX = 0014h
  8180.     DX = connection ID to terminate
  8181. Return: nothing
  8182. Notes:    this function is supported by Advanced NetWare 2.1+
  8183.     this function does not tell the other side that the connection has been
  8184.       terminated
  8185.     also aborts any outstanding Establish Connection, Terminate Connection,
  8186.       and Send Sequenced Packet commands
  8187. SeeAlso: BX=0011h,BX=0013h
  8188. --------N-7A----BX0015-----------------------
  8189. INT 7A - Novell NetWare - SPX Driver - GET SPX CONNECTION STATUS
  8190.     BX = 0015h
  8191.     DX = connection ID
  8192.     ES:SI -> status buffer (see #3499)
  8193. Return: AL = return code (00h,EEh) (see also #3496)
  8194.         00h connection still valid
  8195.         ES:SI -> status buffer filled
  8196. Note:    this function is supported by Advanced NetWare 2.1+
  8197. SeeAlso: BX=0010h,BX=0011h
  8198.  
  8199. Format of SPX status buffer:
  8200. Offset    Size    Description    (Table 3499)
  8201.  00h    BYTE    connection state
  8202.         01h waiting to establish connection
  8203.         02h starting (attempting to create connection)
  8204.         03h connection established
  8205.         04h terminating
  8206.  01h    BYTE    watchdog flag
  8207.         bit 0: used internally by SPX
  8208.         bit 1: SPX watchdog is monitoring connection
  8209.         bits 2-7 used internally by SPX
  8210.  02h    WORD    (big-endian) source connection ID
  8211.  04h    WORD    (big-endian) destination connection ID
  8212.  06h    WORD    (big-endian) sequence number of next packet sent
  8213.  08h    WORD    (big-endian) acknowledge number, expected sequence number of
  8214.           next received packet
  8215.  0Ah    WORD    (big-endian) maximum sequence number remote SPX may send
  8216.           without ACK from local SPX
  8217.  0Ch    WORD    (big-endian) remote acknowledge number, next sequence number
  8218.           remote SPX expects to receive
  8219.  0Eh    WORD    (big-endian) remote allocation number, maximum sequence number
  8220.           local SPX may send
  8221.  10h    WORD    (big-endian) connection socket
  8222.  12h  6 BYTEs    immediate node address--bridge on local network to destination
  8223.  18h 10 BYTEs    destination internetwork address (see #3495 at INT 7A/BX=000Bh)
  8224.  22h    WORD    (big-endian) retransmit count
  8225.  24h    WORD    (big-endian) estimated roundtrip delay
  8226.  26h    WORD    (big-endian) retransmitted packets
  8227.  28h    WORD    (big-endian) suppressed packets
  8228.  2Ah 12 BYTEs    ??? (v2.15)
  8229. --------N-7A----BX0016-----------------------
  8230. INT 7A - Novell NetWare - SPX Driver - SEND SPX PACKET
  8231.     BX = 0016h
  8232.     DX = connection ID
  8233.     ES:SI -> Event Control Block (see BX=0003h)
  8234. Notes:    this function is supported by Advanced NetWare 2.1+
  8235.     CX may need to be 0001h ???
  8236. SeeAlso: BX=0011h,BX=0017h
  8237. --------N-7A----BX0017-----------------------
  8238. INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX PACKET
  8239.     BX = 0017h
  8240.     DX = connection ID (unused in v2.15)
  8241.     ES:SI -> Event Control Block (see BX=0003h)
  8242. Notes:    this function is supported by Advanced NetWare 2.1+
  8243.     CX may need to be 0001h ???
  8244. SeeAlso: BX=0011h,BX=0016h
  8245. --------N-7A----BX0018-----------------------
  8246. INT 7A U - Novell NetWare - IPX Driver - internal - ADD DIAGNOSTIC ELEMENT
  8247.     BX = 0018h
  8248.     ES:SI -> diagnostic element (see #3500) to be added to Diagnostic Queue
  8249. Note:    this function is supported on file servers only under v2.15; v3.02 also
  8250.       supports it on workstations
  8251. SeeAlso: BX=0019h
  8252.  
  8253. Format of IPX diagnostic element:
  8254. Offset    Size    Description    (Table 3500)
  8255.  00h    DWORD    pointer to next diagnostic element
  8256.  04h    DWORD    pointer to function for ???
  8257.  08h    DWORD    pointer to function for ???
  8258. --------N-7A----BX0019-----------------------
  8259. INT 7A U - Novell NetWare - IPX Driver - internal - CANCEL DIAGNOSTIC ELEMENT
  8260.     BX = 0019h
  8261.     ES:SI -> diagnostic element (see BX=0018h) to be removed
  8262. Note:    this function is supported on file servers only under v2.15; v3.02 also
  8263.       supports it on workstations
  8264. SeeAlso: BX=0018h
  8265. --------N-7A----BX001A-----------------------
  8266. INT 7A - Novell NetWare - IPX Driver - GET DRIVER MAXIMUM PACKET SIZE
  8267.     BX = 001Ah
  8268. Return: AX = maximum packet size with preamble (at least 576 bytes)
  8269.     CX = IPX retry count
  8270.     DS,FLAGS preserved
  8271. SeeAlso: BX=000Dh
  8272. --------N-7A----BX001B-----------------------
  8273. INT 7A U - Novell NetWare - IPX Driver - INTERNAL
  8274.     BX = 001Bh
  8275.     ???
  8276. Return: ???
  8277. Notes:    this function is supported on file servers only under v2.15; v3.02 also
  8278.       supports it on workstations
  8279.     used by NetWare Access Server, which may call INT 15/AX=1117h with
  8280.       BX=0000h in some cases (it uses a modified DESQview)
  8281. --------N-7A----BX001C-----------------------
  8282. INT 7A U - Novell NetWare - NetWare Access Server - GET ???
  8283.     BX = 001Ch
  8284. Return: AX = length of ???
  8285.     ES:BX -> ???
  8286. Notes:    these functions are NOPs for standard IPX drivers such as IPXODI v2.12
  8287. SeeAlso: INT 2F/AX=7AF1h,INT 7A/BX=001Dh,INT 7A/BX=001Eh
  8288. --------N-7A----BX001D-----------------------
  8289. INT 7A U - Novell NetWare - NetWare Access Server - GET ??? ECB AND SOCKET
  8290.     BX = 001Dh
  8291. Return: DX = socket number chosen by IPX
  8292.     ES:SI -> ECB in IPX's code segment (will be listening)
  8293.     BX corrupted
  8294. Notes:    these functions are NOPs for standard IPX drivers such as IPXODI v2.12
  8295. SeeAlso: INT 2F/AX=7AF1h,INT 7A/BX=001Ch,INT 7A/BX=001Eh
  8296. --------N-7A----BX001E-----------------------
  8297. INT 7A U - Novell NetWare - NetWare Access Server - GET ??? ECB
  8298.     BX = 001Eh
  8299. Return: ES:SI -> ECB
  8300.     BX corrupted
  8301. Notes:    these functions are NOPs for standard IPX drivers such as IPXODI v2.12
  8302. SeeAlso: INT 2F/AX=7AF1h,INT 7A/BX=001Ch,INT 7A/BX=001Dh
  8303. --------N-7A----BX001F-----------------------
  8304. INT 7A - Novell NetWare - IPXODI v2.12+ - GET IPX INFORMATION
  8305.     BX = 001Fh
  8306.     DX = 0000h
  8307. Return: AX = ???
  8308.     BX:CX -> ??? entry point (see #3501) (undocumented)
  8309.     DX = feature flags
  8310.         bit 0: IPXODI rather than dedicated IPX
  8311.         bit 1: checksumming functions 0020h-0022h supported
  8312.     ES:SI -> array of words containing used socket number (undocumented);
  8313.         0000h ends array
  8314.     all other registers except DS and FLAGS may be destroyed
  8315. Note:    IPXODI v2.12 is distributed as part of the Personal NetWare system
  8316.       bundled with Novell DOS 7
  8317. SeeAlso: BX=0020h,INT 2F/AX=7A2Fh
  8318.  
  8319. (Table 3501)
  8320. Call IPXODI entry point with:
  8321.     ES:SI -> ECB??? (offset 24h is far pointer to ??? data)
  8322. --------N-7A----BX0020-----------------------
  8323. INT 7A - Novell NetWare - IPXODI v2.12+ - SEND WITH CHECKSUM
  8324.     BX = 0020h
  8325.     ES:SI -> ECB (see #3481 at INT 7A/BX=0003h)
  8326. Return: DS,FLAGS preserved
  8327.     BX,BP corrupted (documented as potentially destroying all other regs)
  8328. Desc:    generate a checksum for the packet data and store it in the IPX
  8329.       checksum field before transmitting the packet
  8330. SeeAlso: BX=001Fh,BX=0021h,BX=0022h,INT 2F/AX=7A2Fh
  8331. --------N-7A----BX0021-----------------------
  8332. INT 7A - Novell NetWare - IPXODI v2.12+ - IPX GENERATE CHECKSUM
  8333.     BX = 0021h
  8334.     ES:SI -> ECB data (see #3481 at INT 7A/BX=0003h)
  8335. Return: ES,DS,SI preserved
  8336.     BX,BP corrupted, all other registers potentially destroyed
  8337. Notes:    the checksum and TransportControl fields of the IPX packet are updated
  8338.     this function enables interrupts and is fully reentrant
  8339. SeeAlso: BX=001Fh,BX=0020h,BX=0022h,INT 2F/AX=7A2Fh
  8340. --------N-7A----BX0022-----------------------
  8341. INT 7A - Novell NetWare - IPXODI v2.12+ - IPX VERIFY CHECKSUM
  8342.     BX = 0022h
  8343.     ES:SI -> ECB data (see #3481 at INT 7A/BX=0003h)
  8344. Return: AX = status (0000h checksum matches)
  8345.     DS,ES,SI preserved
  8346.     BX,BP corrupted, all other registers potentially destroyed
  8347. Note:    this function enables interrupts and is fully reentrant
  8348. SeeAlso: BX=001Fh,BX=0020h,BX=0021h,INT 2F/AX=7A2Fh
  8349. --------N-7A----BX0023-----------------------
  8350. INT 7A - Novell NetWare - IPXODI v2.12+ - OPEN LOOK-AHEAD SOCKET
  8351.     BX = 0023h
  8352.     DX = socket number (0000h for dynamic allocation)
  8353.     ES:SI -> Look Ahead handler (see #3502)
  8354.     BP = desired lookahead size (0000h-0080h)
  8355. Return: AL = status
  8356.         00h successful
  8357.         DX = assigned socket number (big-endian)
  8358.         FEh maximum number of sockets already open
  8359.         FFh specific socket already opened by another application
  8360.     DS,FLAGS preserved
  8361.     all other registers may be destroyed
  8362. Notes:    the socket will always be long-lived, and must thus be explicitly
  8363.       closed with INT 7A/BX=0001h before the Look Ahead handler code is
  8364.       removed from memory (i.e. the program terminates)
  8365.     this function is only supported if INT 2F/AX=7A00h returns ES:BX
  8366.       pointing at an IPX version greater than 3.30
  8367.     the desired lookahead size is the smallest-size packet (including IPX
  8368.       header) that should be passed to the lookahead handler when it
  8369.       arrives
  8370. SeeAlso: INT 7A/BX=0000h,INT 7A/BX=0001h
  8371.  
  8372. (Table 3502)
  8373. Call IPX Look-Ahead handler with:
  8374.     AX = packet's destination socket
  8375.     DS:SI -> look-ahead structure (see #2694 at INT 2F/AX=C000h"LSL")
  8376.     DF clear
  8377.     interrupt disabled (must remain disabled)
  8378. Return: AX = packet use
  8379.         0000h application want packet
  8380.         ES:SI -> ODI ECB (see #2695 at INT 2F/AX=C000h"LSL")
  8381.         8001h application does not want packet
  8382.     ZF set if AX=0000h
  8383.     DS,DI,BP,SS,SP preserved
  8384.     interrupts disabled
  8385. --------N-7A----BX0024-----------------------
  8386. INT 7A U - Novell NetWare - IPXODI v2.20+ - SET INTERNETWORK ADDRESS
  8387.     BX = 0024h
  8388.     ES:SI -> buffer containing internetwork address (see #3495)
  8389. Return: BX,CX,SI,DI,ES destroyed
  8390. Note:    this function differs from INT 7A/BX=000Ch in that it unconditionally
  8391.       sets the address
  8392. SeeAlso: INT 7A/BX=000Ch
  8393. --------A-7A0001-----------------------------
  8394. INT 7A R - AutoCAD Device Interface - DISPLAY - INITIALIZE (INIT1)
  8395.     AX = 0001h
  8396.     BX = configuration
  8397.     CX = interface level (0001h)
  8398. Return: AX = status
  8399.         0000h initialization failed
  8400.         0001h pre-v4.0 driver initialized successfully
  8401.         0003h post-v3.1 driver initialized successfully (driver truncates
  8402.           excessivly long packets)
  8403.     BX = width of graphics area in pixels, or 0000h if using packet
  8404.           communication
  8405.     DX:CX -> packet-mode entry point (see #3503)
  8406. SeeAlso: AX=0001h,AX=0200h,AX=07D0h,INT 61/AX=0007h"OPTIMA",INT 78"AutoCAD"
  8407. SeeAlso: INT 79/AX=0001h,INT 7B/AX=8001h"AutoCAD",INT 7C"AutoShade"
  8408.  
  8409. (Table 3503)
  8410. Call packet-mode entry point with:
  8411. STACK:    DWORD    pointer to request packet (see #3504)
  8412.     WORD    length of packet
  8413.  
  8414. Format of request packet:
  8415. Offset    Size    Description    (Table 3504)
  8416.  00h    WORD    function number (00h-45h for Compaq VGADI41.EXE)
  8417. --------A-7A0200BX0000-----------------------
  8418. INT 7A R - AutoCAD Device Interface - RENDERING DEVICE - INITIALIZE (RDLINKUP)
  8419.     AX = 0200h
  8420.     BX = 0000h
  8421.     CX = interface level (0001h)
  8422. Return: BX = 0000h (driver uses packet communication)
  8423.     DX:CX -> packet-mode entry point (see #3503)
  8424. SeeAlso: AX=0001h"AutoCAD",INT 79/AX=0001h,INT 7B/AX=8001h"AutoCAD"
  8425. --------I-7A04-------------------------------
  8426. INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE
  8427.     AH = 04h
  8428.     ???
  8429. Return: ???
  8430. SeeAlso: AH=06h
  8431. --------I-7A06-------------------------------
  8432. INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE
  8433.     AH = 06h
  8434.     ???
  8435. Return: ???
  8436. SeeAlso: AH=04h
  8437. ----------7A07D0-----------------------------
  8438. INT 7A R - AutoCAD Device Interface - Compaq VGADI41.EXE - GET ENTRY POINT
  8439.     AX = 07D0h
  8440. Return: AX = ??? (0003h)
  8441.     BX = 0000h
  8442.     DX:CX -> ADI entry point (see AX=0001h)
  8443. SeeAlso: AX=0001h
  8444. --------I-7A09--BX8020-----------------------
  8445. INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES
  8446.     AH = 09h
  8447.     BX = 8020h (synchronous request)
  8448.     CX = 0000h
  8449.     DX = ID of session manager (SESSMGR)
  8450.     AL = service (see #3505)
  8451.     ES:DI -> control block
  8452. Return: ???
  8453.  
  8454. (Table 3505)
  8455. Values for service:
  8456.  01h    get session ID
  8457.  02h    get session info
  8458.  04h    dettach from session
  8459.  05h    attach to session
  8460.  06h    get list of windows available
  8461.  07h    get environment of window
  8462.  08h    get 'PIF' (program information file) info
  8463.  0Ah    get base window ID
  8464.  0Bh    get cursor info
  8465. --------I-7A09--BX8020-----------------------
  8466. INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES
  8467.     AH = 09h
  8468.     BX = 8020h (synchronous request)
  8469.     CX = 0000h
  8470.     DX = ID of keyboard manager
  8471.     AL = service number (see #3506)
  8472.     ES:DI -> control block
  8473. Return: ???
  8474.  
  8475. (Table 3506)
  8476. Values for 3270 Workstation Program keyboard service:
  8477.  01h    connect to keyboard
  8478.  02h    disconnect from keyboard
  8479.  03h    read from keyboard
  8480.  04h    send keystroke to session
  8481.  05h    disable input
  8482.  06h    enable input
  8483.  07h    update status code
  8484. --------I-7A09--BX8020-----------------------
  8485. INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES
  8486.     AH = 09h
  8487.     BX = 8020h (synchronous request)
  8488.     CX = 00FFh
  8489.     DX = ID of window service controller (WSCTRL)
  8490.     AL = service number (see #3507)
  8491.     ES:DI -> control block
  8492. Return: ???
  8493.  
  8494. (Table 3507)
  8495. Values for 3270 Workstation Program window service:
  8496.  01h    connect to WS control
  8497.  02h    disconnect from WS control
  8498.  03h    add a window
  8499.  04h    change window's position on screen
  8500.  05h    change window's size
  8501.  06h    change window's color
  8502.  07h    change window's position in the presentation space
  8503.  08h    hide/unhide toggle
  8504.  09h    enlarge/reduce toggle
  8505.  0Ah    change screen background color
  8506.  0Bh    get window's position on screen
  8507.  0Ch    get window's size
  8508.  0Dh    get window's color
  8509.  0Eh    get window's position in the presentation space
  8510.  0Fh    determine whether hidden
  8511.  10h    determine whether enlarged
  8512.  11h    get background color
  8513.  12h    get window names
  8514.  13h    delete all windows from profile
  8515.  14h    pick active window
  8516.  15h    redraw screen
  8517.  16h    redraw window
  8518.  17h    delete a window from profile
  8519.  18h    get active window
  8520.  19h    get active screen
  8521.  1Ah    get window data
  8522.  1Bh    change window data
  8523.  1Ch    select active screen
  8524. --------I-7A09--BX8020-----------------------
  8525. INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES
  8526.     AH = 09h
  8527.     BX = 8020h
  8528.     CX = 00FFh
  8529.     DX = ID of PCPSM
  8530.     AL = service
  8531.         01h define presentation space
  8532.         02h delete presentation space
  8533.         03h display presentation space
  8534.         04h position cursor in presentation space
  8535.         05h change default presentation space
  8536.     ES:DI -> control block
  8537. Return: ???
  8538. --------I-7A09--BX8020-----------------------
  8539. INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION
  8540.     AH = 09h
  8541.     BX = 8020h
  8542.     CX = 00FFh
  8543.     DX = ID of 3270EML
  8544.     AL = service
  8545.         01h connect
  8546.         02h disconnect
  8547.     ES:DI -> control block
  8548. Return: ???
  8549. --------I-7A09--BX8020-----------------------
  8550. INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA
  8551.     AH = 09h
  8552.     BX = 8020h
  8553.     CX = 00FFh
  8554.     DX = ID of OIAM
  8555.     AL = service
  8556.         01h read Operator Information Area
  8557.         02h read OIA subset
  8558.     ES:DI -> control block
  8559. Return: ???
  8560. Note: the OIA is the 25th line on the Host session
  8561. --------I-7A09--BX8020-----------------------
  8562. INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA
  8563.     AH = 09h
  8564.     BX = 8020h
  8565.     CX = 00FFh
  8566.     DX = ID of XLATE
  8567.     AL = service
  8568.         01h translate from host characters to ASCII and vice versa
  8569.         (determined by control block byte 11)
  8570.     ES:DI -> control block
  8571. Return: ???
  8572. --------I-7A09--BX8020-----------------------
  8573. INT 7A - IBM 3270 Workstation Program API - COPY SERVICE
  8574.     AH = 09h
  8575.     BX = 8020h
  8576.     CX = 00FFh
  8577.     DX = ID of copy service
  8578.     AL = service
  8579.         01h copy string from one presentation space to another
  8580.         02h copy block from one presentation space to another
  8581.         03h connect to PC session for copy
  8582.         04h disconnect PC session from copy
  8583.     ES:DI -> control block
  8584. Return: ???
  8585. --------I-7A09--BX8020-----------------------
  8586. INT 7A - IBM 3270 Workstation Program API - Multi-DOS
  8587.     AH = 09h
  8588.     BX = 8020h
  8589.     CX = 00FFh
  8590.     ES:DI -> control block
  8591.     DX = ID of INDJQRY
  8592.         get environment size
  8593.        = ID of INDJASY
  8594.         request DOS functions from workstation
  8595.        = ID of MEMORY
  8596.         AL = function
  8597.             01h allocate memory
  8598.             02h deallocate memory
  8599.             03h modify allocated size
  8600. Return: ???
  8601. --------I-7A09-------------------------------
  8602. INT 7A - IBM 3270 Workstation Program API - HOST SERVICES
  8603.     AH = 09h
  8604.     BX = request type (4000h async, 8028h synchronous)
  8605.     CX = 0000h
  8606.     DX = ID of MFIC
  8607.     AL = service (see #3508)
  8608.     ES:DI -> control block
  8609.  
  8610. (Table 3508)
  8611. Values for 3270 Workstation Program host service:
  8612.  01h    connect to host
  8613.  02h    disconnect from host
  8614.  03h    read DFT structured data from host
  8615.  04h    write DFT structured data to host
  8616.  05h    create a host buffer
  8617. --------I-7A13-------------------------------
  8618. INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE
  8619.     AH = 13h
  8620.     ???
  8621. Return: ???
  8622. ----------7A7A-------------------------------
  8623. INT 7A - Canon IX-30F Image Scanner SI3.SYS - INTERFACE
  8624.     AH = 7Ah
  8625.     ???
  8626. Return: AX = status
  8627.         0000h success
  8628.         000Eh undefined function code
  8629. Range:    unknown, selected by device driver commandline arguments
  8630. --------I-7A81-------------------------------
  8631. INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME
  8632.     AH = 81h
  8633.     ES:DI -> 8-char blank-padded gate name (see #3509)
  8634. Return: DX = gate ID
  8635.  
  8636. (Table 3509)
  8637. Values for 3270 Workstation Program gate name:
  8638.  "SESSMGR "
  8639.  "KEYBOARD"
  8640.  "WSCTRL  "
  8641.  "MFIC      "
  8642.  "PCPSM      "
  8643.  "3270EML "
  8644.  "COPY      "
  8645.  "XLATE      "
  8646.  "OIAM      "
  8647.  "MEMORY  "
  8648.  "INDJQRY "
  8649.  "INDJASY "
  8650. --------I-7A83-------------------------------
  8651. INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS
  8652.     AH = 83h
  8653.     ???
  8654. Return: ???
  8655. --------I-7AFDCB-----------------------------
  8656. INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK
  8657.     AX = FDCBh
  8658. Return: DX:AX -> PCS/3270 signature block if loaded (see #3510)
  8659.  
  8660. Format of Personal Communications/3270 signature block:
  8661. Offset    Size    Description    (Table 3510)
  8662.  04h    WORD    PCS/3270 signature (5741h)
  8663.  06h    WORD    version (0501h = PCS/3270 v1.0)
  8664. --------I-7AFE01-----------------------------
  8665. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  8666.     AX = FE01h
  8667.     ???
  8668. Return: ???
  8669. SeeAlso: AX=FE02h
  8670. --------I-7AFE02-----------------------------
  8671. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  8672.     AX = FE02h
  8673.     ???
  8674. Return: ???
  8675. SeeAlso: AX=FE01h
  8676. --------I-7AFF01-----------------------------
  8677. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  8678.     AX = FF01h
  8679.     ES:DI -> API function handler routine
  8680. Return: CX = 1200h
  8681. SeeAlso: AX=FF02h,AX=FF03h
  8682. --------I-7AFF02-----------------------------
  8683. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION
  8684.     AX = FF02h
  8685. Return: CX = 1200h
  8686. SeeAlso: AX=FF01h
  8687. --------I-7AFF03-----------------------------
  8688. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  8689.     AX = FF03h
  8690.     ES:DI -> send/receive function handler routine
  8691. Return: CX = 1200h
  8692. SeeAlso: AX=FF01h
  8693. --------I-7AFF04-----------------------------
  8694. INT 7A U - IBM PC3270 EMUL PROG v3 - INTERNAL ???
  8695.     AX = FF04h
  8696.     ES:DI -> ???
  8697. Return: CX = 1200h
  8698. --------f-7B---------------------------------
  8699. INT 7B - Btrieve API (single user)
  8700.     DS:DX -> 38-byte parameter record (see #3511)
  8701. Return: return code field set
  8702. Note:    Btrieve sets low byte of vector to 33h; this serves as the installation
  8703.       check
  8704. SeeAlso: INT 2F/AX=AB01h,INT 7F/AX=0200h
  8705.  
  8706. Format of Btrieve parameter record:
  8707. Offset    Size    Description    (Table 3511)
  8708.  00h    DWORD    pointer to data buffer
  8709.  04h    WORD    data buffer length
  8710.  06h    DWORD    pointer to 90-byte record containing positioning info
  8711.         (should be same for all calls for same file)
  8712.  0Ah    DWORD    pointer to 38-byte FCB info buffer
  8713.         (should be same for all calls for same file)
  8714.  0Eh    WORD    function code (see #3512)
  8715.  10h    DWORD    pointer to file name/key buffer
  8716.  14h    BYTE    key length
  8717.  15h    BYTE    key number
  8718.  16h    DWORD    pointer to status code (see #3513)
  8719.  1Ah    WORD    interface code (version specific)
  8720.         6176h version 5.10
  8721.  
  8722. (Table 3512)
  8723. Values for function code:
  8724.  00h    open
  8725.  01h    close
  8726.  02h    insert
  8727.  03h    update
  8728.  04h    delete
  8729.  05h    get_equal
  8730.  06h    get_next
  8731.  07h    get_prev
  8732.  08h    get_greater
  8733.  09h    get_gr_eql
  8734.  0Ah    get_less
  8735.  0Bh    get_less_eq
  8736.  0Ch    get_first
  8737.  0Dh    get_last
  8738.  0Eh    create
  8739.  0Fh    stat
  8740.  10h    extend
  8741.  11h    set_dir: set directory information
  8742.  12h    get_dir: get directory information
  8743.  13h    begin_trans
  8744.  14h    end_trans
  8745.  15h    abort_trans
  8746.  16h    get_pos: get record position number
  8747.  17h    get_direct: get data by sending record position
  8748.  18h    step_next
  8749.  19h    stop
  8750.  1Ah    version
  8751.  1Bh    unlock
  8752.  1Ch    reset
  8753.  1Dh    set owner
  8754.  1Eh    clear owner
  8755.  1Fh    create supplemental index
  8756.  20h    drop supplemental index
  8757.  21h    step first
  8758.  22h    step last
  8759.  23h    step previous
  8760.  24h    get next extended: get multiple records using a filter
  8761.  25h    get previous extended: get multiple records using a filter
  8762.  26h    step next extended: get multiple records using a filter
  8763.  27h    step previous extended: get multiple records using a filter
  8764.  28h    insert extended: insert one or more records
  8765.  31h    ???
  8766. Notes:    add 50 (32h) to any "get" operation to just return the key data
  8767.     add 100 (64h) for a single-record wait lock (automatically released
  8768.       on next get)
  8769.     add 200 (C8h) for a single-record nowait lock (nowait lock returns
  8770.       error 54h or 55h if record already locked)
  8771.     add 300 (12Ch) for a multiple-record wait lock (not released until
  8772.       unlock called)
  8773.     add 400 (190h) for a multiple-record nowait lock (nowait lock returns
  8774.       error 54h or 55h if record already locked)
  8775.  
  8776. (Table 3513)
  8777. Values for Btrieve status code:
  8778.  00h    successful
  8779.  01h    invalid operation
  8780.  02h    I/O error
  8781.  03h    file not open
  8782.  04h    key value not found
  8783.  05h    duplicate key value
  8784.  06h    invalid key number
  8785.  07h    different key number
  8786.  08h    invalid positioning
  8787.  09h    end of file
  8788.  0Ah    modifiable key value error
  8789.  0Bh    invalid file name
  8790.  0Ch    file not found
  8791.  0Dh    extended file error
  8792.  0Eh    pre-image open error
  8793.  0Fh    pre-image I/O error
  8794.  10h    expansion error
  8795.  11h    close error
  8796.  12h    disk full
  8797.  13h    unrecoverable error
  8798.  14h    record manager inactive
  8799.  15h    key buffer too short
  8800.  16h    data buffer length overrun
  8801.  17h    position block length
  8802.  18h    page size error
  8803.  19h    create I/O error
  8804.  1Ah    number of keys
  8805.  1Bh    invalid key position
  8806.  1Ch    invalid record length
  8807.  1Dh    invalid key length
  8808.  1Eh    not a Btrieve file
  8809.  1Fh    file already extended
  8810.  20h    extended I/O error
  8811.  22h    invalid extension name
  8812.  23h    directory error
  8813.  24h    transaction error
  8814.  25h    transaction is active
  8815.  26h    transaction control file I/O error
  8816.  27h    end/abort transaction error
  8817.  28h    transaction max files
  8818.  29h    operation not allowed
  8819.  2Ah    incomplete accelerated access
  8820.  2Bh    invalid record address
  8821.  2Ch    null key path
  8822.  2Dh    inconsistent key flags
  8823.  2Eh    access to file denied
  8824.  2Fh    maximum open files
  8825.  30h    invalid alternate sequence definition
  8826.  31h    key type error
  8827.  32h    owner already set
  8828.  33h    invalid owner
  8829.  34h    error writing cache
  8830.  35h    invalid interface
  8831.  36h    variable page error
  8832.  37h    autoincrement error
  8833.  38h    incomplete index
  8834.  39h    expanded memory error
  8835.  3Ah    compression buffer too short
  8836.  3Bh    file already exists
  8837.  3Ch    reject count reached
  8838.  3Dh    work space too small
  8839.  3Eh    incorrect descriptor
  8840.  3Fh    invalid extended insert
  8841.  40h    filter limit reached
  8842.  41h    incorrect field offset
  8843.  4Ah    automatic transaction abort
  8844.  4Dh    Btrieve engine busy or resource locked by another user
  8845.  4Eh    deadlock detected
  8846.  50h    conflict
  8847.  51h    lock error
  8848.  52h    lost position
  8849.  53h    read outside transaction
  8850.  54h    record in use
  8851.  55h    file in use
  8852.  56h    file table full
  8853.  57h    handle table full
  8854.  58h    incompatible open mode
  8855.  5Ah    redirected device table full
  8856.  5Bh    server error
  8857.  5Ch    transaction table full
  8858.  5Dh    incompatible lock type
  8859.  5Eh    permission error
  8860.  5Fh    session no longer valid
  8861.  60h    communications environment error
  8862.  61h    data message too small
  8863.  62h    internal transaction error
  8864. --------I-7B---------------------------------
  8865. INT 7B - Eicon Access API (3270/5250 gateways)
  8866. SeeAlso: INT 5C"NetBIOS"
  8867. --------E-7B---------------------------------
  8868. INT 7B - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ3
  8869. Notes:    this vector is overwritten when GO32 starts but is not restored by
  8870.       early versions of the extender
  8871.     the newest versions of GO32 dynamically allocate the vectors used
  8872.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  8873. SeeAlso: INT 0B,INT 10/AH=FFh"GO32",INT 7A"GO32",INT 7C"GO32"
  8874. --------A-7B---------------------------------
  8875. INT 7B CR - AutoCAD Device Interface - PRINTER/PLOTTER - SEND PLOTTING DATA
  8876.     AX = data length (0000h-7FFFh)
  8877.     CX:BX -> data to be plotted
  8878.     DX = vertical position of line on page
  8879. Return: nothing
  8880. Notes:    This interrupt is called by AutoCAD to perform its output
  8881.     A data length of 0000h indicates that a blank line is to be output
  8882. SeeAlso: AX=8001h,AX=8002h,INT 78"AutoCAD",INT 7A/AX=0001h"AutoCAD"
  8883. --------e-7B---------------------------------
  8884. INT 7B U - MCI Express v2.11+ - DRIVER.EXE - ???
  8885. Program: MCI Express is a front end to MCI Mail; DRIVER.EXE is its
  8886.       communication driver
  8887. ----------7B---------------------------------
  8888. INT 7B - Novell XQL - XQL PRIMITIVES MANAGER API
  8889.     DS:DX -> parameter block (see #3515)
  8890. Return: parameter block updated
  8891.  
  8892. (Table 3514)
  8893. Values for Novell XQL function number:
  8894.  00h    log in
  8895.  01h    log out
  8896.  02h    "tNewFcn"
  8897.  03h    "tFreeFcn"
  8898.  04h    "tMoveFldFcn"
  8899.  05h    "tFieldFcn"
  8900.  06h    "tDescribeFcn"
  8901.  07h    "tFetchFcn"
  8902.  08h    "tComputeFcn"
  8903.  09h    "tOrderFcn"
  8904.  0Ah    "tRestrictFcn"
  8905.  0Bh    "tJoinFcn"
  8906.  0Ch    "tInsertFcn"
  8907.  0Dh    "tUpdateFcn"
  8908.  0Eh    "tUpdallFcn"
  8909.  0Fh    "tRemoveFcn"
  8910.  10h    "tRemallFcn"
  8911.  11h    "tResetFcn"
  8912.  12h    "tTransFcn"
  8913.  13h    "tStatFcn"
  8914.  14h    "tDDCreFcn"
  8915.  15h    "tStoreFcn"
  8916.  16h    "tRecallFcn"
  8917.  17h    "tStopFcn"
  8918.  18h    "tDDFileFcn"
  8919.  19h    "tDDFieldFcn"
  8920.  1Ah    "tDDIndexFcn"
  8921.  1Bh    "tDDModFcn"
  8922.  1Ch    "tDDViewFcn"
  8923.  1Dh    "tDDDrpFcn"
  8924.  1Eh    "tDDPathFcn"
  8925.  1Fh    "tDDAttrFcn"
  8926.  20h    "tDDFcn"
  8927.  21h    "tSecurFcn"
  8928.  22h    "tUserFcn"
  8929.  23h    "tAccessFcn"
  8930.  24h    "tPswdFcn"
  8931.  25h    "tCharFcn"
  8932.  26h    "tVersionFcn"
  8933.  27h    "tCnvFcn"
  8934.  28h    "tValFcn"
  8935.  29h    "tMaskFcn"
  8936. SeeAlso: #3515
  8937.  
  8938. Format of XQL parameter block:
  8939. Offset    Size    Description    (Table 3515)
  8940.  00h  4 BYTEs    signature "XQLP"
  8941.  04h    WORD    function number (see #3514)
  8942.  06h    WORD    handle
  8943.  08h    WORD    status
  8944.  0Ah    WORD    session ID
  8945.  0Ch    var    data record (varies by function)
  8946. ---function 00h---
  8947.  0Ch    DWORD    -> user name
  8948.  10h    DWORD    -> password
  8949.  14h    DWORD    -> dictionary
  8950.  18h    DWORD    -> filepath
  8951.  1Ch    DWORD    -> machine name
  8952.  20h    WORD    process ID
  8953. ---function 01h---
  8954.  no additional fields???
  8955. ---function 02h---
  8956.  0Ch    DWORD    -> filename
  8957.  10h    DWORD    -> owner name
  8958.  14h    WORD    open mode
  8959. ---function 03h---
  8960.  no additional fields???
  8961. ---function 04h---
  8962.  0Ch    WORD    "frompos"
  8963.  0Eh    WORD    "topos"
  8964. ---function 05h---
  8965.  0Ch    WORD    subfunction
  8966.  0Eh    WORD    position
  8967.  10h    WORD    count
  8968.  12h    DWORD    -> field list
  8969. ---function 06h---
  8970.  0Ch    WORD    subfunction
  8971.  0Eh    WORD    length of description
  8972.  10h    WORD    position
  8973.  12h    WORD    count
  8974.  14h    DWORD    pointer to description list
  8975. ---function 07h---
  8976.  0Ch    WORD    data length
  8977.  0Eh    WORD    "op"
  8978.  10h    DWORD    "select"
  8979.  14h    DWORD    "reject"
  8980.  18h    DWORD    pointer to data buffer
  8981. ---function 08h---
  8982.  0Ch    DWORD    -> field name
  8983.  10h    WORD    field type
  8984.  12h    WORD    field size
  8985.  14h    WORD    "flddec"
  8986.  16h    WORD    "explen"
  8987.  18h    DWORD    pointer to "expbuf"
  8988. ---function 09h---
  8989.  0Ch    WORD    count
  8990.  0Eh    DWORD    -> field list
  8991. ---function 0Ah---
  8992.  0Ch    WORD    "newexp"
  8993.  0Eh    WORD    "explen"
  8994.  10h    DWORD    -> "expbuf"
  8995. ---function 0Bh---
  8996.  0Ch    DWORD    -> filename
  8997.  10h    DWORD    -> owner name
  8998.  14h    WORD    type of join
  8999.  16h    WORD    "pCount"
  9000.  18h    DWORD    -> "pNames"
  9001.  1Ch    WORD    "sCount"
  9002.  1Eh    DWORD    -> "sNames"
  9003. ---functions 0Ch, 0Dh, 0Fh---
  9004.  0Ch    WORD    file count
  9005.  0Eh    DWORD    -> file list
  9006.  12h    DWORD    count
  9007.  16h    DWORD    -> buffer
  9008. ---function 0Eh---
  9009.  0Ch    WORD    file count
  9010.  0Eh    DWORD    -> file list
  9011.  12h    WORD    "op"
  9012.  14h    DWORD    "select"
  9013.  18h    DWORD    "reject"
  9014.  1Ch    WORD    count
  9015.  1Eh    DWORD    -> "res"
  9016.  22h    DWORD    -> "comp"
  9017. ---function 10h---
  9018.  0Ch    WORD    file count
  9019.  0Eh    DWORD    -> file list
  9020.  12h    WORD    "op"
  9021.  14h    DWORD    "select"
  9022.  18h    DWORD    "reject"
  9023. ---function 11h---
  9024.  0Ch    DWORD    machine name
  9025. ---function 12h---
  9026.  0Ch    WORD    option
  9027. ---function 13h---
  9028.  0Ch    WORD    subfunction
  9029.  0Eh    WORD    length of buffer
  9030.  10h    DWORD    -> buffer
  9031. ---function 14h---
  9032.  0Ch    WORD    subfunction
  9033.  0Eh    DWORD    -> filename
  9034.  12h    WORD    "create"
  9035.  14h    DWORD    -> pathname
  9036.  18h    DWORD    -> owner name
  9037.  1Ch    WORD    owner access restrictions
  9038.  1Eh    WORD    number of fields
  9039.  20h    DWORD    -> field list
  9040.  24h    WORD    number of keys
  9041.  28h    DWORD    -> key list
  9042.  2Ch    WORD    "buflen"
  9043.  2Eh    DWORD    -> create parameters
  9044. ---function 15h---
  9045.  0Ch    DWORD    -> "StoreName"
  9046.  10h    WORD    length of buffer
  9047.  12h    DWORD    -> buffer
  9048. ---function 16h---
  9049.  0Ch    DWORD    -> "RecallName"
  9050.  10h    WORD    owner number
  9051.  12h    DWORD    -> owner list
  9052.  16h    WORD    open mode
  9053.  18h    WORD    length of buffer
  9054.  1Ah    DWORD    -> buffer
  9055. ---function 17h---
  9056.  no additional fields???
  9057. ---function 18h---
  9058.  0Ch    WORD    "rtype"
  9059.  0Eh    WORD    count
  9060.  10h    DWORD    -> "filebuf"
  9061.  14h    WORD    length of following buffer
  9062.  16h    DWORD    -> output buffer
  9063. ---functions 19h, 1Ah---
  9064.  0Ch    WORD    "rtype"
  9065.  0Eh    WORD    count
  9066.  10h    DWORD    -> field buffer
  9067.  14h    WORD    length of following buffer
  9068.  16h    DWORD    -> output buffer
  9069. ---function 1Bh---
  9070.  0Ch    WORD    subfunction
  9071.  0Eh    DWORD    -> filename
  9072.  12h    WORD    "create"
  9073.  14h    DWORD    -> pathname
  9074.  18h    DWORD    -> owner name
  9075.  1Ch    WORD    owner access restrictions
  9076.  1Eh    WORD    field count
  9077.  20h    DWORD    -> field list
  9078.  24h    WORD    number of keys
  9079.  26h    DWORD    -> list of keys
  9080. ---function 1Ch---
  9081.  0Ch    WORD    count
  9082.  0Eh    DWORD    -> view name
  9083.  12h    WORD    length of following buffer
  9084.  14h    DWORD    -> output buffer
  9085. ---function 1Dh---
  9086.  0Ch    DWORD    -> filename
  9087.  10h    WORD    file type
  9088.  12h    WORD    "deletepath"
  9089. ---function 1Eh---
  9090.  0Ch    WORD    "dirtype"
  9091.  0Eh    DWORD    -> pathname
  9092. ---function 1Fh---
  9093.  0Ch    WORD    function
  9094.  0Eh    DWORD    -> field name
  9095.  12h    WORD    attribute
  9096.  14h    WORD    size of buffer
  9097.  16h    DWORD    -> buffer for attributes
  9098. ---function 20h---
  9099.  0Ch    DWORD    -> directory path
  9100.  10h    WORD    function
  9101. ---function 21h---
  9102.  0Ch    DWORD    -> master password
  9103.  10h    WORD    "securityflag"
  9104. ---function 22h---
  9105.  0Ch    DWORD    -> master password
  9106.  10h    WORD    function (add/modify/remove)
  9107.  12h    DWORD    -> user name
  9108.  16h    DWORD    -> password
  9109.  1Ah    WORD    global rights
  9110.  1Ch    WORD    count
  9111.  1Eh    WORD    length of following buffer
  9112.  20h    DWORD    -> "userbuf"
  9113. ---function 23h---
  9114.  0Ch    DWORD    -> master password
  9115.  10h    DWORD    -> user name
  9116.  14h    WORD    function (allow/deny/getrights)
  9117.  16h    WORD    rights
  9118.  18h    DWORD    -> filename
  9119.  1Ch    WORD    number of field names in following buffer
  9120.  1Eh    DWORD    -> field names
  9121.  22h    WORD    maximum buffer length
  9122.  24h    DWORD    -> output buffer
  9123. ---function 24h---
  9124.  0Ch    DWORD    -> user name
  9125.  10h    DWORD    -> password
  9126. ---function 25h---
  9127.  0Ch    WORD    "charFcn"
  9128.  0Eh    WORD    "charType"
  9129.  10h    WORD    "charValue"
  9130. ---function 26h---
  9131.  0Ch    DWORD    -> buffer
  9132. ---function 27h---
  9133.  0Ch    WORD    option
  9134.  0Eh    WORD    type
  9135.  10h    WORD    size
  9136.  12h    WORD    "dec"
  9137.  14h    WORD    "dsize"
  9138.  16h    DWORD    -> value
  9139.  1Ah    DWORD    -> "retval"
  9140.  1Eh    DWORD    -> mask
  9141.  22h    WORD    "justify"
  9142. ---function 28h---
  9143.  0Ch    DWORD    -> field name
  9144.  10h    WORD    length of buffer
  9145.  12h    DWORD    -> buffer for data
  9146. ---function 29h---
  9147.  0Ch    WORD    option
  9148.  0Eh    WORD    type
  9149.  10h    WORD    size
  9150.  12h    WORD    "dec"
  9151.  14h    WORD    length of mask
  9152.  16h    DWORD    -> mask
  9153. --------A-7B8001-----------------------------
  9154. INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - BEGIN PLOT
  9155.     AX = 8001h
  9156.     BX = file level
  9157.         0000h binary file
  9158.         0001h CAD/camera image file
  9159.         0002h installed ADI driver
  9160.     CX = horizontal size in pixels
  9161.     DX = vertical size in pixels
  9162. Return: AX = status (0000h initialization failed, 0001h init successful)
  9163.     BX = allowed output format
  9164.         0000h monochrome
  9165.         0001h color (4 bits per pixel)
  9166. SeeAlso: AX=8002h,AX=8003h,INT 7B"AutoCAD",INT 7C"AutoShade"
  9167. --------A-7B8002-----------------------------
  9168. INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - END PLOT
  9169.     AX = 8002h
  9170. SeeAlso: AX=8001h,AX=8003h
  9171. --------A-7B8003-----------------------------
  9172. INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - ABORT PLOT
  9173.     AX = 8003h
  9174. SeeAlso: AX=8001h,AX=8002h
  9175. --------r-7C---------------------------------
  9176. INT 7C U - IBM REXX88PC command language
  9177.     ???
  9178. --------E-7C---------------------------------
  9179. INT 7C - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ4
  9180. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  9181.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  9182. Notes:    this vector is overwritten when GO32 starts but is not restored by
  9183.       early versions of the extender
  9184.     the newest versions of GO32 dynamically allocate the vectors used
  9185.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  9186. SeeAlso: INT 0C,INT 7B"GO32",INT 7D"GO32"
  9187. --------P-7C---------------------------------
  9188. INT 7C - PRINDIR v8.02-8.xx - API
  9189.     AH = function
  9190.        00h set output to Invisible mode
  9191.        01h set output to LPT1
  9192.        02h set output to LPT2
  9193.        03h set output to LPT3
  9194.        04h set output to COM1
  9195.        05h set output to COM2
  9196.        06h set output to COM3
  9197.        07h set output to COM4
  9198.        08h set output to screen
  9199.        09h set output to file
  9200.        0Ah change file path
  9201.            ES:DI -> new path
  9202.            CX = length of path (max 41, but not range-checked)
  9203.        0Bh change file name
  9204.            ES:DI -> new filename
  9205.            CX = length of new name (max 41, but not range-checked)
  9206.        0Ch set redirected device
  9207.         (01h = LPT1 ... 03h = LPT3, 04h = COM1 ... 07h = COM4)
  9208.        0Dh force buffer dump
  9209.        0Eh set display color
  9210.            AL = new color attribute (see #0013 at INT 10/AH=08h)
  9211.        0Fh set popup hotkey
  9212.            AL = hotkey scancode
  9213.        10h toggle byte display
  9214.            AL = new state (00h off, 01h on)
  9215.        11h change buffer flush delay
  9216.            AL = timer ticks before flush
  9217. Return: AX = status
  9218.         0000h successful
  9219.         0001h invalid function or nothing in buffer to be dumped
  9220.         (documented as "nonzero = error")
  9221. Program: PRINDIR is a shareware printer-redirection program by J.M. Allen
  9222.       Creations
  9223. InstallCheck:    test for the ASCIZ signature "PRINDIR N.NN" (where N.NN is the
  9224.       version number) two bytes beyond the start of the interrupt handler
  9225. Note:    prior versions of PRINDIR used INT 7A instead of INT 7C
  9226. SeeAlso: INT 7A"PRINDIR",INT 2F/AX=7F00h"PRINDIR"
  9227. Index:    hotkeys;PRINDIR
  9228. --------A-7C---------------------------------
  9229. INT 7C - AutoShade v2 - RENDERING HARDCOPY DRIVER
  9230. Note:    this is the default interrupt vector for rendering hardcopy drivers
  9231.       instead of INT 7A used by AutoCAD drivers
  9232. SeeAlso: INT 7A/AX=0001h"AutoCAD"
  9233. --------N-7C---------------------------------
  9234. INT 7C - SK-UPPS/SK-PASSPORT Data Link Interface (DLI) API
  9235. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  9236.       which provides an API on top of it Data Link Interface, allowing the
  9237.       use of any of several network transport layers; this product is
  9238.       called SK-PASSPORT in the USA.
  9239. InstallCheck:    test for the ASCII signature string "UPPS_DLI" immediately
  9240.       preceding the interrupt handler
  9241. Notes:    To find the service interrupt being used by the driver, an application
  9242.       should scan through the interrupt table until it finds an interrupt
  9243.       vector with the "UPPS_DLI" string.
  9244.     There may be more than one DLI loaded, each having its own service
  9245.       interrupt.
  9246. SeeAlso: AX=0000h,AX=0002h,AX=000Fh
  9247. Index:    installation check;SK-UPPS
  9248. --------N-7C0000-----------------------------
  9249. INT 7C - SK-UPPS Data Link Interface API - GET DRIVER VERSION
  9250.     AX = 0000h
  9251. Return: AH = major DLI version
  9252.     AL = minor DLI version
  9253.     DX = OEM signature (see #3516)
  9254.     CL = DLI 2.8+ topology: 1=Ethernet, 2=FDDI, 3=Token-Ring
  9255. SeeAlso: AX=0002h,AX=000Bh,AX=000Dh,AX=000Eh
  9256.  
  9257. (Table 3516)
  9258. Values for SK-UPPS Data Link Interface OEM signature (defined by SK):
  9259.  0001h        experimental
  9260.  3343h    ('3C')    3COM
  9261.  4942h    ('IB')    IBM
  9262.  4943h    ('IC')    Intellicom
  9263.  494Eh    ('IN')    Intel
  9264.  4B4Fh    ('KO')    Kodiak
  9265.  4D41h    ('MA')    Madge
  9266.  4E45h    ('NE')    Novell
  9267.  4F43h    ('OC')    Olicom
  9268.  5349h    ('SI')    Siemens
  9269.  534Bh    ('SK')    Schneider & Koch (SysKonnect)
  9270.  5744h    ('WD')    Western Digital
  9271. --------N-7C0001-----------------------------
  9272. INT 7C - SK-UPPS Data Link Interface API - DOWN DRIVER
  9273.     AX = 0001h
  9274. Return: AX = completion code (see #3517)
  9275. Note:    the DLI will refuse to unload if there are any protocols
  9276.       (see AX=0007h) or clients (see AX=0010h) active.
  9277. Index:    uninstall;SK-UPPS Data Link Interface
  9278.  
  9279. (Table 3517)
  9280. Values for SK-UPPS completion code:
  9281.  0000h    SUCCESS
  9282.  0005h    INVALID_MULTICAST
  9283.  0006h    BUFFER_TOO_SMALL
  9284.  0007h    NO_BUFFERS_LEFT
  9285.  0008h    NO_RESOURCES_LEFT
  9286.  000Bh    ILLEGAL_PROTOCOL_ID
  9287.  000Ch    PROTOCOL_IN_USE
  9288.  000Dh    NO_MULTICAST_ADDRESS
  9289.  000Fh    PROTOCOLS_ACTIVE
  9290.  0010h    CLIENTS_ACTIVE
  9291.  001Bh    INVALID_MODE
  9292.  001Ch    MODE_NOT_SUPPORTED
  9293.  FFFFh    UNKNOWN_SERVICE
  9294. --------N-7C0002-----------------------------
  9295. INT 7C - SK-UPPS Data Link Interface API - GET DRIVER STATUS
  9296.     AX = 0002h
  9297.     ES:DI -> Status Information Block (SIB) (see #3529)
  9298. Return: AX = completion code (see #3517)
  9299. Note:    GET DRIVER INFO (AX=000Eh) should be used instead.
  9300. SeeAlso: AX=0000h,AX=000Bh,AX=000Dh,AX=000Eh
  9301. --------N-7C0003-----------------------------
  9302. INT 7C - SK-UPPS Data Link Interface API - CHANGE DRIVER ADDRESS
  9303.     AX = 0003h
  9304.     ES:DI -> new node address (6 bytes)
  9305. Return: AX = completion code (see #3517)
  9306. Note:    the DLI will refuse to change the address if any protocols
  9307.       (see AX=0007h) are active
  9308. SeeAlso: AX=0001h,AX=000Eh
  9309. --------N-7C0004-----------------------------
  9310. INT 7C - SK-UPPS Data Link Interface API - REQUEST BUFFER
  9311.     AX = 0004h
  9312.     DX = protocol ID (see AX=0007h,#3520)
  9313. Return: AX = completion code (see also #3517)
  9314.         0000h successful
  9315.         ES:BX -> Memory Buffer (Mbuf) (see #3518)
  9316. Note:    if the DLI has no free Mbufs, it will set an internal flag for the
  9317.       protocol and later call the protocol's Event Upcall with
  9318.       EV_BUFFER_AVAILABLE (see #3524,#3525) as soon as an Mbuf becomes
  9319.       available.  There will only be one "buffer available" Upcall, even
  9320.       if this function has been called several times before.
  9321. SeeAlso: AX=0005h,AX=0006h,AX=0012h,AX=0013h
  9322.  
  9323. Format of SK-UPPS Memory Buffer (Mbuf):
  9324. Offset    Size    Description    (Table 3518)
  9325.  00h    DWORD    -> NEXT Mbuf (linked list)
  9326.  04h    WORD    OFFSET of actual data within DATA area
  9327.  06h  2 BYTEs    reserved (currently unused)
  9328.  08h    WORD    LENGTH of actual data found in DATA area starting at OFFSET
  9329.  0Ah  2 BYTEs    reserved (currently unused)
  9330.  0Ch    DWORD    -> DATA area (size can be obtained via AX=000Eh call)
  9331.  10h    WORD    PROTOCOL ID of protocol currently "owning" the Mbuf
  9332.  12h    BYTE    IN USE flag; nonzero if Mbuf still in use by DLI (see AX=0006h)
  9333.  13h    BYTE    RECEIVE STATUS (bit 0-7 only; see AX=0007h - Receive Upcall)
  9334. --------N-7C0005-----------------------------
  9335. INT 7C - SK-UPPS Data Link Interface API - RELEASE BUFFER
  9336.     AX = 0005h
  9337.     ES:BX -> Mbuf (see #3518)
  9338. Return: nothing
  9339. SeeAlso: AX=0004h
  9340. --------N-7C0006-----------------------------
  9341. INT 7C - SK-UPPS Data Link Interface API - TRANSMIT FRAME
  9342.     AX = 0006h
  9343.     ES:BX -> Mbuf (see #3518)
  9344. Return: nothing
  9345. Notes:    The DLI will send LENGTH bytes found in the Mbuf's DATA area starting
  9346.       at OFFSET. A complete and valid frame must be stored there. The DLI
  9347.       will only copy the current node address (see AX=0003h) to the
  9348.       source node field of the frame's MAC header.
  9349.     On Ethernet, the DLI will always send a minimum of 60 bytes, regardless
  9350.       of the value found in the LENGTH field.
  9351.     This function returns immediately; the DLI will call the protocol's
  9352.       Transmit Upcall (see #3519) when the frame has been sent.
  9353.     The Mbuf's IN USE field will be non-zero until the DLI calls the
  9354.       Transmit Upcall.
  9355. SeeAlso: AX=0002h,AX=0004h,AX=0013h
  9356.  
  9357. (Table 3519)
  9358. Values SK-UPPS Transmit Upcall is called with:
  9359.     ES:BX -> Mbuf (NEXT field destroyed)
  9360.     interrupts disabled
  9361. Note:    On FDDI the bytes of the source and destination node fields in the MAC
  9362.       header have been bit-swapped to physical address format.
  9363. --------N-7C0007-----------------------------
  9364. INT 7C - SK-UPPS Data Link Interface API - REGISTER PROTOCOL
  9365.     AX = 0007h
  9366.     ES:BX -> Protocol Control Block (see #3520)
  9367. Return: AX = completion code (see #3517)
  9368. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  9369.       which provides an API on top of its Data Link Interface, allowing the
  9370.       use of any of several network transport layers
  9371. SeeAlso: AX=0008h,AX=000Bh
  9372.  
  9373. Format of SK-UPPS Protocol Control Block (PCB):
  9374. Offset    Size    Description    (Table 3520)
  9375.  00h    WORD    (big-endian) protocol type
  9376.  02h    WORD    protocol mode (see #3521)
  9377.  04h    DWORD    -> Receive Upcall routine (see #3522)
  9378.  08h    DWORD    -> Transmit Upcall routine
  9379.  0Ch    DWORD    -> Event Upcall routine (see #3524)
  9380.  10h    DWORD    -> ASCIZ protocol name (zero if none)
  9381.  14h    WORD    protocol ID will be returned here (always non-zero)
  9382.  
  9383. Bitfields for SK-UPPS protocol mode:
  9384. Bit(s)    Description    (Table 3521)
  9385.  0    promiscuous mode; protocol receives all frames regardless of their
  9386.       destination (PROTOCOL TYPE must be FFFFh)
  9387.  1    if set, protocol's Event Upcall will be called on entry and exit of the
  9388.       DLI's Interrupt Service Routine (see #3525)
  9389.  2    DLI 2.2+ hook mode; protocol receives all directed frames destined for
  9390.       this station (PROTOCOL TYPE must be FFFFh)
  9391.  3    DLI 2.3+ receive error frames (only valid in promiscuous mode (0))
  9392.  4-5    DLI 2.5+ frame type:
  9393.     00 Ethernet II; specify type code in PROTOCOL TYPE field (high-low)
  9394.     01 IEEE 802.2; specify Service Access Point (SAP) in MSB
  9395.           (offset 0) of PROCOTOL TYPE field; LSB must be zero
  9396.     10 IEEE 802.2 with SNAP header; specify type code in PROTOCOL TYPE
  9397.           field (high-low)
  9398.     11 reserved (currently unused)
  9399.  6    DLI 2.5+ if set, protocol's Event Upcall will be called with event code
  9400.       EV_BUFFER_WANTED, when DLI runs out of Mbufs
  9401.  7    DLI 2.7+ chain mode; if set, client allows the specified frame type to
  9402.       be shared with other clients
  9403.  8    DLI 2.8+ receive non-LLC frames rather than LLC frames
  9404.  9    DLI 2.8+ receive all multicast frames (see also AX=0009h)
  9405.  10-15    reserved (currently unused; must be zero)
  9406. Notes:    If PROTOCOL TYPE is FFFFh and neither the "promiscuous" nor the "hook"
  9407.       mode is set, the protocol receives all frames that did not match
  9408.       any registered frame type (demultiplexor mode).
  9409.     Protocols using "promiscuous", "hook" or "chain" mode should always
  9410.       return from the Receive Upcall with the received Mbuf in ES:BX and
  9411.       the Carry Flag set. The DLI will then pass the Mbuf to the FEED BACK
  9412.       BUFFER function (see AX=000Fh).
  9413.     Some DLIs do not support all or even any of the "promiscuous",
  9414.       "receive non-LLC" and "receive all multicasts" mode bits.
  9415. SeeAlso: #3520
  9416.  
  9417. (Table 3522)
  9418. Values SK-UPPS Receive Upcall is called with:
  9419.     ES:BX -> Mbuf
  9420.     AX = receive status (see #3523) (also stored in Mbuf's RECEIVE STATUS field)
  9421.     interrupts disabled
  9422. Return: nothing
  9423. SeeAlso: #3524
  9424.  
  9425. Bitfields for SK-UPPS receive status:
  9426. Bit(s)    Description    (Table 3523)
  9427.  0-2    reserved (0), currently unused
  9428.  3    frame check sequence (FCS) error
  9429.  4    overflow (frame too long)
  9430.  5    framing error
  9431.  6    reserved (0), currently unused
  9432.  7    non-LLC frame (see #3521 [bit 8])
  9433.  8-15    reserved (0), currently unused
  9434. Notes:    The protocol's Receive Upcall routine will be called whenever a frame
  9435.       matching the specified frame type is received. A received frame is
  9436.       passed to the protocol in the Mbuf's DATA area at OFFSET and its size
  9437.       is LENGTH bytes.
  9438.     The receive status passed to the Receive Upcall in register AL is
  9439.       always zero, except for protocols using "non-LLC" mode (8 of PCB's
  9440.       protocol mode field) or "promiscuous" mode together with "receive
  9441.       error frames" (0 & 3).
  9442.     Upcalls are FAR routines and must return with a RET FAR. If the Carry
  9443.       Flag is set on return from a Receive or Transmit Upcall, then ES:BX
  9444.       must point to an Mbuf, which the DLI will then pass to the RELEASE
  9445.       BUFFER function (see AX=0005h). See also notes for PROTOCOL MODE.
  9446.  
  9447. (Table 3524)
  9448. Values SK-UPPS Event Upcall is called with:
  9449.     AX = event code (see #3525)
  9450. Return: nothing
  9451. Note:    All Event Upcalls may be ignored by the protocol.
  9452. SeeAlso: #3522
  9453.  
  9454. (Table 3525)
  9455. Values for SK-UPPS Event Upcall event code:
  9456.  00h    EV_BUFFER_AVAILABLE client may now call REQUEST BUFFER (AX=0004h)
  9457.  01h    EV_ISR_START        start of Interrupt Service Routine
  9458.  02h    EV_ISR_END        end of ISR (see #3521 [bit 1])
  9459.  03h    EV_BUFFER_WANTED    DLI temporarily out of Mbufs
  9460.  04h    EV_NETWORK_STATUS   DLI 2.8+ network status -- DX=status (see #3526)
  9461.  05h    EV_IO_CONTROL        DLI 2.8+ I/O control -- DX=subfunc (see AX=0016h)
  9462. SeeAlso: #3524
  9463.  
  9464. Bitfields for EV_NETWORK_STATUS in register DX:
  9465. Bit(s)    Description    (Table 3526)
  9466.     Token-Ring        FDDI
  9467.  15    SIGNAL_LOSS        SIGNAL_LOSS
  9468.  14    HARD_ERROR        HARD_ERROR
  9469.  13    SOFT_ERROR        SOFT_ERROR
  9470.  12    TRANSMIT_BEACON        TRANSMIT_BEACON
  9471.  11    LOBE_WIRE_FAULT        PATH_TEST_FAILED
  9472.  10    AUTO_REMOVAL        SELF_TEST_REQUIRED
  9473.  9    reserved        reserved
  9474.  8    REMOVE_RECEIVED        REMOTE_DISCONNECT
  9475.  7    COUNTER_OVERFLOW    reserved
  9476.  6    SINGLE_STATION        DUPLICATE_ADDRESS
  9477.  5    RING_RECOVERY        NO_RING_OP_STATUS
  9478.  4    reserved        VERSION_MISMATCH
  9479.  3    reserved        STUCK_BYPASS
  9480.  2    reserved        FDDI_EVENT
  9481.  1    reserved        RING_OP_CHANGE
  9482.  0    reserved        reserved
  9483. Note:    EV_NETWORK_STATUS is not supported on Ethernet
  9484. --------N-7C0008-----------------------------
  9485. INT 7C - SK-UPPS Data Link Interface API - DISABLE PROTOCOL
  9486.     AX = 0008h
  9487.     BX = protocol ID (see #3520)
  9488. Return: AX = completion code (see #3517)
  9489. Note:    the DLI will handle any Mbufs given to TRANSMIT FRAME (AX=0006h) as if
  9490.       they had been given to TRANSMIT FRAME RELEASE (AX=0013h).
  9491.     all multicast addresses registered for this protocol will be disabled.
  9492.     after this function returns, the protocol's Upcall routines will no
  9493.       longer be called.
  9494. SeeAlso: AX=0007h,AX=000Bh
  9495. --------N-7C0009-----------------------------
  9496. INT 7C - SK-UPPS Data Link Interface API - REGISTER MULTICAST
  9497.     AX = 0009h
  9498.     BX = protocol ID (see #3520)
  9499.     ES:DI -> multicast address (6 bytes)
  9500. Return: AX = completion code (see #3517)
  9501. Notes:    The broadcast address is always enabled.
  9502.     Set bit 9 of PCB's protocol mode field in REGISTER PROTOCOL call
  9503.       (AX=0007h) to receive all multicast frames.
  9504. SeeAlso: AX=000Ah,AX=0014h
  9505. --------N-7C000A-----------------------------
  9506. INT 7C - SK-UPPS Data Link Interface API - DISABLE MULTICAST
  9507.     AX = 000Ah
  9508.     BX = protocol ID (see #3520)
  9509.     ES:DI -> multicast address (6 bytes)
  9510. Return: AX = completion code (see #3517)
  9511. SeeAlso: AX=0009h,AX=0014h
  9512. --------N-7C000B-----------------------------
  9513. INT 7C - SK-UPPS Data Link Interface API - GET PROTOCOL LIST
  9514.     AX = 000Bh
  9515.     ES:DI -> protocol ID buffer
  9516.     CX = number of 2-byte protocol IDs that may be stored in buffer
  9517. Return: AX = completion code (see #3517)
  9518.     CX = number of active protocols (regardless of value returned in AX)
  9519.     protocol ID buffer filled with active protocol IDs
  9520. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  9521.       which provides an API on top of its Data Link Interface, allowing the
  9522.       use of any of several network transport layers
  9523. Note:    If the buffer supplied is too small, CX still contains the total number
  9524.       of active protocols and the buffer has been filled until full.
  9525. SeeAlso: AX=000Ch,AX=0014h
  9526. --------N-7C000C-----------------------------
  9527. INT 7C - SK-UPPS Data Link Interface API - GET PROTOCOL STATUS
  9528.     AX = 000Ch
  9529.     BX = protocol ID (see #3520,AX=000Bh)
  9530.     ES:DI -> Protocol Status Block (see #3527)
  9531. Return: AX = completion code (see #3517)
  9532. SeeAlso: AX=000Bh,AX=0014h
  9533.  
  9534. Format of SK-UPPS Protocol Status Block (PSB):
  9535. Offset    Size    Description    (Table 3527)
  9536.  00h    DWORD    -> ASCIZ protocol name
  9537.  04h    WORD    protocol mode (see #3521)
  9538.  06h    WORD    protocol type (see AX=0007h)
  9539.  08h    WORD    number of registered multicasts (see AX=0009h,AX=0014h)
  9540. --------N-7C000D-----------------------------
  9541. INT 7C - SK-UPPS Data Link Interface API - GET DRIVER STATISTICS
  9542.     AX = 000Dh
  9543.     BX = flag: 0=don't clear statistics, 1=clear statistics
  9544.     ES:DI -> Statistics Data Block (see #3528)
  9545. Return: AX = completion code (see #3517)
  9546. SeeAlso: AX=0002h,AX=0015h
  9547.  
  9548. Format of SK-UPPS Statistics Data Block (SDB):
  9549. Offset    Size    Description    (Table 3528)
  9550.  00h    DWORD    node uptime in ticks (1/18.21 sec.)
  9551.  04h    DWORD    bytes received
  9552.  08h    DWORD    bytes transmitted
  9553.  0Ch    DWORD    frames received
  9554.  10h    DWORD    frames transmitted
  9555.  14h    DWORD    multicast bytes received
  9556.  18h    DWORD    multicast frames received
  9557.  1Ch    DWORD    unrecognized frames
  9558.  20h    WORD    missed frames
  9559.  22h    WORD    frame check sequence (FCS) errors
  9560.  24h    WORD    framing errors
  9561.  26h    WORD    babbling errors
  9562.  28h    WORD    late collision errors
  9563.  2Ah    WORD    loss of carrier errors
  9564.  2Ch    WORD    16 retries failed errors
  9565.  2Eh    WORD    overflow errors
  9566. Note:    fields 26h through 2Ch are always zero, except in some very old
  9567.       versions of the DLI.    Use GET MEDIA STATISTICS (AX=0015h) to get
  9568.       more detailed information.
  9569. --------N-7C000E-----------------------------
  9570. INT 7C - SK-UPPS Data Link Interface API - DLI 2.5+ - GET DRIVER INFO
  9571.     AX = 000Eh
  9572.     ES:DI -> Driver Information Block (see #3529)
  9573.     BX = offset of 1st field within DIB to be returned
  9574.     CX = number of bytes to be returned
  9575. Return: AX = completion code (see #3517)
  9576.     CX = number of bytes copied (regardless of value returned in AX)
  9577. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  9578.       which provides an API on top of its Data Link Interface, allowing the
  9579.       use of any of several network transport layers
  9580. SeeAlso: AX=0000h,AX=0002h,AX=000Bh,AX=000Dh,AX=0015h
  9581.  
  9582. Format of SK-UPPS Driver Information Block (DIB):
  9583. Offset    Size    Description    (Table 3529)
  9584.  00h  6 BYTEs    physical node address (from adapter's ROM)
  9585.  06h  6 BYTEs    current node address (see AX=0003h)
  9586.  0Ch    BYTE    adapter id (defined by OEM)
  9587.  0Dh    BYTE    IRQ line (FFh if none)
  9588.  0Eh    DWORD    -> shared memory (zero if none)
  9589.  12h    DWORD    size of shared memory (zero if none)
  9590.  16h    WORD    base I/O port (zero if none)
  9591.  18h    BYTE    DMA line (FFh if none)
  9592.  19h    BYTE    DLI 2.4+ topology (see AX=0000h)
  9593.  1Ah    WORD    size of an Mbuf's DATA area (see #3518)
  9594.  1Ch  2 BYTEs    reserved (currently unused)
  9595.  1Eh    WORD    total number of Mbufs the DLI has
  9596.  20h    WORD    maximum number of Mbufs that can be allocated via REQUEST
  9597.           BUFFER (AX=0004h) and SYNC REQUEST BUFFER (AX=0012h)
  9598.  ---- end of Status Information Block returned by GET DRIVER STATUS (AX=0002h)
  9599.  22h    DWORD    -> ASCIZ adapter name
  9600.  26h    WORD    number of I/O ports used (zero if none)
  9601.  28h    DWORD    line speed in bits/sec.
  9602. --------N-7C000F-----------------------------
  9603. INT 7C - SK-UPPS Data Link Interface API - FEED BACK BUFFER
  9604.     AX = 000Fh
  9605.     ES:BX -> Mbuf (see #3518)
  9606. Return: nothing
  9607. Notes:    A protocol may call this function instead of returning the Mbuf
  9608.       directly from the Receive Upcall if it is running in "promiscuous",
  9609.       "hook" or "chain" mode.
  9610. SeeAlso: AX=0007h
  9611. --------N-7C0010-----------------------------
  9612. INT 7C - SK-UPPS Data Link Interface API - CLIENT HOOK
  9613.     AX = 0010h
  9614. Return: nothing
  9615. Notes:    An application having no active protocols may call this function to
  9616.       prevent the DLI from unloading.
  9617. SeeAlso: AX=0001h,AX=0011h
  9618. --------N-7C0011-----------------------------
  9619. INT 7C - SK-UPPS Data Link Interface API - CLIENT UNHOOK
  9620.     AX = 0011h
  9621. Return: nothing
  9622. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  9623.       which provides an API on top of its Data Link Interface, allowing the
  9624.       use of any of several network transport layers
  9625. SeeAlso: AX=0010h
  9626. --------N-7C0012-----------------------------
  9627. INT 7C - SK-UPPS Data Link Interface API - SYNC REQUEST BUFFER
  9628.     AX = 0012h
  9629.     DX = protocol ID (see #3520)
  9630. Return: AX = completion code (see #3517)
  9631.     if AX=0000h: ES:BX -> Mbuf (see #3518)
  9632. Note:    If the protocol wants to be informed when an Mbuf becomes available,
  9633.       REQUEST BUFFER (AX=0004h) should be used instead.
  9634. SeeAlso: AX=0004h,AX=0005h,AX=0006h,AX=0013h
  9635. --------N-7C0013-----------------------------
  9636. INT 7C - SK-UPPS Data Link Interface API - TRANSMIT FRAME RELEASE
  9637.     AX = 0013h
  9638.     ES:BX -> Mbuf (see #3518)
  9639. Return: nothing
  9640. Notes:    Returns immediately; The protocol's Transmit Upcall will NOT be called.
  9641.     The Mbuf may no more be used by the protocol in any way (i.e. the
  9642.       Mbuf's IN USE field may not be polled).
  9643. SeeAlso: AX=0004h,AX=0013h
  9644. --------N-7C0014-----------------------------
  9645. INT 7C - SK-UPPS Data Link Interface API - GET MULTICAST LIST
  9646.     AX = 0014h
  9647.     BX = protocol ID (see #3520,AX=000Bh)
  9648.     ES:DI -> multicast address buffer
  9649.     CX = number of 6-byte multicast addresses that may be stored in buffer
  9650. Return: AX = completion code (see #3517)
  9651.     CX = number of registered multicast addresses for this protocol
  9652.       (regardless of value returned in AX)
  9653.     multicast address buffer filled with multicast addresses registered for
  9654.       this protocol
  9655. Note:    If the buffer supplied is too small, CX still contains the total number
  9656.       of registered multicast addresses for this protocol and the buffer
  9657.       has been completely filled
  9658. SeeAlso: AX=000Bh,AX=0009h,AX=000Ch
  9659. --------N-7C0015-----------------------------
  9660. INT 7C - SK-UPPS Data Link Interface API - DLI 2.6+ - GET MEDIA STATISTICS
  9661.     AX = 0015h
  9662.     ES:DI -> media-specific statistics buffer (see #3530,#3531,#3532)
  9663.     BX = offset of 1st field within MSS to be returned
  9664.     CX = number of bytes to be returned
  9665. Return: AX = completion code (see #3517)
  9666.     CX = number of bytes copied (regardless of value returned in AX)
  9667. Note:    not supported by all DLIs (will return AX=FFFFh if not supported).
  9668. SeeAlso: AX=0000h,AX=000Dh
  9669.  
  9670. Format of SK-UPPS media-specific statistics for Ethernet:
  9671. Offset    Size    Description    (Table 3530)
  9672.  00h    DWORD    alignment errors
  9673.  04h    DWORD    frame check sequence (FCS) errors
  9674.  08h    DWORD    single collision frames
  9675.  0Ch    DWORD    multiple collision frames
  9676.  10h    DWORD    signal quality error (SQE) test errors
  9677.  14h    DWORD    deferred transmissions
  9678.  18h    DWORD    late collisions
  9679.  1Ch    DWORD    excessive collisions
  9680.  20h    DWORD    internal MAC transmit errors
  9681.  24h    DWORD    carrier sense errors
  9682.  28h    DWORD    excessive deferrals
  9683.  2Ch    DWORD    frame too longs
  9684.  30h    DWORD    in range length errors
  9685.  34h    DWORD    out of range length fields
  9686.  38h    DWORD    internal MAC receive errors
  9687.  
  9688. Format of SK-UPPS media-specific statistics for FDDI:
  9689. Offset    Size    Description    (Table 3531)
  9690.  00h    DWORD    SMT operating version id (refer to ANSI 7.1.2.2)
  9691.  04h    DWORD    SMT CF state: 1=Isolated, 2= Wrap_S, 3=Wrap_A, 4=Wrap_B,
  9692.           5=Wrap_AB, 6=Thru (refer to ANSI SMT 9.7.4.3)
  9693.  08h    DWORD    SMT frames sent
  9694.  0Ch    DWORD    SMT frames received
  9695.  10h    DWORD    SMT ring up count
  9696.  14h  6 BYTEs    MAC upstream neighbour
  9697.  1Ah  6 BYTEs    MAC downstream neighbour
  9698.  20h    DWORD    MAC frame counter (refer to ANSI MAC 2.2.1)
  9699.  24h    DWORD    MAC error counter ( " )
  9700.  28h    DWORD    MAC lost counter ( " )
  9701.  2Ch    BYTE    port 1 link error estimate (ranges from 10**-4 to 10**-15 and
  9702.           is reported as the absolute value of the exponent)
  9703.  2Dh    BYTE    port 2 link error estimate ( " )
  9704.  2Eh  2 BYTEs    reserved (currently unused)
  9705.  30h    DWORD    attachment class: 1=single-attachment (S PORT),
  9706.           2=dual-attachment (A/B PORT pairs), 3=concentrator (M PORTs)
  9707.  34h    DWORD    attachment optical bypass present: 1=true, 2=false
  9708.  
  9709. Format of SK-UPPS media-specific statistics for Token-Ring:
  9710. Offset    Size    Description    (Table 3532)
  9711.  00h  6 BYTEs    upstream neighbour
  9712.  06h    WORD    local ring number
  9713.  08h    DWORD    ring up count
  9714.  0Ch    DWORD    signal loss errors
  9715.  10h    DWORD    lobe wire faults
  9716.  14h    DWORD    ring recovery count
  9717.  18h    DWORD    line errors
  9718.  1Ch    DWORD    burst errors
  9719.  20h    DWORD    ARI/FCI errors
  9720.  24h    DWORD    lost frame errors
  9721.  28h    DWORD    receive congestion errors
  9722.  2Ch    DWORD    frame copied errors
  9723.  30h    DWORD    token errors
  9724.  34h    DWORD    DMA bus errors
  9725.  38h    DWORD    DMA parity errors
  9726.  3Ch    DWORD    receive overflow errors
  9727. --------N-7C0016-----------------------------
  9728. INT 7C - SK-UPPS Data Link Interface API - DLI 2.8+ - DRIVER I/O CONTROL
  9729.     AX = 0016h
  9730.     DX = subfunction; bits 14-15 specify direction of I/O:
  9731.         00 no data at all (ES:BX undefined)
  9732.         01 driver -> application (GET)
  9733.         10 application -> driver (SET)
  9734.         11 both directions (GET/SET)
  9735.     ES:BX -> I/O buffer (optional)
  9736.     CX = size of buffer (if ES:BX valid)
  9737. Return: AX = completion code; defined by OEM
  9738. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  9739.       which provides an API on top of its Data Link Interface, allowing the
  9740.       use of any of several network transport layers
  9741. Notes:    not supported by all DLIs (will return AX=FFFFh if not supported)
  9742.     subfunction codes are defined by OEMs
  9743. SeeAlso: AX=0001h
  9744. --------N-7C0017-----------------------------
  9745. INT 7C - SK-UPPS Data Link Interface API - DLI 2.8+ - INTERRUPT REQUEST
  9746.     AX = 0017h
  9747. Return: AX = completion code (see #3517)
  9748. Notes:    not supported by all DLIs (will return AX=FFFFh, if not supported).
  9749.     must be called with interrupts disabled; when the client re-enables
  9750.       interrupts, an interrupt will be generated and reported to the client
  9751.       through an Event Upcall (see #3524 [EV_ISR_START/EV_ISR_END])
  9752. SeeAlso: AX=0007h
  9753. --------t-7D---------------------------------
  9754. INT 7D O - [obsoleted proposal] - ALTERNATE MULTIPLEX INTERRUPT
  9755. Note:    this interface has been moved to INT 2D; there are no known
  9756.       implementations on INT 7D
  9757. SeeAlso: INT 2D"AMIS",INT 2F"NOTES"
  9758. --------S-7D---------------------------------
  9759. INT 7D U - YTERM 1.4 - CLOCK SUPPORT
  9760. SeeAlso: INT 7E"YTERM"
  9761. --------E-7D---------------------------------
  9762. INT 7D - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ5
  9763. Notes:    this vector is overwritten when GO32 starts but is not restored by
  9764.       early versions of the extender
  9765.     the newest versions of GO32 dynamically allocate the vectors used
  9766.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  9767. SeeAlso: INT 0D"IRQ5",INT 7C"GO32",INT 7E"GO32"
  9768. --------U-7D---------------------------------
  9769. INT 7D - HyperPAD v2.2 - API ACCESS
  9770. Note:    this vector is hooked but immediately passed on (without checking
  9771.       whether the previous handler was 0000h:0000h).  The sole purpose of
  9772.       this vector is to provide the address of the data area described
  9773.       below (see #3533).
  9774.  
  9775. Format of HyperPAD data area:
  9776. Offset    Size    Description    (Table 3533)
  9777.  -16h    DWORD    pointer to ??? FAR function
  9778.  -12h    DWORD    pointer to callback setting function
  9779.         [C calling conventions, (*callback)(int (_loadds far *)()) ]
  9780.  -0Eh 6 BYTEs    signature "BRC001"
  9781.  -08h    DWORD    pointer to previous INT 7D handler
  9782.  -04h    DWORD    pointer to ??? data
  9783.  00h        HyperPAD INT 7D handler
  9784. ----------7D---------------------------------
  9785. INT 7D - IBM DOS 6.1 E.EXE - ???
  9786. Note:    E.EXE checks whether this interrupt is in use (not 0000h:0000h),
  9787.       and if it is used, attempts to load E55VGA.EX instead of the
  9788.       default E.EX overlay.     However, E55VGA.EX is not included in
  9789.       IBM DOS 6.1.
  9790. --------G-7D00-------------------------------
  9791. INT 7D - SCSILink - RESET SCSI BUS
  9792.     AH = 00h
  9793. Program: SCSILink is a TSR by Cross Products Ltd which allows its PC-hosted
  9794.       cross assemblers and similar products to communicate with Cross
  9795.       Products hardware debuggers
  9796. Desc:    reset all devices on the SCSI bus
  9797. InstallCheck:    test for the signature "SCSILINK" immediately prior to the
  9798.       interrupt handler
  9799. Index:    installation check;SCSILink
  9800. --------G-7D01-------------------------------
  9801. INT 7D - SCSILink - CONNECT TO TARGET
  9802.     AH = 01h
  9803.     AL = target ID
  9804. Return: CF clear if successful
  9805.     CF set on error
  9806.         AL = initiator error
  9807.         AH = target error
  9808. Desc:    arbitrate the use of the bus and select the specified target device
  9809. --------G-7D02-------------------------------
  9810. INT 7D - SCSILink - SEND COMMAND
  9811.     AH = 02h
  9812.     ES:BX -> parameter block (see #3534)
  9813. Return: CF clear if successful
  9814.     CF set on error
  9815.         AL = initiator error
  9816.         AH = target error
  9817. Desc:    send the specified command block to the target device and perform any
  9818.       related I/O
  9819.  
  9820. Format of SCSILink parameter block:
  9821. Offset    Size    Description    (Table 3534)
  9822.  00h    DWORD    size of command block
  9823.  04h    DWORD    address of command block (see #3535)
  9824.  08h    DWORD    size of buffer
  9825.  0Ch    DWORD    address of buffer
  9826.  
  9827. Format of SCSILink command block:
  9828. Offset    Size    Description    (Table 3535)
  9829.  00h        info not yet available
  9830. --------G-7D03-------------------------------
  9831. INT 7D - SCSILink - SET TIMEOUT
  9832.     AH = 03h
  9833.     AL = timeout selector (see #3536)
  9834.     BX = new value in 55ms ticks
  9835. Desc:    change an internal timeout value to allow communication with very
  9836.       slow targets
  9837.  
  9838. (Table 3536)
  9839. Values for SCSILink timeout selector:
  9840.  00h    time to wait for bus (default 18)
  9841.  01h    time to wait for new phase (default 5)
  9842.  02h    maximum time to send/receive block (default 18)
  9843.  03h    time to wait for reselect (default 180)
  9844. --------G-7D04-------------------------------
  9845. INT 7D - SCSILink - GET ERROR STRING
  9846.     AH = 04h
  9847.     AL = error number
  9848. Return: ES:BX -> ASCIZ error string for error number
  9849. --------G-7D05-------------------------------
  9850. INT 7D - SCSILink - GET ADDRESS
  9851.     AH = 05h
  9852. Return: AL = DMA channel
  9853.     AH = initiator ID
  9854.     BX = card address
  9855. Desc:    determine the current hardware configuration
  9856. --------G-7D06-------------------------------
  9857. INT 7D - SCSILink - PUT DATA
  9858.     AH = 06h
  9859.     CX = number of bytes to store (0001h-0100h)
  9860.     ES:BX -> data to be saved
  9861. Return: CF clear if successful
  9862.     CF set on error
  9863.         AL = error code (01h = too much data)
  9864. Note:    the specified data is stored in SCSILink's PSP
  9865. SeeAlso: AH=07h
  9866. --------G-7D07-------------------------------
  9867. INT 7D - SCSILink - GET DATA
  9868.     AH = 07h
  9869.     CX = number of bytes to retrieve (0001h-0100h)
  9870.     ES:BX -> buffer for data
  9871. Return: CF clear if successful
  9872.     CF set on error
  9873.         AL = error code (01h = too much data)
  9874. Note:    retrieve data previously stored with AH=06h
  9875. SeeAlso: AH=06h
  9876. --------G-7D08-------------------------------
  9877. INT 7D - SCSILink - TERMINATE SESSION
  9878.     AH = 08h
  9879. Desc:    indicate to any other programs that intercept INT 7D that the program
  9880.       has finished with the link
  9881. Note:    the program should call this function even if a SCSI error caused its
  9882.       termination
  9883. --------G-7D09-------------------------------
  9884. INT 7D - SCSILink - POLL REQUEST
  9885.     AH = 09h
  9886.     AL = target ID
  9887. Return: AL = status
  9888.         FEh resident driver experienced SCSI error
  9889.         FFh resident driver handleded event
  9890. Desc:    give any drivers chained onto INT 7D a chance to handle an exception
  9891.       not specifically handled by the calling program
  9892. Notes:    this service exists so that resident disk servers, etc. can continue
  9893.       running even while debuggers and profilers are active
  9894.     the resident driver assumes that a connection has been established and
  9895.       attempts to leave the target connected
  9896. --------!---Section--------------------------
  9897.