home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / dos / tools / inter47 / interrup.k < prev    next >
Text File  |  1995-08-13  |  352KB  |  9,191 lines

  1. Interrupt List, part 11 of 13
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown
  3. --------*-62---------------------------------
  4. INT 62 - reserved for user interrupt
  5. --------d-62---------------------------------
  6. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  7. Notes:    this vector stores the third four bytes of the parameter table for
  8.       hard disk 0
  9. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  10. --------b-62---------------------------------
  11. INT 62 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
  12. Desc:    the low word of this vector contains the segment of the RAM data area
  13.       to be used by the expansion ROM at F400h:2000h, and the high word
  14.       contains the length of the data area; this segment and size are
  15.       both set to 0000h if no ROM is installed at F400h:2000h
  16. SeeAlso: INT 61"TI Professional PC",INT 63"TI Professional"
  17. SeeAlso: INT 66"TI Professional PC"
  18. --------b-62---------------------------------
  19. INT 62 - HP 95LX - USED BY CALCULATOR
  20. SeeAlso: INT 60"HP 95LX"
  21. ----------62---------------------------------
  22. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
  23.     AH = function (00h to 07h)
  24.     CX = FFFEh
  25.     DX = FFFFh
  26.     ???
  27. Return: ???
  28. Note:    the installation check consists of testing for the string "DBLIBRARY"
  29.       2 bytes past the interrupt handler
  30. SeeAlso: AH=08h"SQL"
  31. Index:    installation check;MS SQL Server|installation check;Sybase DBLIBRARY
  32. ----------62---------------------------------
  33. INT 62 - MPAUSE - ???
  34.     details not yet avialable
  35. Program: MPAUSE is a program by Manfred Michael which appeared in the German
  36.      _EGA-Handbuch_ from  m&t-Verlag
  37. --------N-62---------------------------------
  38. INT 62 - XFS v1.76 - FILTERED PACKET DRIVER API
  39. Program: XFS is a shareware Network File System client by Robert Juhasz
  40. Desc:    XFS requires a packet driver to operate.  Since it does redirections,
  41.       etc., it provides its own packet driver entry point, changing the
  42.       signature string of the original packet driver to "XKT DRVR" so that
  43.       it will no longer be found by the packet driver installation check
  44. Range:    INT 61 to INT 66, selected by scanning for two consecutive free
  45.       vectors and hooking the second
  46. Note:    the installation check for this vector is the same as that for the
  47.       packet driver specification: scan for the signature string "PKT DRVR"
  48.       three bytes past the interrupt handler
  49. SeeAlso: INT 60"Packet Driver",INT 61"XFS"
  50. --------N-6200-------------------------------
  51. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET PHYSICAL HARDWARE ADDRESS
  52.     AH = 00h
  53.     DS:DX -> 6-byte buffer for address
  54. Return: AX = length of hardware address???
  55. Range:    INT 4C to INT FB, selected by configuration
  56. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  57.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  58.       consecutive interrupt (64h by default) if it is loaded
  59. SeeAlso: AH=01h"ETHDEV",AH=04h"ETHDEV",AH=09h"ETHDEV",AH=0Eh"ETHDEV"
  60. SeeAlso: AH=14h"ETHDEV",AH=18h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  61. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  62. --------V-620000-----------------------------
  63. INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
  64.     AX = 0000h
  65.     BX = page number (0000h-003Fh)
  66. Return: AX = status (0000h,0001h,0007h,0008h) (see #2097)
  67. Program: FGDRIVER is the external video driver for the shareware
  68.       Fastgraph/Light by Ted Gruber Software
  69. Notes:    the FGDRIVER functions are rearranged with each major release, but
  70.       their parameters do not change (see #2667)
  71.     The amount of memory required by the virtual video page depends on the
  72.       current video mode
  73.     The installation check consists of testing for the signature "FG" ten
  74.       bytes beyond the start of the interrupt handler
  75. SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=0038h
  76. Index:    installation check;Fastgraph/Light
  77.  
  78. (Table 2097)
  79. Values for FGDRIVER status:
  80.  0000h    successful
  81.  0001h    specified page is a physical or logical page
  82.  0007h    virtual page created/released, but memory control blocks corrupted
  83.  0008h    not enough memory
  84.  0009h    attempt to free a page which was never created
  85.  FFFCh    insufficient memory
  86.  FFFDh    page already created, or exists as physical or virtual page
  87.  FFFEh    invalid page number
  88.  FFFFh    memory manager not initialized
  89. SeeAlso: #2667
  90.  
  91. (Table 2667)
  92. Values for FGDRIVER functions (by driver version):
  93. Name        v1.10    v3.03    v4.02
  94.  FG_ALLOCATE    0042h    0000h    0000h
  95.  FG_ALLOCCMS    009Dh    0001h    0001h
  96.  FG_ALLOCEMS    009Eh    0002h    0002h
  97.  FG_ALLOCXMS    009Fh    0003h    0003h
  98.  FG_AUTOMODE    0004h    0004h    0004h
  99.  FG_BESTMODE    0003h    0005h    0005h
  100.  FG_BOX        00A2h    0006h    0006h
  101.  FG_BOXDEPTH    00A3h    0007h    0007h
  102.  FG_BOXX     --    0008h    0008h
  103.  FG_BUTTON    0078h    0009h    0009h
  104.  FG_CAPSLOCK    0070h    000Ah    000Ah
  105.  FG_CHGATTR    0035h    000Bh    000Bh
  106.  FG_CHGTEXT    0036h    000Ch    000Ch
  107.  FG_CIRCLE    0030h    000Dh    000Dh
  108.  FG_CIRCLEF     --    000Eh    000Eh
  109.  FG_CLIPMAP     --     --    000Fh
  110.  FG_CLIPMASK    0052h    000Fh    0010h
  111.  FG_CLPIMAGE    004Ah    0010h    0011h
  112.  FG_CLPRECT    002Bh    0011h    0012h
  113.  FG_COLORS     --     --    0013h
  114.  FG_COPYPAGE    005Fh    0012h    0014h
  115.  FG_CURSOR    0007h    0013h    0015h
  116.  FG_DASH    0027h    0014h    0016h
  117.  FG_DASHREL    0028h    0015h    0017h
  118.  FG_DEFCOLOR    0014h    0016h    0018h
  119.  FG_DEFPAGES     --    0017h    0019h
  120.  FG_DISPFILE    004Fh    0018h    001Ah
  121.  FG_DISPLAY    004Dh    0019h    001Bh
  122.  FG_DISPLAYP    004Eh    001Ah    001Ch
  123.  FG_DISPPCX    0060h     --     --
  124.  FG_DRAW    0025h    001Bh    001Dh
  125.  FG_DRAWMAP    0047h    001Ch    001Eh
  126.  FG_DRAWMASK    0051h    001Dh    001Fh
  127.  FG_DRAWREL    0026h    001Eh    0020h
  128.  FG_DRAWRELX     --    001Fh    0021h
  129.  FG_DRAWX     --    0020h    0022h
  130.  FG_DRECT    002Ch    0021h    0023h
  131.  FG_DRWIMAGE    0049h    0022h    0024h
  132.  FG_EGACHECK    0005h    0023h    0025h
  133.  FG_ELLIPSE    002Dh    0024h    0026h
  134.  FG_ELLIPSEF     --    0025h    0027h
  135.  FG_ERASE    001Eh    0026h    0028h
  136.  FG_FADEIN    0064h    0027h    0029h
  137.  FG_FADEOUT    0065h    0028h    002Ah
  138.  FG_FILLPAGE     --    0029h    002Bh
  139.  FG_FINDPAGE     --     --    002Ch
  140.  FG_FLICDONE     --     --    002Dh
  141.  FG_FLICHEAD     --     --    002Eh
  142.  FG_FLICMODE     --     --    002Fh
  143.  FG_FLICOPEN     --     --    0030h
  144.  FG_FLICPLAY     --     --    0031h
  145.  FG_FLICSIZE     --     --    0032h
  146.  FG_FLICSKIP     --     --    0033h
  147.  FG_FLIPMASK    0054h    002Ah    0034h
  148.  FG_FLOOD     --    002Bh    0035h
  149.  FG_FLPIMAGE    004Ch    002Ch    0036h
  150.  FG_FONTSIZE     --    002Dh    0037h
  151.  FG_FREEPAGE    0043h    002Eh    0038h
  152.  FG_GETADDR    0044h    002Fh    0039h
  153.  FG_GETATTR    0037h    0030h    003Ah
  154.  FG_GETBANKS     --     --    003Bh
  155.  FG_GETBLOCK     --    0031h    003Ch
  156.  FG_GETCHAR    0038h    0032h    003Dh
  157.  FG_GETCLIP     --     --    003Eh
  158.  FG_GETCLOCK    0099h    0033h    003Fh
  159.  FG_GETCOLOR    0015h    0034h    0040h
  160.  FG_GETDACS    00A4h    0035h    0041h
  161.  FG_GETENTRY     --    0036h    0042h
  162.  FG_GETHPAGE    0040h    0037h    0043h
  163.  FG_GETIMAGE    0048h    0038h    0044h
  164.  FG_GETINDEX    0016h    0039h    0045h
  165.  FG_GETKEY    006Eh    003Ah    0046h
  166.  FG_GETLINES    0010h    003Bh    0047h
  167.  FG_GETMAP    0046h    003Ch    0048h
  168.  FG_GETMAXX    000Ah    003Dh    0049h
  169.  FG_GETMAXY    000Bh    003Eh    004Ah
  170.  FG_GETMODE    0000h    003Fh    004Bh
  171.  FG_GETPAGE    003Ch    0040h    004Ch
  172.  FG_GETPIXEL    0020h    0041h    004Dh
  173.  FG_GETRGB    001Ch    0042h    004Eh
  174.  FG_GETVIEW     --     --    004Fh
  175.  FG_GETVPAGE    003Eh    0043h    0050h
  176.  FG_GETXBOX     --     --    0051h
  177.  FG_GETXJOY    0076h    0044h    0052h
  178.  FG_GETXJUST     --     --    0053h
  179.  FG_GETXPOS    0021h    0045h    0054h
  180.  FG_GETYBOX     --     --    0055h
  181.  FG_GETYJOY    0077h    0046h    0056h
  182.  FG_GETYJUST     --     --    0057h
  183.  FG_GETYPOS    0022h    0047h    0058h
  184.  FG_HUSH    008Eh    0048h    0059h
  185.  FG_HUSHNEXT    008Fh    0049h    005Ah
  186.  FG_IMAGEBUF     --    004Ah    005Bh
  187.  FG_IMAGESIZ    0062h    004Bh    005Ch
  188.  FG_INITEMS    00A0h    004Ch    005Dh
  189.  FG_INITJOY    0075h    004Dh    005Eh
  190.  FG_INITPM     --     --    005Fh??? (NOP in v4.02)
  191.  FG_INITXMS    00A1h    004Eh    0060h
  192.  FG_INSIDE     --    004Fh    0061h
  193.  FG_INTJOY    0079h    0050h    0062h
  194.  FG_INTKEY    006Fh    0051h    0063h
  195.  FG_INVERT     --     --    0064h
  196.  FG_JUSTIFY     --    0052h    0065h
  197.  FG_KBINIT     --    0053h    0066h
  198.  FG_KBLAST     --     --    0067h
  199.  FG_KBRESET     --     --    0068h
  200.  FG_KBTEST     --    0054h    0069h
  201.  FG_LOADPCX     --     --    006Ah
  202.  FG_LOCATE    0033h    0055h    006Bh
  203.  FG_MAKEPCX    0061h    0057h    006Ch
  204.  FG_MAKEPPR     --    0058h    006Dh
  205.  FG_MAKESPR     --    0059h    006Eh
  206.  FG_MAPRGB    001Dh    005Ah    006Fh
  207.  FG_MEASURE    0098h    005Bh    0070h
  208.  FG_MEMAVAIL    009Bh    005Ch    0071h
  209.  FG_MEMORY     --    005Dh    0072h
  210.  FG_MOUSE256     --     --    0073h
  211.  FG_MOUSEBUT    007Ch    005Eh    0074h
  212.  FG_MOUSECUR    007Eh    005Fh    0075h
  213.  FG_MOUSEFIN     --    0060h    0076h
  214.  FG_MOUSEINI    007Ah    0061h    0077h
  215.  FG_MOUSELIM    0080h    0062h    0078h
  216.  FG_MOUSEMOV    0081h    0063h    0079h
  217.  FG_MOUSEPOS    007Dh    0064h    007Ah
  218.  FG_MOUSEPTR    007Fh    0065h    007Bh
  219.  FG_MOUSESPD    0082h    0066h    007Ch
  220.  FG_MOUSEVIS    007Bh    0067h    007Dh
  221.  FG_MOVE    0023h    0068h    007Eh
  222.  FG_MOVEREL    0024h    0069h    007Fh
  223.  FG_MUSIC    008Ch    006Ah    0080h
  224.  FG_MUSICB    008Dh    006Bh    0081h
  225.  FG_NUMLOCK    0072h    006Ch    0082h
  226.  FG_PACK     --     --    0083h
  227.  FG_PAGESIZE     --    006Dh    0084h
  228.  FG_PAINT    002Fh    006Eh    0085h
  229.  FG_PALETTE    0017h    006Fh    0086h
  230.  FG_PALETTES    0018h    0070h    0087h
  231.  FG_PAN        0066h    0071h    0088h
  232.  FG_PATTERN    0050h    0072h    0089h
  233.  FG_PCXHEAD     --    0073h    008Ah
  234.  FG_PCXMODE     --    0074h    008Bh
  235.  FG_PCXPAL     --     --    008Ch
  236.  FG_PCXRANGE     --     --    008Dh
  237.  FG_PLAYING    0091h    0075h    008Eh
  238.  FG_POINT    001Fh    0076h    008Fh
  239.  FG_POINTX     --    0077h    0090h
  240.  FG_POLYEDGE     --     --    0091h
  241.  FG_POLYFILL     --    0078h    0092h
  242.  FG_POLYGON    002Eh    0079h    0093h
  243.  FG_POLYLINE     --    007Ah    0094h
  244.  FG_POLYOFF     --    007Bh    0095h
  245.  FG_PRINT     --    007Ch    0096h
  246.  FG_PRINTC     --     --    0097h
  247.  FG_PUTBLOCK     --    007Dh    0098h
  248.  FG_PUTIMAGE     --    007Eh    0099h
  249.  FG_QUIET    0090h    007Fh    009Ah
  250.  FG_RECT    002Ah    0080h    009Bh
  251.  FG_RESET    0006h    0081h    009Ch
  252.  FG_RESIZE    0045h    0082h    009Dh
  253.  FG_RESTORE    005Bh    0083h    009Eh
  254.  FG_RESUME    0092h    0084h    009Fh
  255.  FG_REVIMAGE    004Bh    0085h    00A0h
  256.  FG_REVMASK    0053h    0086h    00A1h
  257.  FG_SAVE     --    0087h    00A2h
  258.  FG_SCALE     --     --    00A3h
  259.  FG_SCRLOCK    0074h    0088h    00A4h
  260.  FG_SCROLL    0067h    0089h    00A5h
  261.  FG_SETATTR    0019h    008Ah    00A6h
  262.  FG_SETBANKS     --     --    00A7h
  263.  FG_SETCAPS    0071h    008Bh    00A8h
  264.  FG_SETCLIP    0029h    008Ch    00A9h
  265.  FG_SETCOLOR    001Ah    008Dh    00AAh
  266.  FG_SETDACS    00A5h    008Eh    00ABh
  267.  FG_SETENTRY     --    008Fh    00ACh
  268.  FG_SETFUNC    009Ch    0090h    00ADh
  269.  FG_SETHPAGE    0041h    0091h    00AEh
  270.  FG_SETLINES    0011h    0092h    00AFh
  271.  FG_SETMODE    0001h    0093h    00B0h
  272.  FG_SETNUM    0073h    0094h    00B1h
  273.  FG_SETPAGE    003Dh    0095h    00B2h
  274.  FG_SETRGB    001Bh    0096h    00B3h
  275.  FG_SETVIEW     --     --    00B5h
  276.  FG_SETVPAGE    003Fh    0098h    00B6h
  277.  FG_SHEAR     --     --    00B7h
  278.  FG_SHOWFLIC     --     --    00B8h
  279.  FG_SHOWPCX     --    009Ah    00B9h
  280.  FG_SHOWPPR     --    009Bh    00BAh
  281.  FG_SHOWSPR     --    009Ch    00BBh
  282.  FG_SOUND    0088h    009Dh    00BCh
  283.  FG_SOUNDS    0089h    009Eh    00BDh
  284.  FG_SPLIT     --     --    00BEh
  285.  FG_STALL    0097h    009Fh    00BFh
  286.  FG_SUSPEND    0093h    00A0h    00C0h
  287.  FG_SVGAINIT     --    00A1h    00C1h
  288.  FG_SVGASTAT     --    00A2h    00C2h
  289.  FG_SVGAVER     --    00A3h    00C3h
  290.  FG_TCDEFINE     --    00A4h    00C4h
  291.  FG_TCMASK    005Eh    00A5h    00C5h
  292.  FG_TCXFER    005Dh    00A6h    00C6h
  293.  FG_TESTMODE    0002h    00A7h    00C7h
  294.  FG_TEXT    0032h    00A8h    00C8h
  295.  FG_TEXTC     --     --    00C9h
  296.  FG_TRANSFER    005Ch    00A9h    00CAh
  297.  FG_UNPACK     --     --    00CBh
  298.  FG_VBADDR     --     --    00CCh
  299.  FG_VBALLOC     --     --    00CDh
  300.  FG_VBCLOSE     --     --    00CEh
  301.  FG_VBCOPY     --     --    00CFh
  302.  FG_VBCUT     --     --    00D0h
  303.  FG_VBDEFINE     --     --    00D1h
  304.  FG_VBFREE     --     --    00D2h
  305.  FG_VBHANDLE     --     --    00D3h
  306.  FG_VBINIT     --     --    00D4h
  307.  FG_VBOPEN     --     --    00D5h
  308.  FG_VBPASTE     --     --    00D6h
  309.  FG_VBTCCOPY     --     --    00D7h
  310.  FG_VBTCXFER     --     --    00D8h
  311.  FG_VBUNDEF     --     --    00D9h
  312.  FG_VGASTATE     --     --    00DAh
  313.  FG_VOICE    008Ah    00AAh    00DBh
  314.  FG_VOICES    008Bh    00ABh    00DCh
  315.  FG_WAITFOR    0096h    00ACh    00DDh
  316.  FG_WAITKEY    006Dh    00ADh    00DEh
  317.  FG_WAITVR     --    00AEh    00DFh
  318.  FG_WHERE    0034h    00AFh    00E0h
  319.  FG_XALPHA    000Ch    00B0h    00E1h
  320.  FG_XCONVERT    000Eh    00B1h    00E2h
  321.  FG_XVIEW     --     --    00E3h
  322.  FG_YALPHA    000Dh    00B2h    00E4h
  323.  FG_YCONVERT    000Fh    00B3h    00E5h
  324.  FG_YVIEW     --     --    00E6h
  325. SeeAlso: #2097
  326. --------V-620001-----------------------------
  327. INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONV)
  328.     AX = 0001h
  329.     BX = page number (0001h-003Fh)
  330. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #2097)
  331. Notes:    the FGDRIVER functions are rearranged with each major release, but
  332.       their parameters do not change (see #2667)
  333.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  334.       (see AX=0014h)
  335. SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0014h,AX=0038h
  336. --------V-620002-----------------------------
  337. INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
  338.     AX = 0002h
  339.     BX = page number (0001h-003Fh)
  340. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #2097)
  341. Notes:    the FGDRIVER functions are rearranged with each major release, but
  342.       their parameters do not change (see #2667)
  343.     You must first call "FG_INITEMS" (see AX=005Dh) before using this
  344.       function
  345.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  346.       (see AX=0014h)
  347. SeeAlso: AX=0000h,AX=0001h,AX=0003h,AX=0014h,AX=0038h,AX=005Dh
  348. --------V-620003-----------------------------
  349. INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
  350.     AX = 0003h
  351.     BX = page number (0001h-003Fh)
  352. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #2097)
  353. Notes:    the FGDRIVER functions are rearranged with each major release, but
  354.       their parameters do not change (see #2667)
  355.     You must first call "FG_INITXMS" (see AX=0060h) before using this
  356.       function
  357.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  358.       (see AX=0014h)
  359. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0014h,AX=0038h,AX=0060h
  360. --------V-620004-----------------------------
  361. INT 62 u - FGDRIVER 1.10,3.03+ - "FG_AUTOMODE" - GET VIDEO MODE W/MOST FEATURES
  362.     AX = 0004h
  363. Return: AX = proposed video mode number (see #2111 at AX=00B0h)
  364. Program: FGDRIVER is the external video driver for the shareware
  365.       Fastgraph/Light by Ted Gruber Software
  366. Note:    the FGDRIVER functions are rearranged with each major release, but
  367.       their parameters do not change (see #2667)
  368. SeeAlso: AX=0005h,AX=004Bh,AX=00B0h,AX=00C1h,AX=00C7h
  369. --------V-620005-----------------------------
  370. INT 62 u - FGDRIVER v3.03+ - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
  371.     AX = 0005h
  372.     BX = horizontal resolution
  373.     CX = vertical resolution
  374.     DX = number of video pages required (both physical and virtual)
  375. Return: AX = proposed video mode number or FFFFh if no matching video mode
  376. Notes:    the FGDRIVER functions are rearranged with each major release, but
  377.       their parameters do not change (see #2667)
  378.     You must first call "FG_SVGAINIT" (see AX=00C1h) to get SVGA video
  379.       modes
  380. SeeAlso: AX=0004h,AX=004Bh,AX=00B0h,AX=00C1h,AX=00C7h
  381. --------V-620006-----------------------------
  382. INT 62 u - FGDRIVER v3.03+ - "FG_BOX" - DRAW UNFILLED RECTANGLE
  383.     AX = 0006h
  384.     BX = left column
  385.     CX = right column
  386.     DX = top row
  387.     SI = bottom row
  388. Notes:    the FGDRIVER functions are rearranged with each major release, but
  389.       their parameters do not change (see #2667)
  390.     The rectangle is drawn in screen space, respecting the clipping region,
  391.       with edges of the width specified with "FG_BOXDEPTH" (see AX=0007h)
  392.       (default = 1 is set by "FG_SETMODE")
  393.     This function has no effect in text modes
  394. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,AX=0016h,AX=001Dh,AX=0026h,AX=0051h
  395. SeeAlso: AX=0055h,AX=008Fh
  396. --------V-620007-----------------------------
  397. INT 62 u - FGDRIVER v3.03+ - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
  398.     AX = 0007h
  399.     BX = width of left and right edges in pixels (> 0)
  400.     CX = width of top and bottom edges in pixels (> 0)
  401. Note:    the FGDRIVER functions are rearranged with each major release, but
  402.       their parameters do not change (see #2667)
  403. SeeAlso: AX=0006h,AX=0008h,AX=0051h,AX=0055h
  404. --------V-620008-----------------------------
  405. INT 62 u - FGDRIVER v3.03+ - "FG_BOXX" - XOR HOLLOW RECTANGLE
  406.     AX = 0008h
  407.     BX = left column
  408.     CX = right column
  409.     DX = top row
  410.     SI = bottom row
  411. Notes:    the FGDRIVER functions are rearranged with each major release, but
  412.       their parameters do not change (see #2667)
  413.     The rectangle is XORed into screen space, respecting the clipping
  414.       region, with edges of the width specified with "FG_BOXDEPTH"
  415.       (see AX=0007h) (default = 1 is set by "FG_SETMODE")
  416.     This function has no effect in text modes
  417. SeeAlso: AX=0006h,AX=0007h,AX=0021h,AX=0022h,AX=0051h,AX=0055h,AX=0090h
  418. --------V-620009-----------------------------
  419. INT 62 u - FGDRIVER v3.03+ - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
  420.     AX = 0009h
  421.     BX = joystick number (0001h or 0002h)
  422. Return: AX = button states
  423.         bit 0: top button pressed
  424.         bit 1: bottom button pressed
  425. Note:    the FGDRIVER functions are rearranged with each major release, but
  426.       their parameters do not change (see #2667)
  427. SeeAlso: AX=0052h,AX=0056h,AX=005Eh,AX=0062h,AX=0077h
  428. --------V-62000A-----------------------------
  429. INT 62 u - FGDRIVER v3.03+ - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
  430.     AX = 000Ah
  431. Return: AX = CapsLock state (0000h off, 0001h on)
  432. Note:    the FGDRIVER functions are rearranged with each major release, but
  433.       their parameters do not change (see #2667)
  434. SeeAlso: AX=0082h,AX=00A4h,AX=00A8h,AX=00B1h
  435. --------V-62000B-----------------------------
  436. INT 62 u - FGDRIVER v3.03+ - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
  437.     AX = 000Bh
  438.     BX = number of characters to recolor
  439. Notes:    the FGDRIVER functions are rearranged with each major release, but
  440.       their parameters do not change (see #2667)
  441.     This call is ignored in graphics modes
  442.     Starting at the current text cursor position, the specified number of
  443.       characters have their attributes to the current text attribute
  444. SeeAlso: AX=000Ch,AX=003Ah,AX=00A6h
  445. --------V-62000C-----------------------------
  446. INT 62 u - FGDRIVER v3.03+ - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
  447.     AX = 000Ch
  448.     CX = length of string
  449.     ES:BX -> string to be displayed
  450. Return: text cursor updated
  451. Notes:    the FGDRIVER functions are rearranged with each major release, but
  452.       their parameters do not change (see #2667)
  453.     This call is ignored in graphics modes
  454. SeeAlso: AX=000Bh,AX=0096h
  455. --------V-62000D-----------------------------
  456. INT 62 u - FGDRIVER v3.03+ - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
  457.     AX = 000Dh
  458.     BX = radius in horizontal screen space units (> 0)
  459. Notes:    the FGDRIVER functions are rearranged with each major release, but
  460.       their parameters do not change (see #2667)
  461.     The circle is drawn in screen space, centered at the current graphics
  462.       cursor position
  463.     This call is ignored in text modes
  464. SeeAlso: AX=0006h,AX=0008h,AX=000Eh,AX=0026h,AX=0093h
  465. --------V-62000E-----------------------------
  466. INT 62 u - FGDRIVER v3.03+ - "FG_CIRCLEF" - DRAW FILLED CIRCLE
  467.     AX = 000Eh
  468.     BX = radius in horizontal screen space units (> 0)
  469. Note:    the FGDRIVER functions are rearranged with each major release, but
  470.       their parameters do not change (see #2667)
  471. SeeAlso: AX=0008h,AX=000Dh,AX=0027h,AX=0092h
  472. --------V-62000F-----------------------------
  473. INT 62 u - FGDRIVER v4.02 - "FG_CLIPMAP" - DISPLAY CLIPPED IMAGE (MODE-INDEP)
  474.     AX = 000Fh
  475.     ES:BX -> bitmap
  476.     CX = width
  477.     DX = height
  478. Desc:    display a mode-independent bitmap, showing only the portion within
  479.       the current clipping limits
  480. Notes:    the FGDRIVER functions are rearranged with each major release, but
  481.       their parameters do not change (see #2667)
  482.     This call is ignored in text modes and in native EGA and VGA graphics
  483.       modes
  484.     The image is drawn with its lower left corner at the current graphics
  485.       cursor position
  486. SeeAlso: AX=0011h,AX=001Fh,AX=0034h,AX=0086h,AX=00A9h,AX=00C5h
  487. --------V-620010-----------------------------
  488. INT 62 u - FGDRIVER v4.02 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
  489.     AX = 0010h
  490.     ES:BX -> array containing image stored as a masking map (see #2098)
  491.     CX = number of pixel runs in masking map
  492.     DX = width of masking map in pixels
  493. Notes:    the FGDRIVER functions are rearranged with each major release, but
  494.       their parameters do not change (see #2667)
  495.     This call is ignored in text modes and in native EGA and VGA graphics
  496.       modes
  497.     The image is drawn with its lower left corner at the current graphics
  498.       cursor position
  499. SeeAlso: AX=0011h,AX=001Fh,AX=0034h,AX=00A1h,AX=00A9h,AX=00C5h
  500. --------V-620011-----------------------------
  501. INT 62 u - FGDRIVER v4.02 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
  502.     AX = 0011h
  503.     ES:BX -> mode-specific bitmap
  504.     CX = width of bit map in bytes
  505.     DX = height of bit map in pixel rows
  506. Notes:    the FGDRIVER functions are rearranged with each major release, but
  507.       their parameters do not change (see #2667)
  508.     This call is ignored in text modes
  509.     The image is drawn with its lower left corner at the current graphics
  510.       cursor position
  511.     The current clipping region is used, extended to a byte boundary
  512. SeeAlso: AX=0010h,AX=0024h,AX=0036h,AX=0044h,AX=00A0h,AX=00A9h,AX=00B9h
  513. --------V-620012-----------------------------
  514. INT 62 u - FGDRIVER v4.02 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
  515.     AX = 0012h
  516.     BX = screen space column of left edge
  517.     CX = screen space column of right edge
  518.     DX = screen space row of top edge
  519.     SI = screen space row of bottom edge
  520. Notes:    the FGDRIVER functions are rearranged with each major release, but
  521.       their parameters do not change (see #2667)
  522.     This call is ignored in text modes
  523. SeeAlso: AX=0006h,AX=0010h,AX=0011h,AX=0023h,AX=009Bh,AX=00A9h
  524. --------V-620013-----------------------------
  525. INT 62 u - FGDRIVER v4.02 - "FG_COLORS" - GET SIMULTANEOUSLY-AVAILABLE COLORS
  526.     AX = 0013h
  527. Return: AX = number of colors available at one time
  528. Note:    the FGDRIVER functions are rearranged with each major release, but
  529.       their parameters do not change (see #2667)
  530. --------V-620014-----------------------------
  531. INT 62 u - FGDRIVER v4.02 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
  532.     AX = 0014h
  533.     BX = source page number (0000h-003Fh)
  534.     CX = destination page number (0000h-003Fh)
  535. Notes:    the FGDRIVER functions are rearranged with each major release, but
  536.       their parameters do not change (see #2667)
  537.     If both source and destination pages are logical pages, they must both
  538.       be located in the same type (conventional, EMS, XMS) of memory
  539. SeeAlso: AX=009Eh,AX=00A2h,AX=00C6h,AX=00CAh
  540. --------V-620015-----------------------------
  541. INT 62 u - FGDRIVER v4.02 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
  542.     AX = 0015h
  543.     BX = new state (0000h invisible, 0001h visible)
  544. Notes:    the FGDRIVER functions are rearranged with each major release, but
  545.       their parameters do not change (see #2667)
  546.     This call is ignored in text modes
  547. SeeAlso: AX=000Ch,AX=0054h,AX=0058h,AX=006Bh,AX=0075h,AX=0079h,AX=007Eh
  548. SeeAlso: AX=00E0h
  549. --------V-620016-----------------------------
  550. INT 62 u - FGDRIVER v4.02 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
  551.     AX = 0016h
  552.     BX = endpoint column
  553.     CX = endpoint row
  554.     DX = dash pattern (set bits cause drawn pixels)
  555. Notes:    the FGDRIVER functions are rearranged with each major release, but
  556.       their parameters do not change (see #2667)
  557.     This call is ignored in text modes
  558.     The starting point is the current graphics cursor position; the cursor
  559.       position is updated
  560. SeeAlso: AX=0017h,AX=001Dh,AX=008Fh
  561. --------V-620017-----------------------------
  562. INT 62 u - FGDRIVER v4.02 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
  563.     AX = 0017h
  564.     BX = endpoint column offset
  565.     CX = endpoint row offset
  566.     DX = dash pattern (set bits cause drawn pixels)
  567. Notes:    the FGDRIVER functions are rearranged with each major release, but
  568.       their parameters do not change (see #2667)
  569.     This call is ignored in text modes
  570.     The starting point is the current graphics cursor position; the cursor
  571.       position is updated
  572. SeeAlso: AX=0016h,AX=001Eh,AX=008Fh
  573. --------V-620018-----------------------------
  574. INT 62 u - FGDRIVER v4.02 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
  575.     AX = 0018h
  576.     BX = color index (0000h-00FFh)
  577.     CX = new color value (0 to maximum color value for current video mode)
  578. Notes:    the FGDRIVER functions are rearranged with each major release, but
  579.       their parameters do not change (see #2667)
  580.     This call is ignored in text modes and 256-color graphics modes
  581. SeeAlso: AX=0040h,AX=0045h,AX=00AAh
  582. --------V-620019-----------------------------
  583. INT 62 u - FGDRIVER v4.02 - "FG_DEFPAGES" - DEF SRC/DEST PAGES FOR BLOCK XFERS
  584.     AX = 0019h
  585.     BX = source page
  586.     CX = destination page
  587. Desc:    specify the source and destination SVGA banks for block transfers on
  588.       extended video pages
  589. Notes:    the FGDRIVER functions are rearranged with each major release, but
  590.       their parameters do not change (see #2667)
  591.     This function is ignored if the video controller does not support
  592.       extended pages or the current video mode does not allow them
  593. SeeAlso: AX=0014h,AX=00CAh
  594. --------V-62001A-----------------------------
  595. INT 62 u - FGDRIVER v4.02 - "FG_DISPFILE" - DISPLAY STORED IMAGE
  596.     AX = 001Ah
  597.     ES:BX -> ASCIZ filename
  598.     CX = image width in pixels (> 0)
  599.     DX = image format
  600.         0000h Fastgraph standard pixel run format
  601.         0001h packed pixel run format
  602. Notes:    the FGDRIVER functions are rearranged with each major release, but
  603.       their parameters do not change (see #2667)
  604.     This call is ignored in text modes
  605.     The image is displayed with its lower left corner at the current
  606.       graphics cursor position
  607. SeeAlso: AX=001Bh,AX=001Ch,AX=00B9h,AX=00BAh,AX=00BBh
  608. --------V-62001B-----------------------------
  609. INT 62 u - FGDRIVER v4.02 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
  610.     AX = 001Bh
  611.     ES:BX -> pixel run map (pairs of bytes: color index, count)
  612.     CX = number of pixel runs to display
  613.     DX = width of image in pixels (> 0)
  614. Notes:    the FGDRIVER functions are rearranged with each major release, but
  615.       their parameters do not change (see #2667)
  616.     This call is ignored in text modes
  617.     The image is displayed with its lower left corner at the current
  618.       graphics cursor position
  619. SeeAlso: AX=001Ah,AX=001Ch,AX=00B9h,AX=00BAh,AX=00BBh
  620. --------V-62001C-----------------------------
  621. INT 62 u - FGDRIVER v4.02 - "FG_DISPLAYP" - DISPLAY IMAGE (PACKED PIXEL RUNS)
  622.     AX = 001Ch
  623.     ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
  624.           contains the color for the first run in its high nybble and
  625.           the color for the second run in its low nybble)
  626.     CX = number of pixel runs to display
  627.     DX = width of image in pixels (> 0)
  628. Notes:    the FGDRIVER functions are rearranged with each major release, but
  629.       their parameters do not change (see #2667)
  630.     This call is ignored in text modes
  631.     The image is displayed with its lower left corner at the current
  632.       graphics cursor position
  633. SeeAlso: AX=001Ah,AX=001Bh,AX=00B9h,AX=00BAh,AX=00BBh
  634. --------V-62001D-----------------------------
  635. INT 62 u - FGDRIVER v4.02 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
  636.     AX = 001Dh
  637.     BX = endpoint column
  638.     CX = endpoint row
  639. Notes:    the FGDRIVER functions are rearranged with each major release, but
  640.       their parameters do not change (see #2667)
  641.     This call is ignored in text modes
  642.     The starting point is the current graphics cursor position; the cursor
  643.       position is updated
  644. SeeAlso: AX=0016h,AX=0020h,AX=0021h,AX=0026h,AX=008Fh,AX=0090h
  645. --------V-62001E-----------------------------
  646. INT 62 u - FGDRIVER v4.02 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
  647.     AX = 001Eh
  648.     ES:BX -> bitmap (each set bit is pixel drawn in current color)
  649.     CX = width of bitmap in bytes
  650.     DX = height of bitmap in pixel rows
  651. Note:    the FGDRIVER functions are rearranged with each major release, but
  652.       their parameters do not change (see #2667)
  653. SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=0099h,AX=00A0h
  654. --------V-62001F-----------------------------
  655. INT 62 u - FGDRIVER v4.02 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
  656.     AX = 001Fh
  657.     ES:BX -> array containing image stored as a masking map (see #2098)
  658.     CX = number of pixel runs in masking map
  659.     DX = width of masking map in pixels
  660. Notes:    the FGDRIVER functions are rearranged with each major release, but
  661.       their parameters do not change (see #2667)
  662.     This call is ignored in text modes and in native EGA and VGA graphics
  663.       modes
  664.     The image is drawn with its lower left corner at the current graphics
  665.       cursor position
  666. SeeAlso: AX=0010h,AX=001Fh,AX=00A1h,AX=00A9h
  667.  
  668. Format of FGDRIVER masking map:
  669. Offset    Size    Description    (Table 2098)
  670.  00h    BYTE    length of first "protect" run (pixels remain unchanged)
  671.  01h    BYTE    length of first "zero" run (pixels set to background color)
  672.  02h    BYTE    length of second "protect" run
  673.  03h    BYTE    length of second "zero" run
  674.     ...
  675. --------V-620020-----------------------------
  676. INT 62 u - FGDRIVER v4.02 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
  677.     AX = 0020h
  678.     BX = endpoint column offset
  679.     CX = endpoint row offset
  680. Notes:    the FGDRIVER functions are rearranged with each major release, but
  681.       their parameters do not change (see #2667 at AX=0000h)
  682.     This call is ignored in text modes
  683.     The starting point is the current graphics cursor position; the cursor
  684.       position is updated
  685. SeeAlso: AX=0006h,AX=000Dh,AX=001Dh,AX=0021h,AX=0026h,AX=008Fh
  686. --------V-620021-----------------------------
  687. INT 62 u - FGDRIVER v4.02 - "FG_DRAWRELX" - XOR SOLID LINE TO RELATIVE POSITION
  688.     AX = 0021h
  689.     BX = endpoint column offset
  690.     CX = endpoint row offset
  691. Desc:    draw a solid line, XORing each pixel onto the screen
  692. Notes:    the FGDRIVER functions are rearranged with each major release, but
  693.       their parameters do not change (see #2667 at AX=0000h)
  694.     This call is ignored in text modes
  695.     The starting point is the current graphics cursor position; the cursor
  696.       position is updated
  697. SeeAlso: AX=0006h,AX=000Dh,AX=001Dh,AX=0020h,AX=0026h,AX=0090h
  698. --------V-620022-----------------------------
  699. INT 62 u - FGDRIVER v4.02 - "FG_DRAWX" - XOR SOLID LINE TO ABSOLUTE POSITION
  700.     AX = 0022h
  701.     BX = endpoint column
  702.     CX = endpoint row
  703. Desc:    draw a solid line, XORing each pixel onto the screen
  704. Notes:    the FGDRIVER functions are rearranged with each major release, but
  705.       their parameters do not change (see #2667 at AX=0000h)
  706.     This call is ignored in text modes
  707.     The starting point is the current graphics cursor position; the cursor
  708.       position is updated
  709. SeeAlso: AX=001Dh,AX=0021h,AX=008Fh
  710. --------V-620023-----------------------------
  711. INT 62 u - FGDRIVER v4.02 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
  712.     AX = 0023h
  713.     BX = screen space column of left edge
  714.     CX = screen space column of right edge
  715.     DX = screen space row of top edge
  716.     SI = screen space row of bottom edge
  717.     ES:DI -> dithering matrix (video-mode dependent)
  718. Notes:    the FGDRIVER functions are rearranged with each major release, but
  719.       their parameters do not change (see #2667 at AX=0000h)
  720.     This call is ignored in text modes
  721. SeeAlso: AX=0006h,AX=0008h,AX=0013h,AX=003Ch,AX=0089h,AX=009Bh
  722. --------V-620024-----------------------------
  723. INT 62 u - FGDRIVER v4.02 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
  724.     AX = 0024h
  725.     ES:BX -> video mode-specific bitmap
  726.     CX = width of bitmap in bytes
  727.     DX = height of bitmap in pixel rows
  728. Notes:    the FGDRIVER functions are rearranged with each major release, but
  729.       their parameters do not change (see #2667 at AX=0000h)
  730.     The image will be drawn with its lower left corner at the current
  731.       cursor position (either text or graphics)
  732. SeeAlso: AX=0011h,AX=0036h,AX=0044h,AX=0099h,AX=00A0h
  733. --------V-620025-----------------------------
  734. INT 62 u - FGDRIVER v4.02 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
  735.     AX = 0025h
  736. Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
  737.           without an Enhanced Color Display
  738. Note:    the FGDRIVER functions are rearranged with each major release, but
  739.       their parameters do not change (see #2667 at AX=0000h)
  740. SeeAlso: AX=00C2h
  741. --------V-620026-----------------------------
  742. INT 62 u - FGDRIVER v4.02 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
  743.     AX = 0026h
  744.     BX = horizontal semi-axis length in screen space units
  745.     CX = vertical semi-axis length in screen space units
  746. Notes:    the FGDRIVER functions are rearranged with each major release, but
  747.       their parameters do not change (see #2667 at AX=0000h)
  748.     This call is ignored in text modes
  749.     The ellipse is centered at the current graphics cursor position
  750. SeeAlso: AX=0006h,AX=000Dh,AX=0027h,AX=008Fh,AX=0093h
  751. --------V-620027-----------------------------
  752. INT 62 u - FGDRIVER v4.02 - "FG_ELLIPSEF" - DRAW FILLED ELLIPSE IN SCREEN SPACE
  753.     AX = 0027h
  754.     BX = horizontal semi-axis length in screen space units
  755.     CX = vertical semi-axis length in screen space units
  756. Notes:    the FGDRIVER functions are rearranged with each major release, but
  757.       their parameters do not change (see #2667 at AX=0000h)
  758.     This call is ignored in text modes
  759.     The ellipse is centered at the current graphics cursor position
  760. SeeAlso: AX=0006h,AX=000Eh,AX=0026h,AX=008Fh,AX=0092h
  761. --------V-620028-----------------------------
  762. INT 62 u - FGDRIVER v4.02 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
  763.     AX = 0028h
  764. Notes:    the FGDRIVER functions are rearranged with each major release, but
  765.       their parameters do not change (see #2667 at AX=0000h)
  766.     This function sets each pixel to 0 in graphics modes, each character
  767.       cell to a blank with a gray foreground attribute in text modes
  768. SeeAlso: AX=0029h,AX=002Bh,AX=0035h
  769. --------V-620029-----------------------------
  770. INT 62 u - FGDRIVER v4.02 - "FG_FADEIN" - FADE IN HIDDEN PAGE
  771.     AX = 0029h
  772.     BX = delay (0000h = fastest possible fade-in)
  773. Notes:    the FGDRIVER functions are rearranged with each major release, but
  774.       their parameters do not change (see #2667 at AX=0000h)
  775.     The current hidden page is copied to the current visible page in small
  776.       random sections to produce a fade-in effect
  777.     This call is ignored in text modes
  778. SeeAlso: AX=0028h,AX=002Ah,AX=002Bh
  779. --------V-62002A-----------------------------
  780. INT 62 u - FGDRIVER v4.02 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
  781.     AX = 002Ah
  782.     BX = delay (0000h = fastest possible fade-out)
  783. Notes:    the FGDRIVER functions are rearranged with each major release, but
  784.       their parameters do not change (see #2667 at AX=0000h)
  785.     The current visible page is filled with pixels of the current color in
  786.       small random sections to give a fade-out effect
  787.     This call is ignored in text modes
  788. SeeAlso: AX=0028h,AX=0029h,AX=002Bh
  789. --------V-62002B-----------------------------
  790. INT 62 u - FGDRIVER v4.02 - "FG_FILLPAGE" - FILL THE ACTIVE VIDEO PAGE
  791.     AX = 002Bh
  792. Desc:    fill the active video page with pixels of the current color (graphics
  793.       modes) or the block character DBh with the current character
  794.       attributes (text modes)
  795. Note:    the FGDRIVER functions are rearranged with each major release, but
  796.       their parameters do not change (see #2667 at AX=0000h)
  797. SeeAlso: AX=0028h,AX=0029h,AX=002Ah
  798. --------V-62002C-----------------------------
  799. INT 62 u - FGDRIVER v4.02 - "FG_FINDPAGE" - FIND AVAILABLE VIRTUAL/LOGICAL PAGE
  800.     AX = 002Ch
  801. Return: AX = first available page number (virtual or logical page)
  802. Note:    the FGDRIVER functions are rearranged with each major release, but
  803.       their parameters do not change (see #2667 at AX=0000h)
  804. SeeAlso: AX=0028h
  805. --------V-62002D-----------------------------
  806. INT 62 u - FGDRIVER v4.02 - "FG_FLICDONE" - CLOSE FLIC FILE
  807.     AX = 002Dh
  808.     ES:BX -> context descriptor (see AX=0030h)
  809. Return: nothing
  810. Note:    the FGDRIVER functions are rearranged with each major release, but
  811.       their parameters do not change (see #2667 at AX=0000h)
  812. SeeAlso: AX=002Eh,AX=0030h
  813. --------V-62002E-----------------------------
  814. INT 62 u - FGDRIVER v4.02 - "FG_FLICHEAD" - READ FLI/FLC FILE HEADER
  815.     AX = 002Eh
  816.     ES:BX -> FLICHEAD variable pointer record (see #2676)
  817. Return: AX = status (see #2678)
  818. Note:    the FGDRIVER functions are rearranged with each major release, but
  819.       their parameters do not change (see #2667 at AX=0000h)
  820. SeeAlso: AX=002Dh,AX=002Fh,AX=0030h,AX=0032h
  821.  
  822. (Table 2678)
  823. Values for FGDRIVER FLIC processing status:
  824.  0000h    successful
  825.  FFFEh    not an FLI or FLC file
  826.  FFFFh    file not found
  827.  
  828. Format of FGDRIVER FLICHEAD variable pointer record:
  829. Offset    Size    Description    (Table 2676)
  830.  00h    WORD    segment of ASCIZ FLI/FLC file name
  831.  02h    WORD    offset of ASCIZ FLI/FLC file name
  832.  04h    WORD    segment of buffer for 128-byte file header
  833.  06h    WORD    offset of buffer for 128-byte file header
  834. --------V-62002F-----------------------------
  835. INT 62 u - FGDRIVER v4.02 - "FG_FLICMODE" - GET OPTIMAL VIDEO MODE FOR FLI/FLC
  836.     AX = 002Fh
  837.     ES:BX -> 128-byte buffer containing FLI/FLC file header (see AX=002Eh)
  838. Return: AX = optimal 256-color graphics mode number
  839.         FFFFh if invalid file header
  840. Note:    the FGDRIVER functions are rearranged with each major release, but
  841.       their parameters do not change (see #2667 at AX=0000h)
  842. SeeAlso: AX=002Eh,AX=0030h
  843. --------V-620030-----------------------------
  844. INT 62 u - FGDRIVER v4.02 - "FG_FLICOPEN" - OPEN FLI/FLC FILE
  845.     AX = 0030h
  846.     ES:BX -> FLICOPEN variable pointer record (see #2677)
  847. Return: AX = status (see #2678)
  848. Note:    the FGDRIVER functions are rearranged with each major release, but
  849.       their parameters do not change (see #2667 at AX=0000h)
  850. SeeAlso: AX=002Dh,AX=002Eh,AX=002Fh,AX=0030h,AX=0031h,AX=0032h
  851.  
  852. Format of FGDRIVER FLICOPEN variable pointer record:
  853. Offset    Size    Description    (Table 2677)
  854.  00h    WORD    segment of ASCIZ FLI/FLC file name
  855.  02h    WORD    offset of ASCIZ FLI/FLC file name
  856.  04h    WORD    segment of buffer for 16-byte file context descriptor
  857.  06h    WORD    offset of buffer for 16-byte file context descriptor
  858. --------V-620031-----------------------------
  859. INT 62 u - FGDRIVER v4.02 - "FG_FLICPLAY" - DISPLAY NEXT FRAME(S) IN FLI/FLC
  860.     AX = 0031h
  861.     ES:BX -> context descriptor (see AX=0030h)
  862.     CX = number of frames to display starting at current frame
  863.     DX = control flags (see #2688)
  864. Return: AX = number of frames displayed
  865. Note:    the FGDRIVER functions are rearranged with each major release, but
  866.       their parameters do not change (see #2667 at AX=0000h)
  867. SeeAlso: AX=0030h,AX=0033h,AX=00B8h
  868.  
  869. Bitfields for FGDRIVER FLI/FLC control flags:
  870. Bit(s)    Description    (Table 2688)
  871.  0    skip inter-frame delay specified in FLI/FLC header
  872.  1    display relative to current graphics position
  873.  2    dipslay image from the FG_IMAGEBUF buffer instead of file
  874. --------V-620032-----------------------------
  875. INT 62 u - FGDRIVER v4.02 - "FG_FLICSIZE" - GET IMAGE SIZE
  876.     AX = 0032h
  877.     ES:BX -> FLICSIZE variable pointer record (see #2679)
  878. Return: image height/width buffers updated; height is set to FFFFh on error
  879. Note:    the FGDRIVER functions are rearranged with each major release, but
  880.       their parameters do not change (see #2667 at AX=0000h)
  881. SeeAlso: AX=002Eh,AX=0030h
  882.  
  883. Format of FGDRIVER FLICSIZE variable pointer record:
  884. Offset    Size    Description    (Table 2679)
  885.  00h    WORD    segment of buffer for 128-byte FLI/FLC file header
  886.  02h    WORD    offset of buffer for 128-byte FLI/FLC file header
  887.  04h    WORD    segment of WORD buffer for image width in pixels
  888.  06h    WORD    offset of WORD buffer for image width in pixels
  889.  08h    WORD    segment of WORD buffer for image height in pixels
  890.  0Ah    WORD    offset of WORD buffer for image height in pixels
  891. --------V-620033-----------------------------
  892. INT 62 u - FGDRIVER v4.02 - "FG_FLICSKIP" - SKIP FRAME(S) IN FLI/FLC FILE
  893.     AX = 0033h
  894.     ES:BX -> context descriptor (see AX=0030h)
  895.     CX = number of frames to skip
  896.         reset to first frame if skip count is negative
  897. Return: AX = number of frames skipped (may be less than requested if EOF)
  898.         0000h if resetting to first frame
  899. Note:    the FGDRIVER functions are rearranged with each major release, but
  900.       their parameters do not change (see #2667 at AX=0000h)
  901. SeeAlso: AX=0030h,AX=0031h
  902. --------V-620034-----------------------------
  903. INT 62 u - FGDRIVER v4.02 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
  904.     AX = 0034h
  905.     ES:BX -> array containing image stored as a masking map (see #2098)
  906.     CX = number of pixel runs in masking map
  907.     DX = width of masking map in pixels
  908. Notes:    the FGDRIVER functions are rearranged with each major release, but
  909.       their parameters do not change (see #2667 at AX=0000h)
  910.     This call is ignored in text modes and in native EGA and VGA graphics
  911.       modes
  912.     The image is drawn with its lower left corner at the current graphics
  913.       cursor position
  914. SeeAlso: AX=000Fh,AX=001Fh,AX=0036h,AX=00A1h,AX=00A5h,AX=00C5h
  915. --------V-620035-----------------------------
  916. INT 62 u - FGDRIVER v4.02 - "FG_FLOOD" - FLOOD FILL ARBITRARY CLOSED REGION
  917.     AX = 0035h
  918.     BX = starting column
  919.     CX = starting row
  920. Desc:    fill the bounded region around the specified point (respecting clipping
  921.       region) with the currrent color
  922. Notes:    the FGDRIVER functions are rearranged with each major release, but
  923.       their parameters do not change (see #2667 at AX=0000h)
  924.     This function is ignored in text modes
  925. SeeAlso: AX=0028h,AX=0085h
  926. --------V-620036-----------------------------
  927. INT 62 u - FGDRIVER v4.02 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
  928.     AX = 0036h
  929.     ES:BX -> mode-specific bitmap
  930.     CX = width of bit map in bytes
  931.     DX = height of bit map in pixel rows
  932. Notes:    the FGDRIVER functions are rearranged with each major release, but
  933.       their parameters do not change (see #2667 at AX=0000h)
  934.     This call is ignored in text modes
  935.     The image is drawn with its lower left corner at the current graphics
  936.       cursor position
  937.     The current clipping region is used, extended to a byte boundary
  938. SeeAlso: AX=0011h,AX=0024h,AX=0034h,AX=0044h,AX=00A0h,AX=00A9h,AX=00B9h
  939. --------V-620037-----------------------------
  940. INT 62 u - FGDRIVER v4.02 - "FG_FONTSIZE" - SPECIFY FONT SIZE FOR TEXT OUTPUT
  941.     AX = 0037h
  942.     BX = desired character height in scan lines (8, 14, 16)
  943. Notes:    the FGDRIVER functions are rearranged with each major release, but
  944.       their parameters do not change (see #2667 at AX=0000h)
  945.     This call is ignored if the current mode is not a VGA or SVGA graphics
  946.       mode, or the specified character height is not 8, 14, or 16
  947. SeeAlso: AX=0096h
  948. --------V-620038-----------------------------
  949. INT 62 u - FGDRIVER v4.02 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
  950.     AX = 0038h
  951.     BX = page number (0000h-003Fh)
  952. Return: AX = status (0000h,0001h,0007h,0009h) (see #2097)
  953. Note:    the FGDRIVER functions are rearranged with each major release, but
  954.       their parameters do not change (see #2667 at AX=0000h)
  955. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0003h
  956. --------V-620039-----------------------------
  957. INT 62 u - FGDRIVER v4.02 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
  958.     AX = 0039h
  959. Return: AX = segment of active video page
  960. Note:    the FGDRIVER functions are rearranged with each major release, but
  961.       their parameters do not change (see #2667 at AX=0000h)
  962. SeeAlso: AX=0042h,AX=00ACh
  963. --------V-62003A-----------------------------
  964. INT 62 u - FGDRIVER v4.02 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
  965.     AX = 003Ah
  966.     BX = row
  967.     CX = column
  968. Return: AX = character attribute at specified location on active video page
  969. Notes:    the FGDRIVER functions are rearranged with each major release, but
  970.       their parameters do not change (see #2667 at AX=0000h)
  971.     This call is ignored in graphics modes
  972. SeeAlso: AX=000Bh,AX=003Dh,AX=0040h,AX=00A6h
  973. --------V-62003B-----------------------------
  974. INT 62 u - FGDRIVER v4.02 - "FG_GETBANKS" - GET SVGA READ AND WRITE BANKS
  975.     AX = 003Bh
  976.     ES:BX -> GETBANKS variable pointer record (see #2680)
  977. Return: nothing
  978. Note:    the FGDRIVER functions are rearranged with each major release, but
  979.       their parameters do not change (see #2667 at AX=0000h)
  980. SeeAlso: AX=00A7h
  981.  
  982. Format of FGDRIVER GETBANKS variable pointer record:
  983. Offset    Size    Description    (Table 2680)
  984.  00h    WORD    segment of WORD buffer for read bank number
  985.  02h    WORD    offset of WORD buffer for read bank number
  986.  04h    WORD    segment of WORD buffer for write bank number
  987.  06h    WORD    offset of WORD buffer for write bank number
  988. --------V-62003C-----------------------------
  989. INT 62 u - FGDRIVER v4.02 - "FG_GETBLOCK" - GRAB RECTANGLE OF DISPLAY
  990.     AX = 003Ch
  991.     ES:BX -> buffer for screen contents
  992.     CX = leftmost column
  993.     DX = rightmost column
  994.     SI = top row
  995.     DI = bottom row
  996. Notes:    the FGDRIVER functions are rearranged with each major release, but
  997.       their parameters do not change (see #2667 at AX=0000h)
  998.     In text modes, coordinates are character positions; in graphics modes,
  999.       they are defined in screen space, and the left and right edges are
  1000.       adjusted to a byte boundary if necessary
  1001.     Use "FG_IMAGESIZ" (see AX=005Ch) to determine the required buffer size
  1002. SeeAlso: AX=0044h,AX=005Ch,AX=0098h
  1003. --------V-62003D-----------------------------
  1004. INT 62 u - FGDRIVER v4.02 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
  1005.     AX = 003Dh
  1006.     BX = row
  1007.     CX = column
  1008. Return: AX = character at specified location on active video page
  1009. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1010.       their parameters do not change (see #2667 at AX=0000h)
  1011.     This call is ignored in graphics modes
  1012. SeeAlso: AX=000Bh,AX=003Ah,AX=0096h,AX=00A6h,AX=00C8h
  1013. --------V-62003E-----------------------------
  1014. INT 62 u - FGDRIVER v4.02 - "FG_GETCLIP" - GET CLIPPING REGION IN SCREEN SPACE
  1015.     AX = 003Eh
  1016.     ES:BX -> GETCLIP variable pointer record (see #2681)
  1017. Return: variables specifed by GETCLIP structure updated
  1018. Note:    the FGDRIVER functions are rearranged with each major release, but
  1019.       their parameters do not change (see #2667 at AX=0000h)
  1020. SeeAlso: AX=00CAh
  1021.  
  1022. Format of FGDRIVER GETCLIP variable pointer record:
  1023. Offset    Size    Description    (Table 2681)
  1024.  00h    WORD    segment of WORD buffer for minimum X coordinate (left edge)
  1025.  02h    WORD    offset of WORD buffer for minimum X coordinate (left edge)
  1026.  04h    WORD    segment of WORD buffer for maximum X coordinate (right edge)
  1027.  06h    WORD    offset of WORD buffer for maximum X coordinate (right edge)
  1028.  08h    WORD    segment of WORD buffer for minimum Y coordinate (top edge)
  1029.  0Ah    WORD    offset of WORD buffer for minimum Y coordinate (top edge)
  1030.  0Ch    WORD    segment of WORD buffer for maximum Y coordinate (bottom edge)
  1031.  0Eh    WORD    offset of WORD buffer for maximum Y coordinate (bottom edge)
  1032. --------V-62003F-----------------------------
  1033. INT 62 u - FGDRIVER v4.02 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
  1034.     AX = 003Fh
  1035. Return: DX:AX = number of clock ticks since midnight
  1036. Note:    the FGDRIVER functions are rearranged with each major release, but
  1037.       their parameters do not change (see #2667 at AX=0000h)
  1038. SeeAlso: INT 1A/AH=00h
  1039. --------V-620040-----------------------------
  1040. INT 62 u - FGDRIVER v4.02 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
  1041.     AX = 0040h
  1042. Return: AX = current text attribute or color index (graphics modes)
  1043. Note:    the FGDRIVER functions are rearranged with each major release, but
  1044.       their parameters do not change (see #2667 at AX=0000h)
  1045. SeeAlso: AX=000Bh,AX=003Ah,AX=00A6h
  1046. --------V-620041-----------------------------
  1047. INT 62 u - FGDRIVER v4.02 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
  1048.     AX = 0041h
  1049.     CX = number of DAC registers to return (0001h to 0100h)
  1050.     DX = starting DAC register number (0000h to 00FFh)
  1051.     ES:BX -> buffer for DAC red/green/blue triples
  1052. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1053.       their parameters do not change (see #2667 at AX=0000h)
  1054.     The register number wraps back to zero after FFh
  1055. SeeAlso: AX=004Eh,AX=0086h,AX=00ABh
  1056. --------V-620042-----------------------------
  1057. INT 62 u - FGDRIVER v4.02 - "FG_GETENTRY" - GET PAGE TYPE AND ADDRESS
  1058.     AX = 0042h
  1059.     ES:BX -> variable pointer record (see #2099)
  1060.     CX = page number (00h-3Fh)
  1061. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1062.       their parameters do not change (see #2667 at AX=0000h)
  1063.     Page addresses are segments for pages stored in conventional memory
  1064.       (including physical and virtual pages), and EMS or XMS handles for
  1065.       pages stored in EMS or XMS
  1066. SeeAlso: AX=0000h,AX=00ACh
  1067.  
  1068. Format of FGDRIVER GETENTRY variable pointer record:
  1069. Offset    Size    Description    (Table 2099)
  1070.  00h    WORD    segment of WORD buffer for page address
  1071.  02h    WORD    offset of WORD buffer for page address
  1072.  04h    WORD    segment of WORD buffer for page type (se #2100)
  1073.  06h    WORD    offset of WORD buffer for page type
  1074.  
  1075. (Table 2100)
  1076. Values for FGDRIVER page type:
  1077.  0000h    unallocated
  1078.  0001h    physical
  1079.  0002h    virtual
  1080.  0003h    logical page, stored in expanded memory (EMS)
  1081.  0004h    logical page, stored in extended memory (XMS)
  1082.  0005h    logical page, stored in conventional memory
  1083. --------V-620043-----------------------------
  1084. INT 62 u - FGDRIVER v4.02 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
  1085.     AX = 0043h
  1086. Return: AX = current hidden video page number (0000h-003Fh)
  1087. Note:    the FGDRIVER functions are rearranged with each major release, but
  1088.       their parameters do not change (see #2667 at AX=0000h)
  1089. SeeAlso: AX=004Ch,AX=0050h,AX=00AEh
  1090. --------V-620044-----------------------------
  1091. INT 62 u - FGDRIVER v4.02 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
  1092.     AX = 0044h
  1093.     ES:BX -> buffer for video mode-specific bitmap
  1094.     CX = width of bitmap in bytes
  1095.     DX = height of bitmap in pixel rows
  1096. Note:    the FGDRIVER functions are rearranged with each major release, but
  1097.       their parameters do not change (see #2667 at AX=0000h)
  1098. SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0099h,AX=00A0h
  1099. --------V-620045-----------------------------
  1100. INT 62 u - FGDRIVER v4.02 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
  1101.     AX = 0045h
  1102.     BX = color index (0000h to 00FFh)
  1103. Return: AX = color value for specified color index
  1104. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1105.       their parameters do not change (see #2667 at AX=0000h)
  1106.     This call returns the value passed to it in text and 256-color
  1107.       graphics modes
  1108. SeeAlso: AX=0018h,AX=0040h
  1109. --------V-620046-----------------------------
  1110. INT 62 u - FGDRIVER v4.02 - "FG_GETKEY" - GET NEXT KEYSTROKE
  1111.     AX = 0046h
  1112.     ES:BX -> variable pointer record (see #2101)
  1113. Return: (after next keystroke if no typeahead) variables updated
  1114. Note:    the FGDRIVER functions are rearranged with each major release, but
  1115.       their parameters do not change (see #2667 at AX=0000h)
  1116. SeeAlso: AX=000Ah,AX=0063h,AX=0069h,AX=00DEh,INT 16/AH=00h
  1117.  
  1118. Format of FGDRIVER GETKEY variable pointer record:
  1119. Offset    Size    Description    (Table 2101)
  1120.  00h    WORD    segment of BYTE buffer for ASCII keycode
  1121.  02h    WORD    offset of BYTE buffer for ASCII keycode
  1122.  04h    WORD    segment of BYTE buffer for extended keycode
  1123.  06h    WORD    offset of BYTE buffer for extended keycode
  1124. --------V-620047-----------------------------
  1125. INT 62 u - FGDRIVER v4.02 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
  1126.     AX = 0047h
  1127. Return: AX = number of text rows on screen in current video mode
  1128. Note:    the FGDRIVER functions are rearranged with each major release, but
  1129.       their parameters do not change (see #2667 at AX=0000h)
  1130. SeeAlso: AX=00AFh,AX=00C2h
  1131. --------V-620048-----------------------------
  1132. INT 62 u - FGDRIVER v4.02 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
  1133.     AX = 0048h
  1134.     ES:BX -> buffer for video mode-independent bitmap
  1135.     CX = width of bitmap in bytes
  1136.     DX = height of bitmap in pixel rows
  1137. Return: each bit in bitmap is set if corresponding pixel is of the current
  1138.       color, cleared otherwise
  1139. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1140.       their parameters do not change (see #2667 at AX=0000h)
  1141.     This call is ignored in text modes
  1142. SeeAlso: AX=0011h,AX=001Eh,AX=0024h
  1143. --------V-620049-----------------------------
  1144. INT 62 u - FGDRIVER v4.02 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
  1145.     AX = 0049h
  1146. Return: AX = maximum X coordinate in screen space
  1147.         (or character space if in text mode)
  1148. Note:    the FGDRIVER functions are rearranged with each major release, but
  1149.       their parameters do not change (see #2667 at AX=0000h)
  1150. SeeAlso: AX=004Ah,AX=00C1h
  1151. --------V-62004A-----------------------------
  1152. INT 62 u - FGDRIVER v4.02 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
  1153.     AX = 004Ah
  1154. Return: AX = maximum Y coordinate in screen space
  1155.         (or character space if in text mode)
  1156. Note:    the FGDRIVER functions are rearranged with each major release, but
  1157.       their parameters do not change (see #2667 at AX=0000h)
  1158. SeeAlso: AX=0049h,AX=00C1h
  1159. --------V-62004B-----------------------------
  1160. INT 62 u - FGDRIVER v4.02 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
  1161.     AX = 004Bh
  1162.     ES:BX -> WORD ???
  1163. Return: AX = current video mode number
  1164. Note:    the FGDRIVER functions are rearranged with each major release, but
  1165.       their parameters do not change (see #2667 at AX=0000h)
  1166. SeeAlso: AX=00B0h
  1167. --------V-62004C-----------------------------
  1168. INT 62 u - FGDRIVER v4.02 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
  1169.     AX = 004Ch
  1170. Return: AX = active video page (0000h-003Fh)
  1171. Note:    the FGDRIVER functions are rearranged with each major release, but
  1172.       their parameters do not change (see #2667 at AX=0000h)
  1173. SeeAlso: AX=0039h,AX=0042h,AX=0043h,AX=0050h,AX=00B2h
  1174. --------V-62004D-----------------------------
  1175. INT 62 u - FGDRIVER v4.02 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
  1176.     AX = 004Dh
  1177.     BX = column in screen space
  1178.     CX = row in screen space
  1179. Return: AX = color value of pixel (0 to num_colors-1)
  1180.         0000h in text modes
  1181. Note:    the FGDRIVER functions are rearranged with each major release, but
  1182.       their parameters do not change (see #2667 at AX=0000h)
  1183. SeeAlso: AX=003Ah,AX=003Dh,AX=008Fh,AX=0090h
  1184. --------V-62004E-----------------------------
  1185. INT 62 u - FGDRIVER v4.02 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
  1186.     AX = 004Eh
  1187.     ES:BX -> variable pointer record (see #2102)
  1188.     CX = DAC register number
  1189. Return: variables updated
  1190. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1191.       their parameters do not change (see #2667 at AX=0000h)
  1192.     This call is ignored in text modes and CGA/EGA video modes (since
  1193.       they do not use DAC registers)
  1194. SeeAlso: AX=00441h,AX=0086h,AX=00ABh
  1195.  
  1196. Format of FGDRIVER GETRGB variable pointer record:
  1197. Offset    Size    Description    (Table 2102)
  1198.  00h    WORD    segment of WORD buffer for red component of DAC register
  1199.  02h    WORD    offset of WORD buffer for red component
  1200.  04h    WORD    segment of WORD buffer for green component of DAC register
  1201.  06h    WORD    offset of WORD buffer for green component
  1202.  08h    WORD    segment of WORD buffer for blue component of DAC register
  1203.  0Ah    WORD    offset of WORD buffer for blue component
  1204. --------V-62004F-----------------------------
  1205. INT 62 u - FGDRIVER v4.02 - "FG_GETVIEW" - GET VIEWPORT EXTREME LIMITS
  1206.     AX = 004Fh
  1207.     ES:BX -> variable pointer record (see #2682)
  1208. Return: indicated variables updated
  1209. Note:    the FGDRIVER functions are rearranged with each major release, but
  1210.       their parameters do not change (see #2667 at AX=0000h)
  1211. SeeAlso: AX=00B5h
  1212.  
  1213. Format of FGDRIVER GETVIEW variable pointer record:
  1214. Offset    Size    Description    (Table 2682)
  1215.  00h    WORD    segment of WORD buffer for viewport left edge (viewport units)
  1216.  02h    WORD    offset of WORD buffer for viewport left edge (viewport units)
  1217.  04h    WORD    segment of WORD buffer for viewport right edge (viewport units)
  1218.  06h    WORD    offset of WORD buffer for viewport right edge (viewport units)
  1219.  08h    WORD    segment of WORD buffer for viewport top edge (viewport units)
  1220.  0Ah    WORD    offset of WORD buffer for viewport top edge (viewport units)
  1221.  0Ch    WORD    segment of WORD buffer for viewport bottom edge (viewp. units)
  1222.  0Eh    WORD    offset of WORD buffer for viewport bottom edge (viewp. units)
  1223.  10h    WORD    segment of WORD buffer for viewport left edge (screen space)
  1224.  12h    WORD    offset of WORD buffer for viewport left edge (screen space)
  1225.  14h    WORD    segment of WORD buffer for viewport right edge (screen space)
  1226.  16h    WORD    offset of WORD buffer for viewport right edge (screen space)
  1227.  18h    WORD    segment of WORD buffer for viewport top edge (screen space)
  1228.  1Ah    WORD    offset of WORD buffer for viewport top edge (screen space)
  1229.  1Ch    WORD    segment of WORD buffer for viewport bottom edge (screen space)
  1230.  1Eh    WORD    offset of WORD buffer for viewport bottom edge (screen space)
  1231. --------V-620050-----------------------------
  1232. INT 62 u - FGDRIVER v4.02 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
  1233.     AX = 0050h
  1234. Return: AX = visible video page (0000h-003Fh)
  1235. Note:    the FGDRIVER functions are rearranged with each major release, but
  1236.       their parameters do not change (see #2667 at AX=0000h)
  1237. SeeAlso: AX=0043h,AX=004Ch,AX=00B6h
  1238. --------V-620051-----------------------------
  1239. INT 62 u - FGDRIVER v4.02 - "FG_GETXBOX" - GET WIDTH OF VERTICAL BOX LINES
  1240.     AX = 0051h
  1241. Return: AX = width (in pixels) of left and right edges of rectangles
  1242. Note:    the FGDRIVER functions are rearranged with each major release, but
  1243.       their parameters do not change (see #2667 at AX=0000h)
  1244. SeeAlso: AX=0006h,AX=0007h,AX=0008h,AX=006Bh
  1245. --------V-620052-----------------------------
  1246. INT 62 u - FGDRIVER v4.02 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
  1247.     AX = 0052h
  1248.     BX = joystick number (0001h or 0002h)
  1249. Return: AX = horizontal position of joystick
  1250.         FFFFh if joystick uninitialized or not present
  1251. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1252.       their parameters do not change (see #2667 at AX=0000h)
  1253.     The actual coordinates are processor- and joystick-dependent
  1254.     You must call "FG_INITJOY" (AX=005Eh) before using this function
  1255. SeeAlso: AX=0009h,AX=0056h,AX=005Eh,AX=0062h,AX=0077h
  1256. --------V-620053-----------------------------
  1257. INT 62 u - FGDRIVER v4.02 - "FG_GETXJUST" - GET HORIZONTAL JUSTIFICATION
  1258.     AX = 0053h
  1259. Return: AX = string justification
  1260.         0000h strings are centered around current graphics X position
  1261.         0001h strings are right-justified at current graphics X position
  1262.         FFFFh strings are left-justified at current graphics X position
  1263. Note:    the FGDRIVER functions are rearranged with each major release, but
  1264.       their parameters do not change (see #2667 at AX=0000h)
  1265. SeeAlso: AX=006Ch,AX=007Bh
  1266. --------V-620054-----------------------------
  1267. INT 62 u - FGDRIVER v4.02 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
  1268.     AX = 0054h
  1269. Return: AX = screen space X coordinate of graphics cursor position
  1270. Note:    the FGDRIVER functions are rearranged with each major release, but
  1271.       their parameters do not change (see #2667 at AX=0000h)
  1272. SeeAlso: AX=0058h,AX=007Eh,AX=007Fh
  1273. --------V-620055-----------------------------
  1274. INT 62 u - FGDRIVER v4.02 - "FG_GETYBOX" - GET WIDTH OF HORIZONTAL BOX LINES
  1275.     AX = 0055h
  1276. Return: AX = width (in pixels) of top and bottom edges of rectangles
  1277. Note:    the FGDRIVER functions are rearranged with each major release, but
  1278.       their parameters do not change (see #2667 at AX=0000h)
  1279. SeeAlso: AX=0006h,AX=0007h,AX=0008h,AX=0063h
  1280. --------V-620056-----------------------------
  1281. INT 62 u - FGDRIVER v4.02 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
  1282.     AX = 0056h
  1283.     BX = joystick number (0001h or 0002h)
  1284. Return: AX = vertical position of joystick
  1285.         FFFFh if joystick uninitialized or not present
  1286. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1287.       their parameters do not change (see #2667 at AX=0000h)
  1288.     The actual coordinates are processor- and joystick-dependent
  1289.     You must call "FG_INITJOY" (AX=005Eh) before using this function
  1290. SeeAlso: AX=0009h,AX=0052h,AX=005Eh,AX=0062h,AX=0077h
  1291. --------V-620057-----------------------------
  1292. INT 62 u - FGDRIVER v4.02 - "FG_GETYJUST" - GET VERTICAL JUSTIFICATION
  1293.     AX = 0057h
  1294. Return: AX = string justification
  1295.         0000h strings are centered around current graphics Y position
  1296.         0001h strings have top edge at current graphics Y position
  1297.         FFFFh strings have bottom edge at current graphics Y position
  1298. Note:    the FGDRIVER functions are rearranged with each major release, but
  1299.       their parameters do not change (see #2667 at AX=0000h)
  1300. SeeAlso: AX=0053h,AX=0065h
  1301. --------V-620058-----------------------------
  1302. INT 62 u - FGDRIVER v4.02 - "FG_GETYPOS" - GET GRAPHICS CURSOR ROW
  1303.     AX = 0058h
  1304. Return: AX = screen space Y coordinate of graphics cursor position
  1305. Note:    the FGDRIVER functions are rearranged with each major release, but
  1306.       their parameters do not change (see #2667 at AX=0000h)
  1307. SeeAlso: AX=0054h,AX=007Eh,AX=007Fh
  1308. --------V-620059-----------------------------
  1309. INT 62 u - FGDRIVER v4.02 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
  1310.     AX = 0059h
  1311. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1312.       their parameters do not change (see #2667 at AX=0000h)
  1313.     This function immediately stops any sounds started with "FG_MUSICB",
  1314.       "FG_SOUNDS", or "FG_VOICES"; it is ignored if no asynchronous sound
  1315.       is playing
  1316. SeeAlso: AX=005Ah,AX=0081h,AX=00BDh,AX=00DCh
  1317. --------V-62005A-----------------------------
  1318. INT 62 u - FGDRIVER v4.02 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
  1319.     AX = 005Ah
  1320. Program: FGDRIVER is the external video driver for the shareware
  1321.       Fastgraph/Light by Ted Gruber Software
  1322. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1323.       their parameters do not change (see #2667 at AX=0000h)
  1324.     This function stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
  1325.       or "FG_VOICES" after the current repetition completes; it is ignored
  1326.       unless asynchronous sound is continuous
  1327. SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
  1328. --------V-62005B-----------------------------
  1329. INT 62 u - FGDRIVER v4.02 - "FG_IMAGEBUF" - SPECIFY TEMPORARY IMAGE BUFFER
  1330.     AX = 005Bh
  1331.     ES:BX -> buffer to be used when creating or displaying GIF/PCX/PPR/SPR
  1332.           images
  1333.     CX = size of buffer in bytes or 0000h to use internal buffer
  1334. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1335.       their parameters do not change (see #2667 at AX=0000h)
  1336.     Fastgraph's internal buffer is 4096 bytes; this function allows the
  1337.       application to define a larger buffer which will typically speed
  1338.       processing
  1339. SeeAlso: AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
  1340. --------V-62005C-----------------------------
  1341. INT 62 u - FGDRIVER v4.02 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
  1342.     AX = 005Ch
  1343.     BX = image width in pixels
  1344.     CX = image height in pixels
  1345. Note:    the FGDRIVER functions are rearranged with each major release, but
  1346.       their parameters do not change (see #2667 at AX=0000h)
  1347. Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
  1348. SeeAlso: AX=003Ch,AX=0098h
  1349. --------V-62005D-----------------------------
  1350. INT 62 u - FGDRIVER v4.02 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
  1351.     AX = 005Dh
  1352. Return: AX = status
  1353.         0000h successful
  1354.         FFFFh expanded memory manager inaccessible or not installed
  1355. Note:    the FGDRIVER functions are rearranged with each major release, but
  1356.       their parameters do not change (see #2667 at AX=0000h)
  1357. SeeAlso: AX=0002h,AX=0060h"v4.02"
  1358. --------V-62005E-----------------------------
  1359. INT 62 u - FGDRIVER v4.02 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
  1360.     AX = 005Eh
  1361.     BX = joystick number (0001h or 0002h)
  1362. Return: AX = status
  1363.         0000h successful
  1364.         FFFFh joystick not connected or no game port
  1365. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1366.       their parameters do not change (see #2667 at AX=0000h)
  1367.     Fastgraph assumes that the requested joystick is centered at the time
  1368.       this function is called
  1369. SeeAlso: AX=0009h,AX=0052h,AX=0056h,AX=0062h,AX=0077h
  1370. --------V-62005F-----------------------------
  1371. INT 62 u - FGDRIVER v4.02 - "FG_INITPM"??? - (NOT IMPLEMENTED)
  1372.     AX = 005Fh
  1373.     ???
  1374. Return: ???
  1375. Note:    the FGDRIVER functions are rearranged with each major release, but
  1376.       their parameters do not change (see #2667 at AX=0000h)
  1377. --------V-620060-----------------------------
  1378. INT 62 u - FGDRIVER v1.10 only - "FG_DISPPCX" - DISPLAY PCX FILE
  1379.     AX = 0060h
  1380.     ES:BX -> ASCIZ filename
  1381.     CX = flags
  1382.         bit 0: use current palette rather than PCX file's palette
  1383.         bits 1-15 reserved (0)
  1384. Return: AX = status
  1385.         0000h success
  1386.         0001h file not found
  1387.         0002h file is not a valid PCX file
  1388. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1389.       their parameters do not change (see #2667 at AX=0000h)
  1390.     This call is ignored in text modes and Hercules low-resolution graphics
  1391.     The image is displayed with its upper left corner at the current
  1392.       graphics cursor position
  1393. SeeAlso: AX=00B9h
  1394. --------V-620060-----------------------------
  1395. INT 62 u - FGDRIVER v4.02 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
  1396.     AX = 0060h
  1397. Return: AX = status
  1398.         0000h successful
  1399.         FFFFh extended memory manager inaccessible or not installed
  1400. Note:    the FGDRIVER functions are rearranged with each major release, but
  1401.       their parameters do not change (see #2667 at AX=0000h)
  1402. SeeAlso: AX=0003h,AX=005Dh
  1403. --------V-620061-----------------------------
  1404. INT 62 u - FDGRIVER v4.02 - "FG_INSIDE" - CHECK IF POINT INSIDE CONVEX POLYGON
  1405.     AX = 0061h
  1406.     ES:BX -> vertex array
  1407.     CX = number of vertices
  1408.     DX = screen space column of point to test
  1409.     SI = screen space row of point to test
  1410. Return: AX = result
  1411.         0000h point is outside polygon
  1412.         0001h point is inside polygon
  1413.         undefined if not a convex polygon
  1414. Note:    the FGDRIVER functions are rearranged with each major release, but
  1415.       their parameters do not change (see #2667 at AX=0000h)
  1416. SeeAlso: AX=0092h,AX=0093h,AX=0094h
  1417. --------V-620062-----------------------------
  1418. INT 62 u - FGDRIVER v4.02 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
  1419.     AX = 0062h
  1420.     CX = joystick number (0001h or 0002h)
  1421.     ES:BX -> variable pointer record (see #2103)
  1422. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1423.       their parameters do not change (see #2667 at AX=0000h)
  1424.     If the indicated joystick has not been initialized with AX=008Eh, both
  1425.       the button code and joystick position will be set to 00h
  1426.     If either button is pressed, a button code of 0Dh is returned;
  1427.       otherwise, a button code of 00h is returned
  1428. SeeAlso: AX=0009h,AX=0052h,AX=0046h,AX=005Eh,AX=0077h
  1429.  
  1430. Format of FGDRIVER INTJOY variable pointer record:
  1431. Offset    Size    Description    (Table 2103)
  1432.  00h    WORD    segment of BYTE buffer for button code
  1433.  02h    WORD    offset of BYTE buffer for button code
  1434.  04h    WORD    segment of BYTE buffer for joystick position
  1435.  06h    WORD    offset of BYTE buffer for joystick position
  1436. --------V-620063-----------------------------
  1437. INT 62 u - FGDRIVER v4.02 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
  1438.     AX = 0063h
  1439.     ES:BX -> variable pointer record (see #2104)
  1440. Return: variables updated
  1441. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1442.       their parameters do not change (see #2667 at AX=0000h)
  1443.     If the keyboard buffer is empty, both the ASCII and extended keycodes
  1444.       are set to 00h
  1445. SeeAlso: AX=000Ah,AX=0046h,AX=0069h,AX=00DEh,INT 16/AH=01h
  1446.  
  1447. Format of FGDRIVER INTKEY variable pointer record:
  1448. Offset    Size    Description    (Table 2104)
  1449.  00h    WORD    segment of BYTE buffer for ASCII keycode
  1450.  02h    WORD    offset of BYTE buffer for ASCII keycode
  1451.  04h    WORD    segment of BYTE buffer for extended keycode
  1452.  06h    WORD    offset of BYTE buffer for extended keycode
  1453. --------V-620064-----------------------------
  1454. INT 62 u - FGDRIVER v4.02 - "FG_INVERT" - INVERT ORIENTATION OF BITMAP
  1455.     AX = 0064h
  1456.     ES:BX -> bitmap
  1457.     CX = width of bitmap in bytes
  1458.     DX = height of bitmap in pixel rows
  1459. Return: nothing
  1460. Note:    the FGDRIVER functions are rearranged with each major release, but
  1461.       their parameters do not change (see #2667 at AX=0000h)
  1462. --------V-620065-----------------------------
  1463. INT 62 u - FGDRIVER v4.02 - "FG_JUSTIFY" - SET TEXT OUTPUT JUSTIFICATION
  1464.     AX = 0065h
  1465.     BX = horizontal justification
  1466.           (00h centered, 01h right-justified, FFh left-justified)
  1467.     CX = vertical justification
  1468.           (00h centered, 01h top of characters, FFh bottom of chars)
  1469. Note:    the FGDRIVER functions are rearranged with each major release, but
  1470.       their parameters do not change (see #2667 at AX=0000h)
  1471. SeeAlso: AX=000Ch,AX=0037h,AX=0053h,AX=0057h,AX=0096h
  1472. --------V-620066-----------------------------
  1473. INT 62 u - FGDRIVER v4.02 - "FG_KBINIT" - ENABLE/DISABLE LOW-LEVEL KBD HANDLER
  1474.     AX = 0066h
  1475.     BX = new state (0000h disabled, 0001h enabled)
  1476. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1477.       their parameters do not change (see #2667 at AX=0000h)
  1478.     When the low-level handler is enabled, "FG_GETKEY", "FG_INTKEY",
  1479.       "FG_WAITKEY", and all other functions calling DOS or BIOS keyboard
  1480.       services become unavailable
  1481. SeeAlso: AX=0067h,AX=0068h,AX=0069h
  1482. --------V-620067-----------------------------
  1483. INT 62 u - FGDRIVER v4.02 - "FG_KBLAST" - GET MOST RECENT SCANCODE PROCESSED
  1484.     AX = 0067h
  1485. Return: AX = scancode for keypress most recently processed by FastGraph's
  1486.           low-level keyboard handler, or 0000h if no keys since FG_KBINIT
  1487. Note:    the FGDRIVER functions are rearranged with each major release, but
  1488.       their parameters do not change (see #2667 at AX=0000h)
  1489. SeeAlso: AX=0066h,AX=0068h,AX=0069h
  1490. --------V-620068-----------------------------
  1491. INT 62 u - FGDRIVER v4.02 - "FG_KBRESET" - RESET LOW-LEVEL KEYBOARD HANDLER
  1492.     AX = 0068h
  1493. Note:    the FGDRIVER functions are rearranged with each major release, but
  1494.       their parameters do not change (see #2667 at AX=0000h)
  1495. SeeAlso: AX=0066h,AX=0067h,AX=0069h
  1496. --------V-620069-----------------------------
  1497. INT 62 u - FGDRIVER v4.02 - "FG_KBTEST" - CHECK WHETHER SPECIFIED KEY PRESSED
  1498.     AX = 0069h
  1499.     BX = scan code of desired key
  1500. Return: AX = state
  1501.         0000h key is not pressed
  1502.         0001h key is currently pressed
  1503. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1504.       their parameters do not change (see #2667 at AX=0000h)
  1505.     The low-level keyboard handler must have been enabled with AX=0066h
  1506. SeeAlso: AX=0066h,AX=0067h,INT 16/AH=01h
  1507. --------V-62006A-----------------------------
  1508. INT 62 u - FGDRIVER v4.02 - "FG_LOADPCX" - LOAD .PCX INTO ACTIVE VIRTUAL BUFFER
  1509.     AX = 006Ah
  1510.     ES:BX -> ASCIZ filename for PCX image
  1511.     CX = control flags
  1512.         bit 0: use current palette, overriding stored .PCX palette
  1513.         bit 1: load at current graphics position, not stored position
  1514.         bit 2: load image from FG_IMAGEBUF buffer instead of .PCX file
  1515. Return: AX = status
  1516.         0000h successful
  1517.         0001h file not found
  1518.         0002h not a .PCX file
  1519. Note:    the FGDRIVER functions are rearranged with each major release, but
  1520.       their parameters do not change (see #2667 at AX=0000h)
  1521. SeeAlso: AX=006Ch,AX=00B9h,AX=00D5h
  1522. --------V-62006B-----------------------------
  1523. INT 62 u - FGDRIVER v4.02 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
  1524.     AX = 006Bh
  1525.     BX = row
  1526.     CX = column
  1527. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1528.       their parameters do not change (see #2667 at AX=0000h)
  1529.     There are only eight text cursors shared by successive groups of
  1530.       eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
  1531.       share the second, etc)
  1532. SeeAlso: AX=0054h,AX=0058h,AX=007Eh,AX=00E0h
  1533. --------V-62006C-----------------------------
  1534. INT 62 u - FGDRIVER v4.02 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
  1535.     AX = 006Ch
  1536.     BX = left edge in screen space units
  1537.     CX = right edge in screen space units
  1538.     DX = top edge in screen space units
  1539.     SI = bottom edge in screen space units
  1540.     ES:DI -> ASCIZ filename of PCX file to create
  1541. Return: AX = status
  1542.         0000h successful
  1543.         0001h file not created
  1544. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1545.       their parameters do not change (see #2667 at AX=0000h)
  1546.     The PCX file is created from the specified region of the active video
  1547.       page; the left and right edges are adjusted to a byte boundary if
  1548.       necessary
  1549.     If the specified file already exists, it is overwritten
  1550.     This call is ignored in text and Hercules low-resolution graphics modes
  1551. SeeAlso: AX=005Bh,AX=006Dh,AX=006Ah,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
  1552. --------V-62006D-----------------------------
  1553. INT 62 u - FGDRIVER v4.02 - "FG_MAKEPPR" - CREATE PACKED PIXEL RUN FILE
  1554.     AX = 006Dh
  1555.     BX = left edge in screen space units
  1556.     CX = right edge in screen space units
  1557.     DX = top edge in screen space units
  1558.     SI = bottom edge in screen space units
  1559.     ES:DI -> ASCIZ filename of PPR file to create
  1560. Return: AX = status
  1561.         0000h successful
  1562.         0001h file not created
  1563. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1564.       their parameters do not change (see #2667 at AX=0000h)
  1565.     The PPR file is created from the specified region of the active video
  1566.       page; the left and right edges are adjusted to byte boundaries if
  1567.       necessary
  1568.     If the specified file already exists, it is overwritten
  1569.     This call is ignored in text modes
  1570. SeeAlso: AX=005Bh,AX=006Ch,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
  1571. --------V-62006E-----------------------------
  1572. INT 62 u - FGDRIVER v4.02 - "FG_MAKESPR" - CREATE STANDARD PIXEL RUN FILE
  1573.     AX = 006Eh
  1574.     BX = left edge in screen space units
  1575.     CX = right edge in screen space units
  1576.     DX = top edge in screen space units
  1577.     SI = bottom edge in screen space units
  1578.     ES:DI -> ASCIZ filename of SPR file to create
  1579. Return: AX = status
  1580.         0000h successful
  1581.         0001h file not created
  1582. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1583.       their parameters do not change (see #2667 at AX=0000h)
  1584.     The SPR file is created from the specified region of the active video
  1585.       page; the left and right edges are adjusted to byte boundaries if
  1586.       necessary
  1587.     If the specified file already exists, it is overwritten
  1588.     This call is ignored in text modes
  1589. SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=00B9h,AX=00BAh,AX=00BBh
  1590. --------V-62006F-----------------------------
  1591. INT 62 u - FGDRIVER v4.02 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
  1592.     AX = 006Fh
  1593.     BX = red component
  1594.     CX = green component
  1595.     DX = blue component
  1596. Return: AX = mode-specific palette value corresponding to specified components
  1597. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1598.       their parameters do not change (see #2667 at AX=0000h)
  1599.     This function is only meaningful in 16-color graphics modes
  1600. SeeAlso: AX=004Eh,AX=00B3h
  1601. --------V-620070-----------------------------
  1602. INT 62 u - FGDRIVER v4.02 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
  1603.     AX = 0070h
  1604. Return: AX = delay units per clock tick (processor-dependent)
  1605. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1606.       their parameters do not change (see #2667 at AX=0000h)
  1607.     These delay units are used by "FG_STALL" (see AX=00BFh)
  1608. SeeAlso: AX=00BFh
  1609. --------V-620071-----------------------------
  1610. INT 62 u - FGDRIVER v4.02 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
  1611.     AX = 0071h
  1612. Return: DX:AX = number of bytes of conventional memory available
  1613. Note:    the FGDRIVER functions are rearranged with each major release, but
  1614.       their parameters do not change (see #2667 at AX=0000h)
  1615. SeeAlso: AX=005Dh,AX=0072h
  1616. --------V-620072-----------------------------
  1617. INT 62 u - FGDRIVER v4.02 - "FG_MEMORY" - GET SIZE OF VIDEO MEMORY
  1618.     AX = 0072h
  1619. Return: AX = size of video memory in KB
  1620. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1621.       their parameters do not change (see #2667 at AX=0000h)
  1622.     You must first call "FG_SVGAINIT" (see AX=00C1h) before using this
  1623.       function
  1624. SeeAlso: AX=0071h
  1625. --------V-620073-----------------------------
  1626. INT 62 u - FGDRIVER v4.02 - "FG_MOUSE256" - DEFINE 256-COLOR MOUSE CURSOR
  1627.     AX = 0073h
  1628.     ES:BX -> 512-byte cursor definition
  1629.     CX = X offset of hot-spot within mouse cursor
  1630.     DX = Y offset of hot-spot within mouse cursor
  1631. Return: nothing
  1632. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1633.       their parameters do not change (see #2667 at AX=0000h)
  1634.     the cursor definition array consists of 256 bytes defining the 16x16
  1635.       screen mask, followed by another 256 bytes definining the 16x16
  1636.       cursor mask
  1637. SeeAlso: AX=0074h,AX=0075h,AX=007Bh
  1638. --------V-620074-----------------------------
  1639. INT 62 u - FGDRIVER v4.02 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
  1640.     AX = 0074h
  1641.     CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
  1642.           -1=left release, -2=right release, -3=middle release)
  1643.     ES:BX -> variable pointer record (see #2105)
  1644. Return: variables updated
  1645. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1646.       their parameters do not change (see #2667 at AX=0000h)
  1647.     This function returns the count of presses or releases since the last
  1648.       call to this function; if the count is zero, row and column will
  1649.       also be zero
  1650. SeeAlso: AX=0075h,AX=0077h,AX=007Ah
  1651.  
  1652. Format of FGDRIVER MOUSEBUT variable pointer record:
  1653. Offset    Size    Description    (Table 2105)
  1654.  00h    WORD    segment of WORD buffer for press/release count
  1655.  02h    WORD    offset of WORD buffer for press/release count
  1656.  04h    WORD    segment of WORD buffer for screen space col of last press/rls
  1657.  06h    WORD    offset of WORD buffer for screen space col of last press/rels
  1658.  08h    WORD    segment of WORD buffer for screen space row of last press/rls
  1659.  0Ah    WORD    offset of WORD buffer for screen space row of last press/rls
  1660. --------V-620075-----------------------------
  1661. INT 62 u - FGDRIVER v4.02 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
  1662.     AX = 0075h
  1663.     BX = screen mask
  1664.     CX = cursor mask
  1665. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1666.       their parameters do not change (see #2667 at AX=0000h)
  1667.     This call is ignored in graphics modes
  1668. SeeAlso: AX=007Bh,AX=007Dh
  1669. --------V-620076-----------------------------
  1670. INT 62 u - FGDRIVER v4.02 - "FG_MOUSEFIN" - UNHOOK FASTGRAPH MOUSE HANDLER
  1671.     AX = 0076h
  1672. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1673.       their parameters do not change (see #2667 at AX=0000h)
  1674.     This function should be called before switching back to text mode if
  1675.       "FG_MOUSEINI" was called while in an SVGA graphics mode
  1676. SeeAlso: AX=0077h
  1677. --------V-620077-----------------------------
  1678. INT 62 u - FGDRIVER v4.02 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
  1679.     AX = 0077h
  1680. Return: AX = status
  1681.         0002h two-button mouse
  1682.         0003h three-button mouse
  1683.         FFFFh initialization failed
  1684. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1685.       their parameters do not change (see #2667 at AX=0000h)
  1686.     After this call, the mouse cursor is invisible
  1687. SeeAlso: AX=0076h,AX=0078h,AX=007Ch
  1688. --------V-620078-----------------------------
  1689. INT 62 u - FGDRIVER v4.02 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
  1690.     AX = 0078h
  1691.     BX = left-most position allowed for mouse cursor
  1692.     CX = right-most position allowed
  1693.     DX = top-most position allowed
  1694.     SI = bottom-most position allowed
  1695. Note:    the FGDRIVER functions are rearranged with each major release, but
  1696.       their parameters do not change (see #2667 at AX=0000h)
  1697. SeeAlso: AX=0077h,AX=0079h,INT 33/AX=0007h,INT 33/AX=0008h
  1698. --------V-620079-----------------------------
  1699. INT 62 u - FGDRIVER v4.02 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
  1700.     AX = 0079h
  1701.     BX = new column
  1702.     CX = new row
  1703. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1704.       their parameters do not change (see #2667 at AX=0000h)
  1705.     This function will not move the mouse cursor outside the bounding box
  1706.       specified with AX=009Bh
  1707. SeeAlso: AX=0078h,AX=007Ah,INT 33/AX=0004h
  1708. --------V-62007A-----------------------------
  1709. INT 62 u - FGDRIVER v4.02 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
  1710.     AX = 007Ah
  1711.     ES:BX -> variable pointer record (see #2106)
  1712. Note:    the FGDRIVER functions are rearranged with each major release, but
  1713.       their parameters do not change (see #2667 at AX=0000h)
  1714. SeeAlso: AX=0079h
  1715.  
  1716. Format of FGDRIVER MOUSEPOS variable pointer record:
  1717. Offset    Size    Description    (Table 2106)
  1718.  00h    WORD    segment of WORD buffer for mouse column
  1719.  02h    WORD    offset of WORD buffer for mouse column
  1720.  04h    WORD    segment of WORD buffer for mouse row
  1721.  06h    WORD    offset of WORD buffer for mouse row
  1722.  08h    WORD    segment of WORD buffer for button status
  1723.  0Ah    WORD    offset of WORD buffer for button status
  1724. Note:    button status: bit 0 = left button, bit 1 = right, bit 2 = middle
  1725. --------V-62007B-----------------------------
  1726. INT 62 u - FGDRIVER v4.02 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
  1727.     AX = 007Bh
  1728.     ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
  1729.     CX = X offset of hot spot from upper left corner
  1730.     DX = Y offset of hot spot from upper left corner
  1731. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1732.       their parameters do not change (see #2667 at AX=0000h)
  1733.     This call is ignored in text modes
  1734. SeeAlso: AX=0073h,AX=0075h,INT 33/AX=0009h
  1735. --------V-62007C-----------------------------
  1736. INT 62 u - FGDRIVER v4.02 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
  1737.     AX = 007Ch
  1738.     BX = horizontal mickeys per eight pixels of movement (default 16)
  1739.     CX = vertical mickeys per eight pixels of movement (default 16)
  1740. Note:    the FGDRIVER functions are rearranged with each major release, but
  1741.       their parameters do not change (see #2667 at AX=0000h)
  1742. SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
  1743. --------V-62007D-----------------------------
  1744. INT 62 u - FGDRIVER v4.02 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
  1745.     AX = 007Dh
  1746.     BX = new state (0000h invisible, 0001h visible)
  1747. Note:    the FGDRIVER functions are rearranged with each major release, but
  1748.       their parameters do not change (see #2667 at AX=0000h)
  1749. SeeAlso: AX=0077h,INT 33/AX=0001h,INT 33/AX=0002h
  1750. --------V-62007E-----------------------------
  1751. INT 62 u - FGDRIVER v4.02 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
  1752.     AX = 007Eh
  1753.     BX = new column
  1754.     CX = new row
  1755. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1756.       their parameters do not change (see #2667 at AX=0000h)
  1757.     This call is ignored in text modes
  1758. SeeAlso: AX=0054h,AX=0058h,AX=006Bh,AX=0079h,AX=007Fh,AX=00E0h
  1759. --------V-62007F-----------------------------
  1760. INT 62 u - FGDRIVER v4.02 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
  1761.     AX = 007Fh
  1762.     BX = column offset
  1763.     CX = row offset
  1764. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1765.       their parameters do not change (see #2667 at AX=0000h)
  1766.     This call is ignored in text modes
  1767. SeeAlso: AX=0054h,AX=0058h,AX=007Eh
  1768. --------V-620080-----------------------------
  1769. INT 62 u - FGDRIVER v4.02 - "FG_MUSIC" - PLAY SERIES OF NOTES
  1770.     AX = 0080h
  1771.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  1772. Return: after music completed
  1773. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1774.       their parameters do not change (see #2667 at AX=0000h)
  1775.     This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
  1776.       AX=00AAh) is already in progress
  1777. SeeAlso: AX=0081h,AX=00BCh,AX=00DBh
  1778. --------V-620081-----------------------------
  1779. INT 62 u - FGDRIVER v4.02 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
  1780.     AX = 0081h
  1781.     CX = number of repetitions (negative = continuous play)
  1782.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  1783. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1784.       their parameters do not change (see #2667 at AX=0000h)
  1785.     This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
  1786.       AX=00AAh) is already in progress
  1787. SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
  1788. --------V-620082-----------------------------
  1789. INT 62 u - FGDRIVER v4.02 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
  1790.     AX = 0082h
  1791. Return: AX = NumLock state (0000h off, 0001h on)
  1792. Note:    the FGDRIVER functions are rearranged with each major release, but
  1793.       their parameters do not change (see #2667 at AX=0000h)
  1794. SeeAlso: AX=000Ah,AX=00A4h,AX=00A8h,AX=00B1h
  1795. --------V-620083-----------------------------
  1796. INT 62 u - FGDRIVER v4.02 - "FG_PACK" - CONVERT PIXEL-PER-BYTE TO PACKED BITMAP
  1797.     AX = 0083h
  1798.     ES:BX -> variable pointer record (see #2683)
  1799.     CX = width of bitmap in pixels
  1800.     DX = height of bitmap in pixels
  1801. Return: result bitmap buffer updated
  1802. SeeAlso: AX=00CBh
  1803.  
  1804. Format of FGDRIVER PACK variable pointer record:
  1805. Offset    Size    Description    (Table 2683)
  1806.  00h    WORD    segment of source (mode-independent) bitmap
  1807.  02h    WORD    offset of source (mode-independent) bitmap
  1808.  04h    WORD    segment of buffer for result (mode-specific) bitmap
  1809.  06h    WORD    offset of buffer for result (mode-specific) bitmap
  1810. --------V-620084-----------------------------
  1811. INT 62 u - FGDRIVER v4.02 - "FG_PAGESIZE" - GET VIDEO PAGE SIZE FOR CURR MODE
  1812.     AX = 0084h
  1813. Return: DX:AX = page size in bytes
  1814. Note:    the FGDRIVER functions are rearranged with each major release, but
  1815.       their parameters do not change (see #2667 at AX=0000h)
  1816. SeeAlso: AX=0072h
  1817. --------V-620085-----------------------------
  1818. INT 62 u - FGDRIVER v4.02 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
  1819.     AX = 0085h
  1820.     BX = column
  1821.     CX = row
  1822. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1823.       their parameters do not change (see #2667 at AX=0000h)
  1824.     This function fills an arbitrary closed region around the specified
  1825.       point with the current color; the screen edges are not considered
  1826.       region boundaries
  1827.     This call is ignored in text modes
  1828. SeeAlso: AX=0035h
  1829. --------V-620086-----------------------------
  1830. INT 62 u - FGDRIVER v4.02 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
  1831.     AX = 0086h
  1832. ---CGA 4-color graphics---
  1833.     BX = CGA paletee number
  1834.     CX = background color
  1835. ---CGA 2-color graphics---
  1836.     BX ignored
  1837.     CX = foreground color
  1838. ---16-color graphics---
  1839.     BX = palette register number
  1840.     CX = palette value
  1841. ---256-color graphics---
  1842.     BX = DAC register number
  1843.     CX =  DAC value
  1844. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1845.       their parameters do not change (see #2667 at AX=0000h)
  1846.     This function is ignored in text modes and Hercules graphics modes
  1847.     Few EGA/VGA adapters correctly set the foreground color in CGA mode 6
  1848. SeeAlso: AX=0041h,AX=004Eh,AX=0087h,AX=00ABh
  1849. --------V-620087-----------------------------
  1850. INT 62 u - FGDRIVER v4.02 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
  1851.     AX = 0087h
  1852.     ES:BX -> array of 16 WORDs containing values for palette registers
  1853.           (or first 16 DAC registers in 256-color modes)
  1854. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1855.       their parameters do not change (see #2667 at AX=0000h)
  1856.     This function is ignored in text modes, CGA and Hercules graphics modes
  1857. SeeAlso: AX=0041h,AX=004Eh,AX=0086h,AX=00ABh
  1858. --------V-620088-----------------------------
  1859. INT 62 u - FGDRIVER v4.02 - "FG_PAN" - SET SCREEN ORIGIN
  1860.     AX = 0088h
  1861.     BX = new column for screen origin
  1862.     CX = new row for screen origin
  1863. Note:    the FGDRIVER functions are rearranged with each major release, but
  1864.       their parameters do not change (see #2667 at AX=0000h)
  1865. SeeAlso: AX=00B2h
  1866. --------V-620089-----------------------------
  1867. INT 62 u - FGDRIVER v4.02 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
  1868.     AX = 0089h
  1869.     BX = index of pattern to define
  1870.     CX = number of predefined display pattern
  1871. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1872.       their parameters do not change (see #2667 at AX=0000h)
  1873.     When displaying a pixel run map, Fastgraph uses the pattern associated
  1874.       with each color index rather than displaying the actual color
  1875.     This call has no effect in text and 256-color graphics modes
  1876. SeeAlso: AX=0023h,AX=0045h
  1877. --------V-62008A-----------------------------
  1878. INT 62 u - FGDRIVER v4.02 - "FG_PCXHEAD" - GET PCX FILE HEADER
  1879.     AX = 008Ah
  1880.     ES:BX -> variable pointer record (see #2107)
  1881. Return: AX = status
  1882.         0000h successful
  1883.         FFFEh not a PCX file
  1884.         FFFFh file does not exist
  1885. Note:    the FGDRIVER functions are rearranged with each major release, but
  1886.       their parameters do not change (see #2667 at AX=0000h)
  1887. SeeAlso: AX=008Bh,AX=00B9h
  1888.  
  1889. Format of FGDRIVER PCXHEAD variable pointer record:
  1890. Offset    Size    Description    (Table 2107)
  1891.  00h    WORD    segment of ASCIZ filename
  1892.  02h    WORD    offset of ASCIZ filename
  1893.  04h    WORD    segment of 128-byte buffer for PCX header
  1894.  06h    WORD    offset of 128-byte buffer for PCX header
  1895. --------V-62008B-----------------------------
  1896. INT 62 u - FGDRIVER v4.02 - "FG_PCXMODE" - GET OPTIMAL VIDEO MODE FOR DISPLAY
  1897.     AX = 008Bh
  1898.     ES:BX -> PCX header (see AX=008Ah)
  1899. Return: AX = optimal video mode for PCX file
  1900.         FFFEh not a valid PCX header
  1901.         FFFFh unable to determine compatible video mode
  1902. Note:    the FGDRIVER functions are rearranged with each major release, but
  1903.       their parameters do not change (see #2667 at AX=0000h)
  1904. SeeAlso: AX=008Ah,AX=00B9h
  1905. --------V-62008C-----------------------------
  1906. INT 62 u - FGDRIVER v4.02 - "FG_PCXPAL" - GET PALETTE STORED IN PCX FILE
  1907.     AX = 008Ch
  1908.     ES:BX -> variable pointer record (see #2684)
  1909. Return: AX = number of colors in palette (16 or 256) or
  1910.         FFFEh not a valid PCX file
  1911.         FFFFh file not found
  1912. Note:    the FGDRIVER functions are rearranged with each major release, but
  1913.       their parameters do not change (see #2667 at AX=0000h)
  1914. SeeAlso: AX=008Dh
  1915.  
  1916. Format of FGDRIVER PCXPAL variable pointer record:
  1917. Offset    Size    Description    (Table 2684)
  1918.  00h    WORD    segment of ASCIZ .PCX filename
  1919.  02h    WORD    offset of ASCIZ .PCX filename
  1920.  04h    WORD    segment of buffer for .PCX palette RGB triples
  1921.  06h    WORD    offset of buffer for .PCX palette RGB triples
  1922. Note:    the buffer for the palette must hold at least three times as many bytes
  1923.       as there are colors in the palette
  1924. SeeAlso: #2685
  1925. --------V-62008D-----------------------------
  1926. INT 62 u - FGDRIVER v4.02 - "FG_PCXRANGE" - GET EXTENT OF PCX IMAGE
  1927.     AX = 008Dh
  1928.     ES:BX -> variable pointer record (see #2685)
  1929. Return: indicated variables updated; if the indicated header is not valid,
  1930.       all of the coordinate variables are set to FFFFh
  1931. Note:    the FGDRIVER functions are rearranged with each major release, but
  1932.       their parameters do not change (see #2667 at AX=0000h)
  1933. SeeAlso: AX=008Ch
  1934.  
  1935. Format of FGDRIVER PCXRANGE variable pointer record:
  1936. Offset    Size    Description    (Table 2685)
  1937.  00h    WORD    segment of 128-byte PCX file header
  1938.  02h    WORD    offset of 128-byte PCX file header
  1939.  04h    WORD    segment of WORD buffer for X coordinate of image's left edge
  1940.  04h    WORD    offset of WORD buffer for X coordinate of image's left edge
  1941.  08h    WORD    segment of WORD buffer for X coordinate of image's right edge
  1942.  0Ah    WORD    offset of WORD buffer for X coordinate of image's right edge
  1943.  0Ch    WORD    segment of WORD buffer for Y coordinate of image's top edge
  1944.  0Eh    WORD    offset of WORD buffer for Y coordinate of image's top edge
  1945.  10h    WORD    segment of WORD buffer for X coordinate of image's bottom edge
  1946.  12h    WORD    offset of WORD buffer for X coordinate of image's bottom edge
  1947. SeeAlso: #2684
  1948. --------V-62008E-----------------------------
  1949. INT 62 u - FGDRIVER v4.02 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
  1950.     AX = 008Eh
  1951. Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
  1952. Note:    the FGDRIVER functions are rearranged with each major release, but
  1953.       their parameters do not change (see #2667 at AX=0000h)
  1954. SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
  1955. --------V-62008F-----------------------------
  1956. INT 62 u - FGDRIVER v4.02 - "FG_POINT" - DISPLAY A PIXEL
  1957.     AX = 008Fh
  1958.     BX = column
  1959.     CX = row
  1960. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1961.       their parameters do not change (see #2667 at AX=0000h)
  1962.     This call is ignored in text modes
  1963. SeeAlso: AX=0006h,AX=001Dh,AX=004Dh,AX=0090h
  1964. --------V-620090-----------------------------
  1965. INT 62 u - FGDRIVER v4.02 - "FG_POINTX" - DISPLAY A PIXEL IN XOR MODE
  1966.     AX = 0090h
  1967.     BX = column
  1968.     CX = row
  1969. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1970.       their parameters do not change (see #2667 at AX=0000h)
  1971.     This call is ignored in text modes
  1972. SeeAlso: AX=004Dh,AX=008Fh
  1973. --------V-620091-----------------------------
  1974. INT 62 u - FGDRIVER v4.02 - "FG_POLYEDGE" - SPECIFY INCLUSION OF FINAL PIXELS
  1975.     AX = 0091h
  1976.     BX = edge flag
  1977.         0000h include right- and bottom-edge pixels when drawing polygons
  1978.           with FG_POLYFILL
  1979.         0001h (default) exclue right- and bottom-edge pixels
  1980. SeeAlso: AX=0092h
  1981. --------V-620092-----------------------------
  1982. INT 62 u - FGDRIVER v4.02 - "FG_POLYFILL" - DRAW A FILLED CONVEX POLYGON
  1983.     AX = 0092h
  1984.     CX = number of vertices
  1985.     ES:BX -> variable pointer record (see #2108)
  1986. Notes:    the FGDRIVER functions are rearranged with each major release, but
  1987.       their parameters do not change (see #2667 at AX=0000h)
  1988.     The vertex array consists of pairs of words specifying the X and Y
  1989.       coordinates of each vertex; the work array is used internally and
  1990.       must contain at least four times as many bytes as the polygon is
  1991.       high in pixels
  1992.     This function is ignored in text modes
  1993.     If the polygon is non-convex, only a portion of it may be filled
  1994. SeeAlso: AX=000Eh,AX=0027h,AX=0091h,AX=0093h,AX=0094h,AX=0095h
  1995.  
  1996. Format of FGDRIVER POLYFILL variable pointer record:
  1997. Offset    Size    Description    (Table 2108)
  1998.  00h    WORD    segment of vertex array (see #2110)
  1999.  02h    WORD    offset of vertex array
  2000.  04h    WORD    segment of work array
  2001.  06h    WORD    offset of work array
  2002. SeeAlso: #2109
  2003. --------V-620093-----------------------------
  2004. INT 62 u - FGDRIVER v4.02 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
  2005.     AX = 0093h
  2006.     CX = number of vertices in polygon
  2007.     ES:BX -> variable pointer record (see #2109)
  2008. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2009.       their parameters do not change (see #2667 at AX=0000h)
  2010.     This call is ignored in text modes
  2011. SeeAlso: AX=0091h,AX=0092h,AX=0094h,AX=0095h
  2012.  
  2013. Format of FGDRIVER POLYGON variable pointer record:
  2014. Offset    Size    Description    (Table 2109)
  2015.  00h    WORD    segment of WORD array containing vertex columns
  2016.  02h    WORD    offset of WORD array containing vertex columns
  2017.  04h    WORD    segment of WORD array containing vertex rows
  2018.  06h    WORD    offset of WORD array containing vertex rows
  2019. SeeAlso: #2108
  2020. --------V-620094-----------------------------
  2021. INT 62 u - FGDRIVER v4.02 - "FG_POLYLINE" - DRAW AN UNFILLED POLYGON
  2022.     AX = 0094h
  2023.     CX = number of vertices in polygon
  2024.     ES:BX -> vertex array (see #2110)
  2025. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2026.       their parameters do not change (see #2667 at AX=0000h)
  2027.     This function is equivalent to "FG_POLYGON", but uses only a single
  2028.       array to define the vertices
  2029.     This call is ignored in text modes
  2030. SeeAlso: AX=008Fh,AX=0092h,AX=0093h,AX=0095h
  2031.  
  2032. Format of FGDRIVER POLYFILL/POLYLINE vertex array element:
  2033. Offset    Size    Description    (Table 2110)
  2034.  00h    WORD    column
  2035.  02h    WORD    row
  2036. SeeAlso: #2109
  2037. --------V-620095-----------------------------
  2038. INT 62 u - FGDRIVER v4.02 - "FG_POLYOFF" - DEFINE POLYGON DRAWING OFFSET
  2039.     AX = 0095h
  2040.     BX = horizontal offset (default 0)
  2041.     CX = vertical offset (default 0)
  2042. Desc:    define the offsets applied to all vertices of polygons drawn with
  2043.       "FG_POLYFILL" or "FG_POLYLINE"
  2044. Note:    the FGDRIVER functions are rearranged with each major release, but
  2045.       their parameters do not change (see #2667 at AX=0000h)
  2046. SeeAlso: AX=0092h,AX=0094h
  2047. --------V-620096-----------------------------
  2048. INT 62 u - FGDRIVER v4.02 - "FG_PRINT" - DISPLAY STRING OF HARDWARE CHARACTERS
  2049.     AX = 0096h
  2050.     CX = length of string
  2051.     ES:BX -> string to display
  2052. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2053.       their parameters do not change (see #2667 at AX=0000h)
  2054.     The string is displayed in the current color, and the graphics cursor
  2055.       is updated to be just to the right of the last displayed character
  2056.     This function is ignored in text modes
  2057. SeeAlso: AX=000Ch,AX=0037h,AX=0065h,AX=0097h
  2058. --------V-620097-----------------------------
  2059. INT 62 u - FGDRIVER v4.02 - "FG_PRINTC" - DISPLAY STRING OF HW CHARS (CLIPPED)
  2060.     AX = 0097h
  2061.     CX = length of string
  2062.     ES:BX -> string to display
  2063. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2064.       their parameters do not change (see #2667 at AX=0000h)
  2065.     The string is displayed in the current color, and the graphics cursor
  2066.       is updated to be just to the right of the last displayed character;
  2067.       only the portion of the string that lies within the current clipping
  2068.       area is displayed
  2069.     This function is ignored in text modes
  2070. SeeAlso: AX=0096h
  2071. --------V-620098-----------------------------
  2072. INT 62 u - FGDRIVER v4.02 - "FG_PUTBLOCK" - RESTORE RECTANGLE OF DISPLAY
  2073.     AX = 0098h
  2074.     ES:BX -> buffer containing previously-saved image
  2075.     CX = left edge
  2076.     DX = right edge
  2077.     SI = top edge
  2078.     DI = bottom edge
  2079. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2080.       their parameters do not change (see #2667 at AX=0000h)
  2081.     In text modes, coordinates are character positions; in graphics modes,
  2082.       they are defined in screen space, and the left and right edges are
  2083.       adjusted to a byte boundary if necessary
  2084. SeeAlso: AX=003Ch,AX=0099h
  2085. --------V-620099-----------------------------
  2086. INT 62 u - FGDRIVER v4.02 - "FG_PUTIMAGE" - DISPLAY MODE-SPECIFIC BITMAP IMAGE
  2087.     AX = 0099h
  2088.     ES:BX -> buffer containing mode-specific bitmap
  2089.     CX = width in bytes
  2090.     DX = height in pixel rows
  2091. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2092.       their parameters do not change (see #2667 at AX=0000h)
  2093.     The bitmap is displayed with its lower left corner at the graphics
  2094.       cursor position; color 0 is NOT treated as transparent
  2095. SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=0098h
  2096. --------V-62009A-----------------------------
  2097. INT 62 u - FGDRIVER v4.02 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
  2098.     AX = 009Ah
  2099. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2100.       their parameters do not change (see #2667 at AX=0000h)
  2101.     This call has no effect if there is no continuous sound playing
  2102. SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00DCh
  2103. --------V-62009B-----------------------------
  2104. INT 62 u - FGDRIVER v4.02 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
  2105.     AX = 009Bh
  2106.     BX = left edge column
  2107.     CX = right edge column
  2108.     DX = top edge row
  2109.     SI = bottom edge row
  2110. Note:    the FGDRIVER functions are rearranged with each major release, but
  2111.       their parameters do not change (see #2667 at AX=0000h)
  2112. SeeAlso: AX=0006h,AX=0012h,AX=0023h,AX=003Ch
  2113. --------V-62009C-----------------------------
  2114. INT 62 u - FGDRIVER v4.02 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
  2115.     AX = 009Ch
  2116. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2117.       their parameters do not change (see #2667 at AX=0000h)
  2118.     This call is ignored in graphics modes
  2119.     The screen attributes are only restored if ANSI.SYS is loaded
  2120. SeeAlso: AX=0028h,AX=00B0h
  2121. --------V-62009D-----------------------------
  2122. INT 62 u - FGDRIVER v4.02 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
  2123.     AX = 009Dh
  2124.     BX = new page width in pixels
  2125.     CX = new page height in pixels
  2126. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2127.       their parameters do not change (see #2667 at AX=0000h)
  2128.     The visible page must be set to 0000h before making this call
  2129.     The mouse, joysticks, expanded memory, and extended memory must be
  2130.       reinitialized after this call
  2131. SeeAlso: AX=0084h,AX=00ACh
  2132. --------V-62009E-----------------------------
  2133. INT 62 u - FGDRIVER v4.02 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
  2134.     AX = 009Eh
  2135.     BX = left edge column
  2136.     CX = right edge column
  2137.     DX = top edge row
  2138.     SI = bottom edge row
  2139. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2140.       their parameters do not change (see #2667 at AX=0000h)
  2141.     The left and right edges are adjusted to byte boundaries if necessary
  2142. SeeAlso: AX=00A2h,AX=00C6h
  2143. --------V-62009F-----------------------------
  2144. INT 62 u - FGDRIVER v4.02 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
  2145.     AX = 009Fh
  2146. Note:    the FGDRIVER functions are rearranged with each major release, but
  2147.       their parameters do not change (see #2667 at AX=0000h)
  2148. SeeAlso: AX=00BDh,AX=00C0h
  2149. --------V-6200A0-----------------------------
  2150. INT 62 u - FGDRIVER v4.02 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
  2151.     AX = 00A0h
  2152.     ES:BX -> mode-specific bitmap
  2153.     CX = width of bitmap in bytes
  2154.     DX = height of bitmap in pixel rows
  2155. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2156.       their parameters do not change (see #2667 at AX=0000h)
  2157.     This call is ignored in text modes
  2158.     The image is drawn with its lower left corner at the current graphics
  2159.       cursor position
  2160. SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=00A1h,AX=00A9h,AX=00B9h
  2161. --------V-6200A1-----------------------------
  2162. INT 62 u - FGDRIVER v4.02 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
  2163.     AX = 00A1h
  2164.     ES:BX -> array containing image stored as a masking map (see #2098)
  2165.     CX = number of pixel runs in masking map
  2166.     DX = width of masking map in pixels
  2167. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2168.       their parameters do not change (see #2667 at AX=0000h)
  2169.     This call is ignored in text modes and in native EGA and VGA graphics
  2170.       modes
  2171.     The image is drawn with its lower left corner at the current graphics
  2172.       cursor position
  2173. SeeAlso: AX=0010h,AX=001Fh,AX=0034h,AX=00A0h,AX=00A9h,AX=00C5h
  2174. --------V-6200A2-----------------------------
  2175. INT 62 u - FGDRIVER v4.02 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
  2176.     AX = 00A2h
  2177.     BX = left edge column
  2178.     CX = right edge column
  2179.     DX = top edge row
  2180.     SI = bottom edge row
  2181. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2182.       their parameters do not change (see #2667 at AX=0000h)
  2183.     The left and right edges are adjusted to byte boundaries if necessary
  2184. SeeAlso: AX=009Eh,AX=00C6h
  2185. --------V-6200A3-----------------------------
  2186. INT 62 u - FGDRIVER v4.02 - "FG_SCALE" - SCALE BITMAP
  2187.     AX = 00A3h
  2188.     ES:BX -> variable pointer record (see #2622)
  2189.     CX = width of source bitmap in pixels (0 < width <= 1024)
  2190.     DX = height of source bitmap in pixels (0 < height <= 1024)
  2191.     SI = desired width of scaled bitmap (0 < width <= 1024)
  2192.     DI = desired height of scaled bitmap (0 < height <= 1024)
  2193. Return: nothing
  2194. SeeAlso: AX=00B7h
  2195.  
  2196. Format of FGDRIVER SCALE variable pointer record:
  2197. Offset    Size    Description    (Table 2622)
  2198.  00h    WORD    segment of source bitmap (one pixel per byte)
  2199.  02h    WORD    offset of source bitmap
  2200.  04h    WORD    segment of buffer for resulting scaled bitmap
  2201.  06h    WORD    offset of buffer for resulting scaled bitmap
  2202. --------V-6200A4-----------------------------
  2203. INT 62 u - FGDRIVER v4.02 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
  2204.     AX = 00A4h
  2205. Return: AX = ScrollLock state (0000h off, 0001h on)
  2206. Program: FGDRIVER is the external video driver for the shareware
  2207.       Fastgraph/Light by Ted Gruber Software
  2208. Note:    the FGDRIVER functions are rearranged with each major release, but
  2209.       their parameters do not change (see #2667 at AX=0000h)
  2210. SeeAlso: AX=000Ah,AX=0082h,AX=00A8h,AX=00B1h
  2211. --------V-6200A5-----------------------------
  2212. INT 62 u - FGDRIVER v4.02 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
  2213.     AX = 00A5h
  2214.     BX = left edge column
  2215.     CX = right edge column
  2216.     DX = top edge row
  2217.     SI = bottom edge row
  2218.     DI = number of pixels by which to scroll (positive scrolls up,
  2219.           negative scrolls down)
  2220.     ES = type of scroll
  2221.         0000h circular (rows scrolled off are copied to vacated rows)
  2222.         else vacated rows are filled with the current color
  2223. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2224.       their parameters do not change (see #2667 at AX=0000h)
  2225.     In graphics modes, the left and right edges are adjusted to byte
  2226.       boundaries if necessary
  2227.     Circular scrolling uses part of the hidden page as a workspace
  2228. SeeAlso: AX=0088h,AX=00B2h
  2229. --------V-6200A6-----------------------------
  2230. INT 62 u - FGDRIVER v4.02 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
  2231.     AX = 00A6h
  2232.     BX = foreground
  2233.     CX = background
  2234.     DX = blink (0000h nonblinking, 0001h blink)
  2235. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2236.       their parameters do not change (see #2667 at AX=0000h)
  2237.     This call is ignored in graphics modes
  2238. SeeAlso: AX=000Bh,AX=003Ah,AX=0048h
  2239. --------V-6200A7-----------------------------
  2240. INT 62 u - FGDRIVER v4.02 - "FG_SETBANKS" - SET SVGA READ AND WRITE BANKS
  2241.     AX = 00A7h
  2242.     BX = memory bank from which to read (FFFFh leave unchanged)
  2243.     CX = memory bank to which to write (FFFFh leave unchanged)
  2244. Note:    the FGDRIVER functions are rearranged with each major release, but
  2245.       their parameters do not change (see #2667 at AX=0000h)
  2246. SeeAlso: AX=003Bh
  2247. --------V-6200A8-----------------------------
  2248. INT 62 u - FGDRIVER v4.02 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
  2249.     AX = 00A8h
  2250.     BX = new state (0000h off, 0001h on)
  2251. Note:    the FGDRIVER functions are rearranged with each major release, but
  2252.       their parameters do not change (see #2667 at AX=0000h)
  2253. SeeAlso: AX=000Ah,AX=0082h,AX=00A4h,AX=00B1h
  2254. --------V-6200A9-----------------------------
  2255. INT 62 u - FGDRIVER v4.02 - "FG_SETCLIP" - SET CLIPPING REGION
  2256.     AX = 00A9h
  2257.     BX = left edge of clipping region
  2258.     CX = right edge of clipping region
  2259.     DX = top edge of clipping region
  2260.     SI = bottom edge of clipping region
  2261. Note:    the FGDRIVER functions are rearranged with each major release, but
  2262.       their parameters do not change (see #2667 at AX=0000h)
  2263. SeeAlso: AX=0010h,AX=001Fh,AX=0034h,AX=003Eh,AX=00A1h,AX=00C5h
  2264. --------V-6200AA-----------------------------
  2265. INT 62 u - FGDRIVER v4.02 - "FG_SETCOLOR" - SET CURRENT COLOR
  2266.     AX = 00AAh
  2267.     BX = new color index (or text attribute in text modes)
  2268. Note:    the FGDRIVER functions are rearranged with each major release, but
  2269.       their parameters do not change (see #2667 at AX=0000h)
  2270. SeeAlso: AX=0018h,AX=0040h,AX=0045h
  2271. --------V-6200AB-----------------------------
  2272. INT 62 u - FGDRIVER v4.02 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
  2273.     AX = 00ABh
  2274.     CX = number of DAC registers to set (0001h to 0100h)
  2275.     DX = starting DAC register number (0000h to 00FFh)
  2276.     ES:BX -> buffer containing DAC red/green/blue triples
  2277. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2278.       their parameters do not change (see #2667 at AX=0000h)
  2279.     The register number wraps back to zero after reaching FFh
  2280.     This call has no effect in text modes or graphics modes below 11h
  2281. SeeAlso: AX=0041h,AX=004Eh,AX=0086h,INT 10/AX=1012h
  2282. --------V-6200AC-----------------------------
  2283. INT 62 u - FGDRIVER v4.02 - "FG_SETENTRY" - SET TYPE AND ADDRESS OF VIDEO PAGE
  2284.     AX = 00ACh
  2285.     BX = page number (00h-3Fh)
  2286.     CX = page address
  2287.     DX = page type (see #2100 at AX=0042h)
  2288. Note:    the FGDRIVER functions are rearranged with each major release, but
  2289.       their parameters do not change (see #2667 at AX=0000h)
  2290. SeeAlso: AX=0038h,AX=0042h,AX=00B0h
  2291. --------V-6200AD-----------------------------
  2292. INT 62 u - FGDRIVER v4.02 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
  2293.     AX = 00ADh
  2294.     BX = operation
  2295.         0000h replacement
  2296.         0001h AND
  2297.         0002h OR
  2298.         0003h XOR
  2299. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2300.       their parameters do not change (see #2667 at AX=0000h)
  2301.     This function is only available in native EGA/VGA graphics modes
  2302.       (0Dh to 12h)
  2303. SeeAlso: AX=001Eh,AX=008Fh
  2304. --------V-6200AE-----------------------------
  2305. INT 62 u - FGDRIVER v4.02 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
  2306.     AX = 00AEh
  2307.     BX = new hidden page (0000h to 003Fh)
  2308. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2309.       their parameters do not change (see #2667 at AX=0000h)
  2310.     The specified page must be a physical page or a virtual page
  2311. SeeAlso: AX=0043h,AX=00B2h,AX=00B6h
  2312. --------V-6200AF-----------------------------
  2313. INT 62 u - FGDRIVER v4.02 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
  2314.     AX = 00AFh
  2315.     BX = new screen size (25, 43, 50)
  2316. Note:    the FGDRIVER functions are rearranged with each major release, but
  2317.       their parameters do not change (see #2667 at AX=0000h)
  2318. SeeAlso: AX=0047h
  2319. --------V-6200B0-----------------------------
  2320. INT 62 u - FGDRIVER v4.02 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
  2321.     AX = 00B0h
  2322.     BX = new video mode or FFFFh for current mode (see #2111)
  2323.     ES:DX -> WORD ???
  2324. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2325.       their parameters do not change (see #2667 at AX=0000h)
  2326.     This call resets the active video page to page 0000h, the clipping
  2327.       region to the entire screen, text rows to 25, etc.
  2328. SeeAlso: AX=004Bh,INT 10/AH=00h
  2329.  
  2330. (Table 2111)
  2331. Values for FGDRIVER video mode:
  2332.  00h-07h standard BIOS modes
  2333.  09h    PCjr/Tandy1000 320x200x16
  2334.  0Bh    Hercules graphics 720x348
  2335.  0Ch    Hercules graphics 320x200
  2336.  0Dh-13h standard BIOS modes
  2337.  14h    VGA graphics 320x200x256
  2338.  15h    VGA graphics 320x400x256
  2339.  16h    VGA graphics 320x240x256
  2340.  17h    VGA graphics 320x480x256
  2341.  18h    SVGA graphics 640x400x256
  2342.  19h    SVGA graphics 640x480x256
  2343.  1Ah    SVGA graphics 800x600x256
  2344.  1Bh    SVGA graphics 1024x768x256
  2345.  1Ch    SVGA graphics 800x600x16
  2346.  1Dh    SVGA graphics 1024x768x16
  2347. --------V-6200B1-----------------------------
  2348. INT 62 u - FGDRIVER v4.02 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
  2349.     AX = 00B1h
  2350.     BX = new state (0000h off, 0001h on)
  2351. Note:    the FGDRIVER functions are rearranged with each major release, but
  2352.       their parameters do not change (see #2667 at AX=0000h)
  2353. SeeAlso: AX=000Ah,AX=0082h,AX=00A4h,AX=00A8h
  2354. --------V-6200B2-----------------------------
  2355. INT 62 u - FGDRIVER v4.02 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
  2356.     AX = 00B2h
  2357.     BX = new video page (0000h to 003Fh)
  2358. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2359.       their parameters do not change (see #2667 at AX=0000h)
  2360.     The specified page must be a physical or virtual page
  2361. SeeAlso: AX=0039h,AX=0042h,AX=0043h,AX=0050h,AX=0088h
  2362. --------V-6200B3-----------------------------
  2363. INT 62 u - FGDRIVER v4.02 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
  2364.     AX = 00B3h
  2365.     BX = palette or DAC register number
  2366.     CX = red color component
  2367.     DX = green component
  2368.     SI = blue component
  2369. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2370.       their parameters do not change (see #2667 at AX=0000h)
  2371.     The register number may be negative for Tandy, PCjr, and 200-line
  2372.       EGA graphics modes to specify an intense color
  2373.     This call has no effect in text, CGA graphics, and Hercules graphics
  2374.       modes
  2375. SeeAlso: AX=004Eh
  2376. --------V-6200B4-----------------------------
  2377. INT 62 u - FGDRIVER v4.02 - UNUSED
  2378.     AX = 00B4h
  2379. Return: AX = 0000h
  2380. Note:    the FGDRIVER functions are rearranged with each major release, but
  2381.       their parameters do not change (see #2667 at AX=0000h)
  2382. --------V-6200B5-----------------------------
  2383. INT 62 u - FGDRIVER v4.02 - "FG_SETVIEW" - DEFINE VIEWPORT
  2384.     AX = 00B5h
  2385.     ES:BX -> variable record (see #2686)
  2386.     CX = viewport's top edge in screen space
  2387.     DX = viewport's bottom edge in screen space
  2388. Return: nothing
  2389. Note:    the FGDRIVER functions are rearranged with each major release, but
  2390.       their parameters do not change (see #2667)
  2391. SeeAlso: AX=004Fh
  2392.  
  2393. Format of FGDRIVER SETVIEW variable record:
  2394. Offset    Size    Description    (Table 2686)
  2395.  00h    WORD    viewport's left edge in viewport units
  2396.  02h    WORD    viewport's right edge in viewport units
  2397.  04h    WORD    viewport's top edge in viewport units
  2398.  06h    WORD    viewport's bottom edge in viewport units
  2399.  08h    WORD    viewport's left edge in screen space
  2400.  0Ah    WORD    viewport's right edge in screen space
  2401. --------V-6200B6-----------------------------
  2402. INT 62 u - FGDRIVER v4.02 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
  2403.     AX = 00B6h
  2404.     BX = new video page (0000h to 003Fh)
  2405. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2406.       their parameters do not change (see #2667 at AX=0000h)
  2407.     The specified page must be a physical or virtual page
  2408. SeeAlso: AX=0043h,AX=00AEh,AX=00B2h
  2409. --------V-6200B7-----------------------------
  2410. INT 62 u - FGDRIVER v4.02 - "FG_SHEAR" - SHEAR UNPACKED BITMAP
  2411.     AX = 00B7h
  2412.     ES:BX -> variable pointer record (see #2687)
  2413.     CX = bitmap width (0 < width <= 1024)
  2414.     DX = bitmap height (0 < height <= 1024)
  2415.     SI = size of resulting image (width for horiz. shear, height for vert.)
  2416.     DI = shear type
  2417.         0000h horizontal shear to left
  2418.         0001h horizontal shear to right
  2419.         0002h vertical shear to left (left edge stretched up)
  2420.         0003h vertical shear to right (right edge stretched up)
  2421. Return: nothing
  2422. Note:    the FGDRIVER functions are rearranged with each major release, but
  2423.       their parameters do not change (see #2667)
  2424. SeeAlso: AX=00A3h
  2425.  
  2426. Format of FGDRIVER SHEAR variable pointer record:
  2427. Offset    Size    Description    (Table 2687)
  2428.  00h    WORD    segment of source bitmap
  2429.  02h    WORD    offset of source bitmap
  2430.  04h    WORD    segment of buffer for resulting bitmap
  2431.  06h    WORD    offset of buffer for resulting bitmap
  2432. --------V-6200B8-----------------------------
  2433. INT 62 u - FGDRIVER v4.02 - "FG_SHOWFLIC" - DISPLAY IMAGE FROM FLI/FLC FILE
  2434.     AX = 00B8h
  2435.     ES:BX -> ASCIZ filename for FLI/FLC file
  2436.     CX = number of times to display image file (0000h = continuously)
  2437.     DX = control flags (see #2688 at AX=0031h)
  2438. Return: AX = status
  2439.         0000h successful
  2440.         0001h file not found
  2441.         0002h not a valid FLI/FLC file
  2442. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2443.       their parameters do not change (see #2667)
  2444.     the FLI/FLC display may be stopped by the user by pressing Esc
  2445. SeeAlso: AX=0030h,AX=0031h,AX=00B9h
  2446. --------V-6200B9-----------------------------
  2447. INT 62 u - FGDRIVER v4.02 - "FG_SHOWPCX" - DISPLAY IMAGE FROM PCX FILE
  2448.     AX = 00B9h
  2449.     ES:BX -> ASCIZ filename of PCX image
  2450.     CX = flags (see #2112)
  2451. Return: AX = status
  2452.         0000h success
  2453.         0001h file not found
  2454.         0002h not a PCX file
  2455. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2456.       their parameters do not change (see #2667 at AX=0000h)
  2457.     This function is ignored in text modes and Hercules low-res graphics
  2458. SeeAlso: AX=005Bh,AX=0060h"1.10",AX=006Ch,AX=006Dh,AX=006Eh,AX=00B8h,AX=00BAh
  2459. SeeAlso: AX=00BBh
  2460.  
  2461. Bitfields for FGDRIVER flags:
  2462. Bit(s)    Description    (Table 2112)
  2463.  0    use current palette rather than PCX file's palette
  2464.  1    display image at cursor position instead of position in PCX header
  2465.  2-15    reserved
  2466. --------V-6200BA-----------------------------
  2467. INT 62 u - FGDRIVER v4.02 - "FG_SHOWPPR" - DISPLAY IMAGE FROM PPR FILE
  2468.     AX = 00BAh
  2469.     ES:BX -> ASCIZ filename of packed pixel run image
  2470.     CX = width in pixels (nonzero)
  2471. Return: AX = status
  2472.         0000h successful
  2473.         0001h file not found
  2474. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2475.       their parameters do not change (see #2667 at AX=0000h)
  2476.     The image is displayed with its lower left corner at the current
  2477.       graphics cursor position
  2478.     This function is ignored in text modes and 256-color graphics modes
  2479. SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BBh
  2480. --------V-6200BB-----------------------------
  2481. INT 62 u - FGDRIVER v4.02 - "FG_SHOWSPR" - DISPLAY IMAGE FROM SPR FILE
  2482.     AX = 00BBh
  2483.     ES:BX -> ASCIZ filename of standard pixel run image
  2484.     CX = width in pixels (nonzero)
  2485. Return: AX = status
  2486.         0000h successful
  2487.         0001h file not found
  2488. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2489.       their parameters do not change (see #2667 at AX=0000h)
  2490.     The image is displayed with its lower left corner at the current
  2491.       graphics cursor position
  2492.     This function is ignored in text modes
  2493. SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BAh
  2494. --------V-6200BC-----------------------------
  2495. INT 62 u - FGDRIVER v4.02 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
  2496.     AX = 00BCh
  2497.     BX = frequency in Hertz (18-32767)
  2498.     CX = duration in clock ticks (0000h or negative for continuous sound)
  2499. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2500.       their parameters do not change (see #2667 at AX=0000h)
  2501.     This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
  2502.       AX=00AAh) is already in progress
  2503. SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00C0h,AX=00DBh
  2504. --------V-6200BD-----------------------------
  2505. INT 62 u - FGDRIVER v4.02 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
  2506.     AX = 00BDh
  2507.     CX = number of times to cycle through sound list
  2508.     ES:BX -> sounds array (see #2113)
  2509. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2510.       their parameters do not change (see #2667 at AX=0000h)
  2511.     This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
  2512.       AX=00AAh) is already in progress
  2513. SeeAlso: AX=0059h,AX=0081h,AX=00BCh,AX=00C0h,AX=00DCh
  2514.  
  2515. Format of FGDRIVER sounds array element:
  2516. Offset    Size    Description    (Table 2113)
  2517.  00h    WORD    frequency of sound in Hertz (0000h ends array)
  2518.  02h    WORD    duration of sound in clock ticks
  2519. --------V-6200BE-----------------------------
  2520. INT 62 u - FGDRIVER v4.02 - "FG_SPLIT" - ENABLE/DISABLE SPLIT SCREEN ENVIRONMNT
  2521.     AX = 00BEh
  2522.     BX = beginning row for bottom half of split-screen
  2523. Note:    the FGDRIVER functions are rearranged with each major release, but
  2524.       their parameters do not change (see #2667)
  2525. --------V-6200BF-----------------------------
  2526. INT 62 u - FGDRIVER v4.02 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
  2527.     AX = 00BFh
  2528.     BX = duration in processor-dependent delay units (see AX=0070h)
  2529. Return: after delay elapses
  2530. Note:    the FGDRIVER functions are rearranged with each major release, but
  2531.       their parameters do not change (see #2667 at AX=0000h)
  2532. SeeAlso: AX=0070h,INT 2F/AX=1224h
  2533. --------V-6200C0-----------------------------
  2534. INT 62 u - FGDRIVER v4.02 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
  2535.     AX = 00C0h
  2536. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2537.       their parameters do not change (see #2667 at AX=0000h)
  2538.     This call has no effect if there is no asynchronous sound in progress
  2539.     The program must not exit while sound is suspended
  2540. SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00C0h,AX=00DBh
  2541. --------V-6200C1-----------------------------
  2542. INT 62 u - FGDRIVER v4.02 - "FG_SVGAINIT" - INITIALIZE FASTGRAPH SVGA KERNEL
  2543.     AX = 00C1h
  2544.     BX = method (see #2114)
  2545. Return: AX = status
  2546.         0000h no VESA BIOS or supported SVGA chipset
  2547.         0001h using VESA BIOS
  2548.         0002h-0016h specific chipset being used (same as "method" below)
  2549. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2550.       their parameters do not change (see #2667 at AX=0000h)
  2551.     This function must be called before attempting to set SVGA graphics
  2552.       modes (18h to 1Dh) or using "FG_BESTMODE", "FG_TESTMODE", or
  2553.       "FG_MEMORY"
  2554. SeeAlso: AX=0025h,AX=00C2h,AX=00C3h
  2555.  
  2556. (Table 2114)
  2557. Values for FGDRIVER SVGA method:
  2558.  0000h    autodetect, give chipset-specific code priority over VESA
  2559.  0001h    autodetect, give VESA priority over chipset-specific code
  2560.  0002h    Ahead type "A"
  2561.  0003h    Ahead type "B"
  2562.  0004h    ATI 18800
  2563.  0005h    ATI 18800-1
  2564.  0006h    ATI 28800
  2565.  0007h    Chips & Technologies 82c451/455/456
  2566.  0008h    C&T 82c452
  2567.  0009h    C&T 82c453
  2568.  000Ah    Genoa 6000 series
  2569.  000Bh    Oak OTI-067
  2570.  000Ch    Paradise PVGA1a
  2571.  000Dh    Paradise WD90C00/WD90C10
  2572.  000Eh    Paradise WD90C11/WD90C30/WD90C31
  2573.  000Fh    Trident 8800
  2574.  0010h    Trident 8900
  2575.  0011h    Tseng ET3000
  2576.  0012h    Tseng ET4000
  2577.  0013h    Video7
  2578.  0014h    Cirrus Logic 5400 series
  2579.  0015h    S3
  2580.  0016h    Trident 8900B/8900C/9000
  2581. --------V-6200C2-----------------------------
  2582. INT 62 u - FGDRIVER v4.02 - "FG_SVGASTAT" - GET SVGA CHIPSET INFORMATION
  2583.     AX = 00C2h
  2584. Return: AX = chipset information (see #2115)
  2585. Note:    the FGDRIVER functions are rearranged with each major release, but
  2586.       their parameters do not change (see #2667 at AX=0000h)
  2587. SeeAlso: AX=0025h,AX=00C1h,AX=00C3h
  2588.  
  2589. Bitfields for FGDRIVER chipset information:
  2590. Bit(s)    Description    (Table 2115)
  2591.  0    SVGA kernel initialized
  2592.  1    VESA support enabled
  2593.  2    extended video pages available in modes 13-23
  2594.  3    SVGA chipset has separate read and write banks
  2595.  4-15    reserved (0)
  2596. --------V-6200C3-----------------------------
  2597. INT 62 u - FGDRIVER v4.02 - "FG_SVGAVER" - GET FASTGRAPH SVGA KERNEL VERSION
  2598.     AX = 00C3h
  2599.     ES:BX -> variable pointer record (see #2116)
  2600. Note:    the FGDRIVER functions are rearranged with each major release, but
  2601.       their parameters do not change (see #2667 at AX=0000h)
  2602. SeeAlso: AX=00C1h,AX=00C2h
  2603.  
  2604. Format of FGDRIVER variable pointer record:
  2605. Offset    Size    Description    (Table 2116)
  2606.  00h    WORD    segment of WORD buffer for major version
  2607.  02h    WORD    offset of WORD buffer for major version
  2608.  04h    WORD    segment of WORD buffer for minor version (hundredths)
  2609.  06h    WORD    offset of WORD buffer for minor version
  2610. --------V-6200C4-----------------------------
  2611. INT 62 u - FGDRIVER v4.02 - "FG_TCDEFINE" - DEFINE TRANSPARENCY OF COLOR INDEX
  2612.     AX = 00C4h
  2613.     BX = color index
  2614.     CX = transparency (00h opaque, other transparent)
  2615. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2616.       their parameters do not change (see #2667 at AX=0000h)
  2617.     This function is ignored in text modes
  2618. SeeAlso: AX=00C5h,AX=00C6h
  2619. --------V-6200C5-----------------------------
  2620. INT 62 u - FGDRIVER v4.02 - "FG_TCMASK" - SET TRANSPARENT COLORS
  2621.     AX = 00C5h
  2622.     BX = colors to consider transparent (bit 0 = color 0, etc)
  2623. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2624.       their parameters do not change (see #2667 at AX=0000h)
  2625.     This call is ignored in text modes
  2626.     The specified colors are considered transparent by "FG_TCXFER"
  2627. SeeAlso: AX=00C4h,AX=00C6h
  2628. --------V-6200C6-----------------------------
  2629. INT 62 u - FGDRIVER v4.02 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
  2630.     AX = 00C6h
  2631.     CX = source video page
  2632.     DX = destination video page
  2633.     ES:BX -> copy record (see #2117)
  2634. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2635.       their parameters do not change (see #2667 at AX=0000h)
  2636.     Pixels which are in any of the colors defined as transparent with
  2637.       "FG_TCMASK" (see AX=00C5h) are left unchanged in the destination
  2638.       region
  2639.     The source and destination regions must not overlap if they are located
  2640.       on the same page
  2641.     This call is ignored in text modes
  2642. SeeAlso: AX=00C4h,AX=00C5h,AX=00CAh
  2643. --------V-6200C7-----------------------------
  2644. INT 62 u - FGDRIVER v4.02 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
  2645.     AX = 00C7h
  2646.     BX = desired video mode (00h-17h, also 18h-1Dh after "FG_SVGAINIT")
  2647.     CX = required number of video pages (ignore memory size if <= 0)
  2648. Return: AX = status
  2649.         0000h mode not available with requested number of pages
  2650.         0001h mode is available
  2651. Note:    the FGDRIVER functions are rearranged with each major release, but
  2652.       their parameters do not change (see #2667 at AX=0000h)
  2653. SeeAlso: AX=0005h,AX=00B0h
  2654. --------V-6200C8-----------------------------
  2655. INT 62 u - FGDRIVER v4.02 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
  2656.     AX = 00C8h
  2657.     CX = length of string
  2658.     ES:BX -> string
  2659. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2660.       their parameters do not change (see #2667 at AX=0000h)
  2661.     The string is displayed starting at the text cursor position using the
  2662.       current text attribute (text modes) or color index (graphics modes)
  2663.     The text cursor position is updated after this call
  2664. SeeAlso: AX=000Ch,AX=0096h,AX=00C9h
  2665. --------V-6200C9-----------------------------
  2666. INT 62 u - FGDRIVER v4.02 - "FG_TEXTC" - DISPLAY STRING OF CHARACTERS (CLIPPED)
  2667.     AX = 00C9h
  2668.     CX = length of string
  2669.     ES:BX -> string
  2670. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2671.       their parameters do not change (see #2667)
  2672.     The string is displayed starting at the text cursor position using the
  2673.       current text attribute (text modes) or color index (graphics modes),
  2674.       showing only the portion within the current clipping window
  2675.     The text cursor position is updated after this call
  2676. SeeAlso: AX=00C8h
  2677. --------V-6200CA-----------------------------
  2678. INT 62 u - FGDRIVER v4.02 - "FG_TRANSFER" - COPY REGION
  2679.     AX = 00CAh
  2680.     CX = source video page
  2681.     DX = destination video page
  2682.     ES:BX -> copy record (see #2117)
  2683. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2684.       their parameters do not change (see #2667 at AX=0000h)
  2685.     The source and destination regions must not overlap if they are located
  2686.       on the same page
  2687. SeeAlso: AX=009Eh,AX=00A2h,AX=00A5h,AX=00C6h
  2688.  
  2689. Format of FGDRIVER copy record:
  2690. Offset    Size    Description    (Table 2117)
  2691.  00h    WORD    left edge column of source region
  2692.  02h    WORD    right edge column of source region
  2693.  04h    WORD    top edge row of source region
  2694.  06h    WORD    bottom edge row of source region
  2695.  08h    WORD    left edge of destination
  2696.  0Ah    WORD    bottom edge of destination
  2697. --------V-6200CB-----------------------------
  2698. INT 62 u - FGDRIVER v4.02 - "FG_UNPACK" - EXPAND MODE-SPECIFIC BITMAP
  2699.     AX = 00CBh
  2700.     ES:BX -> variable pointer record (see #2689)
  2701.     CX = size of source bitmap in bytes
  2702. Return: result buffer filled
  2703. Note:    the FGDRIVER functions are rearranged with each major release, but
  2704.       their parameters do not change (see #2667)
  2705. SeeAlso: AX=0083h
  2706.  
  2707. Format of FGDRIVER UNPACK variable pointer record:
  2708. Offset    Size    Description    (Table 2689)
  2709.  00h    WORD    segment of source bitmap
  2710.  02h    WORD    offset of source bitmap
  2711.  04h    WORD    segment of buffer for resulting bitmap
  2712.  06h    WORD    offset of buffer for resulting bitmap
  2713. --------V-6200CC-----------------------------
  2714. INT 62 u - FGDRIVER v4.02 - "FG_VBADDR" - GET ADDRESS OF VIRTUAL BUFFER
  2715.     AX = 00CCh
  2716.     BX = virtual buffer handle (0000h-001Fh)
  2717. Return: DX:AX -> virtual buffer
  2718. Note:    the FGDRIVER functions are rearranged with each major release, but
  2719.       their parameters do not change (see #2667)
  2720. SeeAlso: AX=00CDh,AX=00CEh,AX=00CFh,AX=00D3h
  2721. --------V-6200CD-----------------------------
  2722. INT 62 u - FGDRIVER v4.02 - "FG_VBALLOC" - CREATE VIRTUAL BUFFER
  2723.     AX = 00CDh
  2724.     BX = width of virtual buffer in pixels
  2725.     CX = height in pixels
  2726. Return: AX = handle for virtual buffer, or
  2727.         FFFEh out of memory
  2728.         FFFFh virtual buffer table full
  2729. Note:    the FGDRIVER functions are rearranged with each major release, but
  2730.       their parameters do not change (see #2667)
  2731. SeeAlso: AX=00CCh,AX=00CEh,AX=00D0h,AX=00D1h,AX=00D2h,AX=00D4h
  2732. --------V-6200CE-----------------------------
  2733. INT 62 u - FGDRIVER v4.02 - "FG_VBCLOSE" - CLOSE ACTIVE VIRTUAL BUFFER
  2734.     AX = 00CEh
  2735. Desc:    close the active virtual buffer and direct further graphics to the
  2736.       active video page
  2737. Note:    the FGDRIVER functions are rearranged with each major release, but
  2738.       their parameters do not change (see #2667)
  2739. SeeAlso: AX=00CCh,AX=00D1h,AX=00D4h,AX=00D5h,AX=00D9h
  2740. --------V-6200CF-----------------------------
  2741. INT 62 u - FGDRIVER v4.02 - "FG_VBCOPY" - COPY RECT BETWEEN VIRTUAL BUFFERS
  2742.     AX = 00CFh
  2743.     ES:BX -> variable record (see #2690)
  2744.     CX = handle for source virtual buffer
  2745.     DX = handle for destination virtual buffer
  2746. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2747.       their parameters do not change (see #2667)
  2748.     if the destination buffer is the same as the source buffer, the regions
  2749.       must not overlap
  2750. SeeAlso: AX=00D0h,AX=00D1h,AX=00D4h,AX=00D6h,AX=00D7h
  2751.  
  2752. Format of FGDRIVER VBCOPY variable record:
  2753. Offset    Size    Description    (Table 2690)
  2754.  00h    WORD    source region's left edge
  2755.  02h    WORD    source region's right edge
  2756.  04h    WORD    source region's top edge
  2757.  06h    WORD    source region's bottom edge
  2758.  08h    WORD    X coordinate of destination's upper left corner
  2759.  0Ah    WORD    Y coordinate of destination's upper left corner
  2760. --------V-6200D0-----------------------------
  2761. INT 62 u - FGDRIVER v4.02 - "FG_VBCUT" - COPY RECT FROM VIDEO TO VIRTUAL BUFFER
  2762.     AX = 00D0h
  2763.     BX = source region's left edge
  2764.     CX = source region's right edge
  2765.     DX = source region's top edge
  2766.     SI = source region's bottom edge
  2767.     DI = X coordinate of destination's upper left corner
  2768.     ES = Y coordinate of destination's upper left corner
  2769. Desc:    copy a rectangle from the active video page to the active virtual
  2770.       buffer
  2771. Note:    the FGDRIVER functions are rearranged with each major release, but
  2772.       their parameters do not change (see #2667)
  2773. SeeAlso: AX=00CDh,AX=00CFh,AX=00D4h,AX=00D6h
  2774. --------V-6200D1-----------------------------
  2775. INT 62 u - FGDRIVER v4.02 - "FG_VBDEFINE" - CREATE VIRTUAL BUFFER
  2776.     AX = 00D1h
  2777.     ES:BX -> memory block for virtual buffer 
  2778.     CX = buffer width in pixels
  2779.     DX = buffer height in pixels
  2780. Return: AX = virtual buffer handle
  2781.         FFFFh on error
  2782. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2783.       their parameters do not change (see #2667)
  2784.     the application-provided buffer must be large enough to hold CX*DX
  2785.       bytes
  2786. SeeAlso: AX=00CCh,AX=00CDh,AX=00CEh,AX=00D2h,AX=00D4h,AX=00D5h
  2787. --------V-6200D2-----------------------------
  2788. INT 62 u - FGDRIVER v4.02 - "FG_VBFREE" - RELEASE VIRTUAL BUFFER
  2789.     AX = 00D2h
  2790.     BX = virtual buffer handle
  2791. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2792.       their parameters do not change (see #2667)
  2793.     this function should be used only for buffers created with FG_VBALLOC
  2794. SeeAlso: AX=00CDh,AX=00D4h,AX=00D5h
  2795. --------V-6200D3-----------------------------
  2796. INT 62 u - FGDRIVER v4.02 - "FG_VBHANDLE" - GET ACTIVE VIRTUAL BUFFER'S HANDLE
  2797.     AX = 00D3h
  2798. Return: AX = handle for active virtual buffer
  2799. Note:    the FGDRIVER functions are rearranged with each major release, but
  2800.       their parameters do not change (see #2667)
  2801. SeeAlso: AX=00CCh,AX=00D4h
  2802. --------V-6200D4-----------------------------
  2803. INT 62 u - FGDRIVER v4.02 - "FG_VBINIT" - INITIALIZE VIRTUAL BUFFER ENVIRONMENT
  2804.     AX = 00D4h
  2805. Return: nothing
  2806. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2807.       their parameters do not change (see #2667)
  2808.     this function must be called before any other virtual buffer functions
  2809.       are used
  2810. SeeAlso: AX=00CDh,AX=00D5h
  2811. --------V-6200D5-----------------------------
  2812. INT 62 u - FGDRIVER v4.02 - "FG_VBOPEN" - MAKE VIRTUAL BUFFER ACTIVE
  2813.     AX = 00D5h
  2814.     BX = virtual buffer handle
  2815. Return: AX = status
  2816.         0000h successful
  2817.         FFFEh no buffer defined for specified handle
  2818.         FFFFh invalid buffer handle
  2819. Note:    the FGDRIVER functions are rearranged with each major release, but
  2820.       their parameters do not change (see #2667)
  2821. SeeAlso: AX=00CDh,AX=00CEh,AX=00D1h,AX=00D4h,AX=00D9h
  2822. --------V-6200D6-----------------------------
  2823. INT 62 u - FGDRIVER v4.02 - "FG_VBPASTE" - COPY RECT FROM VIRTUAL BUF TO VIDEO
  2824.     AX = 00D6h
  2825.     BX = source region's left edge
  2826.     CX = source region's right edge
  2827.     DX = source region's top edge
  2828.     SI = source region's bottom edge
  2829.     DI = X coordinate of destination's upper left corner
  2830.     ES = Y coordinate of destination's upper left corner
  2831. Desc:    copy a rectangle from the active virtual buffer to the active video
  2832.       page
  2833. Note:    the FGDRIVER functions are rearranged with each major release, but
  2834.       their parameters do not change (see #2667)
  2835. SeeAlso: AX=00CFh,AX=00D0h,AX=00D4h,AX=00D7h
  2836. --------V-6200D7-----------------------------
  2837. INT 62 u - FGDRIVER v4.02 - "FG_VBTCCOPY" - COPY RECTANGLE BETWEEN VIRTUAL BUFS
  2838.     AX = 00D7h
  2839.     ES:BX -> variable record (see #2691)
  2840.     CX = source virtual buffer's handle 
  2841.     DX = destination virtual buffer's handle
  2842. Desc:    copy rectangle from one virtual buffer to another with transparent
  2843.       colors
  2844. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2845.       their parameters do not change (see #2667)
  2846.     if the destination buffer is the same as the source buffer, the regions
  2847.       must not overlap
  2848. SeeAlso: AX=00CFh,AX=00D0h,AX=00D6h,AX=00D8h
  2849.  
  2850. Format of FGDRIVER VBTCCOPY variable record:
  2851. Offset    Size    Description    (Table 2691)
  2852.  00h    WORD    source region's left edge
  2853.  02h    WORD    source region's right edge
  2854.  04h    WORD    source region's top edge
  2855.  06h    WORD    source region's bottom edge
  2856.  08h    WORD    X coordinate of destination region's upper left corner
  2857.  0Ah    WORD    Y coordinate of destination region's upper left corner
  2858. --------V-6200D8-----------------------------
  2859. INT 62 u - FGDRIVER v4.02 - "FG_VBTCXFER" - COPY RECTANGLE TO ACTIVE VIDEO PAGE
  2860.     AX = 00D8h
  2861.     BX = source region's left edge
  2862.     CX = source region's right edge
  2863.     DX = source region's top edge
  2864.     SI = source region's bottom edge
  2865.     DI = X coordinate of destination's upper left corner
  2866.     ES = Y coordinate of destination's upper left corner
  2867. Desc:    copy a rectangle from the active virtual buffer to the active video
  2868.       page, with transparent colors
  2869. Note:    the FGDRIVER functions are rearranged with each major release, but
  2870.       their parameters do not change (see #2667)
  2871. SeeAlso: AX=00D6h,AX=00D7h
  2872. --------V-6200D9-----------------------------
  2873. INT 62 u - FGDRIVER v4.02 - "FG_VBUNDEF" - RELEASE HANDLE FOR VIRTUAL BUFFER
  2874.     AX = 00D9h
  2875.     BX = virtual buffer handle
  2876. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2877.       their parameters do not change (see #2667)
  2878.     the specified handle must not reference the currently-active virtual
  2879.       buffer
  2880. SeeAlso: AX=00D1h,AX=00D5h
  2881. --------V-6200DA-----------------------------
  2882. INT 62 u - FGDRIVER v4.02 - "FG_VGASTATE" - SAVE/RESTORE VGA CONTROLLER STATE
  2883.     AX = 00DAh
  2884.     BX = direction (0000h save, else restore)
  2885. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2886.       their parameters do not change (see #2667)
  2887.     this function is only meaningful in modes 0Dh and above
  2888. --------V-6200DB-----------------------------
  2889. INT 62 u - FGDRIVER v4.02 - "FG_VOICE" - START SOUND
  2890.     AX = 00DBh
  2891.     BX = channel on TI sound chip
  2892.         1-3 = channels 1-3, 4 = channel 4 with periodic noise,
  2893.         5 = channel 4 with white noise
  2894.     CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
  2895.           2=2048 Hz for channels 4 and 5)
  2896.     DX = volume
  2897.     SI = duration in clock ticks (continuous if <= 0)
  2898. Program: FGDRIVER is the external video driver for the shareware
  2899.       Fastgraph/Light by Ted Gruber Software
  2900. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2901.       their parameters do not change (see #2667 at AX=0000h)
  2902.     This function is only available on the PCjr and Tandy 1000 machines
  2903. SeeAlso: AX=0080h,AX=00BCh,AX=00DCh
  2904. --------V-6200DC-----------------------------
  2905. INT 62 u - FGDRIVER v4.02 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
  2906.     AX = 00DCh
  2907.     ES:BX -> tone array (see #2118)
  2908.     CX = number of times to repeat tone array
  2909. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2910.       their parameters do not change (see #2667 at AX=0000h)
  2911.     This function is only available on the PCjr and Tandy 1000 machines
  2912. SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DBh
  2913.  
  2914. Format of FGDRIVER tone array element:
  2915. Offset    Size    Description    (Table 2118)
  2916.  00h    WORD    channel number (0000h terminates array)
  2917.  02h    WORD    frequency
  2918.  04h    WORD    volume
  2919.  06h    WORD    duration in 1/72.8 seconds
  2920. --------V-6200DD-----------------------------
  2921. INT 62 u - FGDRIVER v4.02 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
  2922.     AX = 00DDh
  2923.     BX = duration in clock ticks
  2924. Return: after delay elapses
  2925. Note:    the FGDRIVER functions are rearranged with each major release, but
  2926.       their parameters do not change (see #2667 at AX=0000h)
  2927. SeeAlso: AX=00BFh,INT 1A/AX=FF01h
  2928. --------V-6200DE-----------------------------
  2929. INT 62 u - FGDRIVER v4.02 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
  2930.     AX = 00DEh
  2931. Return: after next key pressed
  2932. Note:    the FGDRIVER functions are rearranged with each major release, but
  2933.       their parameters do not change (see #2667 at AX=0000h)
  2934. SeeAlso: AX=000Ah,AX=0046h,AX=0063h,AX=0069h,INT 16/AH=00h
  2935. --------V-6200DF-----------------------------
  2936. INT 62 u - FGDRIVER v4.02 - "FG_WAITVR" - ENABLE/DISABLE VERTICAL RETRACE WAIT
  2937.     AX = 00DFh
  2938.     BX = new state (0000h disabled, 0001h enabled)
  2939. Note:    the FGDRIVER functions are rearranged with each major release, but
  2940.       their parameters do not change (see #2667 at AX=0000h)
  2941. --------V-6200E0-----------------------------
  2942. INT 62 u - FGDRIVER v4.02 - "FG_WHERE" - GET CURRENT CURSOR POSITION
  2943.     AX = 00E0h
  2944.     ES:BX -> variable pointers (see #2119)
  2945. Return: indicated variables filled with cursor row and column for active
  2946.       display
  2947. Note:    the FGDRIVER functions are rearranged with each major release, but
  2948.       their parameters do not change (see #2667 at AX=0000h)
  2949. SeeAlso: AX=0054h,AX=0058h,AX=006Bh,AX=007Eh
  2950.  
  2951. Format of FGDRIVER variable pointers:
  2952. Offset    Size    Description    (Table 2119)
  2953.  00h    WORD    segment of WORD buffer for cursor row
  2954.  02h    WORD    offset of WORD buffer for cursor row
  2955.  04h    WORD    segment WORD buffer for cursor column
  2956.  06h    WORD    offset WORD buffer for cursor column
  2957. --------V-6200E1-----------------------------
  2958. INT 62 u - FGDRIVER v4.02 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
  2959.     AX = 00E1h
  2960.     BX = screen space column
  2961. Return: AX = character space column containing specified coordinate
  2962. Note:    the FGDRIVER functions are rearranged with each major release, but
  2963.       their parameters do not change (see #2667 at AX=0000h)
  2964. SeeAlso: AX=00E2h,AX=00E4h
  2965. --------V-6200E2-----------------------------
  2966. INT 62 u - FGDRIVER v4.02 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
  2967.     AX = 00E2h
  2968.     BX = character space column
  2969. Return: AX = screen space column of leftmost pixel in specified character col
  2970. Note:    the FGDRIVER functions are rearranged with each major release, but
  2971.       their parameters do not change (see #2667 at AX=0000h)
  2972. SeeAlso: AX=00E2h,AX=00E5h
  2973. --------V-6200E3-----------------------------
  2974. INT 62 u - FGDRIVER v4.02 - "FG_XVIEW" - CONVERT VIEWPORT COORDINATE
  2975.     AX = 00E3h
  2976.     BX = horizontal viewport coordinate
  2977. Return: AX = screen space X coordinate corresponding to supplied coordinate
  2978. Notes:    the FGDRIVER functions are rearranged with each major release, but
  2979.       their parameters do not change (see #2667 at AX=0000h)
  2980.     if no viewport has been defined, the returned coordinate will be the
  2981.       same as the viewport coordinate
  2982. SeeAlso: AX=00E2h,AX=00E6h
  2983. --------V-6200E4-----------------------------
  2984. INT 62 u - FGDRIVER v4.02 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
  2985.     AX = 00E4h
  2986.     BX = screen space row
  2987. Return: AX = character space row containing specified coordinate
  2988. Note:    the FGDRIVER functions are rearranged with each major release, but
  2989.       their parameters do not change (see #2667 at AX=0000h)
  2990. SeeAlso: AX=00E1h,AX=00E5h
  2991. --------V-6200E5-----------------------------
  2992. INT 62 u - FGDRIVER v4.02 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
  2993.     AX = 00E5h
  2994.     BX = character space row
  2995. Return: AX = screen space row of topmost pixel in specified character row
  2996. Note:    the FGDRIVER functions are rearranged with each major release, but
  2997.       their parameters do not change (see #2667 at AX=0000h)
  2998. SeeAlso: AX=00E2h,AX=00E4h,AX=00E6h
  2999. --------V-6200E6-----------------------------
  3000. INT 62 u - FGDRIVER v4.02 - "FG_YVIEW" - TRANSLATE VERTICAL VIEWPORT COORDINATE
  3001.     AX = 00E6h
  3002.     BX = viewport Y coordinate
  3003. Return: AX = screen space row for viewport coordinate
  3004. Program: FGDRIVER is the external video driver for the shareware
  3005.       Fastgraph/Light by Ted Gruber Software
  3006. Notes:    the FGDRIVER functions are rearranged with each major release, but
  3007.       their parameters do not change (see #2667 at AX=0000h)
  3008.     if no viewport has been defined, the returned coordinate will be the
  3009.       same as the viewport coordinate
  3010. SeeAlso: AX=00E3h,AX=00E5h
  3011. --------T-6201-------------------------------
  3012. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  3013.     AH = 01h
  3014. Program: Cswitch is a set of multitasking functions by Herb Rose
  3015. SeeAlso: AH=05h"Cswitch",AH=06h"Cswitch",INT 15/AX=1000h,INT 2F/AX=1680h
  3016. --------N-6201-------------------------------
  3017. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  3018.     AH = 01h
  3019. Return: CF clear if successful
  3020.     CF set on error
  3021.         AL = error code
  3022. Range:    INT 4C to INT FB, selected by configuration
  3023. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3024. --------T-6202-------------------------------
  3025. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  3026.     AH = 02h
  3027.     DX = semaphore number (0-63)
  3028. Return: AX = FFFFh bad semaphore number
  3029.          else  success
  3030. SeeAlso: AH=03h"Cswitch",AH=04h"Cswitch"
  3031. --------N-6202-------------------------------
  3032. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - INITIALIZE
  3033.     AH = 02h
  3034. Return: CF clear if successful
  3035.     CF set on error
  3036.         AL = error code
  3037. SeeAlso: AH=00h"ETHDEV",AH=03h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  3038. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  3039. --------T-6203-------------------------------
  3040. INT 62 - Cswitch - CHECK SEMAPHORE
  3041.     AH = 03h
  3042.     DX = semaphore number (0-63)
  3043. Return: AX = status
  3044.         FFFFh not owned
  3045.         else  owned
  3046. SeeAlso: AH=02h,AH=04h
  3047. --------N-6203-------------------------------
  3048. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET REAL IP ADDRESS
  3049.     AH = 03h
  3050.     DS:SI -> DWORD buffer for IP address
  3051. Return: CF clear if successful
  3052.     CF set on error
  3053.         AL = error code
  3054. Range:    INT 4C to INT FB, selected by configuration
  3055. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3056.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3057.       consecutive interrupt (64h by default) if it is loaded
  3058. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3059. --------T-6204-------------------------------
  3060. INT 62 - Cswitch - TRIGGER SEMAPHORE
  3061.     AH = 04h
  3062.     DX = semaphore number (0-63)
  3063. Return: AX = status
  3064.         FFFFh bad semaphore number
  3065.         else  success
  3066. SeeAlso: AH=02h"Cswitch",AH=03h"Cswitch"
  3067. --------N-6204-------------------------------
  3068. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  3069.     AH = 04h
  3070.     BX = ???
  3071.     ES:SI -> FAR routine for ???
  3072. Return: CF clear if successful
  3073.     CF set on error
  3074.         AL = error code
  3075. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3076. --------T-6205-------------------------------
  3077. INT 62 - Cswitch - SLEEP
  3078.     AH = 05h
  3079.     BX = seconds to sleep
  3080. SeeAlso: AH=01h"Cswitch",AH=06h"Cswitch",AH=08h"Cswitch"
  3081. --------N-6205-------------------------------
  3082. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  3083.     AH = 05h
  3084.     ???
  3085. Return: CF clear if successful
  3086.     CF set on error
  3087.         AL = error code
  3088. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3089. --------T-6206-------------------------------
  3090. INT 62 - Cswitch - SUSPEND
  3091.     AH = 06h
  3092. SeeAlso: AH=05h"Cswitch",AH=08h"Cswitch"
  3093. --------N-6206-------------------------------
  3094. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  3095.     AH = 06h
  3096.     ???
  3097. Return: CF clear if successful
  3098.     CF set on error
  3099.         AL = error code
  3100. Range:    INT 4C to INT FB, selected by configuration
  3101. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3102.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3103.       consecutive interrupt (64h by default) if it is loaded
  3104. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3105. --------T-6207-------------------------------
  3106. INT 62 - Cswitch - SPAWN
  3107.     AH = 07h
  3108.     ES:BX -> function address to start executing at
  3109.     CX = priority (1-10)
  3110. Return: AX = result/status
  3111.         FFFDh  no free memory control blocks
  3112.         FFFEh  no free task control blocks
  3113.         FFFFh  not enough memory to create new task stack
  3114.         >0       the tcb number of the new task, indicating no error
  3115. SeeAlso: AH=0Fh"Cswitch",AH=10h"Cswitch"
  3116. --------N-6207-------------------------------
  3117. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  3118.     AH = 07h
  3119.     DS:SI -> ???
  3120. Return: CF clear if successful
  3121.     CF set on error
  3122.         AL = error code
  3123. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3124. --------T-6208-------------------------------
  3125. INT 62 - Cswitch - WAKE UP TASK
  3126.     AH = 08h
  3127.     BX = tcb identifier
  3128. SeeAlso: AH=05h,AH=06h
  3129. --------N-6208-------------------------------
  3130. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  3131.     AH = 08h
  3132.     CX = ???
  3133.     ES:SI -> ??? buffer (see #2120)
  3134. Return: CF clear if successful
  3135.     CF set on error
  3136.         AL = error code
  3137. Range:    INT 4C to INT FB, selected by configuration
  3138. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3139.  
  3140. Format of BW-TCP ??? buffer:
  3141. Offset    Size    Description    (Table 2120)
  3142.  00h  6 BYTEs    hardware address???
  3143.  06h  6 BYTEs    ???
  3144.  0Ch    WORD    ???
  3145.  0Eh    WORD    ???
  3146. ----------6208--CXFFFE-----------------------
  3147. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
  3148.     AH = 08h
  3149.     CX = FFFEh
  3150.     DX = FFFFh
  3151. Return: AX = PSP address of resident DBLIBRARY
  3152. Note:    this call does not free the memory allocated to the TSR; the calling
  3153.       code must do the deallocation.
  3154. SeeAlso: INT 62"DBLIBRARY"
  3155. --------T-6209-------------------------------
  3156. INT 62 - Cswitch - SET PRIORITY
  3157.     AH = 09h
  3158.     BX = new base priority (1-10)
  3159. Note:    the lower the priority is numerically, the more often the task will run
  3160. --------N-6209-------------------------------
  3161. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - HOOK TIMER INTERRUPT
  3162.     AH = 09h
  3163. Return: CF clear if successful
  3164.         AX = handler ID
  3165.     CF set on error
  3166.         AL = error code
  3167. Range:    INT 4C to INT FB, selected by configuration
  3168. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3169.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3170.       consecutive interrupt (64h by default) if it is loaded
  3171. SeeAlso: AH=0Ah"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  3172. SeeAlso: INT 64"BW-NFS"
  3173. --------T-620A-------------------------------
  3174. INT 62 - Cswitch - TEST MESSAGE QUEUE
  3175.     AH = 0Ah
  3176.     DX = queue number (0-63)
  3177. Return: AX = result/message size
  3178.         0000h nothing on queue
  3179.         FFFFh bad queue number
  3180.         else  number of bytes in first message in queue
  3181. SeeAlso: AH=0Bh"Cswitch",AH=0Ch"Cswitch"
  3182. --------N-620A-------------------------------
  3183. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - UNHOOK TIMER INTERRUPT
  3184.     AH = 0Ah
  3185.     DX = handler ID
  3186. Return: CF clear if successful
  3187.     CF set on error
  3188.         AL = error code
  3189. SeeAlso: AH=09h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  3190. SeeAlso: INT 64"BW-NFS"
  3191. --------T-620B-------------------------------
  3192. INT 62 - Cswitch - SEND MESSAGE
  3193.     AH = 0Bh
  3194.     CX = number of bytes to write
  3195.     DS:SI -> buffer
  3196.     DX = queue number (0-63)
  3197. Return: AX = result/message size
  3198.         0000h no message was on queue
  3199.         FFFEh triggered by something arriving, redo the call
  3200.         FFFFh bad queue number
  3201.         else  number of bytes in message
  3202. SeeAlso: AH=0Ah"Cswitch",AH=0Ch"Cswitch"
  3203. --------N-620B-------------------------------
  3204. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ADD ???
  3205.     AH = 0Bh
  3206.     AL = ???
  3207.     DX = ???
  3208.     BP = ???
  3209.     ES:SI -> ???
  3210. Return: CF clear if successful
  3211.     CF set on error
  3212.         AL = error code
  3213. SeeAlso: AH=0Ch"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  3214. SeeAlso: INT 64"BW-NFS"
  3215. --------T-620C-------------------------------
  3216. INT 62 - Cswitch - READ MESSAGE
  3217.     AH = 0Ch
  3218.     CX = number of bytes to read
  3219.     DS:SI -> buffer
  3220.     DX = queue number (0-63)
  3221. Return: AX = status
  3222.         FFFFh bad queue number
  3223.         else  number of bytes transferred
  3224. SeeAlso: AH=0Ah,AH=0Bh
  3225. --------N-620C-------------------------------
  3226. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - REMOVE ???
  3227.     AH = 0Ch
  3228.     DX = ???
  3229.     BP = ???
  3230. Return: CF clear if successful
  3231.     CF set on error
  3232.         AL = error code
  3233. Range:    INT 4C to INT FB, selected by configuration
  3234. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3235.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3236.       consecutive interrupt (64h by default) if it is loaded
  3237. SeeAlso: AH=0Bh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  3238. SeeAlso: INT 64"BW-NFS"
  3239. --------T-620D-------------------------------
  3240. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  3241.     AH = 0Dh
  3242. SeeAlso: AH=0Eh"Cswitch"
  3243. --------N-620D-------------------------------
  3244. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  3245.     AH = 0Dh
  3246. Return: CF clear if successful
  3247.     CF set on error
  3248.         AL = error code
  3249. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3250. --------T-620E-------------------------------
  3251. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  3252.     AH = 0Eh
  3253. SeeAlso: AH=0Dh"Cswitch"
  3254. --------N-620E-------------------------------
  3255. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - BEGIN CRITICAL SECTION
  3256.     AH = 0Eh
  3257. Return: CF clear if successful
  3258.     CF set on error
  3259.         AL = error code
  3260. SeeAlso: AH=0Fh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  3261. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  3262. --------T-620F-------------------------------
  3263. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  3264.     AH = 0Fh
  3265.     ES:BX -> command line
  3266.     CX = priority (1-10)
  3267.     DX = background flag (nonzero allows loading to EMS)
  3268. Return: AX = status
  3269.         0000h task loader queue is full
  3270.         0001h  no error
  3271. SeeAlso: AH=07h"Cswitch",AH=10h"Cswitch",AH=13h"Cswitch"
  3272. --------N-620F-------------------------------
  3273. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - END CRITICAL SECTION
  3274.     AH = 0Fh
  3275. Return: CF clear if successful
  3276.     CF set on error
  3277.         AL = error code
  3278. Range:    INT 4C to INT FB, selected by configuration
  3279. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3280.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3281.       consecutive interrupt (64h by default) if it is loaded
  3282. SeeAlso: AH=0Eh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  3283. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  3284. --------T-6210-------------------------------
  3285. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  3286.     AH = 10h
  3287. SeeAlso: AH=07h"Cswitch",AH=0Fh"Cswitch"
  3288. --------N-6210-------------------------------
  3289. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - QUERY CRITICAL SECTION
  3290.     AH = 10h
  3291. Return: CF clear if no critical section active
  3292.     CF set if in critical section
  3293. SeeAlso: AH=0Eh"ETHDEV",AH=0Fh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  3294. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  3295. --------T-6211-------------------------------
  3296. INT 62 - Cswitch - GET TCB INFORMATION
  3297.     AH = 11h
  3298.     ES:BX -> a pointer which will be set to the tcb address
  3299. Return: AX = tcb indentifier
  3300. SeeAlso: AH=12h
  3301. --------N-6211-------------------------------
  3302. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  3303.     AH = 11h
  3304.     ES:SI -> ???
  3305. Return: CF clear
  3306. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3307. --------T-6212-------------------------------
  3308. INT 62 - Cswitch - GET TCB ADDRESS
  3309.     AH = 12h
  3310.     ES:BX -> a pointer which will be set to the tcb table address
  3311. Return: AX = tcb indentifier
  3312. SeeAlso: AH=11h"Cswitch"
  3313. --------N-6212-------------------------------
  3314. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET SOCKET NUMBER???
  3315.     AH = 12h
  3316. Return: CF clear if successful
  3317.         AX = socket number??? (memory variable incremented after reading)
  3318.     CF set on error
  3319.         AL = error code
  3320. Range:    INT 4C to INT FB, selected by configuration
  3321. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3322.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3323.       consecutive interrupt (64h by default) if it is loaded
  3324. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3325. --------T-6213-------------------------------
  3326. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  3327.     AH = 13h
  3328. Return: AX = result
  3329.         FFFCh no Memory Control Blocks available
  3330.         FFFDh no TCBs available
  3331.         FFFEh insufficient memory
  3332.         FFFFh cannot open file
  3333.         0000h load in progress (not done yet)
  3334.         else  tcb indentifier
  3335. SeeAlso: AH=0Fh
  3336. --------N-6213-------------------------------
  3337. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  3338.     AH = 13h
  3339.     CX = ???
  3340. Return: CF clear if successful
  3341.         AL = 00h
  3342.     CF set on error
  3343.         AL = error code
  3344. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3345. --------N-6214-------------------------------
  3346. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  3347.     AH = 14h
  3348.     ES:SI -> ???
  3349. Return: CF clear if successful
  3350.         AL = 00h
  3351.     CF set on error
  3352.         AL = error code
  3353. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3354. --------N-6215-------------------------------
  3355. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET ???
  3356.     AH = 15h
  3357. Return: CF clear if successful
  3358.         AX = ??? (destroyed???)
  3359.     CF set on error
  3360.         AL = error code
  3361. Range:    INT 4C to INT FB, selected by configuration
  3362. Notes:    call this function after reading the "ETHDEV27" device
  3363.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3364.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3365.       consecutive interrupt (64h by default) if it is loaded
  3366. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3367. --------N-6216-------------------------------
  3368. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  3369.     AH = 16h
  3370.     ???
  3371. Return: CF clear if successful
  3372.     CF set on error
  3373.         AL = error code
  3374. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3375. --------N-6217-------------------------------
  3376. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  3377.     AH = 17h
  3378.     DX = segment of ???
  3379. Return: CF clear
  3380. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3381. --------N-6218-------------------------------
  3382. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ALLOCATE AND MAP EMS FOR DRIVER
  3383.     AH = 18h
  3384. Return: CF clear if successful
  3385.     CF set on error
  3386.         AL = error code
  3387. Range:    INT 4C to INT FB, selected by configuration
  3388. Notes:    calls function 17h after EMS allocated and mapped
  3389.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3390.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3391.       consecutive interrupt (64h by default) if it is loaded
  3392. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  3393. --------R-6247-------------------------------
  3394. INT 62 - PC Tools v7 COMMUTE - ???
  3395.     AH = 47h
  3396.     AL = subfunction (00h-31h)
  3397.     ???
  3398.     CF set
  3399. Return: ???
  3400. Program: COMMUTE is a remote-control program bundled with Central Point
  3401.       Software's PC Tools
  3402. --------R-6248-------------------------------
  3403. INT 62 - PC Tools v7 COMMUTE - ???
  3404.     AH = 48h
  3405.     AL = ???
  3406.     ???
  3407.     CF set
  3408. Return: ???
  3409. --------R-6249-------------------------------
  3410. INT 62 - PC Tools v7 COMMUTE - ???
  3411.     AH = 49h
  3412.     ???
  3413.     CF set
  3414. Return: ???
  3415. Note:    may be the same as AH=4Ch
  3416. --------R-624A-------------------------------
  3417. INT 62 - PC Tools v7 COMMUTE - ???
  3418.     AH = 4Ah
  3419.     AL = subfunction (00h-46h)
  3420.     ???
  3421.     CF set
  3422. Return: ???
  3423. --------R-624B--BX1234-----------------------
  3424. INT 62 - PC Tools v7 COMMUTE - ???
  3425.     AH = 4Bh
  3426.     BX = 1234h
  3427.     CX = 1234h
  3428.     ES = ???
  3429.     CF set
  3430. Return: ???
  3431. Program: COMMUTE is a remote-control program bundled with Central Point
  3432.       Software's PC Tools
  3433. --------R-624C-------------------------------
  3434. INT 62 - PC Tools v7 COMMUTE - ???
  3435.     AH = 4Ch
  3436.     BL = subfunction
  3437.         00h ???
  3438.         02h ???
  3439. Return: CF clear if successful
  3440.     CF set on error
  3441. --------R-626262-----------------------------
  3442. INT 62 - PC Tools v7 COMMUTE - INSTALLATION CHECK
  3443.     AX = 6262h
  3444.     CF set
  3445. Return: AX = 0000h
  3446.     BX = segment of resident code's PSP
  3447. Program: COMMUTE is a remote-control program bundled with Central Point
  3448.       Software's PC Tools
  3449. --------s-62C0-------------------------------
  3450. INT 62 U - GWBTSR - API
  3451.     AH = C0h
  3452.     AL = function
  3453.         00h installation check
  3454.         Return: AX = 00FFh if installed
  3455.         01h ???
  3456. Program: GWBTSR is a huge (48K) resident mixer controller for the Gateway 2000
  3457.       sound card (OEM version of Aztech Sound Galaxy)
  3458. Index:    installation check;GWBTSR
  3459. --------N-62FE-------------------------------
  3460. INT 62 - BW-TCP - ETHDRV.SYS - MAP EMS PAGE FRAME
  3461.     AH = FEh
  3462.     AL = direction
  3463.         00h map in driver's memory block
  3464.         01h map out driver's memory block
  3465. Return: CF clear if successful
  3466.     CF set on error
  3467.         AL = error code
  3468. Range:    INT 4C to INT FB, selected by configuration
  3469. Notes:    this function is supported by at least the SLIP and ODI versions of
  3470.       ETHDEV.SYS
  3471.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3472.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3473.       consecutive interrupt (64h by default) if it is loaded
  3474. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=00h"ETHDEV",INT 62/AH=18h"ETHDEV"
  3475. SeeAlso: INT 63"BW-TCP",INT 64/AH=FEh
  3476. --------*-63---------------------------------
  3477. INT 63 - reserved for user interrupt
  3478. --------d-63---------------------------------
  3479. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  3480. Desc:    this vector stores the last four bytes of the parameter table for
  3481.       hard disk 0
  3482. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  3483. --------b-63---------------------------------
  3484. INT 63 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
  3485. Desc:    the low word of this vector contains the segment of the RAM data area
  3486.       to be used by the expansion ROM at F400h:4000h, and the high word
  3487.       contains the length of the data area; this segment and size are
  3488.       both set to 0000h if no ROM is installed at F400h:4000h
  3489. SeeAlso: INT 60"TI Professional PC",INT 62"TI Professional"
  3490. SeeAlso: INT 64"TI Professional PC"
  3491. ----------63---------------------------------
  3492. INT 63 - Oracle SQL Protected Mode Executive - ???
  3493. --------d-63---------------------------------
  3494. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  3495. Desc:    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if
  3496.       INT 13 has been moved there) and places the old value here
  3497. ----------63---------------------------------
  3498. INT 63 - Kofax KF9X00 image manipulation card interface
  3499. --------Q-63---------------------------------
  3500. INT 63 - DESQview/X - SOCKET API
  3501. Notes:    parameters are passed by patching!! data field immediately following
  3502.       the entry point, as detailed below (see #2121); the preferred
  3503.       method for calling the socket API is via INT 15/AX=DE2Eh
  3504.     the installation check consists of testing for the string "dvxunix"
  3505.       (yes, lowercase) at offset 9 from the interrupt handler start
  3506.       (see #2121)
  3507. SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
  3508. Index:    installation check;DESQview/X socket interface
  3509.  
  3510. Format of DESQview/X socket interrupt handler entry:
  3511. Offset    Size    Description    (Table 2121)
  3512.  00h  3 BYTEs    near jump or short jump + NOP to actual interrupt handler
  3513.  03h    WORD    offset from following pointer for initial top of local stack
  3514.  05h    DWORD    pointer to argument/stack block (see INT 15/AX=DE2Eh)
  3515.  09h  7 BYTEs    signature "dvxunix"
  3516. --------b-6300-------------------------------
  3517. INT 63 - HP 100LX - MAP HIGH MEMORY
  3518.     AH = 00h
  3519.     AL = physical page (00h seg C000, 01h seg C400h, ...)
  3520.     BX = zero-based logical page
  3521.     CX = page number
  3522.     DX = device ID (00h system ROM, 05h plugin, etc.)
  3523. Return: ???
  3524. SeeAlso: AH=01h
  3525. --------N-6300-------------------------------
  3526. INT 63 - BW-TCP - TCPIP.SYS - SET IP ADDRESS???
  3527.     AH = 00h
  3528.     DS:BX -> DWORD containing IP address (big-endian)
  3529. Return: CF clear if successful
  3530.     CF set on error
  3531.     AX destroyed
  3532. Range:    INT 4D to INT FC, selected by configuration
  3533. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3534.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3535.       consecutive interrupt (64h by default) if it is loaded
  3536. SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
  3537. --------b-6301-------------------------------
  3538. INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
  3539.     AH = 01h
  3540.     AL = function (00h save, 01h restore)
  3541.     ???
  3542. Return: ???
  3543. --------N-6301-------------------------------
  3544. INT 63 - BW-TCP - TCPIP.SYS - ???
  3545.     AH = 01h
  3546.     ES:BX -> ???
  3547.     ???
  3548. Return: ???
  3549. Range:    INT 4D to INT FC, selected by configuration
  3550. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3551.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3552.       consecutive interrupt (64h by default) if it is loaded
  3553. SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
  3554. --------N-6302-------------------------------
  3555. INT 63 - BW-TCP - TCPIP.SYS - ???
  3556.     AH = 02h
  3557.     ???
  3558. Return: ???
  3559. SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
  3560. --------N-6303-------------------------------
  3561. INT 63 - BW-TCP - TCPIP.SYS - GET IP ADDRESS
  3562.     AH = 03h
  3563.     DS:SI -> buffer for DWORD IP address (big-endian)
  3564. Return: AX destroyed
  3565.     CF clear if successful
  3566.     CF set on error
  3567. Note:    this call may use ARP or RARP to determine the address
  3568. --------N-6304-------------------------------
  3569. INT 63 - BW-TCP - TCPIP.SYS - ???
  3570.     AH = 04h
  3571.     ???
  3572. Return: ???
  3573. --------N-6305-------------------------------
  3574. INT 63 - BW-TCP - TCPIP.SYS - ???
  3575.     AH = 05h
  3576.     DS:BX -> ???
  3577.     ES:SI -> ???
  3578. Return: ???
  3579. Range:    INT 4D to INT FC, selected by configuration
  3580. --------N-6306-------------------------------
  3581. INT 63 - BW-TCP - TCPIP.SYS - ???
  3582.     AH = 06h
  3583.     ???
  3584. Return: ???
  3585. --------N-6307-------------------------------
  3586. INT 63 - BW-TCP - TCPIP.SYS - ???
  3587.     AH = 07h
  3588.     ???
  3589. Return: ???
  3590. --------N-6308-------------------------------
  3591. INT 63 - BW-TCP - TCPIP.SYS - SET DEFAULT ??? HANDLER
  3592.     AH = 08h
  3593.     DS:BX -> DWORD containing IP address
  3594. Return: CF clear if successful
  3595.     CF set on error
  3596.     ???
  3597. --------N-6309-------------------------------
  3598. INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
  3599.     AH = 09h
  3600.     BL = handler type
  3601.     ES:SI -> FAR handler of specified type
  3602. Return: ???
  3603. SeeAlso: AH=0Ah,AH=0Dh
  3604. --------N-630A-------------------------------
  3605. INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
  3606.     AH = 0Ah
  3607.     BL = handler type
  3608. Return: CF clear if successful
  3609.     CF set on error (no handler of specified type installed)
  3610. SeeAlso: AH=09h
  3611. --------N-630B-------------------------------
  3612. INT 63 - BW-TCP - TCPIP.SYS - ???
  3613.     AH = 0Bh
  3614.     AL = ???
  3615.     DL = ???
  3616.     DS:BX -> ???
  3617.     ES:SI -> ???
  3618. Return: ???
  3619. --------N-630C-------------------------------
  3620. INT 63 - BW-TCP - TCPIP.SYS - ???
  3621.     AH = 0Ch
  3622.     ???
  3623. Return: ???
  3624. Range:    INT 4D to INT FC, selected by configuration
  3625. --------N-630D-------------------------------
  3626. INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
  3627.     AH = 0Dh
  3628.     ???
  3629. Return: ???
  3630. Note:    if not already installed, installs a type 06h handler with AH=09h
  3631. SeeAlso: AH=09h
  3632. --------N-630E-------------------------------
  3633. INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
  3634.     AH = 0Eh
  3635.     ???
  3636. Return: ???
  3637. SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
  3638. --------N-630F-------------------------------
  3639. INT 63 - BW-TCP - TCPIP.SYS - ???
  3640.     AH = 0Fh
  3641.     AL = ???
  3642.     SI = ???
  3643.     DS:DI -> ???
  3644.     ???
  3645. Return: ???
  3646. Range:    INT 4D to INT FC, selected by configuration
  3647. --------N-6310-------------------------------
  3648. INT 63 - BW-TCP - TCPIP.SYS - ???
  3649.     AH = 10h
  3650.     DS:DI -> ???
  3651.     ???
  3652. Return: ???
  3653. --------N-6311-------------------------------
  3654. INT 63 - BW-TCP - TCPIP.SYS - ???
  3655.     AH = 11h
  3656.     ???
  3657. Return: ???
  3658. --------N-6312-------------------------------
  3659. INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
  3660.     AH = 12h
  3661.     DS:SI -> ???
  3662.     ES:BP -> ???
  3663. Return: ???
  3664. SeeAlso: INT 61/AH=23h
  3665. --------N-6313-------------------------------
  3666. INT 63 - BW-TCP - TCPIP.SYS - NOP
  3667.     AH = 13h
  3668. Return: nothing
  3669. Range:    INT 4D to INT FC, selected by configuration
  3670. --------N-6314-------------------------------
  3671. INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
  3672.     AH = 14h
  3673.     BX = network descriptor???
  3674.     DS:SI -> ???
  3675.     ES:BP -> ???
  3676. Return: ???
  3677. SeeAlso: INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
  3678. --------N-6315-------------------------------
  3679. INT 63 - BW-TCP - TCPIP.SYS - ???
  3680.     AH = 15h
  3681.     DS:DI -> ???
  3682.     ???
  3683. Return: ???
  3684. Range:    INT 4D to INT FC, selected by configuration
  3685. --------N-6316-------------------------------
  3686. INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
  3687.     AH = 16h
  3688.     DS:DI -> ???
  3689. Return: ???
  3690. Note:    calls AH=17h after preprocessing
  3691. SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
  3692. --------N-6317-------------------------------
  3693. INT 63 - BW-TCP - TCPIP.SYS - ???
  3694.     AH = 17h
  3695.     DS:DI -> ???
  3696.     ???
  3697. Return: ???
  3698. Range:    INT 4D to INT FC, selected by configuration
  3699. SeeAlso: AH=18h
  3700. --------N-6318-------------------------------
  3701. INT 63 - BW-TCP - TCPIP.SYS - ???
  3702.     AH = 18h
  3703.     DS:DI -> ???
  3704.     ???
  3705. Return: ???
  3706. Note:    same as AH=17h, except performed with interrupts disabled
  3707. SeeAlso: AH=17h
  3708. --------N-6319-------------------------------
  3709. INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
  3710.     AH = 19h
  3711.     DS:DI -> ???
  3712.     ???
  3713. Return: BX = number of bytes NOT written
  3714.     ???
  3715. Range:    INT 4D to INT FC, selected by configuration
  3716. Note:    calls AH=17h with interrupts disabled and ??? set to 01h
  3717. SeeAlso: AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
  3718. --------N-631A-------------------------------
  3719. INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
  3720.     AH = 1Ah
  3721.     CX = maximum number of bytes to read
  3722.     ES:BP -> ???
  3723.     ???
  3724. Return: CX = number of bytes actually read
  3725.     ???
  3726. SeeAlso: AH=19h,INT 61/AH=1Bh"PC/TCP"
  3727. --------N-631B-------------------------------
  3728. INT 63 - BW-TCP - TCPIP.SYS - ???
  3729.     AH = 1Bh
  3730.     CX = ???
  3731.     ES:BP -> ???
  3732. Return: DX = ???
  3733.     ???
  3734. Range:    INT 4D to INT FC, selected by configuration
  3735. --------N-631C-------------------------------
  3736. INT 63 - BW-TCP - TCPIP.SYS - ???
  3737.     AH = 1Ch
  3738.     DS:DI -> ???
  3739.     ???
  3740. Return: ???
  3741. Note:    calls AH=17h with ???
  3742. SeeAlso: AH=17h
  3743. --------N-631D-------------------------------
  3744. INT 63 - BW-TCP - TCPIP.SYS - ???
  3745.     AH = 1Dh
  3746.     ???
  3747. Return: ???
  3748. Range:    INT 4D to INT FC, selected by configuration
  3749. --------N-631E-------------------------------
  3750. INT 63 - BW-TCP - TCPIP.SYS - ???
  3751.     AH = 1Eh
  3752.     DS:BX -> DWORD containing IP address (big-endian)
  3753.     ???
  3754. Return: CF clear if successful
  3755.     CF set on error
  3756.     ???
  3757. --------N-631F-------------------------------
  3758. INT 63 - BW-TCP - TCPIP.SYS - SET SOCKET ??? HANDLER
  3759.     AH = 1Fh
  3760.     BX = socket number
  3761.     ES:SI -> FAR function for ???
  3762. Return: CF clear if successful
  3763.     CF set on error (out of slots)
  3764. SeeAlso: AH=20h
  3765. --------N-6320-------------------------------
  3766. INT 63 - BW-TCP - TCPIP.SYS - REMOVE SOCKET ??? HANDLER
  3767.     AH = 20h
  3768.     BX = socket number
  3769. Return: CF clear if successful
  3770.     CF set on error (not set)
  3771. Range:    INT 4D to INT FC, selected by configuration
  3772. SeeAlso: AH=1Fh
  3773. --------N-6321-------------------------------
  3774. INT 63 - BW-TCP - TCPIP.SYS - ???
  3775.     AH = 21h
  3776.     ES:SI -> ???
  3777. Return: ???
  3778. SeeAlso: INT 61/AH=1Ch"PC/TCP"
  3779. --------N-6322-------------------------------
  3780. INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
  3781.     AH = 22h
  3782. Return: CF clear
  3783. Range:    INT 4D to INT FC, selected by configuration
  3784. Note:    decrements a counter if not already zero, and calls AH=0Ah with BL=11h
  3785.       if the counter reaches zero
  3786. --------N-6323-------------------------------
  3787. INT 63 - BW-TCP - TCPIP.SYS - ???
  3788.     AH = 23h
  3789.     DS:BX -> ???
  3790.     ES:SI -> 6-byte buffer for ???
  3791. Return: CF clear if successful
  3792.     CF set on error
  3793. --------N-6324-------------------------------
  3794. INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
  3795.     AH = 24h
  3796. Return: AX = socket number (0400h-FFFFh)
  3797. Range:    INT 4D to INT FC, selected by configuration
  3798. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3799.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3800.       consecutive interrupt (64h by default) if it is loaded
  3801. SeeAlso: INT 62/AH=12h"ETHDEV",INT 64"BW-NFS"
  3802. --------N-6325-------------------------------
  3803. INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
  3804.     AH = 25h
  3805. Return: CL:CH:DL:DH = caller's Internet address
  3806. SeeAlso: AH=26h,INT 61/AH=05h"PC/TCP"
  3807. --------N-6326-------------------------------
  3808. INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
  3809.     AH = 26h
  3810.     CL:CH:DL:DH = Internet address
  3811. Return: nothing
  3812. Range:    INT 4D to INT FC, selected by configuration
  3813. Note:    this function sets a different variable than AH=25h returns
  3814. SeeAlso: AH=25h
  3815. --------N-6327-------------------------------
  3816. INT 63 - BW-TCP - TCPIP.SYS - SET ???
  3817.     AH = 27h
  3818.     BX = ???
  3819.     ES:SI -> ???
  3820. Return: ???
  3821. --------N-6328-------------------------------
  3822. INT 63 - BW-TCP - TCPIP.SYS - ???
  3823.     AH = 28h
  3824.     ???
  3825. Return: ???
  3826. --------N-6329-------------------------------
  3827. INT 63 - BW-TCP - TCPIP.SYS - ???
  3828.     AH = 29h
  3829.     ???
  3830. Return: ???
  3831. Range:    INT 4D to INT FC, selected by configuration
  3832. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3833.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3834.       consecutive interrupt (64h by default) if it is loaded
  3835. --------*-64---------------------------------
  3836. INT 64 - reserved for user interrupt
  3837. --------d-64---------------------------------
  3838. INT 64 - Adaptec controllers - DRIVE 1 DATA
  3839. Desc:    this vector stores the first four bytes of the parameter table for
  3840.       hard disk 1
  3841. Notes:    these vectors are used by the following Adaptec controllers:
  3842.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  3843.     these vectors are NOT used by the following Adaptec controllers:
  3844.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  3845. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  3846. --------b-64---------------------------------
  3847. INT 64 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
  3848. Desc:    the low word of this vector contains the segment of the RAM data area
  3849.       to be used by the expansion ROM at F400h:6000h, and the high word
  3850.       contains the length of the data area; this segment and size are
  3851.       both set to 0000h if no ROM is installed at F400h:6000h
  3852. SeeAlso: INT 60"TI Professional PC",INT 63"TI Professional"
  3853. SeeAlso: INT 65"TI Professional PC"
  3854. ----------64---------------------------------
  3855. INT 64 - Oracle SQL Protected Mode Executive - ???
  3856. --------N-64---------------------------------
  3857. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  3858. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  3859.       versions do not use this interrupt for IPX/SPX access, instead
  3860.       getting an entry point from INT 2F/AX=7A00h
  3861. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  3862. --------h-64---------------------------------
  3863. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  3864. SeeAlso: INT 65"DG10",INT 66"DG10"
  3865. --------r-64---------------------------------
  3866. INT 64 - Extended Batch Language v3.14+
  3867.     AH = function
  3868.         00h to 5Fh chained to previous handler
  3869.         60h to 6Ch reserved, return immediately
  3870.         80h to FFh chained to previous handler
  3871.         6Dh (v4.01+) insert tone in queue
  3872.         AL = ???
  3873.         CX = frequency in Hertz
  3874.         DL = duration in clock ticks
  3875.         Return: AL = 00h if note stored
  3876.                = 01h if no room to store
  3877.         6Eh clear ??? counter/flag
  3878.         6Fh return counter/flag that AH=6Eh clears
  3879.         70h ???
  3880.         AL = ???
  3881.         71h ???
  3882.         AL = ???
  3883.         72h ???
  3884.         73h insert byte at end of keyboard buffer
  3885.         AL = byte to insert
  3886.         Return: AL = 00h if byte inserted
  3887.                = 01h if no room to store
  3888.         74h insert byte at front of keyboard buffer
  3889.         AL = byte to insert
  3890.         Return: AL = 00h if byte inserted
  3891.                = 01h if no room to store
  3892.         75h ???
  3893.         76h get keyboard "stack" status
  3894.         AL = 'K' if kbd read will read physical keyboard
  3895.              'S' if it will read EBL internal keyboard buffer
  3896.         AH = ???
  3897.         77h clear internal keyboard buffer
  3898.         78h ???
  3899.         AL = ???
  3900.         79h ???
  3901.         7Ah ???
  3902.         AL = ???
  3903.         7Bh ???
  3904.         AL = ???
  3905.         7Ch ???
  3906.         AL = ???
  3907.         7Dh ???
  3908.         AL = ???
  3909.         7Eh clear buffer for ???
  3910.         7Fh installation check
  3911.         Return: CX = version in BCD
  3912.             DI = segment of ???
  3913.             BX = segment of next program's PSP???
  3914. Program: Extended Batch Language is a batch-file enhancer by Seaware
  3915. Notes:    the chaining does not check whether the interrupt had been hooked
  3916.       before, so if you try to chain when the previous vector was
  3917.       0000h:0000h, you'll be in trouble
  3918.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  3919.       floating-point and extended function packages
  3920. Index:    installation check;EBL|installation check;Extended Batch Language
  3921. --------d-64---------------------------------
  3922. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  3923. Note:    This vector is overwritten by Pdisk to install custom harddrive types.
  3924.       It can either destroy 4 vectors and take no memory or TSR and take
  3925.       up some memory.
  3926. SeeAlso: INT 65"Pdisk"
  3927. --------N-6401-------------------------------
  3928. INT 64 U - BW-NFS - BWRPC - ???
  3929.     AH = 01h
  3930.     ES:BX -> ??? (at least 8 bytes)
  3931.     ES:BP -> DWORD ???
  3932.     ???
  3933. Return: CF clear if successful
  3934.         ???
  3935.     CF set on error
  3936.         CX = 0000h
  3937. Range:    INT 4E to INT FD, selected by configuration
  3938. Notes:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3939.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3940.       consecutive interrupt (64h by default) if it is loaded
  3941.     the BWRPC installation check consists of determining the interrupt
  3942.       vector assigned to it (two more than the value returned by reading
  3943.       the ETHDEV27 device), and testing whether the word immediately
  3944.       preceding the interrupt handler is 4257h ('BW')
  3945. SeeAlso: INT 62/AH=00h"ETHDEV",INT 63"BW-TCP"
  3946. Index:    installation checks;BWRPC
  3947. --------N-6402-------------------------------
  3948. INT 64 U - BW-NFS - BWRPC - ???
  3949.     AH = 02h
  3950.     DS:DI -> ???
  3951. Return: ???
  3952. Note:    this call is passed directly through to INT 62/AH=07h
  3953. SeeAlso: INT 62/AH=07h"ETHDEV"
  3954. --------N-6403-------------------------------
  3955. INT 64 U - BW-NFS - BWRPC - ADD ???
  3956.     AH = 03h
  3957.     AL = ???
  3958.     BP = ???
  3959.     ES:SI -> ???
  3960. Return: ???
  3961. Note:    this call is passed directly through to INT 62/AH=0Bh
  3962. SeeAlso: AH=04h,INT 62/AH=0Bh"ETHDEV"
  3963. --------N-6404-------------------------------
  3964. INT 64 U - BW-NFS - BWRPC - REMOVE ???
  3965.     AH = 04h
  3966.     BP = ???
  3967. Return: ???
  3968. Range:    INT 4E to INT FD, selected by configuration
  3969. Note:    this call is passed directly through to INT 62/AH=0Ch
  3970. SeeAlso: AH=03h,INT 62/AH=0Ch"ETHDEV"
  3971. --------N-6405-------------------------------
  3972. INT 64 U - BW-NFS - BWRPC - ???
  3973.     AH = 05h
  3974.     CX = ???
  3975. Return: ???
  3976. Note:    this call is passed directly through to INT 62/AH=13h
  3977. SeeAlso: INT 62/AH=13h"ETHDEV"
  3978. --------N-6406-------------------------------
  3979. INT 64 U - BW-NFS - BWRPC - ???
  3980.     AH = 06h
  3981.     ES:SI -> ???
  3982. Return: AL = 00h if CF clear
  3983. Range:    INT 4E to INT FD, selected by configuration
  3984. Note:    this call is passed directly through to INT 62/AH=14h
  3985. SeeAlso: INT 62/AH=14h"ETHDEV"
  3986. --------N-6407-------------------------------
  3987. INT 64 U - BW-NFS - BWRPC - GET IP ADDRESS
  3988.     AH = 07h
  3989. Return: CX:DX = IP address
  3990. --------N-6410-------------------------------
  3991. INT 64 U - BW-NFS - BWRPC - CALL ETHDEV.SYS
  3992.     AH = 10h
  3993.     AL = ETHDEV function number
  3994.     other registers as appropriate for ETHDEV call
  3995. Return: as returned by ETHDEV
  3996. Note:    this call is passed directly through to INT 62
  3997. SeeAlso: INT 62/AH=00h"ETHDEV"
  3998. --------N-6411-------------------------------
  3999. INT 64 U - BW-NFS - BWRPC - NOP???
  4000.     AH = 11h
  4001. Return: CF clear
  4002. Range:    INT 4E to INT FD, selected by configuration
  4003. --------N-64FE-------------------------------
  4004. INT 64 - BW-NFS - BWRPC - MAP EMS PAGE FRAME
  4005.     AH = FEh
  4006.     AL = direction
  4007.         00h map in driver's memory block
  4008.         01h map out driver's memory block
  4009. Return: CF clear if successful
  4010.     CF set on error
  4011.         AL = error code
  4012. Range:    INT 4E to INT FD, selected by configuration
  4013. Note:    this call is passed through directly to ETHDEV.SYS (see INT 62/AH=FEh)
  4014. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=FEh,INT 63"BW-TCP"
  4015. --------*-65---------------------------------
  4016. INT 65 - reserved for user interrupt
  4017. --------d-65---------------------------------
  4018. INT 65 - Adaptec controllers - DRIVE 1 DATA
  4019. Desc:    this vector stores the second four bytes of the parameter table for
  4020.       hard disk 1
  4021. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  4022. --------b-65---------------------------------
  4023. INT 65 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
  4024. Desc:    the low word of this vector contains the segment of the RAM data area
  4025.       to be used by the expansion ROM at F400h:8000h, and the high word
  4026.       contains the length of the data area; this segment and size are
  4027.       both set to 0000h if no ROM is installed at F400h:8000h
  4028. SeeAlso: INT 60"TI Professional PC",INT 64"TI Professional"
  4029. SeeAlso: INT 66"TI Professional PC"
  4030. --------h-65---------------------------------
  4031. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  4032. SeeAlso: INT 64"DG10",INT 66"DG10"
  4033. --------N-65---------------------------------
  4034. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  4035. --------U-65---------------------------------
  4036. INT 65 - SD.COM v6.2
  4037. Desc:    The unregistered version of SD62.COM uses the low byte of this vector
  4038.       to count the number of invocations, displaying a registration
  4039.       reminder each time after the 20th use.
  4040. --------d-65---------------------------------
  4041. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  4042. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  4043. --------s-65---------------------------------
  4044. INT 65 - Ad Lib SOUND.COM - INTERFACE
  4045.     SI = function number (see also entries below)
  4046.         0000h Init
  4047.         0002h RelTimeStart
  4048.         0003h SetState
  4049.         0004h GetState
  4050.         0005h Flush
  4051.         0006h SetMode
  4052.         0007h GetMode
  4053.         0008h SetRelVolume
  4054.         0009h SetTempo
  4055.         000Ah SetTranspose
  4056.         000Bh GetTranspose
  4057.         000Ch SetActVoice
  4058.         000Dh GetActVoice
  4059.         000Eh PlayNoteDel
  4060.         000Fh PlayNote
  4061.         0010h SetTimbre
  4062.         0011h SetPitch
  4063.         0012h SetTickBeat
  4064.         0013h NoteOn
  4065.         0014h NoteOff
  4066.         0015h Timbre
  4067.         0016h SetPitchBend
  4068.         0017h WaveForm
  4069.     ES:BX -> arguments
  4070. Note:    the installation check consists of checking for the signature block
  4071.       immediately preceding the interrupt handler (see #2122)
  4072. SeeAlso: SI=8000h
  4073. Index:    installation check;Ad Lib SOUND.COM
  4074.  
  4075. Format of AdLib signature block:
  4076. Offset    Size    Description    (Table 2122)
  4077.  00h    WORD    version number
  4078.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  4079.  15h    BYTE    01h
  4080.  16h    BYTE    01h
  4081.  17h    BYTE    00h
  4082. --------s-65----SI0000-----------------------
  4083. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  4084.     SI = 0000h
  4085. --------s-65----SI0003-----------------------
  4086. INT 65 - Ad Lib SOUND.COM - SET STATE
  4087.     SI = 0003h
  4088.     ES:BX -> WORD new state (0000h disabled, 0001h enabled)
  4089. SeeAlso: SI=0004h
  4090. --------s-65----SI0004-----------------------
  4091. INT 65 - Ad Lib SOUND.COM - GET STATE
  4092.     SI = 0004h
  4093. Return: AX = status
  4094.         0000h all done playing sounds
  4095.         else  still playing sounds
  4096. SeeAlso: SI=0003h
  4097. --------s-65----SI0006-----------------------
  4098. INT 65 - Ad Lib SOUND.COM - SET MODE
  4099.     SI = 0006h
  4100.     ES:BX -> WORD new mode (0000h melodic, 0001h percussive)
  4101. SeeAlso: SI=0007h
  4102. --------s-65----SI0007-----------------------
  4103. INT 65 - Ad Lib SOUND.COM - GET MODE
  4104.     SI = 0007h
  4105. Return: AX = mode
  4106.         0000h melodic
  4107.         0001h percussive
  4108. SeeAlso: SI=0006h
  4109. --------s-65----SI000C-----------------------
  4110. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  4111.     SI = 000Ch
  4112.     ES:BX -> WORD voice = 0000h to 0008h
  4113. SeeAlso: SI=000Dh
  4114. --------s-65----SI000D-----------------------
  4115. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  4116.     SI = 000Dh
  4117. Return: AX = voice (0000h to 0008h)
  4118. SeeAlso: SI=000Ch
  4119. --------s-65----SI8000-----------------------
  4120. INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
  4121.     SI = 8000h
  4122. Return: DX:AX -> internal data structures
  4123. Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
  4124.       Pro Audio Spectrum sound boards
  4125. SeeAlso: SI=8001h
  4126. --------s-65----SI8001-----------------------
  4127. INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
  4128.     SI = 8001h
  4129. Return: AX = ???
  4130.     DX = number of voices??? (09h or 0Bh)
  4131. SeeAlso: SI=8000h
  4132. --------s-65----SI8002-----------------------
  4133. INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
  4134.     SI = 8002h
  4135. SeeAlso: SI=8003h
  4136. --------s-65----SI8003-----------------------
  4137. INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
  4138.     SI = 8003h
  4139. SeeAlso: SI=8002h
  4140. --------s-65----SI8004-----------------------
  4141. INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
  4142.     SI = 8004h
  4143. Return: AX = ??? (0280h)
  4144.     DX = ??? (01A0h)
  4145. --------s-65----SI8005-----------------------
  4146. INT 65 U - Media Vision FM.COM v4.1a+ - ???
  4147.     SI = 8005h
  4148.     ???
  4149. Return: ???
  4150. SeeAlso: SI=8000h
  4151. --------S-65---------------------------------
  4152. INT 65 U - EZRECV v1.0 - API
  4153.     AX = function
  4154.         0000h ???
  4155.         Return: AX = ??? or FFFFh
  4156.         0001h ???
  4157.         Return: AX = status (0000h or 0001h)
  4158.         0002h ???
  4159.         Return: AX = status (0000h or 0001h)
  4160.         0003h set ??? to 0001h
  4161.         Return: AX = 0000h
  4162.         0004h ???
  4163.         Return: AX = ???
  4164. Return: BH = COM port being used
  4165.     BL = speed???
  4166.     CH = ???
  4167.     CL = ???
  4168.     DX = ???
  4169.     DS = ???
  4170.     ES = EZRECV data segment
  4171. Program: EZRECV is a background Zmodem file receiver by Express Consulting
  4172. --------*-66---------------------------------
  4173. INT 66 - reserved for user interrupt
  4174. --------d-66---------------------------------
  4175. INT 66 - Adaptec controllers - DRIVE 1 DATA
  4176. Desc:    this vector stores the third four bytes of the parameter table for
  4177.       hard disk 1
  4178. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  4179. --------b-66---------------------------------
  4180. INT 66 - TI Professional PC - SYSTEM INFORMATION (NOT A VECTOR!)
  4181. Desc:    the low word of this vector contains the system memory size in
  4182.       paragraphs; the third byte contains the number of outstanding
  4183.       interrupt requests, and the fourth byte contains a description
  4184.       of the installed drive types (see #2123)
  4185. SeeAlso: INT 60"TI Professional PC",INT 67"TI Professional"
  4186.  
  4187. Bitfields for TI Professional drive type information:
  4188. Bit(s)    Description    (Table 2123)
  4189.  7    floppy drive D: has 80 tracks
  4190.  6    floppy drive D: is double-sided
  4191.  5    floppy drive C: has 80 tracks
  4192.  4    floppy drive C: is double-sided
  4193.  3    floppy drive B: has 80 tracks
  4194.  2    floppy drive B: is double-sided
  4195.  1    floppy drive A: has 80 tracks
  4196.  0    floppy drive A: is double-sided
  4197. --------h-66---------------------------------
  4198. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  4199. SeeAlso: INT 64"DG10"
  4200. --------N-66---------------------------------
  4201. INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  4202. Program: TurboNET is a NetBIOS-based file redirector and server
  4203. Note:    hooked but not used (IRET) by both redirector and server; called from
  4204.       server's INT 28 handler
  4205. SeeAlso: INT 2F/AX=8100h
  4206. --------d-66---------------------------------
  4207. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  4208. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  4209. --------W-66---------------------------------
  4210. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  4211. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  4212.       which will expire and call INT 66.  This timer can be used to
  4213.       calculate elapsed execution time etc.
  4214. --------K-66---------------------------------
  4215. INT 66 - Newkey v5.4 - INSTALLATION VECTOR
  4216. Return: immediately (IRET)
  4217. Program: Newkey is a shareware keyboard macro program by Frank A. Bell
  4218. Range:    INT 60h to INT 67h, selected by scanning for highest unused vector
  4219. Note:    the installation check consists of testing for the signature bytes
  4220.       FDh FCh FFh FEh at offset 03h in the interrupt handlers segment
  4221. BUG:    the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
  4222.       before falling back to INT 60-67, but only uses the last of these
  4223.       ranges in v5.4
  4224. SeeAlso: INT 2F/AX=E300h
  4225. Index: installation checks;Newkey|Newkey;installation check
  4226. --------U-66---------------------------------
  4227. INT 66 - PC-Magazin - INCA
  4228.     details not yet availble
  4229. Program: INCA is a utility from PC-Magazin (the German edition of PC Magazine)
  4230.       issue 51-52/85.
  4231. SeeAlso: INT 61"SWAPx"
  4232. --------F-6601-------------------------------
  4233. INT 66 - BitFax Scheduler - SET MODE???
  4234.     AH = 01h
  4235. SeeAlso: AH=02h
  4236. --------F-6602-------------------------------
  4237. INT 66 - BitFax Scheduler - SET MODE???
  4238.     AH = 02h
  4239. SeeAlso: AH=01h
  4240. --------F-6603-------------------------------
  4241. INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
  4242.     AH = 03h
  4243.     ???
  4244. Return: ???
  4245. SeeAlso: AH=05h
  4246. --------F-6604-------------------------------
  4247. INT 66 - BitFax Scheduler - GET STATUS???
  4248.     AH = 04h
  4249. Return: AX = ??? (0000h or 0001h)
  4250.     DX = BitSched version???  (for versions >= 3.00)
  4251.         9796h (ver. 3.00)
  4252.         97E6h (ver. 3.02)
  4253.         92D0h (ver. 3.04.06)
  4254.         9510h (ver. 3.06.02)
  4255. SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
  4256. --------F-6605-------------------------------
  4257. INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
  4258.     AH = 05h
  4259.     BX:CX -> command block (see #2124)
  4260.     ???
  4261. Return: ???
  4262. SeeAlso: AH=03h
  4263.  
  4264. Format of BitFax command block:
  4265. Offset    Size    Description    (Table 2124)
  4266.  00h 18 BYTEs    configuration bytes???
  4267.  12h    BYTEs    ASCIZ temporary file name to place converted fax
  4268.  52h    BYTEs    ASCIZ directory containing BitFax executables
  4269.  92h    BYTEs    ASCIZ telephone number
  4270.  C2h    BYTE    cover page control (00h don't send, 01h do send cover page)
  4271.  C3h 15 BYTEs    configuration bytes???
  4272.  E2h    BYTEs    ASCIZ path of BITFAX.TRA file (containing additional
  4273.           configuration information???)
  4274. 122h    BYTEs    configuration bytes???
  4275. 12Ch    BYTE    00h don't send cover page
  4276.         01h send cover page
  4277. 12Dh  7 BYTEs    configuration bytes???
  4278. 134h    BYTEs    ASCIZ path of file to send
  4279. 174h    BYTEs    more configuration bytes???
  4280.     ???
  4281. --------F-6606-------------------------------
  4282. INT 66 - BitFax Scheduler - SET MODE???
  4283.     AH = 06h
  4284. Return: DX = BitSched version??? (same as AH=04h)
  4285. SeeAlso: AH=04h
  4286. --------s-660688-----------------------------
  4287. INT 66 - IBMSND driver, DIGPAK - PLAY 8-BIT DIGITIZED SOUND
  4288.     AX = 0688h
  4289.     DS:SI -> SNDSTRUC (see #2125)
  4290. Return: ???
  4291. Program: The IBMSND driver is part of John W. Ratcliff's
  4292.        The IBM Digitized Sound Package
  4293.     DIGPAK is a set of digitized sound drivers written by
  4294.       John W. Ratcliff, The Audio Solution, Inc.
  4295. Note:    the installation check consists of looking for a valid signature
  4296.       string six bytes prior to the interrupt handler; this string may
  4297.       be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
  4298.       determine whether IBMSND is installed)
  4299. SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
  4300.  
  4301. Format of IBMSND driver SNDSTRUC:
  4302. Offset    Size    Description    (Table 2125)
  4303.  00h    DWORD    -> audio data
  4304.  04h    WORD    length of audio data in bytes
  4305.  06h    DWORD    -> playback status flag
  4306.  0Ah    WORD    playback frequency
  4307. --------s-660689-----------------------------
  4308. INT 66 - IBMSND driver, DIGPAK - REPORT SOUND DRIVER STATUS
  4309.     AX = 0689h
  4310. Return: AX = status
  4311.         0000h no sound playing
  4312.         0001h sound effect is currently playing
  4313.     ---DIGPAK---
  4314.     BX = version number (v3.1+)
  4315.     DX = looping status
  4316.         0000h no sound looping
  4317.         0001h sound effect is currently looping
  4318. SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
  4319. Index:    version check;DIGPAK
  4320. --------s-66068A-----------------------------
  4321. INT 66 - IBMSND driver, DIGPAK - PREFORMAT SOUND
  4322.     AX = 068Ah
  4323.     DS:SI -> SNDSTRUC (see #2125)
  4324. Desc:    convert audio data into output hardware format
  4325. SeeAlso: AX=068Bh
  4326. --------s-66068B-----------------------------
  4327. INT 66 - IBMSND driver, DIGPAK - PLAY PREFORMATTED SOUND
  4328.     AX = 068Bh
  4329.     DS:SI -> SNDSTRUC (see #2125)
  4330. Return: AX = ???
  4331. SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
  4332. --------s-66068C-----------------------------
  4333. INT 66 - IBMSND driver, DIGPAK - REPORT AUDIO DRIVER CAPABILITIES
  4334.     AX = 068Ch
  4335. Return: AX = capabilities (see #2126)
  4336.     DX = playback rate if fixed-frequency playback
  4337.     ---DIGPAK---
  4338.     BX:CX -> ASCIZ ID string
  4339. SeeAlso: AX=0689h,AX=068Dh
  4340.  
  4341. Bitfields for IBMSND driver capabilities:
  4342. Bit(s)    Description    (Table 2126)
  4343.  0    can play audio in background
  4344.  1    data is massaged for output device
  4345.  2    driver plays at fixed frequency, resampling input data to fit
  4346.  3    driver uses timer interrupt
  4347. ---DIGPAK---
  4348.  4    device supports timer sharing
  4349.  5    supports looped sounds and pending
  4350.  6    supports stereo panning
  4351.  7    supports 8-bit PCM stereo playback
  4352.  8    supports audio recording
  4353.  9    supports DMA bakcfilling
  4354. --------s-66068D-----------------------------
  4355. INT 66 - IBMSND driver, DIGPAK - REPORT CURRENT SAMPLE ADDRESS
  4356.     AX = 068Dh
  4357. Return: AX = current playback address
  4358. Desc:    determine what point in the audio data the playback has reached, for
  4359.       synchronization with video or animation effects
  4360. Notes:    this function applies to background playback only
  4361.     the reported address may be an approximation rather than the exact
  4362.       address
  4363. SeeAlso: AX=068Ch,AX=0691h
  4364. --------s-66068E-----------------------------
  4365. INT 66 - IBMSND driver, DIGPAK - SET CALLBACK ADDRESS
  4366.     AX = 068Eh
  4367.     BX:DX -> callback function
  4368.         0000h:0000h to disable callback
  4369.     DS = value to load into DS when calling the callback function
  4370. Desc:    specify the function to be called when playback of a sound effect is
  4371.       completed
  4372. Note:    the callback function will typically be called during a hardware
  4373.       interrupt, so all the usual precautions should be taken except for
  4374.       preserving registers
  4375. SeeAlso: AX=0691h
  4376. --------s-66068F-----------------------------
  4377. INT 66 - IBMSND driver, DIGPAK - STOP CURRENT SOUND
  4378.     AX = 068Fh
  4379. Desc:    cause any currently-playing sound effect to be terminated
  4380. SeeAlso: AX=0688h,AX=068Bh
  4381. --------s-660690-----------------------------
  4382. INT 66 - IBMSND driver, DIGPAK - "SetAudioHardware" - SET UP HARDWARE INFO
  4383.     AX = 0690h
  4384.     BX = IRQ
  4385.     CX = base address
  4386.     DX = other setup value (device-dependent???)
  4387. --------s-660691-----------------------------
  4388. INT 66 - IBMSND driver, DIGPAK - REPORT CALLBACK ADDRESS
  4389.     AX = 0691h
  4390. Return: AX:DX -> current callback function
  4391.     BX = original caller's DS register
  4392. Program: The IBMSND driver is part of John W. Ratcliff's
  4393.        The IBM Digitized Sound Package
  4394.     DIGPAK is a set of digitized sound drivers written by
  4395.       John W. Ratcliff, The Audio Solution, Inc.
  4396. SeeAlso: AX=068Eh
  4397. --------s-660693-----------------------------
  4398. INT 66 - DIGPAK - SET TIMER DIVISOR RATE
  4399.     AX = 0693h
  4400.     DX = rate
  4401. Program: DIGPAK is a set of digitized sound drivers written by
  4402.       John W. Ratcliff, The Audio Solution, Inc.
  4403. --------s-660694-----------------------------
  4404. INT 66 - DIGPAK - PLAY PREFORMATTED DATA
  4405.     AX = 0694h
  4406.     DS:SI -> Sound Data structure (see #2125)
  4407. Return: AX = status???
  4408. --------s-660695-----------------------------
  4409. INT 66 - DIGPAK - POST AUDIO PENDING
  4410.     AX = 0695h
  4411.     DS:SI -> Sound Data structure (***)
  4412. Return: AX = status
  4413.         0000h sound started playing
  4414.         0001h sound was posted as pending to play
  4415.         0002h sound effect already pending, this one not posted
  4416. SeeAlso: AX=0696h
  4417. --------s-660696-----------------------------
  4418. INT 66 - DIGPAK - GET AUDIO PENDING STATUS
  4419.     AX = 0696h
  4420. Return: AX = status
  4421.         0000h no sound is playing
  4422.         0001h sound playing, and a sound is pending
  4423.         0002h sound playing, no sound pending
  4424. SeeAlso: AX=0695h
  4425. --------s-660697-----------------------------
  4426. INT 66 - DIGPAK - SET STEREO PANNING
  4427.     AX = 0697h
  4428.     DX = panning position (0 = right, 127 = left)
  4429. Return: AX = status
  4430.         0000h command ignored (not supported)
  4431.         0001h panning set
  4432. --------s-660698-----------------------------
  4433. INT 66 - DIGPAK - SET PLAY MODE
  4434.     AX = 0698h
  4435.     DX = playback mode
  4436.         0000h 8-bit PCM
  4437.         0001h 8-bit stereo PCM
  4438.         0002h 16-bit PCM
  4439.         0003h 16-bit stereo PCM
  4440. Return: AX = status
  4441.         0000h command ignored
  4442.         0001h mode set
  4443. --------s-660699-----------------------------
  4444. INT 66 - DIGPAK - GET ADDRESSES
  4445.     AX = 0699h
  4446. Return: AX = pending address
  4447.     BX = semaphore address
  4448. --------s-66069A-----------------------------
  4449. INT 66 - DIGPAK - SET RECORD MODE
  4450.     AX = 069Ah
  4451.     DX = recording mode
  4452.         0000h turn audio recording on
  4453.         0001h turn audio recording off
  4454. Return: AX = status
  4455.         0000h command ignored
  4456.         0001h audio recording mode set
  4457. --------s-66069B-----------------------------
  4458. INT 66 - DIGPAK - STOP NEXT LOOP
  4459.     AX = 069Bh
  4460. --------s-66069C-----------------------------
  4461. INT 66 - DIGPAK - SET DMA BACKFILL MODE
  4462.     AX = 069Ch
  4463.     DX = mode
  4464.         0000h turn backfill mode on
  4465.         0001h turn backfill mode off
  4466. Return: AX = status
  4467.         0000h command ignored
  4468.         0001h backfill mode set
  4469. SeeAlso: AX=069Dh,AX=069Eh
  4470. --------s-66069D-----------------------------
  4471. INT 66 - DIGPAK - REPORT DMA COUNTER
  4472.     AX = 069Dh
  4473. Return: AX = DMA counter
  4474. SeeAlso: AX=069Eh
  4475. --------s-66069E-----------------------------
  4476. INT 66 - DIGPAK - VERIFY DMA BLOCK
  4477.     AX = 069Eh
  4478.     CX = length of buffer
  4479.     ES:BX -> buffer containing sound data
  4480. Return: AX = status
  4481.         0000h block crosses 64K bounadary
  4482.         0001h block is OK
  4483. SeeAlso: AX=069Dh
  4484. --------s-66069F-----------------------------
  4485. INT 66 - DIGPAK - SET PCM VOLUME
  4486.     AX = 069Fh
  4487.     BX = left channel volume (0-100)
  4488.     CX = right channel volume (0-100)
  4489. Return: AX =  status
  4490.         0000h command ignored
  4491.         0001h volume set
  4492. --------s-6606A0-----------------------------
  4493. INT 66 - DIGPAK - SET DPMI MODE
  4494.     AX = 06A0h
  4495.     DX = mode
  4496.         0000h 32-bit register addressing on
  4497.         0001h 32-bit register addressing off
  4498. SeeAlso: INT 31/AX=0400h
  4499. --------s-660700-----------------------------
  4500. INT 66 - MIDPAK - UNINSTALL
  4501.     AX = 0700h
  4502. Note:    this function should NOT be called by applications
  4503. Program: MIDPAK is a set of MIDI sound drivers developed by Miles Design
  4504.       Incorporated.
  4505. --------s-660701-----------------------------
  4506. INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
  4507.     AX = 0701h
  4508. Return: AX = digitized sound capabilities
  4509.         0000h if digitized sound driver (functions 06xxh) not available
  4510. Notes:    the installation check for the MIDI driver is to test for the signature
  4511.       "MIDI" six bytes before the interrupt handler
  4512.     also supported by MIDPAK, the successor to the Digitized Sound
  4513.       Package's MIDI driver
  4514. SeeAlso: AX=0688h
  4515. --------s-660702-----------------------------
  4516. INT 66 - MIDPAK - PLAY SEQUENCE
  4517.     AX = 0702h
  4518.     BX = Sequence number
  4519. Return: AX = status
  4520.         0000h Sequence is being played
  4521.         0001h Sequence not available
  4522. SeeAlso: AX=0703h,AX=0705h
  4523. --------s-660703-----------------------------
  4524. INT 66 - MIDPAK - SEGUE SEQUENCE
  4525.     AX = 0703h
  4526.     BX = sequence number
  4527.     CX = activation code (FFFFh is next trigger)
  4528. Return: ???
  4529. --------s-660704-----------------------------
  4530. INT 66 - MIDPAK - REGISTER XMIDI
  4531.     AX = 0704h
  4532.     CX:BX -> XMIDI sequence data
  4533.     DI:SI = length of XMIDI data
  4534. Return: AX = status
  4535.         0000h unable to register XMIDI data
  4536.         0001h XMIDI file registered resident
  4537.         0002h XMIDI file was registered to the application
  4538. --------s-660705-----------------------------
  4539. INT 66 - MIDPAK - STOP MIDI
  4540.     AX = 0705h
  4541. SeeAlso: AX=0702h,AX=0709h
  4542. --------s-660706-----------------------------
  4543. INT 66 O - MIDPAK - REMAP CHANNEL
  4544.     AX = 0706h
  4545.     BX = sequence
  4546.     CX = physical
  4547. --------s-660707-----------------------------
  4548. INT 66 - MIDPAK - REPORT TRIGGER EVENT COUNTER
  4549.     AX = 0707h
  4550. Return: AX = count of number of callbacks since last reset
  4551.     DX = ID
  4552. SeeAlso: AX=0708h,AX=0713h
  4553. --------s-660708-----------------------------
  4554. INT 66 - MIDPAK - RESET EVENT TRIGGER COUNTER
  4555.     AX = 0708h
  4556. SeeAlso: AX=0707h,AX=0713h
  4557. --------s-660709-----------------------------
  4558. INT 66 O - MIDPAK - MIDI SLEEP
  4559.     AX = 0709h
  4560. SeeAlso: AX=070Ah
  4561. --------s-66070A-----------------------------
  4562. INT 66 O - MIDPAK - MIDI AWAKE
  4563.     AX = 070Ah
  4564. SeeAlso: AX=0709h
  4565. --------s-66070B-----------------------------
  4566. INT 66 - MIDPAK - RESUME PLAYING
  4567.     AX = 070Bh
  4568. SeeAlso: AX=070Ch
  4569. --------s-66070C-----------------------------
  4570. INT 66 - MIDPAK - GET SEQUENCE STATUS
  4571.     AX = 070Ch
  4572. Return: AX = status
  4573.         0000h sequence stopped
  4574.         0001h sequence playing
  4575.         0002h sequence done
  4576. SeeAlso: AX=070Bh
  4577. --------s-66070D-----------------------------
  4578. INT 66 - MIDPAK - REGISTER XMIDI FILE
  4579.     AX = 070Dh
  4580.     CX:BX -> ASCII filename
  4581. SeeAlso: AX=0704h,AX=0710h
  4582. --------s-66070E-----------------------------
  4583. INT 66 - MIDPAK - GET RELATIVE VOLUME
  4584.     AX = 070Eh
  4585. Return:    AX = current volume
  4586. SeeAlso: AX=070Fh
  4587. --------s-66070F-----------------------------
  4588. INT 66 - MIDPAK - SET RELATIVE VOLUME
  4589.     AX = 070Fh
  4590.     BX = new volume
  4591.     CX = time
  4592. SeeAlso: AX=070Eh
  4593. --------s-660710-----------------------------
  4594. INT 66 - MIDPAK - LOAD MIDPAK DRIVER
  4595.     AX = 0710h
  4596.     BX = segment of .ADV driver
  4597.     CX = 0000h (offset must be zero)
  4598.     DX:SI -> .AD driver
  4599. SeeAlso: AX=070Dh
  4600. --------s-660711-----------------------------
  4601. INT 66 - MIDPAK - POLL MIDPAK
  4602.     AX = 0711h
  4603. Return: AX = ???
  4604.     ???
  4605. SeeAlso: AX=0712h
  4606. --------s-660712-----------------------------
  4607. INT 66 - MIDPAK - GET MIDI CLOCK
  4608.     AX = 0712h
  4609. Return: AX:DX = clock counter
  4610.     CX:BX = clock address
  4611. SeeAlso: AX=0711h,AX=0713h
  4612. --------s-660713-----------------------------
  4613. INT 66 - MIDPAK - GET TRIGGER COUNT ADDRESS
  4614.     AX = 0713h
  4615. Return: AX:DX -> trigger counter address
  4616. SeeAlso: AX=0707h,AX=0712h,AX=0714h
  4617. --------s-660714-----------------------------
  4618. INT 66 - MIDPAK - GET EVENT ID ADDRESS
  4619.     AX = 0714h
  4620. Return: AX:DX -> event ID
  4621. SeeAlso: AX=0713h,AX=0716h
  4622. --------s-660716-----------------------------
  4623. INT 66 - MIDPAK - REPORT SEQUENCE NUMBER
  4624.     AX = 0716h
  4625. Return: AX = current sequence number
  4626. SeeAlso: AX=0702h
  4627. Program: MIDPAK is a set of MIDI sound drivers developed by Miles Design
  4628.       Incorporated.
  4629. --------n-6610-------------------------------
  4630. INT 66 - PenDOS - TDMOUSE.EXE - GET ???
  4631.     AH = 10h
  4632. Return: CF clear
  4633.     AX = 0000h
  4634.     BX = ??? (0012h)
  4635.     DX:CX -> TDMOUSE INT 33 handler (IRET to hide mouse from other apps)
  4636. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  4637.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  4638.       Corporation which makes applications pen-aware
  4639. --------n-6611-------------------------------
  4640. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  4641.     AH = 11h
  4642.     DX:BX -> new handler for ???
  4643. Return: CF clear
  4644.     AX = 0000h
  4645.     DX:BX -> old handler for ??? (points at RETF by default)
  4646. --------n-6612-------------------------------
  4647. INT 66 - PenDOS - TDMOUSE.EXE - INITIALIZE
  4648.     AH = 12h
  4649. Return:    CF clear
  4650.     AX = 0000h
  4651. Note:    this function calls the old mouse handler with functions 0000h, 0002h,
  4652.       0007h, 0008h, 000Fh, 0004h, and 000Ch (in that order)
  4653. SeeAlso: AH=13h
  4654. --------n-6613-------------------------------
  4655. INT 66 - PenDOS - TDMOUSE.EXE - SHUTDOWN???
  4656.     AH = 13h
  4657. Return: CF clear
  4658.     other register as returned by INT 33/AX=0000h
  4659. SeeAlso: AH=12h
  4660. --------n-6614-------------------------------
  4661. INT 66 - PenDOS - TDMOUSE.EXE - ???
  4662.     AH = 14h
  4663.     BX = ???
  4664.     CX = ???
  4665. Return: CF clear
  4666.     AX = 0000h
  4667. --------n-6615-------------------------------
  4668. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  4669.     AH = 15h
  4670.     DX:BX -> new handler for ???
  4671. Return: CF clear
  4672.     AX = 0000h
  4673.     DX:BX -> old handler (points at RETF by default)
  4674. --------n-6616-------------------------------
  4675. INT 66 - PenDOS - TDMOUSE.EXE - UNUSED FUNCTIONS
  4676.     AH = 16h to 1Fh
  4677. Return: CF set
  4678. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  4679.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  4680.       Corporation which makes applications pen-aware
  4681. --------n-6621-------------------------------
  4682. INT 66 - PenDOS - PINK - ???
  4683.     AH = 21h
  4684. Return: CF clear if successful
  4685.     CF set on error
  4686. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  4687. --------n-6622-------------------------------
  4688. INT 66 - PenDOS - PINK - ???
  4689.     AH = 22h
  4690.     DX:BX -> ???
  4691.     CL = ???
  4692. Return: CF clear if successful
  4693.     CF set on error
  4694.     ???
  4695. SeeAlso: AH=24h
  4696. --------n-6623-------------------------------
  4697. INT 66 - PenDOS - PINK - ???
  4698.     AH = 23h
  4699.     ???
  4700. Return: CF clear if successful
  4701.     CF set on error
  4702.     ???
  4703. --------n-6624-------------------------------
  4704. INT 66 - PenDOS - PINK - ???
  4705.     AH = 24h
  4706.     DX:BX -> ???
  4707.     CL = ???
  4708. Return: CF clear if successful
  4709.     CF set on error
  4710.     ???
  4711. SeeAlso: AH=22h
  4712. --------n-6625-------------------------------
  4713. INT 66 - PenDOS - PINK - ???
  4714.     AH = 25h
  4715.     CL = ??? (NOP if 00h)
  4716.     ???
  4717. Return: CF clear if successful
  4718.     CF set on error
  4719.     ???
  4720. --------n-6627-------------------------------
  4721. INT 66 - PenDOS - PINK - ???
  4722.     AH = 27h
  4723.     BL = ???
  4724.     BH = ???
  4725.     CL = ??? (0-3)
  4726.     DL = ??? (> BL)
  4727.     DH = ??? (> BH)
  4728. Return: ???
  4729. --------n-6628-------------------------------
  4730. INT 66 - PenDOS - PINK - ???
  4731.     AH = 28h
  4732.     ???
  4733. Return: CF clear if successful
  4734.     CF set on error
  4735.     ???
  4736. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  4737. --------n-6629-------------------------------
  4738. INT 66 - PenDOS - PINK - ???
  4739.     AH = 29h
  4740.     ???
  4741. Return: ???
  4742. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  4743. --------n-662A-------------------------------
  4744. INT 66 - PenDOS - PINK - ???
  4745.     AH = 2Ah
  4746.     DL = ??? (nonzero)
  4747.     DH = ??? (nonzero)
  4748. Return: CF clear if successful
  4749.     CF set on error
  4750.     ???
  4751. --------n-662B-------------------------------
  4752. INT 66 - PenDOS - PINK - ???
  4753.     AH = 2Bh
  4754.     ???
  4755. Return: CF clear if successful
  4756.     CF set on error
  4757.     ???
  4758. --------n-662F-------------------------------
  4759. INT 66 - PenDOS - PINK - INITIALIZE
  4760.     AH = 2Fh
  4761.     ???
  4762. Return: AX = status
  4763.         0000h failed
  4764.         FFFFh successful
  4765.     ???
  4766. Note:    this function sets ??? flag or counter to FFFFh and hooks INT 1Ch
  4767. --------F-663345-----------------------------
  4768. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  4769.     AX = 3345h
  4770. Return: AX = FFFFh error removing TSR
  4771. Note:    the installation check consists of checking for the signature
  4772.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  4773. SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
  4774. Index:    installation check;BitFax Scheduler
  4775. --------n-6640-------------------------------
  4776. INT 66 - PenDOS - PKEYUS - GET VERSION
  4777.     AH = 40h
  4778. Return: CF clear
  4779.     AX = 0000h
  4780.     BH = major version (02h for version bundled with IBM DOS 6.1)
  4781.     BL = minor version (00h for version bundled with IBM DOS 6.1)
  4782.     DL = ??? (4Eh)
  4783.     DH = ??? (0Eh)
  4784. --------n-6641-------------------------------
  4785. INT 66 - PenDOS - PKEYUS - SET ???
  4786.     AH = 41h
  4787.     BX = ???
  4788.     CL = ??? (08h-20h)
  4789.     DL = screen column??? (<= 50h)
  4790.     DH = screen row???  (<= 3Ch)
  4791. Return: AX = status (0000h successful, 0001h error)
  4792. Note:    this function also sets an internal flag
  4793. SeeAlso: AH=42h,AH=43h
  4794. --------n-6642-------------------------------
  4795. INT 66 - PenDOS - PKEYUS - ???
  4796.     AH = 42h
  4797. Return: CF clear
  4798.     AX = 0000h
  4799. Note:    this function also clears the flag set by AH=41h
  4800. SeeAlso: AH=41h
  4801. --------n-6643-------------------------------
  4802. INT 66 - PenDOS - PKEYUS - ???
  4803.     AH = 43h
  4804.     BX = ???
  4805.     DX = ???
  4806. Return: AX = status
  4807.         0000h if AH=41h flag set
  4808.         else
  4809.         AH = ???
  4810.         AL = ???
  4811.         BX = ???
  4812.         DX = ???
  4813. SeeAlso: AH=41h
  4814. --------n-6644-------------------------------
  4815. INT 66 - PenDOS - PKEYUS - UNUSED FUNCTIONS
  4816.     AH = 44h to 4Fh
  4817. Return: CF set
  4818. --------n-6650-------------------------------
  4819. INT 66 - PenDOS - PMOUSE - SET ???
  4820.     AH = 50h
  4821.     BX = ???
  4822.     CH = ???
  4823.     DX = ???
  4824. Return: CF clear
  4825.     AX = 0000h
  4826. --------n-6651-------------------------------
  4827. INT 66 - PenDOS - PMOUSE - NOP
  4828.     AH = 51h
  4829. Return: CF set
  4830. --------n-6652-------------------------------
  4831. INT 66 - PenDOS - PMOUSE - ???
  4832.     AH = 52h
  4833.     BX = ???
  4834.     CL = ???
  4835.     DX = ???
  4836. Return: ???
  4837. --------n-6653-------------------------------
  4838. INT 66 - PenDOS - PMOUSE - UNUSED FUNCTIONS
  4839.     AH = 53h to 57h
  4840. Return: CF set
  4841. --------n-66---------------------------------
  4842. INT 66 - PenDOS - PMOUSE - ALTERNATE API
  4843.     AH = function (58h-5Fh)
  4844. Note:    these functions exactly duplicate AH=50h-57h
  4845. --------U-66AA02-----------------------------
  4846. INT 66 - HelpTSR v2.10 - INSTALLATION CHECK
  4847.     AX = AA02h
  4848. Return: ES:DI -> 7 byte signature "HelpTSR" if resident
  4849. Program: HelpTSR is a resident viewer by David Jurgens for HelpPC
  4850. --------n-66C5-------------------------------
  4851. INT 66 - PenDOS - VLOAD - API
  4852.     AH = C5h
  4853.     ???
  4854. Return: ???
  4855. --------t-66FFFBBXFFFB-----------------------
  4856. INT 66 - MicroHelp Stay-Res Plus - ???
  4857.     AX = FFFBh
  4858.     BX = FFFBh
  4859.     ???
  4860. Return: ???
  4861. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  4862. --------t-66FFFEBXFFFE-----------------------
  4863. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  4864.     AX = FFFEh
  4865.     BX = FFFEh
  4866. Return: only if unsuccessful
  4867. Notes:    installation check is for the interrupt handler to begin with the bytes
  4868.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  4869.       appear at offset 0005h (older versions) or the offset returned by
  4870.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  4871.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  4872.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  4873. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  4874. Index:    installation check;MicroHelp Stay-Res|installation check;ThesPlus
  4875. Index:    installation check;Personal Calendar|installation check;CAL
  4876. --------t-66FFFFBXFFF0-----------------------
  4877. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  4878.     AX = FFFFh
  4879.     BX = FFF0h
  4880. Return: DI = offset of program name in interrupt handler segment
  4881. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  4882. --------d-67---------------------------------
  4883. INT 67 - Adaptec controllers - DRIVE 1 DATA
  4884. Desc:    this vector stores the last four bytes of the parameter table for
  4885.       hard disk 1
  4886. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  4887. --------b-67---------------------------------
  4888. INT 67 - TI Professional PC - SYSTEM DATA (NOT A VECTOR!)
  4889. Desc:    this vector contains the TI Pro's system configuration words
  4890.       (see #2127)
  4891. SeeAlso: INT 66"TI Professional PC"
  4892.  
  4893. Bitfields for TI Professional PC System Configuration doubleword:
  4894. Bit(s)    Description    (Table 2127)
  4895.  0    8087 present
  4896.  31-1    reserved (0)
  4897. --------d-67---------------------------------
  4898. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  4899. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  4900. --------I-67---------------------------------
  4901. INT 67 - Sangoma CCPOP 3270 resident module
  4902. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  4903. --------U-67---------------------------------
  4904. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  4905. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  4906.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  4907. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  4908.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  4909.       the signature value 434Ch:4F4Bh ('CLOK')
  4910. --------N-6700-------------------------------
  4911. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  4912.     AH = 00h
  4913.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  4914. Return: AL = status (see #2128)
  4915.     AH = semaphore owner if status=02h
  4916. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  4917.  
  4918. (Table 2128)
  4919. Values for PC-NET semaphore function status:
  4920.  00h    successful
  4921.  01h    invalid function
  4922.  02h    semaphore already locked
  4923.  03h    unable to lock semaphore
  4924.  04h    semaphore space exhausted
  4925. --------N-6701-------------------------------
  4926. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  4927.     AH = 01h
  4928.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  4929. Return: AL = status (see #2128)
  4930.     AH = semaphore owner if status=02h
  4931. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  4932. --------N-6702-------------------------------
  4933. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  4934.     AH = 02h
  4935.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  4936. Return: AL = status (see #2128)
  4937.     AH = semaphore owner if status=02h
  4938. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  4939. --------m-671E-------------------------------
  4940. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
  4941.     AH = 1Eh
  4942. Return: AH = 00h if installed
  4943.         AL destroyed
  4944.         ES:DI -> ASCII signature "MemLimit"
  4945. SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
  4946. --------m-671F-------------------------------
  4947. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
  4948.     AH = 1Fh
  4949.     DS:SI -> request packet (see #2129)
  4950. Return: AH = status (00h successful, 84h invalid function code, etc.)
  4951. SeeAlso: AH=1Eh
  4952.  
  4953. Format of 386MAX MEMLIMIT request packet:
  4954. Offset    Size    Description    (Table 2129)
  4955.  00h    WORD    function code (00h-0Fh)
  4956.  02h    WORD    return code (see #2130)
  4957.  04h  4 BYTEs    ???
  4958.  08h    WORD    ???
  4959.     ???
  4960.  
  4961. (Table 2130)
  4962. Values for 386MAX MEMLIMIT return code:
  4963.  00h    unknown request
  4964.  01h    invalid parameter for VCPI limit
  4965.  02h    VCPI limit set
  4966.  03h    invalid parameter for EMS limit
  4967.  04h    EMS limit set
  4968.  05h    DPMI disabled
  4969.  06h    XMS disabled
  4970.  07h    XMS limit set
  4971.  08h    unable to uninstall
  4972.  09h    unloaded
  4973. --------m-673F--CX5145-----------------------
  4974. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  4975.     AH = 3Fh
  4976.     CX = 5145h ("QE")
  4977.     DX = 4D4Dh ("MM")
  4978. Return: AH = 00h if installed
  4979.         ES:DI -> QEMM API entry point (see #2131,#2134,#2245)
  4980. Notes:    if no other program has hooked INT 67, an alternate installation
  4981.       check is to test for the string
  4982.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  4983.       handler's segment; the word at offset 12h contains the offset in
  4984.       the handler's segment of the API entry point
  4985.     although this function is still undocumented, Quarterdeck has recently
  4986.       documented two alternate methods for determining the QEMM API entry
  4987.       point, as well as several of the API functions
  4988.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  4989.       the alternate QEMM installation check and entry point functions 00h,
  4990.       02h, and 03h; version 4D only provides the signature string if the
  4991.       commandline argument "DV" is provided
  4992.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  4993.       recognize the returned entry point as providing QEMM's capabilities
  4994.       because a) only functions 0Ch (different from QEMM 0Ch) and
  4995.             1000h-1009h are supported,
  4996.           b) status is returned as for EMS functions, not QEMM funcs
  4997.           c) the protected-mode entry point returned by function 1000h
  4998.             only supports functions 0Ch, 1004h, 1005h, and 100Ah
  4999.     the string check mentioned above is not supported by 386MAX
  5000. SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
  5001. SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  5002.  
  5003. (Table 2131)
  5004. Values for calling QEMM "QPI_GetStatus" function:
  5005.     AH = 00h get QEMM state
  5006. Return: CF clear
  5007.     AL = QEMM state
  5008.         bit 0 set if QEMM turned OFF
  5009.         bit 1 set if in "Auto" mode
  5010. Note:    this function is officially documented
  5011. SeeAlso: #2132,#2133,#2134,#2245
  5012.  
  5013. (Table 2132)
  5014. Values for calling QEMM "QPI_SetStatus" function:
  5015.     AH = 01h set QEMM state
  5016.     AL = new state
  5017.         bit 0 set: place QEMM in OFF state
  5018. Return: CF clear if successful
  5019.     CF set on error
  5020. Note:    this function is officially documented
  5021. SeeAlso: #2131
  5022.  
  5023. (Table 2133)
  5024. Values for calling QEMM QPI function 02h:
  5025.     AH = 02h get ???
  5026. Return: CF clear
  5027.     AX = segment of ??? data structure
  5028.     Data Structure
  5029.     Offset    Size    Description
  5030.      00h    DWORD    page table entry for ???
  5031.         ???
  5032. SeeAlso: #2134
  5033.  
  5034. (Table 2134)
  5035. Values for calling QEMM "QPI_GetVersion" function:
  5036.     AH = 03h get QEMM version
  5037. Return: CF clear
  5038.     AX = BX = version in BCD
  5039. Notes:    this function is officially documented.     The most recent official docs
  5040.       state that the version is returned in both AX and BX; older
  5041.       documentation only mentions BX
  5042.     MICEMM returns AX=0001h, BX unchanged
  5043. SeeAlso: #2131,#2135
  5044.  
  5045. (Table 2135)
  5046. Values for calling QEMM QPI function 04h:
  5047.     AH = 04h allocate 4K page and set AUTO/ON mode
  5048. Return: CF clear if successful
  5049.         DX = page number of a 4K page
  5050.     CF set if unable to allocate page
  5051. Note:    QEMM mode unchanged if not AUTO/OFF
  5052. SeeAlso: #2136
  5053.  
  5054. (Table 2136)
  5055. Values for calling QEMM QPI function 05h:
  5056.     AH = 05h free 4K page and turn QEMM off
  5057.     DX = page number returned by function 04h
  5058. Return: CF clear
  5059. Note:    QEMM mode unchanged if not AUTO/ON
  5060. SeeAlso: #2135,#2137
  5061.  
  5062. (Table 2137)
  5063. Values for calling QEMM QPI function 06h:
  5064.     AH = 06h make new mapping context???
  5065.     DX = page number of 4K page to hold page table
  5066. Return: CF clear
  5067. Note:    copies page table into given page and then sets ??? page table entry
  5068.       to point at copy
  5069. SeeAlso: #2138,#2139
  5070.  
  5071. (Table 2138)
  5072. Values for calling QEMM QPI function 07h:
  5073.     AH = 07h get mapping context
  5074. Return: CF clear
  5075.     DX = page number of page table for current mapping context
  5076. SeeAlso: #2134,#2137,#2139
  5077.  
  5078. (Table 2139)
  5079. Values for calling QEMM QPI function 08h:
  5080.     AH = 08h set mapping context???
  5081.     DX = linear page number of page table
  5082. Return: CF clear
  5083. SeeAlso: #2134,#2137,#2138,#2140,#2142
  5084.  
  5085. (Table 2140)
  5086. Values for calling QEMM QPI function 09h:
  5087.     AH = 09h get linear page number for page table entry
  5088.     CX = page table index
  5089. Return: CF clear
  5090.     DX = linear page number
  5091. SeeAlso: #2141
  5092.  
  5093. (Table 2141)
  5094. Values for calling QEMM QPI function 0Ah:
  5095.     AH = 0Ah set linear page number for page table entry
  5096.     CX = page table index
  5097.     DX = linear page number
  5098. Return: CF clear
  5099. SeeAlso: #2140
  5100.  
  5101. (Table 2142)
  5102. Values for calling QEMM QPI function 0Bh:
  5103.     AH = 0Bh map 4K pages
  5104.     BX = number of pages
  5105.     CX = first page number (must be 0100h to allocate HMA)
  5106.     DX = EMS handle (memory belonging to EMS handle will be mapped
  5107.           into the address space beginning with the first page
  5108.           allocated to the handle)
  5109. Return: AH = 00h
  5110. SeeAlso: #2139,#2143
  5111.  
  5112. (Table 2143)
  5113. Values for calling QEMM QPI function 0Ch:
  5114.     AH = 0Ch get available memory
  5115. Return: CF clear
  5116.     BX = 0001h
  5117.     CX = total 4K pages???
  5118.     DX = number of 4K pages free
  5119. SeeAlso: #2142,#2144
  5120.  
  5121. (Table 2144)
  5122. Values for calling QEMM QPI function 0Dh:
  5123.     AH = 0Dh CRT controller I/O port trapping
  5124.     AL = mode
  5125.         00h only trap on I/O ports 03C0h-03C5h, 03C7h, 03CAh-03CFh
  5126.         01h trap on ports 03B4h, 03B5h, 03B8h, 03C6h, 03C8h, 03C9h,
  5127.           03D4h, and 03D5h
  5128.         02h only trap on I/O ports 03C6h, 03C8h, and 03C9h
  5129. Return: CF clear
  5130.  
  5131. (Table 2145)
  5132. Values for calling QEMM QPI function 0Eh:
  5133.     AH = 0Eh set cursor virtualization callbacks
  5134.     DS:BX -> FAR routine for getting hardware cursor address
  5135.     ES:DX -> FAR routine for setting hardware cursor address
  5136. Return: CF clear
  5137. Note:    both callbacks are invoked with CL indicating which
  5138.       CRT controller register to access (0Eh for high
  5139.       byte of cursor address, 0Fh for low byte)
  5140.     the DS:BX callback should return BX=cursor address;
  5141.       ES:DX is called with BL or BH (depending on CL)
  5142.       set to the appropriate half of the cursor's address
  5143.  
  5144. (Table 2146)
  5145. Values for calling QEMM QPI function 0Fh:
  5146.     AH = 0Fh unmap 4K pages
  5147.     CX = first page number
  5148.     DX = number of pages
  5149. Return: CF clear
  5150.     AL = 00h/01h if ???
  5151. Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  5152.       simulate a disabled A20
  5153.  
  5154. (Table 2147)
  5155. Values for calling QEMM QPI function 1000h:
  5156.     AX = 1000h get protected-mode interface
  5157.     DS:SI -> 16-byte buffer for two GDT entries
  5158.     ES:DI -> buffer for 4K page table
  5159. Return: CF clear
  5160.     EAX = offset of protected-mode API entry point
  5161.     DS:SI buffer filled with two GDT descriptors
  5162.         first is QEMM code segment, second is data???
  5163.     ES:DI buffer filled with 4K page table
  5164.     DI points to first unused page table entry
  5165. SeeAlso: INT 67/AX=DE01h
  5166.  
  5167. (Table 2148)
  5168. Values for calling QEMM QPI function 1001h:
  5169.     AX = 1001h get CPU debug registers
  5170.     ES:DI -> buffer for debug registers (8 DWORDs)
  5171. Return: CF clear
  5172.     BL = INT01 handling (see function 1002h)
  5173.     ES:DI buffer filled
  5174.  
  5175. (Table 2149)
  5176. Values for calling QEMM QPI function 1002h:
  5177.     AX = 1002h set CPU debug registers
  5178.     BL = INT01 handling
  5179.         00h     reflect all debugging exceptions as V86-mode INT 01's
  5180.         else convert debugging exceptions other than single-step
  5181.           into V86-mode INT 03's, single-step to INT 01's
  5182.     ES:DI -> buffer containing debug registers (8 DWORDs)
  5183. Return: CF clear
  5184. Notes:    identical to INT 67/AX=DE09h if BL=01h
  5185.     the INT01 handling flag is set to 01h by the general-protection
  5186.       violation handler for certain privileged instructions
  5187.  
  5188. (Table 2150)
  5189. Values for calling QEMM QPI function 1003h:
  5190.     AX = 1003h get machine status word CR0
  5191. Return: CF clear
  5192.     EAX = contents of CR0
  5193. SeeAlso: INT 67/AX=DE07h
  5194.  
  5195. (Table 2151)
  5196. Values for calling QEMM QPI function 1004h:
  5197.     AX = 1004h allocate a 4K page
  5198. Return: CF clear if successful
  5199.         EDX = linear address of allocated page
  5200.     CF set on error
  5201. SeeAlso: INT 67/AX=DE04h
  5202.  
  5203. (Table 2152)
  5204. Values for calling QEMM QPI function 1005h:
  5205.     AX = 1005h free 4K page
  5206.     EDX = linear address of page to free
  5207. Return: CF clear
  5208. SeeAlso: INT 67/AX=DE05h
  5209.  
  5210. (Table 2153)
  5211. Values for calling QEMM QPI function 1006h:
  5212.     AX = 1006h NOP
  5213. Return: CF set
  5214.  
  5215. (Table 2154)
  5216. Values for calling QEMM QPI function 1007h:
  5217.     AX = 1007h get maximum physical memory address
  5218. Return: CF clear
  5219.     EDX = physical address of highest 4K memory page
  5220. SeeAlso: INT 67/AX=DE02h
  5221.  
  5222. (Table 2155)
  5223. Values for calling QEMM QPI function 1008h:
  5224.     AX = 1008h get physical address of page in first megabyte
  5225.     CX = page number (linear address shifted right 12 bits)
  5226. Return: CF clear
  5227.     EDX = linear address of page
  5228. SeeAlso: function 1F00h
  5229.  
  5230. (Table 2156)
  5231. Values for calling QEMM QPI function 1009h:
  5232.     AX = 1009h switch to protected mode
  5233.     ESI = linear address in first megabyte of system reg values
  5234.           (see INT 67/AX=DE0Ch)
  5235.     interrupts disabled
  5236. Return: interrupts disabled
  5237.     GDTR, IDTR, LDTR, TR loaded
  5238.     SS:ESP must have at least 16 bytes space, and the
  5239.           entry point is required to set up a new stack
  5240.           before enabling interrupts
  5241.     EAX, ESI, DS, ES, FS, GS destroyed
  5242.  
  5243. (Table 2157)
  5244. Values for calling QEMM QPI function 100Ah:
  5245.     AX = 100Ah switch back to virtual-86 mode
  5246.     DS = selector for data segment from function 1000h
  5247.     SS:ESP in first megabyte of linear memory
  5248.     interrupts disabled
  5249.     STACK:    QWORD  return address from FAR call to 32-bit segment
  5250.         DWORD  EIP
  5251.         DWORD  CS
  5252.         DWORD  reserved for EFLAGS
  5253.         DWORD  ESP
  5254.         DWORD  SS
  5255.         DWORD  ES
  5256.         DWORD  DS
  5257.         DWORD  FS
  5258.         DWORD  GS
  5259.     will switch to virtual86 mode with interrupts disabled, all
  5260.       segment registers loaded, and EAX destroyed.
  5261.  
  5262. (Table 2158)
  5263. Values for calling QEMM QPI function 11h:
  5264.     AH = 11h get memory type map
  5265.     AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  5266.           by QEMM 6.00)
  5267.     ES:DI -> 256-byte buffer for memory types
  5268. Return: CF clear
  5269.     BL = ???
  5270.     ES:DI buffer filled
  5271. Note:    each byte of the buffer corresponds to a 4K page, and
  5272.       contains the type of that page: 00h = mappable,
  5273.       02h = mapped ROM, 03h = high RAM, 04h = excluded,
  5274.       05h = video, 06h = ROM, 07h = adapter ROM,
  5275.       08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  5276.       0Bh = conventional, 83h = high RAM under MS Windows
  5277.  
  5278. (Table 2159)
  5279. Values for calling QEMM QPI function 12h:
  5280.     AH = 12h get HIRAM chain
  5281. Return: CF clear
  5282.     BX = segment of first MCB in high memory
  5283.         0000h if no high memory
  5284.  
  5285. (Table 2160)
  5286. Values for calling QEMM QPI function 1300h:
  5287.     AX = 1300h VIDRAMEGA???
  5288.     BL = 00h copy ???
  5289.          nonzero copy ??? (reverse)
  5290. Return: CF clear
  5291.     AL = status
  5292.         00h if all pages clean
  5293.         01h if any page dirty
  5294.  
  5295. (Table 2161)
  5296. Values for calling QEMM QPI function 1301h:
  5297.     AX = 1301h check if pages modified
  5298.     DX:DI = start address of range to check
  5299.     CX = length of range in paragraphs
  5300. Return: CF clear
  5301.     CX = status
  5302.         0000h none of the indicated pages is dirty
  5303.         DI destroyed
  5304.         1000h one or more pages is dirty
  5305.         DI = low word of first dirty page's linear addr
  5306.  
  5307. (Table 2162)
  5308. Values for calling QEMM QPI function 1302h:
  5309.     AX = 1302h ???
  5310.     BL = ???
  5311.     BH = ???
  5312.     CX = ???
  5313.     SI = offset of ???
  5314.     DI = offset of ???
  5315.     ???
  5316. Return: CF clear
  5317.     ???
  5318. Note:    disables certain interrupts at the two 8259 PICs during
  5319.       execution; also modifies CRT controller during
  5320.       execution under certain circumstances
  5321.  
  5322. (Table 2163)
  5323. Values for calling QEMM QPI function 1303h:
  5324.     AX = 1303h initialize EGA graphics virtualization
  5325.     BX = number of pages (less 1) of EMS to allocate
  5326. Return: CF clear if successful
  5327.         DX = EMS handle
  5328.     CF set on error
  5329.  
  5330. (Table 2164)
  5331. Values for calling QEMM QPI function 1304h:
  5332.     AX = 1304h shutdown EGA graphics virtualization
  5333.     DX = EMS handle being used for virtualization
  5334. Return: CF clear
  5335.  
  5336. (Table 2165)
  5337. Values for calling QEMM QPI function 1305h:
  5338.     AX = 1305h select portion of EGA graphics to virtualize???
  5339.     (related to graphics virtualization, changes memory mappings)
  5340.     CX = start offset within A000h segment of virtualized mem???
  5341. Return: CF clear
  5342. Note:    disables certain interrupts at the two 8259 PICs during
  5343.       execution (see func 130Ch) and runs inside a QEMM
  5344.       critical section
  5345.  
  5346. (Table 2166)
  5347. Values for calling QEMM QPI function 1306h:
  5348.     AX = 1306h set DESQview critical section counter address
  5349.     ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  5350. Return: CF clear
  5351. Note:    also sets a pointer in the low-memory part of QEMM to
  5352.       the current value of INT 15 if ES:BX not 0000h:0000h
  5353.  
  5354. (Table 2167)
  5355. Values for calling QEMM QPI function 1307h:
  5356.     AX = 1307h ??? (changes memory mappings for entire A000h segment)
  5357. Return: CF clear
  5358. Note:    disables certain interrupts at the two 8259 PICs during
  5359.       execution (see func 130Ch) and runs inside a QEMM
  5360.       critical section
  5361.  
  5362. (Table 2168)
  5363. Values for calling QEMM QPI function 1308h:
  5364.     AX = 1308h start/reset CRT controller I/O trapping
  5365.     BL = subfunction
  5366.         00h restore CRTC I/O port trapping to previous state
  5367.         else start trapping all accesses to I/O ports 03B0-03DF
  5368. Return: CF clear
  5369. Note:    if called more than once in a row with BL nonzero, the
  5370.       original state of the I/O port trapping will be lost
  5371.  
  5372. (Table 2169)
  5373. Values for calling QEMM QPI function 1309h:
  5374.     AX = 1309h Hercules mode-change support
  5375.     ES:BX -> new address for Hercules mode-change callback
  5376. Return: CF clear
  5377. Note:    the callback function is called whenever the CRTC mode
  5378.       register is written, with AL set to the value written
  5379.  
  5380. (Table 2170)
  5381. Values for calling QEMM QPI function 130Ah:
  5382.     AX = 130Ah virtualize EGA/VGA DAC registers (I/O ports 03C8h/03C9h)
  5383.     CX:DX -> DAC register virtualization buffer (see #2252)
  5384.         or 0000h:0000h to disable
  5385. Return: CF clear
  5386.  
  5387. (Table 2171)
  5388. Values for calling QEMM QPI function 130Bh:
  5389.     AX = 130Bh ???
  5390.     BL = ??? (??? or 00h)
  5391. Return: CF clear
  5392.     ???
  5393. Note:    calls AX=130Eh in some cases
  5394.  
  5395. (Table 2172)
  5396. Values for calling QEMM QPI function 130Ch:
  5397.     AX = 130Ch set interrupts to mask
  5398.     BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  5399.           AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  5400. Return: CF clear
  5401.  
  5402. (Table 2173)
  5403. Values for calling QEMM QPI function 130Dh:
  5404.     AX = 130Dh map EGA memory at A0000h
  5405.     ???
  5406. Return: CF clear
  5407. Note:    disables certain interrupts at the two 8259 PICs during execution
  5408.       (see #2172) and runs inside a QEMM critical section
  5409.     calls AX=1307h (see #2167)
  5410.  
  5411. (Table 2174)
  5412. Values for calling QEMM QPI function 130Eh:
  5413.     AX = 130Eh ??? (modifies CRT controller setup)
  5414.     ???
  5415. Return: CF clear
  5416.  
  5417. (Table 2175)
  5418. Values for calling QEMM QPI function 130Fh:
  5419.     AX = 130Fh reset ???
  5420. Return: CF clear
  5421.  
  5422. (Table 2176)
  5423. Values for calling QEMM QPI function 1310h:
  5424.     AX = 1310h copy modified pages to physical video RAM???
  5425.     ???
  5426. Return: CF clear
  5427. Note:    disables certain interrupts at the two 8259 PICs during execution
  5428.       (see #2172) and runs inside a QEMM critical section
  5429.     also calls AX=130Dh (see #2173)
  5430.  
  5431. (Table 2177)
  5432. Values for calling QEMM QPI function 1311h:
  5433.     AX = 1311h set ???
  5434.     BL = zero/nonzero???
  5435. Return: CF clear
  5436. Note:    certain operations will be performed with interrupts
  5437.       (as set by AX=130Ch) enabled rather than disabled if
  5438.       called with BL nonzero
  5439.  
  5440. (Table 2178)
  5441. Values for calling QEMM QPI function 1312h:
  5442.     AX = 1312h (v6.02) NOP???
  5443. Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  5444.  
  5445. (Table 2179)
  5446. Values for calling QEMM QPI function 1400h:
  5447.     AX = 1400h initialize DESQview "protection level" support
  5448.     ES:DI -> protection level configuration (at least 24 bytes)
  5449.         (see #2246)
  5450.     BL = highest ??? to return (one less than number of words)
  5451. Return: CF clear
  5452.     AX = ??? (4204h for v6.00)
  5453. Note:    QEMM also sets the protected mode INT 02 and INT 06
  5454.       vectors to alternate handlers in certain cases
  5455.  
  5456. (Table 2180)
  5457. Values for calling QEMM QPI function 1401h:
  5458.     AX = 1401h turn off DESQview protection level support
  5459.         Return: CF clear
  5460.             ???
  5461.         Notes:    clears the DV critical-section flag address set with
  5462.               function 1306h
  5463.             QEMM also sets the protected mode INT 02 and INT 06
  5464.               vectors to the default handlers if they had been
  5465.               revectored by function 1400h
  5466.  
  5467. (Table 2181)
  5468. Values for calling QEMM QPI function 1402h:
  5469.     AX = 1402h set protection level???
  5470.         BL = protection level???
  5471.             00h NOP
  5472.             01h ???
  5473.             02h ???
  5474.             other (03h) ???
  5475.         ES:DI -> ???
  5476.         Return: CF clear
  5477.             ???
  5478.         Format of Data structure:
  5479.         Offset    Size    Description
  5480.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  5481.          02h    WORD    segment of ??? (word at X:0124h set to this)
  5482.          04h    WORD    number of paragraphs of ???
  5483.          06h  3 WORDs    ??? (copied to X:0000h)
  5484.          0Ch    WORD    ???
  5485.  
  5486. (Table 2182)
  5487. Values for calling QEMM QPI function 1403h:
  5488.     AX = 1403h add ??? to end of list and ??? (execute func 1406h)
  5489.         ES:DI -> ??? structure added to end of ??? list
  5490.             (at least 31 bytes, DWORD at offset 06h used for
  5491.              storing pointer to next struc, WORD at offset 00h
  5492.              seems to be a key or index)
  5493.         Return: CF clear
  5494.  
  5495. (Table 2183)
  5496. Values for calling QEMM QPI function 1404h:
  5497.     AX = 1404h NOP
  5498.         Return: CF clear
  5499.  
  5500. (Table 2184)
  5501. Values for calling QEMM QPI function 1405h:
  5502.     AX = 1405h remove ??? from ??? list
  5503.         BX = key???
  5504.         Return: CF clear
  5505.  
  5506. (Table 2185)
  5507. Values for calling QEMM QPI function 1406h:
  5508.     AX = 1406h ???
  5509.         ???
  5510.         Return: CF clear
  5511.             ???
  5512.         Notes:    this function is a NOP unless protection level 2 or 3
  5513.               is active
  5514.             when not a NOP, one of the actions is to write-protect
  5515.               certain memory pages
  5516.  
  5517. (Table 2186)
  5518. Values for calling QEMM QPI function 1407h:
  5519.     AX = 1407h ???
  5520.         ???
  5521.         Return: CF clear
  5522.             ???
  5523.         Note:    same as function 1406h, but only does anything if
  5524.               protection level 2 is active
  5525.  
  5526. (Table 2187)
  5527. Values for calling QEMM QPI function 1408h:
  5528.     AX = 1408h unprotect???
  5529.         ???
  5530.         Return: CF clear
  5531.             ???
  5532.  
  5533. (Table 2188)
  5534. Values for calling QEMM QPI function 1409h:
  5535.     AX = 1409h abort program causing protection violation???
  5536.         ???
  5537.         Return: CF clear
  5538.             ???
  5539.  
  5540. (Table 2189)
  5541. Values for calling QEMM QPI function 140Ah:
  5542.     AX = 140Ah set ???
  5543.         BX = index of ???
  5544.         Return: CF clear
  5545.             ???
  5546.         Notes:    no range checking is performed on BX
  5547.             this function is a NOP unless protection level 3 active
  5548.  
  5549. (Table 2190)
  5550. Values for calling QEMM QPI function 140Bh:
  5551.     AX = 140Bh get ???
  5552.         BX = index of ???
  5553.         SI = 0000h
  5554.         Return: CF clear
  5555.             SI = segment of 256-byte buffer??? or 0000h
  5556.         Notes:    no range checking is performed on BX
  5557.             this function is a NOP unless protection level 3 active
  5558.  
  5559. (Table 2191)
  5560. Values for calling QEMM QPI function 15h:
  5561.     AH = 15h set timer channel 0 virtualization buffer
  5562.         ES:BX -> WORD buffer for timer channel 0 divisor
  5563.             0000h:0000h to disable virtualization
  5564.         Return: CF clear
  5565.  
  5566. (Table 2192)
  5567. Values for calling QEMM v5.00+ QPI function 1600h:
  5568.     AX = 1600h get memory access status
  5569.         ES:DI -> 256-byte buffer
  5570.         Return: ES:DI buffer filled
  5571.         Note:    each byte of the buffer indicates the status of a 4K
  5572.               page (bit 0 set if read, bit 1 set if written)
  5573.  
  5574. (Table 2193)
  5575. Values for calling QEMM v5.00+ QPI function 1601h:
  5576.     AX = 1601h set memory access status
  5577.         ES:DI -> 256-byte buffer containing access statuses (see #2192)
  5578.  
  5579. (Table 2194)
  5580. Values for calling QEMM v5.00+ QPI function 17h:
  5581.     AH = 17h get memory usage statistics
  5582.         ES:DI -> 81-byte buffer for memory statistics (see #2250)
  5583.         Return: CF clear
  5584.  
  5585. (Table 2195)
  5586. Values for calling QEMM v5.11+ QPI function 18h:
  5587.     AH = 18h check whether conventional memory mapped into address range
  5588.         ES:BX = starting address
  5589.         CX = number of 4K pages
  5590.         Return: CF clear
  5591.             AL = 00h one or more pages is remapped
  5592.                  01h all pages in range are conventional memory
  5593.                 (physical address == virtual address)
  5594.  
  5595. (Table 2196)
  5596. Values for calling QEMM v5.11+ QPI function 19h:
  5597.     AH = 19h NOP
  5598.         Return: CF set
  5599.  
  5600. (Table 2197)
  5601. Values for calling QEMM v5.11+ "QPI_UntrappedIORead" function:
  5602.     AX = 1A00h get byte from I/O port
  5603.     DX = port number
  5604. Return: CF clear
  5605.     BL = port value
  5606. Note:    this function was officially documented with the release of QEMM 7.50
  5607.  
  5608. (Table 2198)
  5609. Values for calling QEMM v5.11+ "QPI_UntrappedIOWrite" function:
  5610.     AX = 1A01h send byte to I/O port
  5611.     BL = value to send
  5612.     DX = port number
  5613. Return: CF clear
  5614. Note:    this function was officially documented with the release of QEMM 7.50
  5615.  
  5616. (Table 2199)
  5617. Values for calling QEMM v5.11+ "QPI_UntrappedIOReadIndexed" function:
  5618.     AX = 1A02h
  5619.     BH = index value to send
  5620.     DX = base port number
  5621. Return: CF clear
  5622.     BL = value read from I/O port (DX+1)
  5623. Note:    this function was officially documented with the release of QEMM 7.50
  5624.  
  5625. (Table 2200)
  5626. Values for calling QEMM v5.11+ "QPI_UntrappedIOWriteIndexed" function:
  5627.     AX = 1A03h send bytes to two consecutive I/O ports
  5628.     BH = value for first I/O port (DX)
  5629.     BL = value for second I/O port (DX+1)
  5630.     DX = base port number
  5631. Return: CF clear
  5632. Note:    this function was officially documented with the release of QEMM 7.50
  5633.  
  5634. (Table 2201)
  5635. Values for calling QEMM v7.03+ "QPI_UntrappedIO" function:
  5636.     AX = 1A04h
  5637.     BX = value to write to port
  5638.     CX = direction and size
  5639.         bit 2: output instead of input
  5640.         bit 3: word instead of byte
  5641.     DX = I/O port to be accessed
  5642. Return: CF clear
  5643.     BX = value read (if CX indicates read)
  5644. Note:    this function was officially documented with the release of QEMM 7.50
  5645.  
  5646. (Table 2202)
  5647. Values for calling QEMM v7.03+ function 1A05h
  5648.     AX = 1A05h
  5649.     ???
  5650. Return: ???
  5651.  
  5652. (Table 2203)
  5653. Values for calling QEMM v7.03+ "QPI_GetIOCallback" function:
  5654.     AX = 1A06h
  5655. Return: CF clear
  5656.     ES:DI -> current I/O callback function
  5657. Note:    this function was officially documented with the release of QEMM 7.50
  5658.  
  5659. (Table 2204)
  5660. Values for calling QEMM v7.03+ "QPI_SetIOCallback" function:
  5661.     AX = 1A07h
  5662.     ES:DI -> new I/O callback function (see #2711)
  5663. Return: CF clear
  5664. Note:    this function was officially documented with the release of QEMM 7.50
  5665.  
  5666. (Table 2711)
  5667. Values QEMM v7.03+ I/O callback function is called with:
  5668.     AL/AX = data to/from trapped port
  5669.     CL = I/O direction (00h = IN instruction, else OUT instruction)
  5670.     DX = I/O port address
  5671. Return: CF clear if port handled by callback function
  5672.     CF set if not handled
  5673.     all other registers returned to application executing the IN or OUT
  5674.       instruction (allowing arbitrary changes to port address, data value,
  5675.       etc.)
  5676. SeeAlso: #2204
  5677.  
  5678. (Table 2205)
  5679. Values for calling QEMM v7.03+ "QPI_GetPortTrap" function:
  5680.     AX = 1A08h
  5681.     DX = I/O port number
  5682. Return: CF clear
  5683.     BL = trapping state (00h not being trapped, 01h trap installed)
  5684. Note:    this function was officially documented with the release of QEMM 7.50
  5685.  
  5686. (Table 2206)
  5687. Values for calling QEMM v7.03+ "QPI_SetPortTrap" function:
  5688.     AX = 1A09h
  5689.     DX = I/O port number
  5690. Return: CF clear
  5691. Note:    this function was officially documented with the release of QEMM 7.50
  5692.  
  5693. (Table 2207)
  5694. Values for calling QEMM v7.03+ "QPI_ClearPortTrap" function:
  5695.     AX = 1A0Ah
  5696.     DX = I/O port number
  5697. Return: CF clear
  5698. Note:    this function was officially documented with the release of QEMM 7.50
  5699.  
  5700. (Table 2208)
  5701. Values for calling QEMM v5.11+ QPI function 1B00h:
  5702.     AX = 1B00h get EMM Import Structure address
  5703.     ES:DI -> buffer for EMM import data structure (see #2248)
  5704. Return: CF set on error
  5705.     CF clear if successful
  5706. SeeAlso: INT 21/AX=4402h/SF=01h
  5707.  
  5708. (Table 2209)
  5709. Values for calling QEMM v5.11+ QPI function 1B01h:
  5710.     AX = 1B01h disable V86 mode
  5711. Return: CF set on error
  5712.         (i.e. no Global EMM Import rec. allocated)
  5713.     CF clear if successful
  5714. Note:    shuts down EMS and initializes Global EMM Import record; this function
  5715.       is invoked from the callback supplied by INT 2F/AX=1605h
  5716.  
  5717. (Table 2210)
  5718. Values for calling QEMM v5.11+ QPI function 1B02h:
  5719.     AX = 1B02h enable V86 mode
  5720. Return: CF set on error
  5721.     CF clear if successful
  5722. Note:    restarts EMS and frees Global EMM Import record; this function is
  5723.       invoked from the callback supplied by INT 2F/AX=1605h
  5724.  
  5725. (Table 2211)
  5726. Values for calling QEMM v5.11+ QPI function 1B03h:
  5727.     AX = 1B03h MS Windows initializing
  5728.     CX = segment from which Windows init broadcast made???
  5729.     DX = Windows startup flags
  5730.     DI = Windows version number (major in upper byte)
  5731. Return: CF clear if successful
  5732.         DS:SI -> V86 mode enable/disable callback
  5733.           (see #1413 at INT 2F/AX=1605h)
  5734.         ES:BX -> startup info structure (see #1410 at INT 2F/AX=1605h)
  5735.     CF set on error (unable to start Windows)
  5736. SeeAlso: INT 2F/AX=1605h
  5737.  
  5738. (Table 2212)
  5739. Values for calling QEMM v5.11+ QPI function 1B04h:
  5740.     AX = 1B04h MS Windows terminating
  5741. Return: CF clear
  5742.  
  5743. (Table 2213)
  5744. Values for calling QEMM v5.11+ QPI function 1B05h:
  5745.     AX = 1B05h determine whether program is driver
  5746.     DS:DX -> ASCIZ filename
  5747. Return: CF clear
  5748.     AL = status
  5749.         01h if string ends in ".DRV"
  5750.         FFh if string ends in "GDI.EXE"
  5751.         00h otherwise
  5752. Note:    when MS Windows 3.0 standard mode starts, QEMM patches all drivers
  5753.       until GDI.EXE is loaded
  5754.  
  5755. (Table 2214)
  5756. Values for calling QEMM v5.11+ QPI function 1B06h:
  5757.     AX = 1B06h patch protected-mode check in Windows driver
  5758.     CX = length of data pointed at by DS:DX
  5759.     DS:DX -> buffer containing Windows driver code
  5760. Return: CF clear
  5761. Note:    patches all SMSW x/TEST x,1 instruction sequences into MOV x,CS/VERW x
  5762.       sequences, which has the effect that the protected-mode check will
  5763.       only indicate protected mode in native protected mode and not in V86
  5764.       mode
  5765.  
  5766. (Table 2215)
  5767. Values for calling QEMM v5.11+ QPI function 1B07h:
  5768.     AX = 1B07h
  5769. BUG: QEMM 6.00-7.01 accept this and branch randomly
  5770.  
  5771. (Table 2216)
  5772. Values for calling QEMM v5.11+ QPI function 1Bxxh:
  5773.     AX = 1B08h to 1BFFh
  5774. Return: CF set
  5775.  
  5776. (Table 2217)
  5777. Values for calling QEMM v5.11+ QPI function 1C00h:
  5778.     AX = 1C00h disable IRQ0-7 calldowns
  5779. Return: CF clear
  5780.  
  5781. (Table 2218)
  5782. Values for calling QEMM v5.11+ QPI function 1C01h:
  5783.     AX = 1C01h set V86-mode IRQ0-7 handlers
  5784.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  5785. Return: CF clear
  5786.  
  5787. (Table 2219)
  5788. Values for calling QEMM v5.11+ QPI function 1C02h:
  5789.     AX = 1C02h disable IRQ8-15 handlers
  5790. Return: CF clear
  5791.  
  5792. (Table 2220)
  5793. Values for calling QEMM v5.11+ QPI function 1C03h:
  5794.     AX = 1C03h set V86-mode IRQ8-15 handlers
  5795.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  5796. BUG:    although the jump table only contains four entries, QEMM 6.00 will
  5797.       attempt to use it for any value of AL between 00h and 2Ah, thus
  5798.       branching unpredictably for AL=04h-2Ah; QEMM v7.01 behaves
  5799.       similarly for AL=04h-1Bh
  5800. Note:    when enabled, the appropriate IRQs are reflected back to the specified
  5801.       handlers in virtual-86 mode after the CPU automatically invokes the
  5802.       protected-mode handler inside QEMM
  5803.  
  5804. (Table 2221)
  5805. Values for calling QEMM v7.03+ "QPI_SimulateHWInt" function:
  5806.     AX = 1C04h
  5807.     BX = number of interrupt to simulate
  5808. Return: ???
  5809. Notes:    this function will allow proper simulation of a hardware interrupt
  5810.       under DESQview and DESQview/X, where the correct interrupt handler
  5811.       may be in a different process with a completely different address
  5812.       space
  5813.     this function was officially documented with the release of QEMM v7.50
  5814.  
  5815. (Table 2222)
  5816. Values for calling QEMM v6.0x only QPI function 1D00h:
  5817.     AX = 1D00h switch to pre-Stealth interrupt vector table
  5818. Return: CF clear if supported (QEMM v6.x)
  5819.     CF set if not supported (QEMM v7+)
  5820. Notes:    also switches VGA Save table pointer (0040h:00A8h) and overwrites the
  5821.       vectors currently assigned for use by the two interrupt controllers
  5822.       (see INT 67/AX=DE0Ah) with the vectors for INT 08-0F and 70-77 (to
  5823.       avoid crashing the system).
  5824.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  5825.       set
  5826.  
  5827. (Table 2223)
  5828. Values for calling QEMM v6.0x only QPI function 1D01h:
  5829.     AX = 1D01h restore user interrupt vector table
  5830. Return: CF clear if supported (QEMM v6.x)
  5831.     CF set if not supported (QEMM v7+)
  5832. Notes:    interrupts should be disabled around the AX=1D00h and AX=1D01h calls
  5833.       because QEMM does not modify the memory maps to map in ROM, so
  5834.       an interrupt could be disastrous
  5835.     clears any pending IRQ7 at end of function
  5836.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  5837.       set
  5838.  
  5839. (Table 2224)
  5840. Values for calling QEMM v6.00+ QPI function 1Dxxh:
  5841.     AX = 1D02h to 1DFFh
  5842. Return: CF set
  5843.  
  5844. (Table 2225)
  5845. Values for calling QEMM v6.00+ "QEMM_GET_INFO"/"QPI_GetInfo" function:
  5846.     AX = 1E00h get Stealth configuration
  5847. Return:    CF clear
  5848.     BL = memory configuration flags (documented as "reserved") (see #2249)
  5849.     BH = (v7.00+) disk buffer flags
  5850.         bit 0: DISKBUFFRAME buffer instead of DISKBUF buffer
  5851.         bit 1: buffer has already been used
  5852.     CL = stealth type (00h none, 46h Frame, 4Dh Map, 50h Protect)
  5853.     CH = suspend/resume interrupt (00h none)
  5854.     DL = (v7.00+) size of QEMM disk buffer in KB (00h none)
  5855.     DH = reserved (always 00h for v6.00)
  5856.     SI = reserved (always 0000h for v6.00)
  5857.     DI = reserved (always 0000h for v6.00)
  5858. Note:    this function is officially documented
  5859.  
  5860. (Table 2226)
  5861. Values for calling QEMM v6.00+ "QPI_GetStealthCount" function:
  5862.     AX = 1E01h get number of Stealth'ed ROMs
  5863. Return: CF clear
  5864.     BX = number of Stealth'ed ROMs
  5865. Note:    this function is officially documented
  5866.  
  5867. (Table 2227)
  5868. Values for calling QEMM v6.00+ "QPI_GetStealthList" function:
  5869.     AX = 1E02h
  5870.     ES:DI -> buffer for Stealth ROM info (see #2251)
  5871. Return: CF clear
  5872.     BX = number of Stealth'ed ROMs
  5873.     ES:DI buffer filled
  5874. Note:    this function is officially documented
  5875.  
  5876. (Table 2228)
  5877. Values for unimplemented Stealth information functions:
  5878.     AX = 1E03h to 1EFFh
  5879. Return: CF set
  5880.  
  5881.  
  5882. (Table 2229)
  5883. Values for calling QEMM v6.00+ "QEMM_GET_PTE"/"QPI_GetPTE" function:
  5884.     AX = 1F00h get page table entry
  5885.     CX = page number (0000h-010Fh)
  5886. Return:    CF clear
  5887.     EDX = page table entry
  5888. Note:    this function is officially documented
  5889.  
  5890. (Table 2230)
  5891. Values for calling QEMM v6.00+ "QEMM_SET_PTE"/"QPI_SetPTE" function:
  5892.     AX = 1F01h set page table entry
  5893.     CX = page number (0000h-010Fh)
  5894.     EDX = new page table entry
  5895. Return: CF clear
  5896. Note:    this function is officially documented
  5897. SeeAlso: function 1008h
  5898.  
  5899. (Table 2231)
  5900. Values for calling QEMM v6.00+ QPI function 1Fxxh:
  5901.     AX = 1F02h to 1FFFh
  5902. Return: CF set
  5903.  
  5904. (Table 2232)
  5905. Values for calling QEMM v6.00+ "QEMM_GET_VHI_INFO"/"QPI_GetVHIInfo" function:
  5906.     AX = 2000h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
  5907. Return: CF clear
  5908.     BL = flags
  5909.         bit 7: VirtualHDIRQ setting respected
  5910.           (set if Stealth active)
  5911.         bits 6-1 reserved
  5912.         bit 0: VirtualHDIRQ currently enabled
  5913.         (INT 15/AH=90h suppressed when enabled)
  5914. Note:    this function is officially documented
  5915. SeeAlso: #2233
  5916.  
  5917. (Table 2233)
  5918. Values for calling QEMM v6.00+ "QEMM_SET_VHI_INFO"/"QPI_SetVHIInfo" function:
  5919.     AX = 2001h set VirtualHDIRQ state
  5920.     BL bit 0 = new VirtualHDIRQ state
  5921. Return: CF clear
  5922.     BL = old VHI setting (bits 0 and 7, see #2232)
  5923. Note:    this function is officially documented
  5924. SeeAlso: #2232
  5925.  
  5926. (Table 2234)
  5927. Values for calling QEMM v6.00+ QPI function 20xxh:
  5928.     AX = 2002h to 20FFh
  5929. Return: CF set
  5930.  
  5931. (Table 2235)
  5932. Values for calling QEMM v6.00+ "QEMM_COPY_STEALTH_ROMS"/"QPI_CopyStealthRoms":
  5933.     AX = 2100h copy data from Stealthed address space
  5934.     DS:SI -> start address of hidden memory to copy
  5935.     ES:DI -> buffer for copied data
  5936.     ECX = number of bytes to copy
  5937. Return: CF clear if successful
  5938.     CF set on error (no Stealth or DS:SI < C000h:0000h or DS:SI + ECX > 1M)
  5939. Note:    this function was officially documented with the release of QEMM 7.50
  5940.  
  5941. (Table 2236)
  5942. Values for calling QEMM v6.00+ QPI function 21xxh:
  5943.     AX = 2101h to 21FFh
  5944. Return: CF set
  5945.  
  5946. (Table 2237)
  5947. Values for calling QEMM v6.03+ QPI function 2200h:
  5948.     AX = 2200h DESQview/X support -- get ???
  5949. Return: CF clear
  5950.     ES:DI -> ???
  5951.  
  5952. (Table 2238)
  5953. Values for calling QEMM v6.03+ QPI function 2201h:
  5954.     AX = 2201h DESQview/X support -- set ???
  5955.     ES:DI -> ??? or 0000h:0000h
  5956. Return: CF clear if successful
  5957.     CF set on error
  5958.  
  5959. (Table 2239)
  5960. Values for calling QEMM v6.04+ QPI function 2300h:
  5961.     AX = 2300h get ???
  5962.     BX = which ??? to get (must be 0000h for v6.04)
  5963. Return: CF clear if successful
  5964.         ES:DI -> ???
  5965.     CF set on error
  5966.  
  5967. (Table 2240)
  5968. Values for calling QEMM v6.04+ QPI function 2301h:
  5969.     AX = 2301h set ???
  5970.     BX = which ??? to set (must be 0000h for v6.04)
  5971.     ES:DI -> ???
  5972. Return: CF clear if successful
  5973.     CF set on error
  5974.  
  5975. (Table 2241)
  5976. Values for calling QEMM v6.04+ QPI function 2302h:
  5977.     AX = 2302h clear specified ???
  5978.     BX = which ??? to clear (must be 0000h for v6.04)
  5979. Return: CF clear if successful
  5980.     CF set on error
  5981.  
  5982. (Table 2242)
  5983. Values for calling QEMM v6.04+ QPI function 23FFh:
  5984.     AX = 23FFh clear all ???
  5985. Return: CF clear if successful
  5986.     CF set on error
  5987.  
  5988. (Table 2243)
  5989. Values for calling QEMM v6.04+ QPI function 23xxh:
  5990.     AX = 2303h to 23FEh
  5991. Return: CF set
  5992.  
  5993. (Table 2244)
  5994. Values for calling QEMM v7.01+ QPI function 24h:
  5995.     AH = 24h ST-DBL support
  5996.     AL = subfunction
  5997.         00h set ???
  5998.         EDX -> information table (EDX = segment SHL 16 + offset)
  5999.         01h ???
  6000. Return: CF clear if successful
  6001.     CF set on error
  6002.  
  6003. (Table 2245)
  6004. Values for calling QEMM unimplemented QPI functions:
  6005.     AH = 25h to FFh
  6006. Return: CF set
  6007.  
  6008. Format of QEMM protection level configuration:
  6009. Offset    Size    Description    (Table 2246)
  6010.  00h    WORD    segment of 128 breakpoint (INT 3) instructions for use in
  6011.           DESQview protection level 3 interrupt vector checking, or
  6012.           0000h to disable; in pl3, INTs 00-7F are pointed at these
  6013.           breakpoints
  6014.  02h    DWORD    -> array of actual interrupt handler addresses for INT 00-7F
  6015.           when interrupt vectors are pointed at protection level 3
  6016.           breakpoints
  6017.  06h    DWORD    far pointer to ??? region list (see #2247)
  6018.  0Ah    DWORD    far pointer to buffer for returned ???
  6019.  0Eh    DWORD    seg:ofs of function to call on protection violation???
  6020.  12h    WORD    segment of ???
  6021.  14h    DWORD    far pointer to DWORD containing number of paragraphs of
  6022.           ??? for segment at offset 12h
  6023.     ???
  6024.  
  6025. Format of protection level Region List:
  6026. Offset    Size    Description    (Table 2247)
  6027.  00h    WORD    number of PAIRS of pointers to follow
  6028.  02h 2N DWORDs    start/end seg:ofs addresses of ??? regions
  6029. Note:    QEMM converts the segmented addresses into linear addresses in place
  6030.  
  6031. Format of EMM Import structure:
  6032. Offset    Size    Description    (Table 2248)
  6033.  00h    DWORD    physical address of EMM import struct
  6034.  04h    BYTE    major version (v6.00 sets to 01h)
  6035.  05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  6036. SeeAlso: INT 21/AX=4402h/SF=01h
  6037.  
  6038. Bitfields for memory configuration flags:
  6039. Bit(s)    Description    (Table 2249)
  6040.  0    conventional memory sorted
  6041.  1    conventional memory filled
  6042.  2    ???
  6043.  3    ???
  6044.  4    expanded memory is in use
  6045.  5    ???
  6046.  
  6047. Format of QEMM 6.0 memory statistics:
  6048. Offset    Size    Description    (Table 2250)
  6049.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  6050.  01h    DWORD    initial conventional memory in bytes
  6051.  05h    DWORD    initial extended memory in bytes
  6052.  09h    DWORD    initial expanded memory in bytes
  6053.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  6054.  11h    DWORD    Unavailable conventional memory in bytes
  6055.  15h    DWORD    Unavailable extended memory in bytes
  6056.  19h    DWORD    Unavailable expanded memory in bytes
  6057.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  6058.         Add to offset 49h for Total unavailable top/shadow.
  6059.  21h    DWORD    QEMM code size in bytes
  6060.  25h    DWORD    QEMM data size in bytes
  6061.  29h    DWORD    bytes used for TASKS=
  6062.  2Dh    DWORD    DMA buffer size
  6063.  31h    DWORD    bytes used for MAPS=
  6064.  35h    DWORD    bytes of high RAM
  6065.  39h    DWORD    bytes used by mapped ROMs
  6066.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  6067.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  6068.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  6069.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  6070.         Add to offset 1Dh for Total unavailable top/shadow.
  6071.  4Dh    DWORD    conventional memory overhead in bytes
  6072.         (set to 0 by QEMM.COM prior to call)
  6073.  
  6074. Format of Stealth ROM info [array]:
  6075. Offset    Size    Description    (Table 2251)
  6076.  00h    WORD    starting segment of ROM
  6077.  02h    WORD    length of ROM in paragraphs
  6078.  
  6079. Format of QEMM EGA/VGA DAC register virtualization buffer:
  6080. Offset    Size    Description    (Table 2252)
  6081.  00h    BYTE    (temp) current color register number
  6082.  01h    BYTE    (temp) number of bytes written so far for current color reg
  6083.  02h 768 BYTEs    three bytes per color register
  6084. --------m-6740-------------------------------
  6085. INT 67 - LIM EMS - GET MANAGER STATUS
  6086.     AH = 40h
  6087. Return: AH = status (00h,80h,81h,84h) (see #2253)
  6088. Note:    this call can be used only after establishing that the EMS driver is in
  6089.       fact present
  6090. SeeAlso: AH=3Fh,AX=FFA5h
  6091.  
  6092. (Table 2253)
  6093. Values for EMS function status:
  6094.  00h    successful
  6095.  80h    internal error
  6096.  81h    hardware malfunction
  6097.  83h    invalid handle
  6098.  84h    undefined function requested by application
  6099.  85h    no more handles available
  6100.  86h    error in save or restore of mapping context
  6101.  87h    insufficient memory pages in system
  6102.  88h    insufficient memory pages available
  6103.  89h    zero pages requested
  6104.  8Ah    invalid logical page number encountered
  6105.  8Bh    invalid physical page number encountered
  6106.  8Ch    page-mapping hardware state save area is full
  6107.  8Dh    save of mapping context failed
  6108.  8Eh    restore of mapping context failed
  6109.  8Fh    undefined subfunction
  6110.  90h    undefined attribute type
  6111.  91h    feature not supported
  6112.  92h    successful, but a portion of the source region has been overwritten
  6113.  93h    length of source or destination region exceeds length of region
  6114.       allocated to either source or destination handle
  6115.  94h    conventional and expanded memory regions overlap
  6116.  95h    offset within logical page exceeds size of logical page
  6117.  96h    region length exceeds 1M
  6118.  97h    source and destination EMS regions have same handle and overlap
  6119.  98h    memory source or destination type undefined
  6120.  9Ah    specified alternate map register or DMA register set not supported
  6121.  9Bh    all alternate map register or DMA register sets currently allocated
  6122.  9Ch    alternate map register or DMA register sets not supported
  6123.  9Dh    undefined or unallocated alternate map register or DMA register set
  6124.  9Eh    dedicated DMA channels not supported
  6125.  9Fh    specified dedicated DMA channel not supported
  6126.  A0h    no such handle name
  6127.  A1h    a handle found had no name, or duplicate handle name
  6128.  A2h    attempted to wrap around 1M conventional address space
  6129.  A3h    source array corrupted
  6130.  A4h    operating system denied access
  6131. --------m-6741-------------------------------
  6132. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  6133.     AH = 41h
  6134. Return: AH = status (see also AH=40h)
  6135.         00h function successful
  6136.         BX = segment of page frame
  6137. SeeAlso: AH=58h,AH=68h
  6138. --------m-6742-------------------------------
  6139. INT 67 - LIM EMS - GET NUMBER OF PAGES
  6140.     AH = 42h
  6141. Return: AH = status (see also AH=40h)
  6142.         00h function successful
  6143.         BX = number of unallocated pages
  6144.         DX = total number of pages
  6145. BUG:    DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
  6146.       when this call is made; use AH=46h to ensure that EMM386 is ON
  6147.       before making this call
  6148. SeeAlso: INT 2F/AX=2702h
  6149. --------m-6743-------------------------------
  6150. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  6151.     AH = 43h
  6152.     BX = number of logical pages to allocate
  6153. Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see #2253)
  6154.     DX = handle if AH=00h
  6155. SeeAlso: AH=45h
  6156. --------m-6744-------------------------------
  6157. INT 67 - LIM EMS - MAP MEMORY
  6158.     AH = 44h
  6159.     AL = physical page number (0-3)
  6160.     BX = logical page number
  6161.         or FFFFh to unmap (QEMM)
  6162.     DX = handle
  6163. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see #2253)
  6164. SeeAlso: AH=69h
  6165. --------m-6745-------------------------------
  6166. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  6167.     AH = 45h
  6168.     DX = EMM handle
  6169. Return: AH = status (00h,80h,81h,83h,84h,86h) (see #2253)
  6170. SeeAlso: AH=43h
  6171. --------m-6746-------------------------------
  6172. INT 67 - LIM EMS - GET EMM VERSION
  6173.     AH = 46h
  6174. Return: AH = status (00h,80h,81h,84h) (see #2253)
  6175.     AL = EMM version number if AH=00h
  6176. --------m-6747-------------------------------
  6177. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  6178.     AH = 47h
  6179.     DX = handle
  6180. Return: AH = status (00h,80h,81h,83h,84h,8Ch-8Eh) (see #2253)
  6181. SeeAlso: AH=48h
  6182. --------m-6748-------------------------------
  6183. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  6184.     AH = 48h
  6185.     DX = handle
  6186. Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see #2253)
  6187. SeeAlso: AH=47h
  6188. --------m-6749-------------------------------
  6189. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  6190.     AH = 49h
  6191. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  6192. --------m-674A-------------------------------
  6193. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  6194.     AH = 4Ah
  6195. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  6196. --------m-674B-------------------------------
  6197. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  6198.     AH = 4Bh
  6199. Return: AH = status (00h,80h,81h,83h,84h) (see #2253)
  6200.     BX = number of EMM handles if AH=00h
  6201. --------m-674C-------------------------------
  6202. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  6203.     AH = 4Ch
  6204.     DX = EMM handle
  6205. Return: AH = status (see #1504)
  6206.     BX = number of logical pages if AH=00h
  6207. SeeAlso: AH=4Dh
  6208. --------m-674D-------------------------------
  6209. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  6210.     AH = 4Dh
  6211.     ES:DI -> array to receive information
  6212. Return: AH = status (00h,80h,81h,84h) (see #2253)
  6213.     ---if AH=00h---
  6214.     BX = number of active EMM handles
  6215.     array filled with 2-word entries, consisting of a handle and the
  6216.       number of pages allocated to that handle
  6217. SeeAlso: AH=4Ch
  6218. --------m-674E-------------------------------
  6219. INT 67 - LIM EMS - GET OR SET PAGE MAP
  6220.     AH = 4Eh
  6221.     AL = subfunction
  6222.         00h get mapping registers
  6223.         01h set mapping registers
  6224.         02h get and set mapping registers at once
  6225.         03h get size of page-mapping array
  6226.     DS:SI -> array holding information (AL=01h/02h)
  6227.     ES:DI -> array to receive information (AL=00h/02h)
  6228. Return: AH = status (00h,80h,81h,84h,8Fh,A3h) (see also AH=40h)
  6229.         00h successful
  6230.         AL = bytes in page-mapping array (AL=03h only)
  6231.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  6232. Notes:    this function was designed to be used by multitasking operating systems
  6233.       and should not ordinarily be used by appplication software.
  6234.     MD386 returns the size of the page-mapping array in AX instead of AL
  6235. SeeAlso: AH=4Fh
  6236. --------m-674F-------------------------------
  6237. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  6238.     AH = 4Fh
  6239.     AL = subfunction
  6240.         00h get partial page map
  6241.            DS:SI -> structure containing list of segments whose mapping
  6242.             contexts are to be saved
  6243.            ES:DI -> array to receive page map
  6244.         01h set partial page map
  6245.            DS:SI -> structure containing saved partial page map
  6246.         02h get size of partial page map
  6247.            BX = number of mappable segments in the partial map to be saved
  6248. Return: AH = status (00h,80h,81h,84h,8Bh,8Fh,A3h) (see also AH=40h)
  6249.         8Bh one of the specified segments is not mappable
  6250.         A3h contents of partial page map corrupted or count of mappable
  6251.         segments exceeds total number of mappable segments in system
  6252.     AL = size of partial page map for subfunction 02h
  6253. SeeAlso: AH=4Eh
  6254. --------m-6750-------------------------------
  6255. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  6256.     AH = 50h
  6257.     AL = subfunction
  6258.         00h use physical page numbers
  6259.         01h use segment addresses
  6260.     DX = handle
  6261.     CX = number of entries in array
  6262.     DS:SI -> mapping array (see #2254)
  6263. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2253)
  6264. SeeAlso: AH=40h
  6265.  
  6266. Format of EMS mapping array entry:
  6267. Offset    Size    Description    (Table 2254)
  6268.  00h    WORD    logical page number or FFFFh to unmap physical page
  6269.  02h    WORD    physical page number or segment address
  6270. --------m-6751-------------------------------
  6271. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  6272.     AH = 51h
  6273.     DX = handle
  6274.     BX = number of pages to be allocated to handle
  6275. Return:    AH = status (00h,80h,81h,83h,84h,87h,88h) (see #2255)
  6276.     BX = actual number of pages allocated to handle
  6277.  
  6278. (Table 2255)
  6279. Values for EMS function status:
  6280.  00h    successful
  6281.  80h    internal error
  6282.  81h    hardware malfunction
  6283.  83h    invalid handle
  6284.  84h    undefined function requested
  6285.  87h    more pages requested than present in system
  6286.  88h    more pages requested than currently available
  6287.  8Ah    invalid logical page number encountered
  6288.  8Bh    invalid physical page number encountered
  6289.  8Fh    undefined subfunction
  6290.  90h    undefined attribute type
  6291.  91h    feature not supported
  6292.  A0h    no such handle name
  6293.  A1h    duplicate handle name
  6294. --------m-6752-------------------------------
  6295. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  6296.     AH = 52h
  6297.     AL = subfunction
  6298.         00h get handle attributes
  6299.         Return: AL = attribute
  6300.                 00h handle is volatile
  6301.                 01h handle is nonvolatile
  6302.         01h set handle attributes
  6303.         BL = new attribute (see returned AL)
  6304.         02h get attribute capability
  6305.         Return: AL = attribute capability
  6306.                 00h only volatile handles supported
  6307.                 01h both volatile and non-volatile supported
  6308.     DX = handle
  6309. Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see #2253)
  6310. SeeAlso: AH=53h
  6311. --------m-6753-------------------------------
  6312. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  6313.     AH = 53h
  6314.     AL = subfunction
  6315.         00h get handle name
  6316.            ES:DI -> 8-byte buffer for handle name
  6317.         01h set handle name
  6318.            DS:SI -> 8-byte handle name
  6319.     DX = handle
  6320. Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see #2253)
  6321. SeeAlso: AH=52h
  6322. --------m-6754-------------------------------
  6323. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  6324.     AH = 54h
  6325.     AL = subfunction
  6326.         00h get handle directory
  6327.            ES:DI -> buffer for handle directory (see #2256)
  6328.         01h search for named handle
  6329.            DS:SI -> 8-byte name
  6330.         02h get total number of handles
  6331. Return: AL = number of entries in handle directory (subfunction 00h)
  6332.     DX = value of named handle (subfunction 01h)
  6333.     BX = total number of handles (subfunction 02h)
  6334.     AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also #2255)
  6335.         A1h a handle found had no name
  6336.  
  6337. Format of EMS handle directory entry:
  6338. Offset    Size    Description    (Table 2256)
  6339.  00h    WORD    handle
  6340.  02h  8 BYTEs    handle's name
  6341. --------m-6755-------------------------------
  6342. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  6343.     AH = 55h
  6344.     AL = subfunction
  6345.         00h physical page numbers provided by caller
  6346.         01h segment addresses provided by caller
  6347.     DX = handle
  6348.     DS:SI -> structure containing map and jump address
  6349. Return: (at target address unless error)
  6350.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2253)
  6351. SeeAlso: AH=56h
  6352. --------m-6756-------------------------------
  6353. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  6354.     AH = 56h
  6355.     AL = subfunction
  6356.         00h physical page numbers provided by caller
  6357.         DX = handle
  6358.         DS:SI -> structure containing page map and call address
  6359.         01h segment addresses provided by caller
  6360.         DX = handle
  6361.         DS:SI -> structure containing page map and call address
  6362.         02h get page map stack space required
  6363.         Return: BX = stack space required
  6364. Return: (if successful, the target address is called.  Use a RETF to return and
  6365.      restore mapping context)
  6366.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2253)
  6367. SeeAlso: AH=55h
  6368. --------m-6756FF-----------------------------
  6369. INT 67 - RM386 v6.00 - ???
  6370.     AX = 56FFh
  6371.     DS:SI -> ???
  6372.     ???
  6373. Return: ???
  6374. --------m-6757-------------------------------
  6375. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  6376.     AH = 57h
  6377.     AL = subfunction
  6378.         00h move memory region
  6379.         01h exchange memory region
  6380.     DS:SI -> structure describing source and destination (see #2258)
  6381. Return: AH = status (see #2257)
  6382. Note:    source and destination may overlap for a move, in which case the copy
  6383.       direction is chosen such that the destination receives an intact copy
  6384.       of the source region
  6385.  
  6386. (Table 2257)
  6387. Values for EMS function status:
  6388.  00h    successful
  6389.  80h    internal error
  6390.  81h    hardware failure
  6391.  83h    invalid handle
  6392.  84h    undefined function requested
  6393.  8Ah    invalid logical page number encountered
  6394.  8Fh    undefined subfunction
  6395.  92h    successful, but a portion of the source region has been overwritten
  6396.  93h    length of source or destination region exceeds length of region
  6397.       allocated to either source or destination handle
  6398.  94h    conventional and expanded memory regions overlap
  6399.  95h    offset within logical page exceeds size of logical page
  6400.  96h    region length exceeds 1M
  6401.  97h    source and destination EMS regions have same handle and overlap
  6402.  98h    memory source or destination type undefined
  6403.  A2h    attempted to wrap around 1M conventional address space
  6404.  
  6405. Format of EMS copy data:
  6406. Offset    Size    Description    (Table 2258)
  6407.  00h    DWORD    region length in bytes
  6408.  04h    BYTE    source memory type
  6409.         00h conventional
  6410.         01h expanded
  6411.  05h    WORD    source handle (0000h if conventional memory)
  6412.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  6413.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  6414.  0Bh    BYTE    destination memory type
  6415.         00h conventional
  6416.         01h expanded
  6417.  0Ch    WORD    destination handle
  6418.  0Eh    WORD    destination initial offset
  6419.  10h    WORD    destination initial segment or page
  6420. --------m-6758-------------------------------
  6421. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  6422.     AH = 58h
  6423.     AL = subfunction
  6424.         00h get mappable physical address array
  6425.         ES:DI -> buffer to be filled with array (see #2259)
  6426.         01h get number of entries in m.p.a. array
  6427. Return: CX = number of entries in array
  6428.     AH = status (00h,80h,81h,84h,8Fh) (see #2257)
  6429. Note:    the returned array for subfunction 00h is filled in physical segment
  6430.       address order
  6431.  
  6432. Format of EMS mappable physical address entry:
  6433. Offset    Size    Description    (Table 2259)
  6434.  00h    WORD    physical page segment
  6435.  02h    WORD    physical page number
  6436. --------m-675857-----------------------------
  6437. INT 67 U - NETROOM??? - ???
  6438.     AX = 5857h
  6439.     BX = function??? (0057h,0059h,0159h seen)
  6440.     ???
  6441. Return: ???
  6442. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  6443.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  6444.       AX=580xh or AX=5857h/BX=0x59h should be used
  6445. SeeAlso: AX=5BF0h
  6446. --------m-6759-------------------------------
  6447. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  6448.     AH = 59h
  6449.     AL = subfunction
  6450.         00h get hardware configuration array
  6451.         ES:DI -> buffer to be filled with array (see #2260)
  6452.         01h get unallocated raw page count
  6453.         Return: BX = unallocated raw pages
  6454.             DX = total raw pages
  6455. Return: AH = status (see also AH=58h"EMS 4.0")
  6456.         A4h access denied by operating system
  6457. Note:    subfunction 00h is for use by operating systems only, and can be
  6458.       enabled or disabled at any time by the operating system
  6459.  
  6460. Format of EMS hardware configuration array:
  6461. Offset    Size    Description    (Table 2260)
  6462.  00h    WORD    size of raw EMM pages in paragraphs
  6463.  02h    WORD    number of alternate register sets
  6464.  04h    WORD    size of mapping-context save area in bytes
  6465.  06h    WORD    number of register sets assignable to DMA
  6466.  08h    WORD    DMA operation type
  6467.         0000h DMA with alternate register sets
  6468.         0001h only one DMA register set
  6469. --------m-675A-------------------------------
  6470. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  6471.     AH = 5Ah
  6472.     AL = subfunction
  6473.         00h allocate standard pages
  6474.         01h allocate raw pages
  6475.     BX = number of pages to allocate
  6476. Return: DX = handle
  6477.     AH = status (00h,80h,81h,84h,85h,87h,88h,8Fh) (see #2253)
  6478. --------m-675B-------------------------------
  6479. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  6480.     AH = 5Bh
  6481.     AL = subfunction
  6482.         00h get alternate map register set
  6483.         Return: BL = current active alternate map register set number
  6484.             ES:DI -> map register context save area if BL=00h
  6485.         01h set alternate map register set
  6486.         BL = new alternate map register set number
  6487.         ES:DI -> map register context save area if BL=0
  6488.         02h get alternate map save array size
  6489.         Return: DX = array size in bytes
  6490.         03h allocate alternate map register set
  6491.         Return: BL = number of map register set; 00h = not supported
  6492.         04h deallocate alternate map register set
  6493.         BL = number of alternate map register set
  6494. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see #2261)
  6495. Note:    this function is for use by operating systems only, and can be
  6496.       enabled or disabled at any time by the operating system
  6497.  
  6498. (Table 2261)
  6499. Values for EMS function status:
  6500.  00h    successful
  6501.  80h    internal error
  6502.  81h    hardware malfunction
  6503.  84h    undefined function requested
  6504.  8Fh    undefined subfunction
  6505.  9Ah    specified alternate map register or DMA register set not supported
  6506.  9Bh    all alternate map register or DMA register sets currently allocated
  6507.  9Ch    alternate map register or DMA register sets not supported
  6508.  9Dh    undefined or unallocated alternate map register/DMA register set
  6509.  9Eh    dedicated DMA channels not supported
  6510.  9Fh    specified dedicated DMA channel not supported
  6511.  A3h    source array corrupted
  6512.  A4h    operating system denied access
  6513. --------m-675B-------------------------------
  6514. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  6515.     AH = 5Bh
  6516.     AL = subfunction
  6517.         05h allocate DMA register set
  6518.         Return: BL = DMA register set number, 00h if not supported
  6519.         06h enable DMA on alternate map register set
  6520.            BL = DMA register set number
  6521.            DL = DMA channel number
  6522.         07h disable DMA on alternate map register set
  6523.            BL = DMA register set number
  6524.         08h deallocate DMA register set
  6525.            BL = DMA register set number
  6526. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see #2261)
  6527. Note:    this function is for use by operating systems only, and can be
  6528.       enabled or disabled at any time by the operating system
  6529. --------m-675BE0-----------------------------
  6530. INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
  6531.     AX = 5BE0h
  6532.     ES:BX -> memory for which to get linear address
  6533. Return: AH = 00h
  6534.     CX:DX = linear address of physical memory corresponding to ES:BX
  6535. Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
  6536.       MICEMM is a memory manager for some Micronics motherboards
  6537. Note:    this has been superceded by AX=DE06h, which should be used instead
  6538. SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
  6539. --------m-675BE1-----------------------------
  6540. INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
  6541.     AX = 5BE1h
  6542. Return: AH = 00h
  6543.     CX = code and data size in bytes
  6544.     DX:BX = physical address of RM386 code
  6545.     DI:SI = total size of RM386 area including handle tables
  6546.     BP = number of additional pages (high DOS, etc.)
  6547. SeeAlso: AX=5BE0h,AX=5BE2h
  6548. --------m-675BE2-----------------------------
  6549. INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
  6550.     AX = 5BE2h
  6551. Return: DS:SI -> V86-mode table (see #2262)
  6552.     ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
  6553. SeeAlso: AX=5BE0h,AX=5BE1h
  6554.  
  6555. Format of RM386 V86-mode table:
  6556. Offset    Size    Description    (Table 2262)
  6557.  00h    DWORD    original INT 13 vector
  6558.  04h    DWORD    original INT 15 vector
  6559.  08h    DWORD    original INT 19 vector
  6560.  0Ch    DWORD    original INT 21 vector
  6561.  10h    DWORD    original INT 4B vector
  6562.  14h    DWORD    original INT 67 vector
  6563. --------m-675BF0-----------------------------
  6564. INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
  6565.     AX = 5BF0h
  6566. Return: AH = 00h if MICEMM or RM386 present
  6567.         BX = code segment of driver
  6568. Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
  6569.       manager included in Helix Software's Netroom
  6570. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  6571. --------m-675BF1-----------------------------
  6572. INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
  6573.     AX = 5BF1h
  6574.     ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
  6575. Return: AH = 00h
  6576.     ES:BX buffer filled (see #2263)
  6577. Note:    each byte in the buffer specifies the type of a 4K page of memory
  6578. SeeAlso: AX=5BE0h,AX=5BF0h
  6579.  
  6580. (Table 2263)
  6581. Values for MICEMM/RM386 memory type:
  6582.  00h    unused (MICEMM), RAM/available (RM386)
  6583.  02h    DOS extension (XMS UMB)
  6584.  04h    shadowed ROM
  6585.  08h    mappable EMS
  6586.  10h    page frame
  6587.  20h    ROM
  6588.  40h    reserved (video memory, etc)
  6589.  80h    RAM (MICEMM), Windows UMB (RM386)
  6590. --------m-675BF2-----------------------------
  6591. INT 67 - RM386 - GET RM386 INTERNAL DATA
  6592.     AX = 5BF2h
  6593.     CX = size of buffer
  6594.     DS:SI -> buffer for internal data
  6595.     (documentation says ES:BX -> buffer, SI = offset within RM386)
  6596. Return: buffer filled
  6597. Note:    the data returned by this function is release-specific
  6598. SeeAlso: AX=5BF0h
  6599. --------m-675BF3-----------------------------
  6600. INT 67 - RM386 - RETURN TO REAL MODE
  6601.     AX = 5BF3h
  6602. Return: nothing
  6603. Note:    use AX=5DE0h instead of this functin
  6604. SeeAlso: AX=5BF0h,AX=5DE0h
  6605. --------m-675BF4-----------------------------
  6606. INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
  6607.     AX = 5BF4h
  6608. Return: AH = 00h
  6609.     BX = global flags 1 (see #2264)
  6610.     CX = global flags 2 (see #2265)
  6611.     DX = global flags 3 (see #2266)
  6612.     SI = global flags 4 (see #2267)
  6613. SeeAlso: AX=5BF0h
  6614.  
  6615. Bitfields for RM386 global flags 1:
  6616. Bit(s)    Description    (Table 2264)
  6617.  0-3    reserved
  6618.  4    V86 mode
  6619.  5    reserved
  6620.  6    80386 or higher CPU
  6621.  7,8    reserved
  6622.  9    A20 enabled at startup
  6623.  10    "HIGH_IO"
  6624.  11    ROM
  6625.  12    large frame
  6626.  13,14    reserved
  6627.  15    PS/2-style A20 control
  6628.  
  6629. Bitfields for RM386 global flags 2:
  6630. Bit(s)    Description    (Table 2265)
  6631.  0    HMA in use
  6632.  1    XMS present
  6633.  2    using XMS driver memory
  6634.  3    HIGH (NEAT only)
  6635.  4-7    reserved
  6636.  8    NOBKTRAP
  6637.  9    NORESET
  6638.  10    ALTMAP
  6639.  11    NOFRAME
  6640.  12-15    reserved
  6641.  
  6642. Bitfields for RM386 global flags 3:
  6643. Bit(s)    Description    (Table 2266)
  6644.  0    NOTEST
  6645.  1    NOEBDA
  6646.  2    Windows3 support
  6647.  3    system board mouse
  6648.  4    DISKBUF
  6649.  5    EBDALOW
  6650.  6    A20 global enable flag
  6651.  7    A20 flag
  6652.  8    EBDA moved to stub
  6653.  9    VXD file was found
  6654.  10    reserved
  6655.  11    NOBOOTMAP
  6656.  12    AUTO
  6657.  13    PS/2 machine
  6658.  14    Compaq ROM merge active
  6659.  15    NOHMA set
  6660.  
  6661. Bitfields for RM386 global flags 4:
  6662. Bit(s)    Description    (Table 2267)
  6663.  0    "NOV8259" don't virtualize interrupt controller
  6664.  1    NOSCSI
  6665.  2    NOSCAN
  6666.  3    NOTR
  6667.  4    ALTBOOT
  6668.  5    NOCOMPQ
  6669.  6    KB2TRAP
  6670.  7    DESHADOW
  6671.  8    Video 7 VGA detected
  6672.  9    reserved
  6673.  10    NOVGA
  6674.  11    NOPS2
  6675.  12    DEBUG
  6676.  13    NOVKB
  6677.  14,15    reserved
  6678. --------m-675BF5-----------------------------
  6679. INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
  6680.     AX = 5BF5h
  6681. Return: AH = status
  6682.         00h successful
  6683.         BX = current number of allocated EMS handles
  6684.         84h function not available
  6685. SeeAlso: AX=5BF0h
  6686. --------m-675C-------------------------------
  6687. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  6688.     AH = 5Ch
  6689. Return: AH = status (see #2268)
  6690. Note:    when MS-DOS v6.xx EMM386 is loaded and the keyboard driver supports
  6691.       INT 15/AH=4Fh (keyboard intercept) calls, the system may hang
  6692.       instead of booting if this function is called just prior to a jump
  6693.       to F000h:FFF0h
  6694.  
  6695. (Table 2268)
  6696. Values for EMS function status:
  6697.  00h    successful
  6698.  80h    internal error
  6699.  81h    hardware malfunction
  6700.  84h    undefined function requested
  6701. --------m-675D-------------------------------
  6702. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  6703.     AH = 5Dh
  6704.     AL = subfunction
  6705.         00h enable OS Function Set
  6706.         01h disable OS Function Set
  6707.         02h return access key (resets memory manager, returns access key at
  6708.         next invocation)
  6709.     BX,CX = access key returned by first invocation
  6710. Return: BX,CX = access key, returned only on first invocation of function
  6711.     AH = status (see also AH=5Ch)
  6712.         8Fh undefined subfunction
  6713.         A4h operating system denied access
  6714. --------m-675D03-----------------------------
  6715. INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
  6716.     AX = 5D03h
  6717.     ???
  6718. Return: ???
  6719. Program: MD386 is a subset EMS memory manager by Nanosoft specifically designed
  6720.       for use with the MultiDOS Plus multitasker
  6721. SeeAlso: AX=5D04h,AX=5E00h
  6722. --------m-675D04-----------------------------
  6723. INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
  6724.     AX = 5D04h
  6725.     BX = alternate register set number
  6726.     ES:DI -> 1024-byte buffer for map structure
  6727. Return: AH = status (see #2253)
  6728.     buffer filled if AH=00h
  6729. Note:    used for debugging purposes
  6730. SeeAlso: AX=5D05h
  6731. --------m-675D05-----------------------------
  6732. INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
  6733.     AX = 5D05h
  6734.     BX = handle number
  6735.     ES:DI -> 1024-byte buffer for handle table
  6736. Return: AH = status (see #2253)
  6737.     buffer filled if AH=00h
  6738. Note:    used for debugging purposes
  6739. SeeAlso: AX=5D04h
  6740. --------m-675DE0-----------------------------
  6741. INT 67 - RM386 - DISABLE RM386
  6742.     AX = 5DE0h
  6743. Note:    RM386 traps this function on the initial transition to protected
  6744.       mode caused by the INT instruction, which means it can not be
  6745.       overridden simply by hooking the interrupt
  6746. SeeAlso: AX=5DE1h
  6747. --------m-675DE1-----------------------------
  6748. INT 67 - RM386 - ENABLE RM386
  6749.     AX = 5DE1h
  6750. Note:    RM386 traps this function on the initial transition to protected
  6751.       mode caused by the INT instruction, which means it can not be
  6752.       overridden simply by hooking the interrupt
  6753. SeeAlso: AX=5DE0h
  6754. --------m-675DE2-----------------------------
  6755. INT 67 - RM386 - GET PAGE TABLE
  6756.     AX = 5DE2h
  6757.     ES:DI -> 1088-byte buffer for page table
  6758. Return: ES:DI buffer filled
  6759. Note:    RM386 traps this function on the initial transition to protected
  6760.       mode caused by the INT instruction, which means it can not be
  6761.       overridden simply by hooking the interrupt
  6762. SeeAlso: AX=5DE3h
  6763. --------m-675DE3-----------------------------
  6764. INT 67 - RM386 - SET PAGE TABLE
  6765.     AX = 5DE3h
  6766.     ES:DI -> 1088-byte buffer containing page table
  6767. Notes:    only the access bits of the page table are used, the remainder is
  6768.       ignored
  6769.     RM386 traps this function on the initial transition to protected
  6770.       mode caused by the INT instruction, which means it can not be
  6771.       overridden simply by hooking the interrupt
  6772. SeeAlso: AX=5DE2h
  6773. --------m-675DE4-----------------------------
  6774. INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
  6775.     AX = 5DE4h
  6776.     BL = page number
  6777.     BH = access (00h read-only, 01h read-write)
  6778. Note:    RM386 traps this function on the initial transition to protected
  6779.       mode caused by the INT instruction, which means it can not be
  6780.       overridden simply by hooking the interrupt
  6781. --------m-675DE5-----------------------------
  6782. INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
  6783.     AX = 5DE5h
  6784.     EBX = physical page number
  6785.     DX = page number in first megabyte to be remapped (linear-addr SHR 12)
  6786. Return: AH = status
  6787.         00h successful
  6788.         8Bh invalid destination page (not in first megabyte)
  6789. Note:    RM386 traps this function on the initial transition to protected
  6790.       mode caused by the INT instruction, which means it can not be
  6791.       overridden simply by hooking the interrupt
  6792. SeeAlso: AX=5DE6h
  6793. --------m-675DE6-----------------------------
  6794. INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
  6795.     AX = 5DE6h
  6796.     BX = logical page number in 4K pages from beginning of memory for EMS
  6797.           handle
  6798.     CX = segment in first megabyte to be remapped
  6799.     DX = previously-allocated EMS handle
  6800. Return: AH = status
  6801.         00h successful
  6802.         83h invalid handle
  6803.         8Ah invalid logical page (out of handle's range)
  6804.         8Bh invalid destination page (not in first megabyte)
  6805. Note:    RM386 traps this function on the initial transition to protected
  6806.       mode caused by the INT instruction, which means it can not be
  6807.       overridden simply by hooking the interrupt
  6808. SeeAlso: AX=5DE5h
  6809. --------m-675DE7-----------------------------
  6810. INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
  6811.     AX = 5DE7h
  6812.     BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
  6813.     CX = number of pages to set
  6814.     DX = first page number to set (in first megabyte)
  6815. Return: AH = status
  6816.         00h successful
  6817.         8Bh invalid destination page (not in first megabyte)
  6818.         A5h invalid page bits
  6819.         A6h invalid page count (overflows first megabyte)
  6820. Note:    RM386 traps this function on the initial transition to protected
  6821.       mode caused by the INT instruction, which means it can not be
  6822.       overridden simply by hooking the interrupt
  6823. --------m-675DE8-----------------------------
  6824. INT 67 - RM386 - GET PARTIAL PAGE TABLE
  6825.     AX = 5DE8h
  6826.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  6827.     CX = number of page table entries to get
  6828.     ES:DI -> buffer for DWORD page table entries
  6829. Return: AH = status (00h successful, 8Bh invalid page)
  6830. Note:    RM386 traps this function on the initial transition to protected
  6831.       mode caused by the INT instruction, which means it can not be
  6832.       overridden simply by hooking the interrupt
  6833. SeeAlso: AX=5DE9h
  6834. --------m-675DE9-----------------------------
  6835. INT 67 - RM386 - SET PARTIAL PAGE TABLE
  6836.     AX = 5DE9h
  6837.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  6838.     CX = number of page table entries to get
  6839.     DS:SI -> buffer of DWORD page table entries
  6840. Return: AH = status (00h successful, 8Bh invalid destination page)
  6841. Note:    RM386 traps this function on the initial transition to protected
  6842.       mode caused by the INT instruction, which means it can not be
  6843.       overridden simply by hooking the interrupt
  6844. SeeAlso: AX=5DE8h
  6845. --------m-675DEA-----------------------------
  6846. INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
  6847.     AX = 5DEAh
  6848.     BX = function
  6849.         00h globally disable V86-mode trapping
  6850.         01h globally enable V86-mode trapping
  6851.         CL = interrupt to use for trapping
  6852.         02h get I/O trapping state
  6853. Return: AH = status
  6854.         00h successful
  6855.         BX = current trapping state (function 02h)
  6856.             0000h disabled, 0001h enabled
  6857.         CX = interrupt used as trap interrupt (functions 00h and 02h)
  6858. Notes:    RM386 traps this function on the initial transition to protected
  6859.       mode caused by the INT instruction, which means it can not be
  6860.       overridden simply by hooking the interrupt
  6861.     when I/O trapping is enabled and I/O port access occurs, RM386
  6862.       simulates an INT instruction for the specified interrupt; the
  6863.       interrupt handler is responsible for decoding the trapped instruction
  6864.       and performing the appropriate action.  INT 2C/AX=002Dh provides a
  6865.       similar but more-easily used interface.
  6866. SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
  6867. --------m-675DEB-----------------------------
  6868. INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
  6869.     AX = 5DEBh
  6870.     BX = function
  6871.         00h disable V86-mode trapping for specified port
  6872.         01h enable V86-mode trapping for specified port
  6873.         02h get V86-mode trapping state for specified port
  6874.     DX = port for which to enable/disable/query trapping
  6875. Return: AH = status
  6876.         00h successful
  6877.         BX = current trapping state (00h off, 01h on) (function 02)
  6878.         A7h invalid port ID
  6879.         A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
  6880. Notes:    RM386 traps this function on the initial transition to protected
  6881.       mode caused by the INT instruction, which means it can not be
  6882.       overridden simply by hooking the interrupt
  6883. SeeAlso: AX=5DEAh
  6884. --------m-675DFD-----------------------------
  6885. INT 67 U - RM386 v6.00 - ???
  6886.     AX = 5DFDh
  6887.     ???
  6888. Return: ???
  6889. Note:    RM386 traps this function on the initial transition to protected
  6890.       mode caused by the INT instruction, which means it can not be
  6891.       overridden simply by hooking the interrupt
  6892. SeeAlso: AX=5DFEh
  6893. --------m-675DFE-----------------------------
  6894. INT 67 U - RM386 v6.00 - ???
  6895.     AX = 5DFEh
  6896.     ???
  6897. Return: ???
  6898. Note:    RM386 traps this function on the initial transition to protected
  6899.       mode caused by the INT instruction, which means it can not be
  6900.       overridden simply by hooking the interrupt
  6901. SeeAlso: AX=5DFDh
  6902. --------m-675DFF-----------------------------
  6903. INT 67 U - RM386 v6.00 - ???
  6904.     AX = 5DFFh
  6905.     ???
  6906. Return: ???
  6907. Note:    RM386 traps this function on the initial transition to protected
  6908.       mode caused by the INT instruction, which means it can not be
  6909.       overridden simply by hooking the interrupt
  6910. SeeAlso: AX=5DFDh,AX=5DFEh
  6911. --------m-675E00-----------------------------
  6912. INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
  6913.     AX = 5E00h
  6914.     DH = breakpoint number (0-3)
  6915.     DL = breakpoint attributes (used to set DR7)
  6916.     CX:BX = linear address of breakpoint
  6917. SeeAlso: AX=5D03h,AX=5E01h
  6918. --------m-675E01-----------------------------
  6919. INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
  6920.     AX = 5E01h
  6921.     BL = register number (0-3,7)
  6922. Return: CX:BX = value of specified DRx register
  6923. SeeAlso: AX=5E00h
  6924. --------m-675E02-----------------------------
  6925. INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
  6926.     AX = 5E02h
  6927.     CX:BX -> exception handler
  6928. Note:    the specified exception handler is called with a simulated interrupt
  6929.       whenever a debug exception occurs which was caused by a hardware
  6930.       breakpoint set with the debug registers
  6931. SeeAlso: AX=5E04h,AX=5E05h
  6932. --------m-675E03-----------------------------
  6933. INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
  6934.     AX = 5E03h
  6935.     BL = register map set number
  6936.     BH = new state (00h read-only, else read-write)
  6937.     CX = linear page number (linear address SHR 12)
  6938. Note:    setting write protection in map set 0 will cause the setting to become
  6939.       the default for newly-allocated map sets
  6940. --------m-675E04-----------------------------
  6941. INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
  6942.     AX = 5E04h
  6943. Return: BL = debug exception (low byte of DR6 register)
  6944. SeeAlso: AX=5E02h,AX=5E05h
  6945. --------m-675E05-----------------------------
  6946. INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
  6947.     AX = 5E05h
  6948. Note:    may be required when using AX=5E02h for handling instruction
  6949.       breakpoints
  6950. SeeAlso: AX=5E02h,AX=5E04h
  6951. --------m-6760-------------------------------
  6952. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  6953.     AH = 60h
  6954.     ES:DI -> buffer
  6955. Return: AH = status (see also AH=40h)
  6956.     AL = number of entries
  6957.     buffer at ES:DI filled
  6958. --------m-6761-------------------------------
  6959. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  6960.     AH = 61h
  6961.     ???
  6962. Return: ???
  6963. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  6964.       ensuring that the cache accurately reflects what the processor would
  6965.       see without the cache.
  6966. --------m-6768-------------------------------
  6967. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  6968.     AH = 68h
  6969.     ES:DI -> buffer
  6970. Return: AH = status (see also AH=40h)
  6971.     AL = number of entries
  6972.     buffer at ES:DI filled
  6973. Note:    equivalent to LIM 4.0 function 58h
  6974. --------m-6769-------------------------------
  6975. INT 67 - EEMS - MAP PAGE INTO FRAME
  6976.     AH = 69h
  6977.     AL = frame number
  6978.     BX = page number
  6979.     DX = handle
  6980. Return: AH = status (see also AH=40h)
  6981. Note:    similar to EMS function 44h
  6982. SeeAlso: AH=44h,AH=50h,AH=6Ah
  6983. --------m-676A-------------------------------
  6984. INT 67 - EEMS - PAGE MAPPING
  6985.     AH = 6Ah
  6986.     AL = subfunction
  6987.         00h save partial page map
  6988.         CH = first page frame
  6989.         CL = number of frames
  6990.         ES:DI -> buffer which is to be filled
  6991.         01h restore partial page map
  6992.         CH = first page frame
  6993.         CL = number of frames
  6994.         DI:SI -> previously saved page map
  6995.         02h save and restore partial page map
  6996.         CH = first page frame
  6997.         CL = number of frames
  6998.         ES:DI = buffer for current page map
  6999.         DI:SI = new page map
  7000.         03h get size of save array
  7001.         CH = first page frame
  7002.         CL = number of frames
  7003.         Return: AL = size of array in bytes
  7004.         04h switch to standard map register setting
  7005.         05h switch to alternate map register setting
  7006.         06h deallocate pages mapped to frames in conventional memory
  7007.         CH = first page frame
  7008.         CL = number of frames
  7009. Return: AH = status (see #2253)
  7010. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  7011.       specified
  7012. SeeAlso: AH=69h
  7013. --------m-676B-------------------------------
  7014. INT 67 - DESQview 2.42-2.53 - BUG
  7015.     AH = 6Bh
  7016. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  7017.       function due to a fencepost error
  7018. --------m-67DD-------------------------------
  7019. INT 67 - Quadtel QMAPS - API
  7020.     AH = DDh
  7021.     AL = function
  7022.     ???
  7023. Return: ???
  7024. Notes:    details are not yet available
  7025.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  7026.       supports this API
  7027. SeeAlso: AH=3Fh,AX=FFA5h
  7028. --------E-67DE00-----------------------------
  7029. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  7030.     AX = DE00h
  7031. Return: AH = status
  7032.         00h VCPI is present
  7033.         BH = major version number
  7034.         BL = minor version number
  7035.         nonzero  VCPI not present
  7036. BUG:    MS Windows 3.00 is reported to "object violently" to this call.
  7037. SeeAlso: INT 2F/AX=1687h
  7038. --------E-67DE01-----------------------------
  7039. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  7040.     AX = DE01h
  7041.     ES:DI -> 4K page table buffer
  7042.     DS:SI -> three descriptor table entries in GDT
  7043.         first becomes code segment descriptor, other two for use by
  7044.           main control program
  7045. Return: AH = 00h successful
  7046.         DI -> first unused page table entry in buffer
  7047.         EBX -> protected mode entry point in code segment (see #2269)
  7048.     AH = nonzero  failed
  7049. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  7050.       AX=DE0Ch (in each case, all other registers as appropriate for
  7051.       the function)
  7052. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  7053.  
  7054. (Table 2269)
  7055. Call QEMM v6.03 protected mode entry point additionally with:
  7056.     AX = DF00h ???
  7057.         ???
  7058.         Return: ???
  7059.     AX = DF01h ???
  7060.         ???
  7061.         Return: ???
  7062. --------E-67DE02-----------------------------
  7063. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  7064.     AX = DE02h
  7065. Return: AH = 00h  successful
  7066.         EDX = physical address of highest 4K memory page
  7067.     AH nonzero: failed
  7068. SeeAlso: AH=3Fh
  7069. --------E-67DE03-----------------------------
  7070. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  7071.     AX = DE03h
  7072. Return: AH = 00h  successful
  7073.         EDX = number of free 4K pages
  7074.     AH nonzero: failed
  7075. Notes:    returns total number of pages available to ALL tasks in system
  7076.     also available in protected mode by calling the protected-mode VCPI
  7077.       entry point (see AX=DE01h,#2269)
  7078. SeeAlso: AX=DE04h
  7079. --------E-67DE04-----------------------------
  7080. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  7081.     AX = DE04h
  7082. Return: AH = 00h successful
  7083.         EDX = physical address of allocated page
  7084.     AH nonzero: failed
  7085. Notes:    the client program is responsible for freeing all memory allocated
  7086.       with this call before terminating
  7087.     also available in protected mode by calling the protected-mode VCPI
  7088.       entry point (see AX=DE01h,#2269)
  7089. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  7090. --------E-67DE05-----------------------------
  7091. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  7092.     AX = DE05h
  7093.     EDX = physical address of 4K page
  7094. Return: AH = status
  7095.         00h successful
  7096.         nonzero failed
  7097. Note:    also available in protected mode by calling the protected-mode VCPI
  7098.       entry point (see AX=DE01h,#2269)
  7099. SeeAlso: AH=3Fh,AX=DE04h
  7100. --------E-67DE06-----------------------------
  7101. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  7102.     AX = DE06h
  7103.     CX = page number (linear address shifted right 12 bits)
  7104. Return: AH = status
  7105.         00h successful
  7106.         EDX = physical address of page
  7107.         nonzero invalid page number (AH = 8Bh recommended)
  7108. SeeAlso: AX=5BE0h
  7109. --------E-67DE07-----------------------------
  7110. INT 67 - Virtual Control Program Interface - READ CR0
  7111.     AX = DE07h
  7112. Return: AH = 00h
  7113.     EBX = value of Control Register 0
  7114. SeeAlso: AH=3Fh,AX=DE07h
  7115. --------E-67DE08-----------------------------
  7116. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  7117.     AX = DE08h
  7118.     ES:DI -> array of 8 DWORDs
  7119. Return: AH = 00h
  7120.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  7121. SeeAlso: AH=3Fh,AX=DE09h
  7122. --------E-67DE09-----------------------------
  7123. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  7124.     AX = DE09h
  7125.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  7126. Return: AH = 00h
  7127. Note:    values for DR4 and DR5 ignored
  7128. SeeAlso: AH=3Fh,AX=DE08h
  7129. --------E-67DE0A-----------------------------
  7130. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  7131.     AX = DE0Ah
  7132. Return: AH = 00h successful
  7133.         BX = first vector used by master 8259 (IRQ0)
  7134.         CX = first vector used by slave 8259 (IRQ8)
  7135.     AH nonzero: failed
  7136. Note:    CX is undefined in systems without a slave 8259
  7137. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  7138. --------E-67DE0B-----------------------------
  7139. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  7140.     AX = DE0Bh
  7141.     BX = first vector used by master 8259
  7142.     CX = first vector used by slave 8259
  7143.     interrupts disabled
  7144. Return: AH = 00h successful
  7145.     AH nonzero: failed
  7146. Notes:    This call merely informs the server that the client has changed the
  7147.       interrupt mappings.  The client may not change the mappings if they
  7148.       have already been changed by the server or another client, and is
  7149.       responsible for restoring the original mappings before terminating.
  7150. SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
  7151. --------E-67DE0C-----------------------------
  7152. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  7153.     AX = DE0Ch
  7154.     ESI = linear address in first megabyte of values for system
  7155.           registers (see #2270)
  7156.     interrupts disabled
  7157. Return: interrupts disabled
  7158.     GDTR, IDTR, LDTR, TR loaded
  7159.     SS:ESP must have at least 16 bytes space, and the entry point is
  7160.           required to set up a new stack before enabling interrupts
  7161.     EAX, ESI, DS, ES, FS, GS destroyed
  7162. Note:    in protected mode, calling the protected-mode VCPI entry point with
  7163.       AX = DE0Ch
  7164.       DS = segment selector mapping entire linear address space obtained
  7165.           via AX=DE01h
  7166.       SS:ESP in first megabyte of linear memory
  7167.       STACK:QWORD  return address from FAR call to 32-bit segment
  7168.         DWORD  EIP
  7169.         DWORD  CS
  7170.         DWORD  reserved for EFLAGS
  7171.         DWORD  ESP
  7172.         DWORD  SS
  7173.         DWORD  ES
  7174.         DWORD  DS
  7175.         DWORD  FS
  7176.         DWORD  GS
  7177.       and interrupts disabled, will switch to virtual86 mode with
  7178.         interrupts disabled, all segment registers loaded, and EAX
  7179.         destroyed.
  7180. SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
  7181.  
  7182. Format of system register values for switch to protected mode:
  7183. Offset    Size    Description    (Table 2270)
  7184.  00h    DWORD    value for CR3
  7185.  04h    DWORD    linear address in first megabyte of value for GDTR
  7186.  08h    DWORD    linear address in first megabyte of value for IDTR
  7187.  0Ch    WORD    value for LDTR
  7188.  0Eh    WORD    value for TR
  7189.  10h    PWORD    CS:EIP of protected mode entry-point
  7190. --------m-67DE0F-----------------------------
  7191. INT 67 - Netroom3 - ???
  7192.     AX = DE0Fh
  7193.     ???
  7194. Return: ???
  7195. Note:    called by Netroom's DPMI.EXE
  7196. --------m-67EF-------------------------------
  7197. INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
  7198.     AH = EFh
  7199.     AL = function (00h-12h,80h-8Fh)
  7200.     other register as appropriate for XMS function
  7201. Return: varies by function (see INT 2F/AX=4310h)
  7202. Note:    these functions appear to be equivalent to the XMS functions with the
  7203.       same numbers
  7204. SeeAlso: AX=5DFFh"RM386",INT 2F/AX=4310h
  7205. --------m-67FFA5-----------------------------
  7206. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  7207.     AX = FFA5h
  7208. Return: AX = 845Ah/84A5h if loaded
  7209.         BX:CX -> API entry point (see #2271)
  7210. Notes:    this call is available even if EMM386 is not providing EMS
  7211.     the returned AX is 845Ah inside of MSWindows, 84A5h under bare DOS
  7212.     if no other program has hooked INT 67, an alternate installation
  7213.       check is to test for the string
  7214.       "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  7215.       handler's segment; the word immediately preceding this string
  7216.       contains the offset of the API entry point
  7217. SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
  7218.  
  7219. (Table 2271)
  7220. Call EMM386.EXE API entry point with:
  7221.     AH = 00h get memory manager's status
  7222.         Return: AH = status
  7223.             bit 0: not active (OFF)
  7224.             bit 1: in "Auto" mode
  7225.     AH = 01h set memory manager's state
  7226.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  7227.     AH = 02h Weitek coprocessor support
  7228.         AL = subfunction
  7229.         00h get Weitek support state
  7230.             Return: AL = status
  7231.                 bit 0: Weitek coprocessor is present
  7232.                 bit 1: Weitek support is enabled
  7233.         01h turn on Weitek support
  7234.         02h turn off Weitek support
  7235.      --- v4.20-4.41 only ---
  7236.     AH = 03h Windows support???
  7237.         AL = subfunction (00h, 01h)
  7238.     AH = 04h print copyright notice to standard output
  7239.          (using INT 21/AH=09h)
  7240.     AH = 05h print available report
  7241.          (the one shown when running EMM386 from the DOS prompt)
  7242. SeeAlso: #0733 at INT 21/AX=4402h/SF=02h,#1402 at INT 2F/AX=12FFh/BX=0106h
  7243. --------m-67FFA5BX4345-----------------------
  7244. INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
  7245.     AX = FFA5h
  7246.     BX = 4345h ("CE")
  7247.     DX = subfunction
  7248.         0000h unshadow video ROM???
  7249.         0001h shadow video ROM???
  7250.         0002h map pages
  7251.         CX = number of pages (00h=one)
  7252.         ESI = linear address of first page to map into address space
  7253.         EDI = linear starting address at which pages are to be visible
  7254.         0003h get ???
  7255.         Return: DX = ??? (0-2)
  7256.         0004h BUG: crashes system due to fencepost error
  7257. Return: AH = 84h
  7258.     AL = status (84h = error, FFh = success)
  7259. Note:    if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
  7260.       Microsoft's EMM386 (see AX=FFA5h"EMM386")
  7261. SeeAlso: AX=FFA5h"EMM386",#0733 at INT 21/AX=4402h/SF=02h,#2271
  7262. --------I-68---------------------------------
  7263. INT 68 - Sangoma CCPOP 3270 resident module
  7264. SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
  7265. --------N-68---------------------------------
  7266. INT 68 - Novell NetWare LU6.2
  7267. Note:    the installation check consists of testing for the signature string
  7268.       "APPC/PC" nine bytes before the interrupt handler
  7269. SeeAlso: AH=01h/SF=1B00h,AH=FAh
  7270. --------h-68---------------------------------
  7271. INT 68 C - HP Vectra AT - IRQ16 - 8041 SERVICE REQUEST
  7272. SeeAlso: INT 08"IRQ0",INT 69"HP Vectra",INT 6F"HP Vectra"
  7273. --------N-6801--SF1B00-----------------------
  7274. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DISPLAY
  7275.     AH = 01h subfn 1B00h
  7276.     DS:DX -> control block (see #2272)
  7277. Return: control block updated
  7278. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2B00h,INT 68"Novell"
  7279.  
  7280. Format of APPC/PC "DISPLAY" control block:
  7281. Offset    Size    Description    (Table 2272)
  7282.  00h 12 BYTEs    reserved
  7283.  0Ch    WORD    1B00h (verb "DISPLAY")
  7284.  0Eh  6 BYTEs    00h
  7285.  14h    DWORD    (big-endian) return code (see #2273)
  7286.  18h    WORD    00h
  7287.  1Ah  8 BYTEs    (big-endian) logical unit ID
  7288.  22h  8 BYTEs    (big-endian) partner logical unit name
  7289.  2Ah  8 BYTEs    (big-endian) mode name
  7290.  32h    BYTE    logical unit session limit
  7291.  33h    BYTE    partner logical unit session limit
  7292.  34h    BYTE    node maximum negotiable session limit
  7293.  35h    BYTE    current session limit
  7294.  36h    BYTE    minimum negotiated winner limit
  7295.  37h    BYTE    maximum negotiated loser limit
  7296.  38h    BYTE    active session count
  7297.  39h    BYTE    active CONWINNER session count
  7298.  3Ah    BYTE    active CONLOSER session count
  7299.  3Bh    BYTE    session termination count
  7300.  3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
  7301.         bit 6: SESSION_TERMINATION_SOURCE_DRAIN
  7302.  
  7303. (Table 2273)
  7304. Values for APPC/PC return code:
  7305.  0000h    successful
  7306.  0001h    BAD_TP_ID
  7307.  0002h    BAD_CONV_ID
  7308.  0003h    bad logical unit ID
  7309.  0008h    no physical unit attached
  7310.  0110h    bad state
  7311.  01B1h    BAD_PART_LUNAME
  7312.  01B2h    bad mode name
  7313.  0201h    physical unit already active
  7314.  0211h    logical unit already active
  7315.  0212h    BAD_PART_SESS
  7316.  0213h    BAD_RU_SIZES
  7317.  0214h    BAD_MODE_SESS
  7318.  0216h    BAD_PACING_CNT
  7319.  0219h    EXTREME_RUS
  7320.  021Ah    SNASVCMG_1
  7321.  0223h    SSCP_CONNECTED_LU
  7322.  0230h    invalid change
  7323.  0243h    too many TPs
  7324.  0272h    adapter close failure
  7325.  0281h    GET_ALLOC_BAD_TYPE
  7326.  0282h    unsuccessful
  7327.  0283h    DLC failure
  7328.  0284h    unrecognized DLC
  7329.  0286h    duplicate DLC
  7330.  0301h    SSCP_PU_SESSION_NOT_ACTIVE
  7331.  0302h    data exceeds RU size
  7332.  0401h    invalid direction
  7333.  0402h    invalid type
  7334.  0403h    segment overlap
  7335.  0404h    invalid first character
  7336.  0405h    table error
  7337.  0406h    conversion error
  7338.  F0010000h    APPC disabled
  7339.  F0020000h    APPC busy
  7340.  F0030000h    APPC abended
  7341.  F0040000h    incomplete
  7342. --------N-6801--SF2000-----------------------
  7343. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH PHYSICAL UNIT
  7344.     AH = 01h subfn 2000h
  7345.     DS:DX -> control block (see #2274)
  7346. Return: control block updated
  7347. SeeAlso: AH=01h/SF=2100h,AH=01h/SF=2B00h
  7348.  
  7349. Format of APPC/PC "Attach Physical Unit" control block:
  7350. Offset    Size    Description    (Table 2274)
  7351.  00h 12 BYTEs    reserved
  7352.  0Ch    WORD    2000h (verb "Attach Physical Unit")
  7353.  0Eh  6 BYTEs    00h
  7354.  14h    DWORD    (big-endian) return code (see #2273)
  7355.  18h    WORD    00h
  7356.  1Ah    BYTE    version
  7357.  1Bh    BYTE    release
  7358.  1Ch  8 BYTEs    (big-endian) net name
  7359.  24h  8 BYTEs    (big-endian) physical unit name
  7360.  2Ch  8 BYTEs    00h
  7361.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  7362.         (see also AH=01h/SF=2100h)
  7363.  38h    DWORD    00h
  7364.  3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
  7365.         01h RETURN_CONTROL: INCOMPLETE
  7366. --------N-6801--SF2100-----------------------
  7367. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH LOGICAL UNIT
  7368.     AH = 01h subfn 2100h
  7369.     DS:DX -> control block (see #2275)
  7370. Return: control block updated
  7371. SeeAlso: #2278,#2279,#2281,AH=01h/SF=2000h,AH=01h/SF=2200h,AH=01h/SF=2B00h
  7372.  
  7373. Format of APPC/PC "Attach Logical Unit" control block:
  7374. Offset    Size    Description    (Table 2275)
  7375.  00h 12 BYTEs    reserved
  7376.  0Ch    WORD    2100h (verb "Attach Logical Unit")
  7377.  0Eh  6 BYTEs    00h
  7378.  14h    DWORD    (big-endian) return code (see #2273)
  7379.  18h    WORD    70  offset to partner logical unit record
  7380.  1Ah  8 BYTEs    (big-endian) logical unit name
  7381.  22h  8 BYTEs    (big-endian) logical unit ID
  7382.  2Ah    BYTE    logical unit local address
  7383.  2Bh    BYTE    logical unit session limit
  7384.  2Ch    DWORD    pointer to CREATE_TP_EXIT routine,
  7385.         FFFFFFFFh = reject incoming ALLOCATEs
  7386.         00000000h = queue ALLOCATEs
  7387.  30h    DWORD    00h
  7388.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  7389.  38h    DWORD    00h
  7390.  3Ch    BYTE    maximum TPs
  7391.  3Dh    BYTE    queue depth
  7392.  3Eh    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
  7393.  42h    DWORD    00h
  7394.  46h    WORD    total length of partner records
  7395.  48h    var    array of partner logical unit records (see #2276)
  7396. SeeAlso: #2278,#2279,#2281
  7397.  
  7398. Format of APPC/PC partner logical unit record:
  7399. Offset    Size    Description    (Table 2276)
  7400.  00h    WORD    length of this partner logical unit record
  7401.  02h    WORD    42  offset to mode records
  7402.  04h  8 BYTEs    (big-endian) partner logical unit name
  7403.  0Ch    BYTE    partner logical unit security capabilities
  7404.         bit 7: already verified
  7405.         bit 6: conversation level security
  7406.         bit 5: session level security
  7407.  0Dh    BYTE    partner logical unit session limit
  7408.  0Eh    WORD    partner logical unit maximum MC_SEND_LL
  7409.  10h  8 BYTEs    (big-endian) partner logical unit DLC name
  7410.  18h    BYTE    partner logical unit adapter number
  7411.  19h 17 BYTEs    (counted string) partner logical unit adapter address
  7412.  2Ah    WORD    total length of mode records
  7413.  2Ch 16N BYTEs    array of mode records (see #2277)
  7414.  
  7415. Format of mode record:
  7416. Offset    Size    Description    (Table 2277)
  7417.  00h    WORD    16  length of this mode record
  7418.  02h  8 BYTEs    (big-endian) mode name
  7419.  0Ah    WORD    RU_SIZE high bound
  7420.  0Ch    WORD    RU_SIZE low bound
  7421.  0Eh    BYTE    mode maximum negotiable session limit
  7422.  0Fh    BYTE    pacing size for receive
  7423.  
  7424. Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
  7425. pointers are called by pushing the DWORD pointer to the verb on the stack and
  7426. then performing a FAR call.
  7427.  
  7428. Format of ACCESS_LU_LU_PW verb:
  7429. Offset    Size    Description    (Table 2278)
  7430.  00h 12 BYTEs    reserved
  7431.  0Ch    WORD    1900h (verb "ACCESS_LU_LU_PW")
  7432.  0Eh  8 BYTEs    (big-endian) logical unit ID
  7433.  16h  8 BYTEs    (big-endian) logical unit name
  7434.  1Eh  8 BYTEs    (big-endian) partner logical unit name
  7435.  26h 17 BYTEs    (counted string) partner fully qualified logical unit name
  7436.  37h    BYTE    password available (0=no, 1=yes)
  7437.  38h  8 BYTEs    password
  7438. SeeAlso: #2275,#2279,#2281
  7439.  
  7440. Format of CREATE_TP verb:
  7441. Offset    Size    Description    (Table 2279)
  7442.  00h 12 BYTEs    reserved
  7443.  0Ch    WORD    2300h (verb "CREATE_TP")
  7444.  0Eh  6 BYTEs    00h
  7445.  14h    DWORD    (big-endian) sense code (see #2280)
  7446.  18h  8 BYTEs    (big-endian) TP ID
  7447.  20h  8 BYTEs    (big-endian) logical unit ID
  7448.  28h    DWORD    (big-endian) conversation ID
  7449.  2Ch    BYTE    0 basic conversation, 1 mapped conversation
  7450.  2Dh    BYTE    0 no sync level, 1 confirm
  7451.  2Eh    BYTE    reserved
  7452.  2Fh 65 BYTEs    (counted string) transaction program name
  7453.  70h  6 BYTEs    00h
  7454.  76h    WORD    length of ERROR_LOG_DATA to return
  7455.  78h    DWORD    pointer to ERROR_LOG_DATA buffer
  7456.  7Ch  8 BYTEs    (big-endian) partner logical unit name
  7457.  84h 18 BYTEs    (counted string) partner fully qualified logical unit name
  7458.  96h  8 BYTEs    (big-endian) mode name
  7459.  9Eh 12 BYTEs    00h
  7460.  AAh 11 BYTEs    (counted string) password
  7461.  B5h 11 BYTEs    (counted string) user ID
  7462.  C0h    BYTE    0 verification should be performed
  7463.         1 already verified
  7464. SeeAlso: #2278,#2281
  7465.  
  7466. (Table 2280)
  7467. Values for APPC/PC sense code:
  7468.  00000000h    Ok
  7469.  080F6051h    SECURITY_NOT_VALID
  7470.  084B6031h    TP_NOT_AVAIL_RETRY
  7471.  084C0000h    TP_NOT_AVAIL_NO_RETRY
  7472.  10086021h    TP_NAME_NOT_RECOGNIZED
  7473.  10086034h    CONVERSATION_TYPE_MISMATCH
  7474.  10086041h    SYNC_LEVEL_NOT_SUPPORTED
  7475.  
  7476. Format of SYSLOG verb:
  7477. Offset    Size    Description    (Table 2281)
  7478.  00h 12 BYTEs    reserved
  7479.  0Ch    WORD    2600h (verb "SYSLOG")
  7480.  0Eh 10 BYTEs    00h
  7481.  18h    WORD    (big-endian) type
  7482.  1Ah    DWORD    (big-endian) subtype
  7483.  1Eh    DWORD    pointer to ADDITIONAL_INFO
  7484.  22h    DWORD    (big-endian) conversation ID
  7485.  26h  8 BYTEs    (big-endian) TP ID
  7486.  2Eh  8 BYTEs    (big-endian) physical unit or logical unit name
  7487.  36h    WORD    length of data
  7488.  38h    DWORD    pointer to data
  7489.  3Ch    BYTE    00h
  7490. SeeAlso: #2278,#2279
  7491. --------N-6801--SF2200-----------------------
  7492. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH LOGICAL UNIT
  7493.     AH = 01h subfn 2200h
  7494.     DS:DX -> control block (see #2282)
  7495. Return: control block updated
  7496. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2700h
  7497.  
  7498. Format of APPC/PC "Detach Logical Unit" control block:
  7499. Offset    Size    Description    (Table 2282)
  7500.  00h 12 BYTEs    reserved
  7501.  0Ch    WORD    2200h (verb "Detach Logical Unit")
  7502.  0Eh  6 BYTEs    00h
  7503.  14h    DWORD    (big-endian) return code (see #2273)
  7504.  18h  8 BYTEs    (big-endian) logical unit ID
  7505.  20h    BYTE    00h
  7506. --------N-6801--SF2700-----------------------
  7507. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH PHYSICAL UNIT
  7508.     AH = 01h subfn 2700h
  7509.     DS:DX -> control block (see #2283)
  7510. Return: control block updated
  7511. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2200h
  7512.  
  7513. Format of APPC/PC "Detach Physical Unit" control block:
  7514. Offset    Size    Description    (Table 2283)
  7515.  00h 12 BYTEs    reserved
  7516.  0Ch    WORD    2700h (verb "Detach Physical Unit")
  7517.  0Eh  6 BYTEs    00h
  7518.  14h    DWORD    (big-endian) return code (see #2273)
  7519.  18h    BYTE    00h  type: hard
  7520.         01h  type: soft
  7521. --------N-6801--SF2B00-----------------------
  7522. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ACTIVATE DLC
  7523.     AH = 01h subfn 2B00h
  7524.     DS:DX -> control block (see #2284)
  7525. Return: control block updated
  7526. SeeAlso: AH=01h/SF=1B00h,AH=01h/SF=2000h
  7527.  
  7528. Format of APPC/PC "Activate DLC" control block:
  7529. Offset    Size    Description    (Table 2284)
  7530.  00h 12 BYTEs    reserved
  7531.  0Ch    WORD    2B00h (verb "Activate DLC")
  7532.  0Eh  6 BYTEs    00h
  7533.  14h    DWORD    (big-endian) return code (see #2273)
  7534.  18h  8 BYTEs    (big-endian) DLC name
  7535.  20h    BYTE    adapter number
  7536. --------N-6802--SF0100-----------------------
  7537. INT 68 - APPC/PC - CONNECTION CONTROL - ALLOCATE
  7538.     AH = 02h subfn 0100h
  7539.     DS:DX -> control block (see #2285)
  7540. Return: control block updated
  7541. SeeAlso: AH=02h/SF=0500h
  7542.  
  7543. Format of APPC/PC "Allocate" control block:
  7544. Offset    Size    Description    (Table 2285)
  7545.  00h 12 BYTEs    reserved
  7546.  0Ch    WORD    0100h (verb "Allocate" or "MC_Allocate")
  7547.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7548.         0 if basic verb
  7549.  0Fh  5 BYTEs    reserved (0)
  7550.  14h    WORD    (big-endian) primary return code (see #2286)
  7551.  16h    DWORD    (big-endian) error code (see #2287)
  7552.  1Ah  8 BYTEs    (big-endian) TP_ID
  7553.  22h    DWORD    (big-endian) conversation ID
  7554.  26h    BYTE    (MC_Allocate only) conversation type
  7555.         0 basic conversation
  7556.         1 mapped conversation
  7557.  27h    BYTE    SYNC_LEVEL (00h none, 01h confirm)
  7558.  28h    WORD    0000h
  7559.  2Ah    BYTE    RETURN_CONTROL
  7560.         00h when session allocated
  7561.         01h immediate
  7562.         02h when session free
  7563.  2Bh  8 BYTEs    00h
  7564.  33h  8 BYTEs    (big-endian) partner logical unit name
  7565.  3Bh  8 BYTEs    (big-endian) mode name
  7566.  43h 65 BYTEs    (counted string) TP name
  7567.  84h    BYTE    security (00h none, 01h same, 02h pgm)
  7568.  85h 11 BYTEs    00h
  7569.  90h 11 BYTEs    (counted string) password
  7570.  9Bh 11 BYTEs    (counted string) user ID
  7571.  A6h    WORD    PIP_DATA length
  7572.  A8h    DWORD    pointer to PIP_DATA
  7573.  
  7574. (Table 2286)
  7575. Values for APPC/PC primary return code:
  7576.  0000h    successful
  7577.  0001h    parameter check
  7578.  0002h    state check
  7579.  0003h    allocation error
  7580.  0005h    deallocate abended
  7581.  0006h    deallocate abended program
  7582.  0007h    deallocate abended SVC
  7583.  0008h    deallocate abended timer
  7584.  0009h    deallocate normal return
  7585.  000Ah    data posting blocked
  7586.  000Bh    posting not active
  7587.  000Ch    PROG_ERROR_NO_TRUNC
  7588.  000Dh    PROG_ERROR_TRUNC
  7589.  000Eh    PROG_ERROR_PURGING
  7590.  000Fh    CONV_FAILURE_RETRY
  7591.  0010h    CONV_FAILURE_NO_RETRY
  7592.  0011h    SVC_ERROR_NO_TRUNC
  7593.  0012h    SVC_ERROR_TRUNC
  7594.  0013h    SVC_ERROR_PURGING
  7595.  0014h    unsuccessful
  7596.  0018h    CNOS partner logical unit reject
  7597.  0019h    conversation type mixed
  7598.  F001h    APPC disabled
  7599.  F002h    APPC busy
  7600.  F003h    APPC abended
  7601.  F004h    incomplete
  7602.  
  7603. (Table 2287)
  7604. Values for APPC/PC error code:
  7605.  0001h    bad TP ID
  7606.  0002h    bad conversation ID
  7607.  0004h    allocation error, no retry
  7608.  0005h    allocation error, retry
  7609.  0006h    data area crosses segment boundary
  7610.  0010h    bad TPN length
  7611.  0011h    bad CONV length
  7612.  0012h    bad SYNC level
  7613.  0013h    bad security selection
  7614.  0014h    bad return control
  7615.  0015h    SEC_TOKENS too big
  7616.  0016h    PIP_LEN incorrect
  7617.  0017h    no use of SNASVCMG
  7618.  0018h    unknown partner mode
  7619.  0031h    confirm: SYNC_NONE
  7620.  0032h    confirm: bad state
  7621.  0033h    confirm: NOT_LL_BDY
  7622.  0041h    confirmed: bad state
  7623.  0051h    deallocate: bad type
  7624.  0052h    deallocate: flush bad state
  7625.  0053h    deallocate: confirm bad state
  7626.  0055h    deallocate: NOT_LL_BDY
  7627.  0057h    deallocate: log LL_WRONG
  7628.  0061h    flush: not send state
  7629.  0091h    post on receipt: invalid length
  7630.  0092h    post on receipt: not in receive state
  7631.  0093h    post on receipt: bad fill
  7632.  00A1h    prepare to receive:invalid type
  7633.  00A2h    prepare to receive: unfinished LL
  7634.  00A3h    prepare to receive: not in send state
  7635.  00B1h    receive and wait: bad state
  7636.  00B2h    receive and wait: NOT_LL_BDY
  7637.  00B5h    receive and wait: bad fill
  7638.  00C1h    receive immediate: not in receive state
  7639.  00C4h    receive immediate: bad fill
  7640.  00E1h    request to send: not in receive state
  7641.  00F1h    send data: bad LL
  7642.  00F2h    send data: not in send state
  7643.  0102h    send error: log LL wrong
  7644.  0103h    send error: bad type
  7645.  0121h    test: invalid type
  7646.  0122h    test: not in receive state
  7647. --------N-6802--SF0300-----------------------
  7648. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRM
  7649.     AH = 02h subfn 0300h
  7650.     DS:DX -> control block (see #2288)
  7651. Return: control block updated
  7652. SeeAlso: AH=02h/SF=0400h
  7653.  
  7654. Format of APPC/PC "Confirm" control block:
  7655. Offset    Size    Description    (Table 2288)
  7656.  00h 12 BYTEs    reserved
  7657.  0Ch    WORD    0300h (verb "Confirm" or "MC_Confirm")
  7658.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7659.         0 if basic verb
  7660.  0Fh  5 BYTEs    reserved (0)
  7661.  14h    WORD    (big-endian) primary return code (see #2286)
  7662.  16h    DWORD    (big-endian) error code (see #2287)
  7663.  1Ah  8 BYTEs    (big-endian) TP_ID
  7664.  22h    DWORD    (big-endian) conversation ID
  7665.  26h    BYTE    request to send received (0=no, 1=yes)
  7666. --------N-6802--SF0400-----------------------
  7667. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRMED
  7668.     AH = 02h subfn 0400h
  7669.     DS:DX -> control block (see #2289)
  7670. Return: control block updated
  7671. SeeAlso: AH=02h/SF=0300h
  7672.  
  7673. Format of APPC/PC "Confirmed" control block:
  7674. Offset    Size    Description    (Table 2289)
  7675.  00h 12 BYTEs    reserved
  7676.  0Ch    WORD    0400h (verb "Confirmed" or "MC_Confirmed")
  7677.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7678.         0 if basic verb
  7679.  0Fh  5 BYTEs    reserved (0)
  7680.  14h    WORD    (big-endian) primary return code (see #2286)
  7681.  16h    DWORD    (big-endian) error code (see #2287)
  7682.  1Ah  8 BYTEs    (big-endian) TP_ID
  7683.  22h    DWORD    (big-endian) conversation ID
  7684. --------N-6802--SF0500-----------------------
  7685. INT 68 - APPC/PC - CONNECTION CONTROL - DEALLOCATE
  7686.     AH = 02h subfn 0500h
  7687.     DS:DX -> control block (see #2290)
  7688. Return: control block updated
  7689. SeeAlso: AH=02h/SF=0100h,AH=02h/SF=0300h
  7690.  
  7691. Format of APPC/PC "Deallocate" control block:
  7692. Offset    Size    Description    (Table 2290)
  7693.  00h 12 BYTEs    reserved
  7694.  0Ch    WORD    0500h (verb "Deallocate" or "MC_Deallocate")
  7695.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7696.         0 if basic verb
  7697.  0Fh  5 BYTEs    reserved (0)
  7698.  14h    WORD    (big-endian) primary return code (see #2286)
  7699.  16h    DWORD    (big-endian) error code (see #2287)
  7700.  1Ah  8 BYTEs    (big-endian) TP_ID
  7701.  22h    DWORD    (big-endian) conversation ID
  7702.  26h    BYTE    00h
  7703.  27h    BYTE    type
  7704.         00h SYNC_LEVEL
  7705.         01h FLUSH
  7706.         02h ABEND_PROC
  7707.         03h ABEND_SVC
  7708.         04h ABEND_TIMER
  7709.         05h ABEND
  7710.  28h    WORD    (MC_Deallocate only) length of error log data
  7711.  2Ah    DWORD    (MC_Deallocate only) pointer to error log data
  7712. --------N-6802--SF0600-----------------------
  7713. INT 68 - APPC/PC - CONNECTION CONTROL - FLUSH
  7714.     AH = 02h subfn 0600h
  7715.     DS:DX -> control block (see #2291)
  7716. Return: control block updated
  7717. SeeAlso: AH=02h/SF=0300h
  7718.  
  7719. Format of APPC/PC "Flush" control block:
  7720. Offset    Size    Description    (Table 2291)
  7721.  00h 12 BYTEs    reserved
  7722.  0Ch    WORD    0600h (verb "Flush" or "MC_Flush")
  7723.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7724.         0 if basic verb
  7725.  0Fh  5 BYTEs    reserved (0)
  7726.  14h    WORD    (big-endian) primary return code (see #2286)
  7727.  16h    DWORD    (big-endian) error code (see #2287)
  7728.  1Ah  8 BYTEs    (big-endian) TP_ID
  7729.  22h    DWORD    (big-endian) conversation ID
  7730. --------N-6802--SF0700-----------------------
  7731. INT 68 - APPC/PC - CONNECTION CONTROL - GET ATTRIBUTES
  7732.     AH = 02h subfn 0700h
  7733.     DS:DX -> control block (see #2292)
  7734. Return: control block updated
  7735. SeeAlso: AH=02h/SF=0300h
  7736.  
  7737. Format of APPC/PC "Get_Attributes" control block:
  7738. Offset    Size    Description    (Table 2292)
  7739.  00h 12 BYTEs    reserved
  7740.  0Ch    WORD    0700h (verb "Get_Attributes" or "MC_Get_Attributes")
  7741.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7742.         0 if basic verb
  7743.  0Fh  5 BYTEs    reserved (0)
  7744.  14h    WORD    (big-endian) primary return code (see #2286)
  7745.  16h    DWORD    (big-endian) error code (see #2287)
  7746.  1Ah  8 BYTEs    (big-endian) TP_ID
  7747.  22h    DWORD    (big-endian) conversation ID
  7748.  26h  8 BYTEs    (big-endian) logical unit ID
  7749.  2Eh    BYTE    00h
  7750.  2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
  7751.  30h  8 BYTEs    (big-endian) mode name
  7752.  38h  8 BYTEs    (big-endian) own net name
  7753.  40h  8 BYTEs    (big-endian) own logical unit name
  7754.  48h  8 BYTEs    (big-endian) partner logical unit name
  7755.  50h 18 BYTEs    (counted string) partner's fully qualified logical unit name
  7756.  62h    BYTE    00h
  7757.  63h 11 BYTEs    (counted string) user ID
  7758. --------N-6802--SF0800-----------------------
  7759. INT 68 - APPC/PC - CONNECTION CONTROL - GET CONVERSATION TYPE
  7760.     AH = 02h subfn 0800h
  7761.     DS:DX -> control block (see #2293)
  7762. Return: control block updated
  7763. SeeAlso: AH=02h/SF=0300h
  7764.  
  7765. Format of APPC/PC "Get_Type" control block:
  7766. Offset    Size    Description    (Table 2293)
  7767.  00h 12 BYTEs    reserved
  7768.  0Ch    WORD    0800h (verb "Get_Type")
  7769.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7770.         0 if basic verb
  7771.  0Fh  5 BYTEs    reserved (0)
  7772.  14h    WORD    (big-endian) primary return code (see #2286)
  7773.  16h    DWORD    (big-endian) error code (see #2287)
  7774.  1Ah  8 BYTEs    (big-endian) TP_ID
  7775.  22h    DWORD    (big-endian) conversation ID
  7776.  26h    BYTE    (ret) type (0=basic conversation, 1=mapped conversation)
  7777. --------N-6802--SF0900-----------------------
  7778. INT 68 - APPC/PC - CONNECTION CONTROL - POST ON RECEIPT
  7779.     AH = 02h subfn 0900h
  7780.     DS:DX -> control block (see #2294)
  7781. Return: control block updated
  7782. SeeAlso: AH=02h/SF=0A00h
  7783.  
  7784. Format of APPC/PC "Post_on_Receipt" control block:
  7785. Offset    Size    Description    (Table 2294)
  7786.  00h 12 BYTEs    reserved
  7787.  0Ch    WORD    0900h (verb "Post_on_Receipt")
  7788.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7789.         0 if basic verb
  7790.  0Fh  5 BYTEs    reserved (0)
  7791.  14h    WORD    (big-endian) primary return code (see #2286)
  7792.  16h    DWORD    (big-endian) error code (see #2287)
  7793.  1Ah  8 BYTEs    (big-endian) TP_ID
  7794.  22h    DWORD    (big-endian) conversation ID
  7795.  26h    WORD    maximum length
  7796.  28h    BYTE    fill (0=buffer, 1=LL)
  7797. --------N-6802--SF0A00-----------------------
  7798. INT 68 - APPC/PC - CONNECTION CONTROL - PREPARE TO RECEIVE
  7799.     AH = 02h subfn 0A00h
  7800.     DS:DX -> control block (see #2295)
  7801. Return: control block updated
  7802. SeeAlso: AH=02h/SF=0900h,AH=02h/SF=0B00h
  7803.  
  7804. Format of APPC/PC "Prepare_to_Receive" control block:
  7805. Offset    Size    Description    (Table 2295)
  7806.  00h 12 BYTEs    reserved
  7807.  0Ch    WORD    0A00h (verb "Prepare_to_Receive" or "MC_Prepare_to_Receive")
  7808.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7809.         0 if basic verb
  7810.  0Fh  5 BYTEs    reserved (0)
  7811.  14h    WORD    (big-endian) primary return code (see #2286)
  7812.  16h    DWORD    (big-endian) error code (see #2287)
  7813.  1Ah  8 BYTEs    (big-endian) TP_ID
  7814.  22h    DWORD    (big-endian) conversation ID
  7815.  26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
  7816.  27h    BYTE    locks (0=short, 1=long)
  7817. --------N-6802--SF0B00-----------------------
  7818. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE AND WAIT
  7819.     AH = 02h subfn 0B00h
  7820.     DS:DX -> control block (see #2296)
  7821. Return: control block updated
  7822. SeeAlso: AH=02h/SF=0C00h,AH=02h/SF=0F00h
  7823.  
  7824. Format of APPC/PC "Receive_and_Wait" control block:
  7825. Offset    Size    Description    (Table 2296)
  7826.  00h 12 BYTEs    reserved
  7827.  0Ch    WORD    0B00h (verb "Receive_and_Wait" or "MC_Receive_and_Wait")
  7828.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7829.         0 if basic verb
  7830.  0Fh  5 BYTEs    reserved (0)
  7831.  14h    WORD    (big-endian) primary return code (see #2286)
  7832.  16h    DWORD    (big-endian) error code (see #2287)
  7833.  1Ah  8 BYTEs    (big-endian) TP_ID
  7834.  22h    DWORD    (big-endian) conversation ID
  7835.  26h    BYTE    type of information received (see #2297)
  7836.  27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
  7837.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  7838.  29h    WORD    maximum length
  7839.  2Bh    WORD    data length
  7840.  2Dh    DWORD    pointer to data
  7841.  
  7842. (Table 2297)
  7843. Values for type of information received:
  7844.  00h    data
  7845.  01h    data complete
  7846.  02h    data incomplete
  7847.  03h    confirm
  7848.  04h    confirm send
  7849.  05h    confirm deallocate
  7850.  06h    send
  7851. --------N-6802--SF0C00-----------------------
  7852. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE IMMEDIATE
  7853.     AH = 02h subfn 0C00h
  7854.     DS:DX -> control block (see #2298)
  7855. Return: control block updated
  7856. SeeAlso: AH=02h/SF=0B00h,AH=02h/SF=0F00h
  7857.  
  7858. Format of APPC/PC "Receive_Immediate" control block:
  7859. Offset    Size    Description    (Table 2298)
  7860.  00h 12 BYTEs    reserved
  7861.  0Ch    WORD    0C00h (verb "Receive_Immediate" or "MC_Receive_Immediate")
  7862.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7863.         0 if basic verb
  7864.  0Fh  5 BYTEs    reserved (0)
  7865.  14h    WORD    (big-endian) primary return code (see #2286)
  7866.  16h    DWORD    (big-endian) error code (see #2287)
  7867.  1Ah  8 BYTEs    (big-endian) TP_ID
  7868.  22h    DWORD    (big-endian) conversation ID
  7869.  26h    BYTE    type of information received (see #2297)
  7870.  27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
  7871.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  7872.  29h    WORD    maximum length
  7873.  2Bh    WORD    data length
  7874.  2Dh    DWORD    pointer to data
  7875. --------N-6802--SF0E00-----------------------
  7876. INT 68 - APPC/PC - CONNECTION CONTROL - REQUEST TO SEND
  7877.     AH = 02h subfn 0E00h
  7878.     DS:DX -> control block (see #2299)
  7879. Return: control block updated
  7880. SeeAlso: AH=02h/SF=0F00h,AH=02h/SF=1000h
  7881.  
  7882. Format of APPC/PC "Request_to_Send" control block:
  7883. Offset    Size    Description    (Table 2299)
  7884.  00h 12 BYTEs    reserved
  7885.  0Ch    WORD    0E00h (verb "Request_to_Send" or "MC_Request_to_Send")
  7886.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7887.         0 if basic verb
  7888.  0Fh  5 BYTEs    reserved (0)
  7889.  14h    WORD    (big-endian) primary return code (see #2286)
  7890.  16h    DWORD    (big-endian) error code (see #2287)
  7891.  1Ah  8 BYTEs    (big-endian) TP_ID
  7892.  22h    DWORD    (big-endian) conversation ID
  7893. --------N-6802--SF0F00-----------------------
  7894. INT 68 - APPC/PC - CONNECTION CONTROL - SEND DATA
  7895.     AH = 02h subfn 0F00h
  7896.     DS:DX -> control block (see #2300)
  7897. Return: control block updated
  7898. SeeAlso: AH=02h/SF=0E00h,AH=02h/SF=1000h
  7899.  
  7900. Format of APPC/PC "Send_Data" control block:
  7901. Offset    Size    Description    (Table 2300)
  7902.  00h 12 BYTEs    reserved
  7903.  0Ch    WORD    0F00h (verb "Send_Data" or "MC_Send_Data")
  7904.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7905.         0 if basic verb
  7906.  0Fh  5 BYTEs    reserved (0)
  7907.  14h    WORD    (big-endian) primary return code (see #2286)
  7908.  16h    DWORD    (big-endian) error code (see #2287)
  7909.  1Ah  8 BYTEs    (big-endian) TP_ID
  7910.  22h    DWORD    (big-endian) conversation ID
  7911.  26h    BYTE    request to send received (0=no, 1=yes)
  7912.  27h    BYTE    00h
  7913.  28h    WORD    data length
  7914.  2Ah    DWORD    pointer to data
  7915. --------N-6802--SF1000-----------------------
  7916. INT 68 - APPC/PC - CONNECTION CONTROL - SEND ERROR
  7917.     AH = 02h subfn 1000h
  7918.     DS:DX -> control block (see #2301)
  7919. Return: control block updated
  7920. SeeAlso: AH=02h/SF=0F00h
  7921.  
  7922. Format of APPC/PC "Send_Error" control block:
  7923. Offset    Size    Description    (Table 2301)
  7924.  00h 12 BYTEs    reserved
  7925.  0Ch    WORD    1000h (verb "Send_Error" or "MC_Send_Error")
  7926.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7927.         0 if basic verb
  7928.  0Fh  5 BYTEs    reserved (0)
  7929.  14h    WORD    (big-endian) primary return code (see #2286)
  7930.  16h    DWORD    (big-endian) error code (see #2287)
  7931.  1Ah  8 BYTEs    (big-endian) TP_ID
  7932.  22h    DWORD    (big-endian) conversation ID
  7933.  26h    BYTE    request to send received (0=no, 1=yes)
  7934.  27h    BYTE    type (0=program, 1=SVC)
  7935.  28h    DWORD    00h
  7936.  2Ch    WORD    (MC_Send_Error only) LOG_DATA length
  7937.  2Eh    DWORD    (MC_Send_Error only) pointer to LOG_DATA
  7938. --------N-6802--SF1200-----------------------
  7939. INT 68 - APPC/PC - CONNECTION CONTROL - TEST
  7940.     AH = 02h subfn 1200h
  7941.     DS:DX -> control block (see #2302)
  7942. Return: control block updated
  7943. SeeAlso: AH=02h/SF=1300h
  7944.  
  7945. Format of APPC/PC "Test" control block:
  7946. Offset    Size    Description    (Table 2302)
  7947.  00h 12 BYTEs    reserved
  7948.  0Ch    WORD    1200h (verb "Test" or "MC_Test")
  7949.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7950.         0 if basic verb
  7951.  0Fh  5 BYTEs    reserved (0)
  7952.  14h    WORD    (big-endian) primary return code (see #2286)
  7953.  16h    DWORD    (big-endian) error code (see #2287)
  7954.  1Ah  8 BYTEs    (big-endian) TP_ID
  7955.  22h    DWORD    (big-endian) conversation ID
  7956.  26h    BYTE    (MC_Test only) test (0=posted, 1=request_to_send received)
  7957. Note:    error code has different interpretations for:
  7958.     0 posted data
  7959.     1 posted not data (primary return code = 0)
  7960.     1 bad TP_ID (primary return code = 1)
  7961. --------N-6802--SF1300-----------------------
  7962. INT 68 - APPC/PC - CONNECTION CONTROL - WAIT
  7963.     AH = 02h subfn 1300h
  7964.     DS:DX -> control block (see #2303)
  7965. Return: control block updated
  7966. SeeAlso: AH=02h/SF=1200h
  7967.  
  7968. Format of APPC/PC "Wait" control block:
  7969. Offset    Size    Description    (Table 2303)
  7970.  00h 12 BYTEs    reserved
  7971.  0Ch    WORD    1300h (verb "Wait")
  7972.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  7973.         0 if basic verb
  7974.  0Fh  5 BYTEs    reserved (0)
  7975.  14h    WORD    (big-endian) primary return code (see #2286)
  7976.  16h    DWORD    (big-endian) error code (see #2287,#2302)
  7977.  1Ah  8 BYTEs    (big-endian) TP_ID
  7978.  22h    DWORD    (big-endian) conversation ID
  7979.  26h    BYTE    number of conversations to wait on
  7980.         Note: error codes have interpretations as for AH=02h/SF=1200h
  7981. --------N-6803--SF2400-----------------------
  7982. INT 68 - APPC/PC - TP STARTED
  7983.     AH = 03h subfn 2400h
  7984.     DS:DX -> control block (see #2304)
  7985. Return: control block updated
  7986.  
  7987. Format of APPC/PC "TP Started" control block:
  7988. Offset    Size    Description    (Table 2304)
  7989.  00h 12 BYTEs    reserved
  7990.  0Ch    WORD    2400h (verb "TP Started")
  7991.  0Eh  6 BYTEs    00h
  7992.  14h    DWORD    (big-endian) return code (see #2273)
  7993.  18h    WORD    00h
  7994.  1Ah  8 BYTEs    (big-endian) logical unit ID
  7995.  22h  8 BYTEs    (big-endian) TP ID
  7996. --------N-6803--SF2800-----------------------
  7997. INT 68 - APPC/PC - GET ALLOCATE
  7998.     AH = 03h subfn 2800h
  7999.     DS:DX -> control block (see #2305)
  8000. Return: control block updated
  8001.  
  8002. Format of APPC/PC "Get ALLOCATE" control block:
  8003. Offset    Size    Description    (Table 2305)
  8004.  00h 12 BYTEs    reserved
  8005.  0Ch    WORD    2800h (verb "Get ALLOCATE")
  8006.  0Eh  6 BYTEs    00h
  8007.  14h    DWORD    (big-endian) return code (see #2273)
  8008.  18h    WORD    00h
  8009.  1Ah  8 BYTEs    (big-endian) logical unit ID
  8010.  22h    BYTE    type (00h dequeue, 01h test)
  8011.  23h    DWORD    pointer to CREATE_TP record
  8012. --------N-6803--SF2A00-----------------------
  8013. INT 68 - APPC/PC - CHANGE LOGICAL UNIT
  8014.     AH = 03h subfn 2A00h
  8015.     DS:DX -> control block (see #2306)
  8016. Return: control block updated
  8017.  
  8018. Format of APPC/PC "Change Logical Unit" control block:
  8019. Offset    Size    Description    (Table 2306)
  8020.  00h 12 BYTEs    reserved
  8021.  0Ch    WORD    2A00h (verb "Change Logical Unit")
  8022.  0Eh  6 BYTEs    00h
  8023.  14h    DWORD    (big-endian) return code (see #2273)
  8024.  18h    WORD    00h
  8025.  1Ah  8 BYTEs    (big-endian) logical unit ID
  8026.  22h    DWORD    pointer to CREATE_TP_EXIT routine
  8027.         00000000h queue ALLOCATEs
  8028.         FFFFFFFFh reject incoming ALLOCATEs
  8029.  26h    DWORD    00000000h
  8030.  2Ah    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
  8031.  2Eh    DWORD    00000000h
  8032.  32h    BYTE    maximum TPs
  8033.  33h    BYTE    00h stop QUEUE_ALLOCATEs
  8034.         01h resume QUEUE_ALLOCATEs
  8035.  34h    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
  8036.  38h    DWORD    00000000h
  8037. --------N-6804-------------------------------
  8038. INT 68 - APPC/PC - TRANSACTION PROCESSING
  8039.     AH = 04h
  8040.     DS:DX -> control block (see #2307)
  8041. Return: control block updated
  8042.  
  8043. Format of APPC/PC control block:
  8044. Offset    Size    Description    (Table 2307)
  8045.  00h 12 BYTEs    reserved
  8046.  0Ch    WORD    verb (action)
  8047.         2500h TP_ENDED
  8048.         2900h TP_VALID
  8049.  0Eh  6 BYTEs    00h
  8050.  14h    DWORD    (big-endian) return code (see #2273)
  8051.  18h    WORD    00h
  8052.  1Ah  8 BYTEs    (big-endian) TP_ID
  8053.  22h    DWORD    -> CREATE_TP record (only if verb = 2900h)
  8054. --------N-6805-------------------------------
  8055. INT 68 - APPC/PC - TRANSFER MESSAGE DATA
  8056.     AH = 05h
  8057.     DS:DX -> control block (see #2308)
  8058. Return: control block updated
  8059.  
  8060. Format of APPC/PC "Transfer Message Data" control block:
  8061. Offset    Size    Description    (Table 2308)
  8062.  00h 12 BYTEs    reserved
  8063.  0Ch    WORD    1C00h (verb "Transfer Message Data")
  8064.  0Eh    BYTE    data type
  8065.         00h user defined
  8066.         01h NMVT
  8067.         02h alert subvectors
  8068.         03h PDSTATS subvectors
  8069.  0Fh  5 BYTEs    00h
  8070.  14h    DWORD    (big-endian) return code (see #2273)
  8071.  18h 12 BYTEs    00h
  8072.  24h    BYTE    flags (see #2309)
  8073.  25h    BYTE    00h
  8074.  26h    WORD    length of data
  8075.  28h  N BYTEs    data
  8076.  
  8077. Bitfields for APPC/PC message transfer flags:
  8078. Bit(s)    Description    (Table 2309)
  8079.  0    don't add correlation subvector
  8080.  1    don't add product set ID subvector
  8081.  2    don't do SYSLOG
  8082.  3    don't send SSCP_PU_SESSION
  8083. SeeAlso: #2308
  8084. --------N-6806-------------------------------
  8085. INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
  8086.     AH = 06h
  8087.     DS:DX -> control block (see #2310)
  8088. Return: control block updated
  8089.  
  8090. Format of APPC/PC "Change Number of Sessions" control block:
  8091. Offset    Size    Description    (Table 2310)
  8092.  00h 12 BYTEs    reserved
  8093.  0Ch    WORD    1500h (verb "Change Number of Sessions")
  8094.  0Eh  6 BYTEs    00h
  8095.  14h    WORD    (big-endian) primary return code (see #2286)
  8096.  16h    DWORD    (big-endian) secondary return code (see #2273,#2311)
  8097.  1Ah  8 BYTEs    (big-endian) logical unit ID
  8098.  22h  8 BYTEs    blanks
  8099.  2Ah  8 BYTEs    (big-endian) partner logical unit name
  8100.  32h  8 BYTEs    (big-endian) mode name
  8101.  3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
  8102.         bit 6: set negotiable values
  8103.  3Bh    BYTE    partner logical unit mode session limit
  8104.  3Ch    BYTE    minimum CONWINNERS_SOURCE
  8105.  3Dh    BYTE    maximum CONWINNERS_TARGET
  8106.  3Eh    BYTE    automatic activation
  8107.  3Fh    BYTE    00h
  8108.  40h    BYTE    flags
  8109.         bit 7: drain target
  8110.         bit 6: drain source
  8111.         bit 5: target responsible, not source
  8112.  
  8113. (Table 2311)
  8114. Values for secondary return code (see also AH=01h/SF=1B00h):
  8115.  0000h    accepted
  8116.  0001h    negotiated
  8117.  0003h    bad logical unit ID
  8118.  0004h    allocation failure, no retry
  8119.  0005h    allocation failure, retry
  8120.  0151h    can't raise limits
  8121.  0153h    all modes must reset
  8122.  0154h    bad SNASVCMG limits
  8123.  0155h    minimum greater than total
  8124.  0156h    mode closed (primary return code = 1)
  8125.     CNOS mode closed (primary return code = 18h)
  8126.  0157h    bad mode name (primary return code = 1)
  8127.     CNOS bad mode name (primary return code = 18h)
  8128.  0159h    reset SNA drains
  8129.  015Ah    single not SRC response
  8130.  015Bh    bad partner logical unit
  8131.  015Ch    exceeds maximum allowed
  8132.  015Dh    change SRC drains
  8133.  015Eh    logical unit detached
  8134.  015Fh    CNOS command race reject
  8135. --------N-6807-------------------------------
  8136. INT 68 - APPC/PC - PASSTHROUGH
  8137.     AH = 07h
  8138.     DS:DX -> control block (format depends on application subsystem)
  8139. Return: control block updated
  8140. SeeAlso: AH=FFh
  8141. ----------684300-----------------------------
  8142. INT 68 U - ??? - INSTALLATION CHECK???
  8143.     AX = 4300h
  8144. Return: AX = F386h if ???
  8145.     ???
  8146. Note:    called by Novell DOS 7.0 EMM386.EXE
  8147. SeeAlso: AX=4400h,INT 41/AX=004Fh
  8148. ----------684400-----------------------------
  8149. INT 68 U - ???
  8150.     AX = 4400h
  8151.     BX = ???
  8152.     CX = ???
  8153.     DX = ???
  8154.     DS:SI = real-mode address of protected-mode GDT
  8155.     ES:DI = real-mode address of protected-mode IDT
  8156. Return: ???
  8157. Note:    called by Novell DOS 7.0 EMM386.EXE if AX=4300h returns AX=F386h
  8158. SeeAlso: AX=4300h
  8159. --------W-6847-------------------------------
  8160. INT 68 - MS Windows debugging kernel - OUTPUT STRING
  8161.     AH = 47h
  8162.     ES:SI -> string
  8163. Notes:    output a string (to inform a debugger of some events)
  8164.     KERNEL outputs "Windows Kernel Entry\r\n" on startup
  8165. SeeAlso: INT 41/AX=0012h
  8166. --------N-68FA-------------------------------
  8167. INT 68 - APPC/PC - ENABLE/DISABLE APPC
  8168.     AH = FAh
  8169.     AL bit 0 = new state (0 enable, 1 disable)
  8170. SeeAlso: AH=FDh,INT 68"Novell"
  8171. --------N-68FB-------------------------------
  8172. INT 68 - APPC/PC - CONVERT
  8173.     AH = FBh
  8174.     DS:DX -> control block (see #2312)
  8175. Return: control block updated
  8176.  
  8177. Format of APPC/PC "CONVERT" control block:
  8178. Offset    Size    Description    (Table 2312)
  8179.  00h 12 BYTEs    reserved
  8180.  0Ch    WORD    1A00h (verb "CONVERT")
  8181.  0Eh  6 BYTEs    00h
  8182.  14h    DWORD    (big-endian) return code
  8183.  18h    BYTE    conversion
  8184.         00h ASCII to EBCDIC
  8185.         01h EBCDIC to ASCII
  8186.  19h    BYTE    character set
  8187.         00h AE
  8188.         01h A
  8189.         02h G
  8190.  1Ah    WORD    length of string to convert
  8191.  1Ch    DWORD    pointer to source
  8192.  20h    DWORD    pointer to target
  8193. --------N-68FC-------------------------------
  8194. INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
  8195.     AH = FCh
  8196.     AL = new state
  8197.         00h disable tracing
  8198.         01h enable tracing
  8199.         DX = number of bytes to keep (0=all)
  8200. SeeAlso: AH=FDh,AH=FEh
  8201. --------N-68FD-------------------------------
  8202. INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
  8203.     AH = FDh
  8204.     AL = new tracing state (00h disabled, 01h enabled)
  8205. SeeAlso: AH=FAh,AH=FCh,AH=FEh
  8206. --------N-68FE-------------------------------
  8207. INT 68 - APPC/PC - SET TRACE DESTINATION
  8208.     AH = FEh
  8209.     AL = trace destinations (see #2313)
  8210.     DS:DX -> trace stats record if AL bit 0 set (see #2314)
  8211. SeeAlso: AH=FCh,AH=FDh
  8212.  
  8213. Bitfields for trace destinations:
  8214. Bit(s)    Description    (Table 2313)
  8215.  0    storage (DS:DX -> trace stats record)
  8216.  1    display
  8217.  2    file (trace written to file OUTPUT.PC)
  8218.  3    printer
  8219.  
  8220. Format of APPC/PC Trace Statistics Record:
  8221. Offset    Size    Description    (Table 2314)
  8222.  00h    DWORD    pointer to storage trace buffer
  8223.  04h    WORD    max number of 80-byte records in trace
  8224.  06h    WORD    (high-order byte first!) current record number (must init to 0)
  8225.  08h    DWORD    (high-order byte first!) number of records written (init to 0)
  8226.  0Ch    DWORD    reserved
  8227. Note:    do not move record while trace is active
  8228. --------N-68FF-------------------------------
  8229. INT 68 - APPC/PC - SET PASSTHROUGH
  8230.     AH = FFh
  8231.     DS:DX -> passthrough exit routine
  8232. SeeAlso: AH=07h,INT 68"Novell"
  8233. --------b-69---------------------------------
  8234. INT 69 - Zenith AT BIOS - ???
  8235. Note:    called by INT 09 handler
  8236. --------h-69---------------------------------
  8237. INT 69 C - HP Vectra AT - IRQ17 - KEYBOARD OUTPUT-BUFFER-FULL SERVICE ROUTINE
  8238. SeeAlso: INT 09"IRQ1",INT 68"HP Vectra",INT 6A"HP Vectra"
  8239. --------N-690100-----------------------------
  8240. INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
  8241.     AX = 0100h
  8242. Return: AL = FFh if present
  8243. SeeAlso: AX=010Fh
  8244. --------N-690101-----------------------------
  8245. INT 69 - DECnet DOS CTERM - SEND BYTE
  8246.     AX = 0101h
  8247.     BL = character
  8248.     DX = session handle
  8249. Return: AH >= 80h on error
  8250. SeeAlso: AX=0102h
  8251. --------N-690102-----------------------------
  8252. INT 69 - DECnet DOS CTERM - READ BYTE
  8253.     AX = 0102h
  8254.     DX = session handle
  8255. Return: AH >= 80h on error
  8256.     AH < 80h if successful
  8257.         AL = character
  8258. SeeAlso: AX=0101h
  8259. --------N-690103-----------------------------
  8260. INT 69 - DECnet DOS CTERM - STATUS
  8261.     AX = 0103h
  8262.     DX = session handle
  8263. Return: AH status flags (see #2315)
  8264.     AL = reason code if DECnet error (see #2316)
  8265. SeeAlso: AX=0104h
  8266.  
  8267. Bitfields for DECnet DOS CTERM status flags:
  8268. Bit(s)    Description    (Table 2315)
  8269.  7    session has been aborted
  8270.  6    DECnet error
  8271.  1    trace data available
  8272.  0    receive data available
  8273.  
  8274. (Table 2316)
  8275. Values for reason code:
  8276.  00h    normal disconnect
  8277.  01h    unknown message from host
  8278.  02h    protocol violation from host
  8279.  03h    could not process the initiate message
  8280.  04h    error receiving message from host
  8281.  05h    error sending message to host
  8282.  06h    error checking for message from host
  8283.  07h    remote system does not support CTERM
  8284.  08h    remote system does not support correct protocol version
  8285.  09h    did not receive BIND message from host
  8286.  0Ah    could not send BIND message to host
  8287.  0Bh    no more sessions available
  8288.  0Ch    session does not exist
  8289.  0Dh    not enough memory to complete operation
  8290.  0Eh    connection has broken
  8291. Index:    error codes;DECnet DOS CTERM|DECnet DOS CTERM;error codes
  8292. --------N-690104-----------------------------
  8293. INT 69 - DECnet DOS CTERM - DECnet STATUS
  8294.     AX = 0104h
  8295.     DX = session handle
  8296. Return: AX = reason code (see #2316)
  8297. Note:    use this call when AX=0103h returns a DECnet error
  8298. SeeAlso: AX=0103h
  8299. --------N-690105-----------------------------
  8300. INT 69 - DECnet DOS CTERM - OPEN SESSION
  8301.     AX = 0105h
  8302.     DS:BX -> ASCIZ node name
  8303.     ES:DX -> buffer for session control block (see #2332 at INT 6A/AH=D0h)
  8304. Return: AX <= 0 on error
  8305.     AX > 0 session handle
  8306. SeeAlso: AX=0103h,AX=0106h,AX=010Ah
  8307. --------N-690106-----------------------------
  8308. INT 69 - DECnet DOS CTERM - CLOSE SESSION
  8309.     AX = 0106h
  8310.     DX = session handle
  8311. Return: AH = status
  8312.         00h good close
  8313.         other error code (see #2316)
  8314. SeeAlso: AX=0103h,AX=0105h
  8315. --------N-69010A-----------------------------
  8316. INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
  8317.     AX = 010Ah
  8318. Return: AX = length of session control block in bytes
  8319. SeeAlso: AX=0105h
  8320. --------N-69010B-----------------------------
  8321. INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
  8322.     AX = 010Bh
  8323.     DX = session handle
  8324. Return: AX > 0    DECnet socket for the session
  8325.     AX = 0    no match for handle
  8326. --------N-69010F-----------------------------
  8327. INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
  8328.     AX = 010Fh
  8329. Return: AH = status
  8330.         00h successful uninstall
  8331.         other error code (see #2316)
  8332. Note:    CTERM must have been the last TSR loaded in order to deinstall it
  8333. SeeAlso: AX=0100h
  8334. Index:    uninstall;DECnet DOS CTERM
  8335. --------N-690A-------------------------------
  8336. INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
  8337.     AH = 0Ah
  8338.     AL = function number (see #2317)
  8339.     ES:BX -> Datalink Communication Block (see #2319)
  8340. Return: AX = status (see #2318)
  8341. SeeAlso: INT 6D"DECnet"
  8342.  
  8343. (Table 2317)
  8344. Values for DECnet DOS Data Link Layer function:
  8345.  00h    initialize
  8346.  01h    open portal
  8347.  02h    close portal
  8348.  03h    enable multicast address
  8349.  04h    disable multicast address
  8350.  05h    transmit
  8351.  06h    request transmit buffer
  8352.  07h    deallocate transmit buffer
  8353.  08h    read channel status
  8354.  09h    read datalink portal list
  8355.  0Ah    read information about a datalink portal
  8356.  0Bh    read and/or clear counters
  8357.  0Ch    request to boot from a network server
  8358.  0Dh    enable Ethernet channel
  8359.  0Eh    disable Ethernet channel
  8360.  0Fh    start MOP/send a System ID message
  8361.  10h    stop MOP
  8362.  11h    get DECPARM
  8363.  12h    set DECPARM
  8364.  13h    external loopback
  8365.  
  8366. (Table 2318)
  8367. Values for DECnet DOS Data Link Layer status:
  8368.  00h    successful
  8369.  01h    hardware failed to initialize
  8370.  02h    channel state was not off (must be off to execute that command)
  8371.  03h    channel state is off (must be on to execute that command)
  8372.  04h    address not set
  8373.  05h    hardware missing
  8374.  06h    buffer too small
  8375.  07h    no more buffers available
  8376.  08h    no more resources available
  8377.  09h    promiscuous receiver active
  8378.  0Ah    non exclusive
  8379.  0Bh    unrecognized portal
  8380.  0Ch    protocol type in use
  8381.  0Dh    not a valid Multicast address
  8382.  0Eh    outstanding calls
  8383.  0Fh    hardware doesn't support receiving bad frames
  8384.  10h    none outstanding
  8385.  11h    no events
  8386.  12h    broken
  8387.  13h    buffer quota exceeded
  8388.  14h    already initialized
  8389.  15h    loopback failure
  8390. Index:    error codes;DECnet DOS|DECnet DOS;error codes
  8391.  
  8392. Format of Datalink Communication Block:
  8393. Offset    Size    Description    (Table 2319)
  8394.  00h    WORD    portal ID
  8395.  02h  6 BYTEs    source address
  8396.  08h  6 BYTEs    destination address
  8397.  0Eh    DWORD    buffer pointer
  8398.  12h    WORD    buffer length
  8399.  14h    WORD    operation
  8400.  16h    BYTE    pad flag (used on open)
  8401.         00h no pad
  8402.         01h pad
  8403.  17h    BYTE    mode flag (used on open)
  8404.         00h 802.3
  8405.         01h Ethernet
  8406.         02h promiscuous
  8407.  18h    DWORD    line status change function
  8408.  1Ch    DWORD    received data function
  8409.  20h    DWORD    transmitted data function
  8410.  24h    BYTE    maximum outstanding transmits/receives
  8411.  25h  2 BYTEs    protocol type
  8412.  27h    WORD    buffers lost
  8413. --------N-694001-----------------------------
  8414. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8415.     AX = 4001h
  8416. Return: CF clear
  8417.     AX = 0000h
  8418.     ES:SI -> ???
  8419. Range:    INT 60 to INT 7F, selected by configuration
  8420. Note:    the signature "SYSV" immediately before the interrupt handler serves
  8421.       as the installation check
  8422. SeeAlso: AX=4002h
  8423. Index:    installation check;10NET SYSSVC
  8424. --------N-694002-----------------------------
  8425. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8426.     AX = 4002h
  8427.     ???
  8428. Return: ???
  8429. Range:    INT 60 to INT 7F, selected by configuration
  8430. Note:    the signature "SYSV" immediately before the interrupt handler serves
  8431.       as the installation check
  8432. --------N-694101-----------------------------
  8433. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8434.     AX = 4101h
  8435. Return: CF clear
  8436.     ES:SI -> ???
  8437. Range:    INT 60 to INT 7F, selected by configuration
  8438. SeeAlso: AX=4102h,AX=4103h,AX=4104h
  8439. --------N-694102-----------------------------
  8440. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8441.     AX = 4102h
  8442.     ???
  8443. Return: ???
  8444. --------N-694103-----------------------------
  8445. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8446.     AX = 4103h
  8447.     ???
  8448. Return: ???
  8449. --------N-694104-----------------------------
  8450. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8451.     AX = 4104h
  8452.     ???
  8453. Return: ???
  8454. --------N-6942-------------------------------
  8455. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8456.     AH = 42h
  8457.     AL = function (01h-14h)
  8458.     ???
  8459. Return: ???
  8460. Range:    INT 60 to INT 7F, selected by configuration
  8461. --------N-6943-------------------------------
  8462. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8463.     AH = 43h
  8464.     AL = function (01h-05h)
  8465.     ???
  8466. Return: ???
  8467. --------N-6944-------------------------------
  8468. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8469.     AH = 44h
  8470.     AL = function (01h-03h)
  8471.     ???
  8472. Return: ???
  8473. Range:    INT 60 to INT 7F, selected by configuration
  8474. --------N-6949-------------------------------
  8475. INT 69 - 10NET v5.0 - SYSSVC.COM - BUG
  8476.     AH = 49h
  8477. Note:    due to a fencepost error, this function branches to hyperspace
  8478. SeeAlso: AX=4001h,AH=FFh
  8479. --------G-696996-----------------------------
  8480. INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
  8481.     AX = 6996h
  8482.     DS:DX -> interrupt handler or 0000h:0000h to disable
  8483. Return: AX = 9669h
  8484. Program: ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
  8485.       a program to provide hardware interrupt handlers even while being
  8486.       debugged with a debugger that swaps interrupt vectors during
  8487.       debugging.
  8488. Note:    the interrupt vector which is to be reflected is set at installation
  8489.       time and cannot be changed
  8490. --------N-69FF-------------------------------
  8491. INT 69 - 10NET v5.0 - SYSSVC.COM - SIGNAL SYSTEM ERROR
  8492.     AH = FFh
  8493. Return: never???
  8494. Desc:    displays "System Error" message and register dump, then halts system
  8495. Range:    INT 60 to INT 7F, selected by configuration
  8496. Notes:    the signature "SYSV" immediately before the interrupt handler serves
  8497.       as the installation check
  8498. SeeAlso: AX=4001h,AH=49h
  8499. --------U-6A---------------------------------
  8500. INT 6A - OPTHELP.COM
  8501. Program: OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
  8502.       assembler
  8503. Range:    INT 60h to INT 7Fh, selected by configuration
  8504. --------N-6A---------------------------------
  8505. INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM
  8506. Note:    the installation check consists of testing for a signature area
  8507.       immediately preceding the interrupt handler (see #2320)
  8508. SeeAlso: AH=01h/DH=FFh,INT 6B"DECnet",INT 6D"DECnet"
  8509. Index:    installation check;DECnet DOS Local Area Transport
  8510.  
  8511. Format of DECnet DOS signature area:
  8512. Offset    Size    Description    (Table 2320)
  8513.  -5    BYTE    major version number
  8514.  -4    BYTE    minor version number
  8515.  -3   3 BYTEs    signature (ASCII "LAT")
  8516. --------h-6A---------------------------------
  8517. INT 6A C - HP Vectra AT - IRQ18 - RESERVED HARDWARE INTERRUPT
  8518. SeeAlso: INT 0A"IRQ0",INT 69"HP Vectra",INT 6B"HP Vectra"
  8519. --------N-6A0000-----------------------------
  8520. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - INSTALLATION CHECK
  8521.     AX = 0000h
  8522. Return: AX = 4357h ('CW')
  8523. Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
  8524. Note:    an alternate installation check is to test for the ASCIZ signature
  8525.       "FTC Super-TCP" three bytes past the interrupt handler
  8526. SeeAlso: AX=0001h,AX=0002h,AX=000Fh,AX=0010h,INT 21/AH=3Fh"BW-TCP"
  8527. SeeAlso: INT 61"PCTCP",INT 62/AH=00h"ETHDEV"
  8528. --------N-6A0001-----------------------------
  8529. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
  8530.     AX = 0001h
  8531.     BH = function number
  8532.         01h ???
  8533.         DS:SI -> ??? 24-byte record1 (see #2322)
  8534.         ES:DI -> buffer containing ???
  8535.         02h ???
  8536.         DS:SI -> ??? 18-byte record2 (see #2323)
  8537.         ES:DI -> buffer containing ???
  8538.         04h ???
  8539.         BL = subfunction
  8540.             01h
  8541.             DS:SI -> ??? 28-byte record3 (see #2324)
  8542.             ES:DI -> buffer containing ???
  8543.             02h
  8544.             DS:SI -> ??? 28-byte record3 (see #2324)
  8545.             ES:DI -> buffer containing ???
  8546.             03h
  8547.             DS:SI -> ??? 28-byte record3 (see #2324)
  8548.             else Return: AX = 0005h
  8549.         05h ???
  8550.         DS:SI -> ??? 20-byte record4 (see #2325)
  8551.         ES:DI -> buffer containing ???
  8552.         06h ???
  8553.         BL = subfunction
  8554.             01h
  8555.             DS:SI -> ??? 40-byte record5 (see #2326)
  8556.             02h
  8557.             DS:SI -> ??? 20-byte record6 (see #2327)
  8558.             ES:DI -> ???
  8559.             03h
  8560.             DS:SI -> ??? 20-byte record6 (see #2327)
  8561.             04h
  8562.             DS:SI -> ??? 46-byte record7 (see #2328)
  8563.             else Return: AX = 0005h
  8564.         11h ???
  8565.         DS:SI -> ??? 28-byte record8 (see #2329)
  8566.         ES:DI -> ???
  8567. Return: AX = function status (see #2321)
  8568. SeeAlso: AX=0000h
  8569.  
  8570. (Table 2321)
  8571. Values for Super-TCP function status:
  8572.  0000h    successful
  8573.  0005h    unsupported function
  8574.  000Ah    out of memory
  8575.  
  8576. Format of record1:
  8577. Offset    Size    Description    (Table 2322)
  8578.  00h  4 BYTEs    ???
  8579.  04h    WORD    size of ES:DI buffer
  8580.  06h 18 BYTEs    ???
  8581.  
  8582. Format of record2:
  8583. Offset    Size    Description    (Table 2323)
  8584.  00h  4 BYTEs    ???
  8585.  04h    WORD    size of ES:DI buffer
  8586.  06h 12 BYTEs    ???
  8587.  
  8588. Format of record3:
  8589. Offset    Size    Description    (Table 2324)
  8590.  00h  2 BYTEs    ???
  8591.  02h    WORD    ???
  8592.  04h    WORD    size of ES:DI buffer
  8593.  06h    WORD    ???
  8594.  08h    WORD    operation number (for function 0401h)
  8595.  0Ah    DWORD    -> ???
  8596.  0Eh    WORD    (ret) ???
  8597.  10h 12 BYTEs    ???
  8598.  
  8599. Format of record4:
  8600. Offset    Size    Description    (Table 2325)
  8601.  00h  4 BYTEs    ???
  8602.  04h    WORD    size of ES:DI buffer
  8603.  06h 14 BYTEs    ???
  8604.  
  8605. Format of record5:
  8606. Offset    Size    Description    (Table 2326)
  8607.  00h    BYTE    operation??? (00h-07h)
  8608.  01h    BYTE    ???
  8609.  02h    WORD    (ret) ???
  8610.  04h    DWORD    -> ???
  8611.  08h  4 BYTEs    ???
  8612.  0Ch    DWORD    -> ??? or 0000h:0000h
  8613.  10h 16 BYTEs    ???
  8614.  20h    DWORD    ???
  8615.  24h  4 BYTEs    ???
  8616.  
  8617. Format of record6:
  8618. Offset    Size    Description    (Table 2327)
  8619.  00h  4 BYTEs    ???
  8620.  04h    WORD    size of ES:DI buffer
  8621.  06h 14 BYTEs    ???
  8622.  
  8623. Format of record7:
  8624. Offset    Size    Description    (Table 2328)
  8625.  00h    WORD    ???
  8626.  02h    WORD    ???
  8627.  04h    WORD    ???
  8628.  06h 40 BYTEs    ???
  8629.  
  8630. Format of record8:
  8631. Offset    Size    Description    (Table 2329)
  8632.  00h  4 BYTEs    ???
  8633.  04h    WORD    size of ES:DI buffer
  8634.  06h  6 BYTEs    ???
  8635.  0Ch    WORD    (ret) ???
  8636.  0Eh    WORD    operation??? (01h-03h)
  8637.  10h 12 BYTEs    ???
  8638. --------N-6A0002-----------------------------
  8639. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
  8640.     AX = 0002h
  8641.     BX = ??? (zero/nonzero)
  8642.     CX = ??? identifier (see AX=0004h)
  8643.     DS:SI -> 40-byte buffer for ??? or 0000h:0000h
  8644.     ES:DI -> buffer for ??? or 0000h:0000h
  8645. Return: AX = 0000h (successful) ???
  8646.     BL = ???
  8647.     BH = ???
  8648.     CX = ???
  8649.     DX = ???
  8650. --------N-6A0003-----------------------------
  8651. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - GET ??? DATA AREA
  8652.     AX = 0003h
  8653. Return: CX:DX -> data area (see #2330)
  8654.  
  8655. Format of Super-TCP data area:
  8656. Offset    Size    Description    (Table 2330)
  8657.  00h  2 BYTEs    ???
  8658.  02h    DWORD    original INT 6A vector
  8659.  06h  2 BYTEs    ???
  8660.  08h 96 BYTEs    array of 16 6-byte ???
  8661.  68h    WORD    number of elements of above array in use
  8662.  6Ah    WORD    ???
  8663.     ???
  8664. --------N-6A0004-----------------------------
  8665. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ALLOCATE ???
  8666.     AX = 0004h
  8667.     CX = size in ???
  8668. Return: AX = 0000h (successful)
  8669.     CX = DX = ???
  8670. SeeAlso: AX=0005h,AX=000Fh
  8671. --------N-6A0005-----------------------------
  8672. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ???
  8673.     AX = 0005h
  8674.     CX = ??? identifier (from AX=0004h)
  8675. Return: AX = status (0000h successful, FFFFh failed)
  8676. SeeAlso: AX=0004h,AX=000Fh
  8677. --------N-6A000F-----------------------------
  8678. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ALL ???
  8679.     AX = 000Fh
  8680. Return: AX = 0000h (successful)
  8681. SeeAlso: AX=0000h,AX=0004h,AX=0005h
  8682. --------N-6A0010-----------------------------
  8683. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - UNINSTALL
  8684.     AX = 0010h
  8685. Return: AX = status
  8686.         0000h successful
  8687.         0002h can't uninstall, interrupt vector hooked by another program
  8688. Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
  8689. Note:    if AX is not one of the values listed here on entry, Super-TCP
  8690.       returns AX=FFFEh
  8691. SeeAlso: AX=0000h
  8692. --------N-6A01--DHFF-------------------------
  8693. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
  8694.     AH = 01h
  8695.     DH = FFh
  8696.     AL = character
  8697.     DL = handle
  8698. Return: AH >= 80h on error
  8699. SeeAlso: AH=02h
  8700. --------N-6A02--DHFF-------------------------
  8701. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
  8702.     AH = 02h
  8703.     DH = FFh
  8704.     DL = handle
  8705. Return: AH < 80h if successful
  8706.         AL = character
  8707.     AH >= 80h on error
  8708. SeeAlso: AH=01h
  8709. --------N-6A03--DHFF-------------------------
  8710. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
  8711.     AH = 03h
  8712.     DH = FFh
  8713.     DL = handle
  8714. Return: AH = status flags (see #2331)
  8715.  
  8716. Bitfields for DECnet DOS LAT status flags:
  8717. Bit(s)    Description    (Table 2331)
  8718.  5    transmit buffer empty
  8719.  3    session in start state
  8720.  2    session not active
  8721.  1    unable to queue transmit data
  8722.  0    receive data available
  8723. --------N-6AD0--DHFF-------------------------
  8724. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
  8725.     AH = D0h
  8726.     DH = FFh
  8727.     AL = password flag
  8728.         FFh no password
  8729.         0Fh password at ES:DI
  8730.     ES:BX -> LAT session control block (see #2332)
  8731.     ES:DI -> 16-byte blank-padded password (optional)
  8732. Return: AH = 00h success
  8733.         DL = handle
  8734. SeeAlso: AX=D000h
  8735.  
  8736. Format of LAT Session Control Block:
  8737. Offset    Size    Description    (Table 2332)
  8738.  00h 18 BYTEs    service name
  8739.  12h 18 BYTEs    node name (future use)
  8740.  24h 18 BYTEs    port name (future use)
  8741.  36h    DWORD    -> session stopped post routine
  8742.  3Ah    DWORD    -> service table overflow post routine
  8743.  3Eh    DWORD    -> transmit post routine
  8744.  42h    DWORD    -> receive post routine
  8745.  46h    WORD    session status
  8746.         04h circuit failure
  8747.         08h stop slot received
  8748. ---LAT v???---
  8749.  48h    WORD    slot state (LAT driver use)
  8750.  4Ah    WORD    local credits (LAT driver use)
  8751.  4Ch    DWORD    -> VCB (LAT driver use)
  8752.  50h    WORD    backward slot (LAT driver use)
  8753.  52h    WORD    forward slot (LAT driver use)
  8754.  54h    WORD    remote slot ID (LAT driver use)
  8755.  56h    WORD    local slot ID (LAT driver use)
  8756.  58h    WORD    slot byte count (LAT driver use)
  8757.  5Ah    BYTE    remote credits (LAT driver use)
  8758.  5Bh 255 BYTEs    transmitted data slot
  8759. 15Ah    BYTE    number of receive data slots (4 recommended)
  8760. 15Bh    BYTE    number of occupied slots
  8761. 15Ch    BYTE    index of next receive slot to use
  8762. 15Dh    BYTE    index of current receive slot
  8763. 15Eh    WORD    pointer to first received character
  8764. 160h  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  8765.      259N BYTEs    buffers
  8766. Note:    set post routines to 0000h:0000h if polled operation will be used
  8767. ---LAT v4.1.17---
  8768.  48h    WORD    session state (LAT driver use)
  8769.  4Ah    BYTE    local credits (LAT driver use)
  8770.  4Bh    DWORD    -> VCB (LAT driver use)
  8771.  4Fh    WORD    backward slot (LAT driver use)
  8772.  51h    WORD    forward slot (LAT driver use)
  8773.  53h    BYTE    remote slot ID (LAT driver use)
  8774.  54h    BYTE    local slot ID (LAT driver use)
  8775.  55h    BYTE    slot byte count (LAT driver use)
  8776.  56h    BYTE    remote credits (LAT driver use)
  8777.  57h 255 BYTEs    transmitted data slot
  8778. 156h    BYTE    number of receive data slots (4 recommended)
  8779. 157h    BYTE    number of occupied slots
  8780. 158h    BYTE    index of next receive slot to use
  8781. 159h    BYTE    index of current receive slot
  8782. 15Ah    WORD    pointer to first received character
  8783. 15Ch  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  8784.      259N BYTEs    buffers
  8785. Note:    set post routines to 0000h:0000h if polled operation will be used
  8786. --------N-6AD000DHFF-------------------------
  8787. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
  8788.     AX = D000h
  8789.     DH = FFh
  8790.     DL = handle
  8791. Return: AX = status (see #2333)
  8792. SeeAlso: AH=D0h
  8793.  
  8794. (Table 2333)
  8795. Values for DECnet DOS LAT function status:
  8796.  0000h    successful
  8797.  0001h    no such session
  8798.  0002h    session not running, try again later
  8799. --------N-6AD100DHFF-------------------------
  8800. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
  8801.     AX = D100h
  8802.     DH = FFh
  8803.     DL = handle
  8804. Return: AX = 0000h if successful
  8805.     AH bit 7 set if unable to send break
  8806. --------N-6AD300DHFF-------------------------
  8807. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
  8808.     AX = D300h
  8809.     DH = FFh
  8810. SeeAlso: AX=D400h
  8811. --------N-6AD400DHFF-------------------------
  8812. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
  8813.     AX = D400h
  8814.     DH = FFh
  8815.     CX = buffer size
  8816.     ES:BX -> buffer for LAT counters
  8817. Return: AX = status
  8818.         0000h counters copied into buffer
  8819.         FFFFh buffer too small
  8820. SeeAlso: AX=D300h
  8821. --------N-6AD500DHFF-------------------------
  8822. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
  8823.     AX = D500h
  8824.     DH = FFh
  8825.     ES:BX -> 17-byte buffer for name
  8826. Return: AH = 00h if successful
  8827.        ES:BX buffer filled
  8828.     AX = FFFFh if end of table or no name available
  8829. Notes:    use this function to get the names of the hosts on the network
  8830.     successive calls are necessary to get all names
  8831. SeeAlso: AX=D600h
  8832. --------N-6AD600DHFF-------------------------
  8833. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
  8834.     AX = D600h
  8835.     DH = FFh
  8836. Return: AX = number of service table entries
  8837.     BX = status
  8838.         0000h service table has not overflowed
  8839.         FFFFh service table has overflowed
  8840. SeeAlso: AX=D500h
  8841. --------N-6B---------------------------------
  8842. INT 6B - DECnet DOS - PORT DRIVER
  8843. Note:    the installation check consists of testing for a signature area
  8844.       (see #2334) immediately preceding the interrupt handler
  8845. SeeAlso: INT 6A"DECnet",INT 6C"DECnet"
  8846. Index:    installation check;DECnet DOS Port Driver
  8847.  
  8848. Format of DECnet DOS signature area:
  8849. Offset    Size    Description    (Table 2334)
  8850.  -5    BYTE    major version number
  8851.  -4    BYTE    minor version number
  8852.  -3   3 BYTEs    signature (ASCII "PDV")
  8853. --------v-6B---------------------------------
  8854. INT 6B - VIRUS - "Saddam" - ORIGINAL INT 21h VECTOR
  8855. SeeAlso: INT 21/AX=FFFFh,INT 61"VIRUS",INT 70"VIRUS"
  8856. --------h-6B---------------------------------
  8857. INT 6B C - HP Vectra AT - IRQ19 - RESERVED HARDWARE INTERRUPT
  8858. SeeAlso: INT 0B"IRQ0",INT 6A"HP Vectra",INT 6C"HP Vectra"
  8859. --------S-6B0000-----------------------------
  8860. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
  8861.     AX = 0000h
  8862.     CX = length
  8863.     ES:BX -> buffer
  8864. Return: CX = number of bytes written
  8865. Program: NASI is Novell's NetWare Asynchronous Services Interface (purchased
  8866.       from Network Products Corp, who call it NCSI) which runs on
  8867.       workstations; NACS is the NetWare Asynchronous Communications
  8868.       Services module which runs on servers
  8869. Notes:    the installation check consists of testing for the signature string
  8870.       "NCSI" three bytes past the interrupt handler; see also AH=02h.
  8871.       As of version 3.0, Novell's NASI can be distinguished from NPC's
  8872.       NCSI by the presence of an 'A' immediately following the signature
  8873.     this function is also supported by TelAPI, NPC NCSI, and Connection
  8874.       Manager CLIENT.EXE; for TelAPI, nonzero values in AL specify a
  8875.       connection ID
  8876.     Connection Manager returns CF set/AL=FFh if called while an INT 6B
  8877.       call is already in progress
  8878. SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h,INT 14/AH=E3h
  8879. --------S-6B0100-----------------------------
  8880. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
  8881.     AX = 0100h
  8882.     CX = length of buffer
  8883.     ES:BX -> buffer
  8884. Return: CX = number of bytes read
  8885. Note:    also supported by TelAPI and NPC NCSI; for TelAPI, nonzero values in
  8886.       AL specify a connection ID
  8887. SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AH=E2h,INT 14/AX=FF02h
  8888. --------S-6B02-------------------------------
  8889. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
  8890.     AH = 02h
  8891.     AL nonzero
  8892. Return: AL = 00h if present and OK
  8893. Note:    this function is also supported by TelAPI and NPC NCSI
  8894. SeeAlso: AX=0700h
  8895. --------S-6B0600-----------------------------
  8896. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
  8897.     AX = 0600h
  8898.     CX = command
  8899.         02h send break
  8900.         04h disconnect
  8901.         06h hold
  8902. Return: CF clear if successful
  8903.         AL = 00h
  8904.     CF set on error
  8905.         AX < 0
  8906. Note:    this function is also supported by TelAPI and NPC NCSI
  8907. --------S-6B0700-----------------------------
  8908. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
  8909.     AX = 0700h
  8910. Return: CH <> 00h if connection active
  8911. Notes:    this function is also supported by TelAPI and NPC NCSI
  8912.     Novell TelAPI returns CX=FF01h and CF clear
  8913. SeeAlso: AH=02h,AH=10h
  8914. --------N-6B08-------------------------------
  8915. INT 6B - TelAPI - CHECK FOR BREAK SIGNAL
  8916.     AH = 08h
  8917.     AL = circuit number
  8918. Return: CF clear if no breaks
  8919.         AL = 00h
  8920.         CX = 0000h
  8921.     CF set if one or more breaks received
  8922. Note:    this function also clears ??? flag
  8923. SeeAlso: INT 14/AX=FF00h
  8924. --------S-6B10-------------------------------
  8925. INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
  8926.     AH = 10h
  8927.     AL = connection ID (Novell TELAPI.EXE)
  8928.     CX = ???
  8929. Return: CF clear if successful
  8930.         CL = ???
  8931.         CH = ???
  8932.     CF set on error
  8933.     ???
  8934. Notes:    this function is also supported by TelAPI
  8935.     when shelled out to an external protocol from Novell NASI, the circuit
  8936.       whose status indicates that it is connected is the currently active
  8937.       circuit
  8938. SeeAlso: AX=0700h,AH=12h,AH=1Fh
  8939. --------S-6B11--DX0001-----------------------
  8940. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
  8941.     AH = 11h
  8942.     DX = 0001h
  8943.     AL = 00h
  8944.     ES:BX -> service name string (8 characters, blank-padded)
  8945. Return: CF clear if successful
  8946.         AL = virtual circuit number allocated (01h for Novell TELAPI.EXE)
  8947.         CL = ??? (01h for Novell TELAPI.EXE)
  8948.         CH = ??? (01h for Novell TELAPI.EXE)
  8949.     CF set on error
  8950.         ???
  8951. Note:    this function is also supported by TelAPI
  8952. SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
  8953. --------S-6B12-------------------------------
  8954. INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
  8955.     AH = 12h
  8956.     AL = virtual circuit number
  8957.     CL = ???
  8958.     ES:BX -> ???
  8959. Return: ???
  8960. Note:    this function is also supported by TelAPI
  8961. SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
  8962. --------S-6B13-------------------------------
  8963. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
  8964.     AH = 13h
  8965.     AL = virtual circuit number
  8966.     CL = direction (00h get, nonzero set)
  8967.     ES:BX -> buffer for/containing service name
  8968. Return: ???
  8969. Note:    this function is also supported by TelAPI
  8970. SeeAlso: AH=14h,AH=15h
  8971. --------S-6B14-------------------------------
  8972. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
  8973.     AH = 14h
  8974.     AL = virtual circuit number
  8975.     ES:BX -> buffer for/containing service address
  8976. Return: ???
  8977. Note:    this function is also supported by TelAPI, which only supports
  8978.       retrieving the address
  8979. SeeAlso: AH=13h,AH=15h,AH=21h
  8980. --------S-6B15-------------------------------
  8981. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
  8982.     AH = 15h
  8983.     AL = virtual circuit number
  8984.     CL = direction (00h get, nonzero set)
  8985.     ES:BX -> buffer for/containing virtual circuit config (see #2335)
  8986. Return: ES:BX buffer filled
  8987. Note:    this function is also supported by TelAPI
  8988. SeeAlso: AH=13h"NCSI",AH=14h"NCSI"
  8989.  
  8990. Format of virtual circuit configuration:
  8991. Offset    Size    Description    (Table 2335)
  8992.  00h    WORD    buffer length
  8993.  02h    WORD    port ID
  8994.  04h    WORD    receive rate
  8995.  06h    WORD    receive word length
  8996.  08h    WORD    receive stop bits
  8997.  0Ah    WORD    receive parity
  8998.  0Ch    WORD    transmit rate
  8999.  0Eh    WORD    transmit word length
  9000.  10h    WORD    transmit stop bits
  9001.  12h    WORD    transmit parity
  9002.  14h    WORD    DTR
  9003.  16h    WORD    RTS
  9004. --------S-6B16-------------------------------
  9005. INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
  9006.     AH = 16h
  9007.     AL = virtual circuit number
  9008.     CL = ??? switch (00h, ???)
  9009. Return: CF clear if successful
  9010.         AL = virtual circuit number
  9011.     CF set on error
  9012.         ???
  9013. Note:    this function is also supported by TelAPI, which always returns CF
  9014.       clear and AL=00h
  9015. SeeAlso: AH=11h,AH=12h,AH=17h
  9016. --------S-6B17-------------------------------
  9017. INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
  9018.     AH = 17h
  9019.     AL = virtual circuit number
  9020. Return: CF clear if successful
  9021.     CF set on error
  9022.     ???
  9023. Note:    this function is also supported by TelAPI, which always returns CF
  9024.       clear and AL=00h
  9025. SeeAlso: AH=11h,AH=16h
  9026. --------S-6B18-------------------------------
  9027. INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
  9028.     AH = 18h
  9029.     AL = virtual circuit number
  9030.     CX = number of characters to send
  9031.     ES:BX -> buffer containing characters to be sent
  9032. Return: CF clear if successful
  9033.     CF set on error
  9034.     ???
  9035. Note:    this function is also supported by TelAPI, which always returns CF
  9036.       clear and AL=30h
  9037. SeeAlso: AX=0000h,AH=12h,AH=19h
  9038. --------S-6B19-------------------------------
  9039. INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
  9040.     AH = 19h
  9041.     AL = virtual circuit number
  9042.     CX = number of characters to read
  9043.     ES:BX -> buffer for received characters
  9044. Return: CX = 0000h if failed
  9045.     CX = nonzero (possibly number of characters received) if successful
  9046. Note:    this function is also supported by TelAPI
  9047. SeeAlso: AX=0100h,AH=12h,AH=18h
  9048. --------S-6B1A-------------------------------
  9049. INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
  9050.     AH = 1Ah
  9051.     ???
  9052. Return: ???
  9053. SeeAlso: AH=12h,AH=1Bh
  9054. --------S-6B1B-------------------------------
  9055. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
  9056.     AH = 1Bh
  9057.     ???
  9058. Return: ???
  9059. SeeAlso: AH=12h,AH=1Ah
  9060. --------S-6B1C-------------------------------
  9061. INT 6B - NPC NCSI EXTENDED SERIAL I/O - CLEAR RECEIVE BUFFER
  9062.     AH = 1Ch
  9063.     AL = circuit number
  9064. Return: nothing
  9065. SeeAlso: AH=1Dh"NCSI",AH=1Eh"NCSI"
  9066. --------S-6B1D-------------------------------
  9067. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
  9068.     AH = 1Dh
  9069.     ???
  9070. Return: ???
  9071. SeeAlso: AH=1Ch,AH=1Eh
  9072. --------S-6B1E-------------------------------
  9073. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
  9074.     AH = 1Eh
  9075.     ???
  9076. Return: ???
  9077. SeeAlso: AH=1Ch,AH=1Dh
  9078. --------S-6B1F-------------------------------
  9079. INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
  9080.     AH = 1Fh
  9081.     ???
  9082. Return: ???
  9083. SeeAlso: AH=10h,AH=12h
  9084. --------S-6B20-------------------------------
  9085. INT 6B - Connection Manager CLIENT.EXE - ???
  9086.     AH = 20h
  9087.     ???
  9088. Return: ???
  9089. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  9090.       serial ports over an IPX or NetBIOS-based network
  9091. Note:    CLIENT.EXE returns CF set/AL=F9h if AH is not 00h to 21h on entry
  9092. --------S-6B21-------------------------------
  9093. INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
  9094.     AH = 21h
  9095.     AL = virtual circuit number
  9096.     CL = ??? (00h or 01h)
  9097.     ES:BX -> buffer for service name structure (see #2336)
  9098. Return: CF clear if successful
  9099.         ES:BX buffer filled
  9100.     CF set on error
  9101. Notes:    a program should call this function after allocating a virtual circuit
  9102.       and check that the general name matches the requested service
  9103.     prior to version 3.0, Novell's NASI returned the first available port;
  9104.       v3.0+ returns the first port found--check the returned status to
  9105.       determine whether the port is available
  9106. SeeAlso: AH=14h"NCSI"
  9107.  
  9108. Format of NCSI service name structure:
  9109. Offset    Size    Description    (Table 2336)
  9110.  00h    WORD    buffer length
  9111.  02h  8 BYTEs    service name
  9112.  0Ah  8 BYTEs    general name
  9113.  12h  8 BYTEs    specific name
  9114.  1Ah  4 BYTEs    ???
  9115. ---Novell NASI v3.0+ ---
  9116.  1Eh    BYTE    port number
  9117.  1Fh    BYTE    port status
  9118.         00h idle (available)
  9119.         01h allocated (available)
  9120.         02h connected
  9121.         03h on hold
  9122. ----------6B6B-------------------------------
  9123. INT 6B - Tandy SCHOOLMATE PLUS - API
  9124.     AH = 6Bh
  9125.     AL = E0h to FFh
  9126. Note:    details not yet available
  9127. ----------6C---------------------------------
  9128. INT 6C - system resume vector (CONVERTIBLE)
  9129. ----------6C---------------------------------
  9130. INT 6C - DOS 3.2 Realtime Clock update
  9131. --------N-6C---------------------------------
  9132. INT 6C - DECnet DOS network scheduler
  9133. Notes:    the installation check consists of testing for a signature area
  9134.       immediately preceding the interrupt handler (see #2337)
  9135.     also supported by DEC Pathworks for DOS
  9136. SeeAlso: INT 6B"DECnet",INT 6D"DECnet",INT 6E"DECnet"
  9137. Index:    installation check;DECnet DOS scheduler
  9138.  
  9139. Format of DECnet DOS signature area:
  9140. Offset    Size    Description    (Table 2337)
  9141.  -5    BYTE    major version number
  9142.  -4    BYTE    minor version number
  9143.  -3   3 BYTEs    signature (ASCII "SCH")
  9144. --------h-6C---------------------------------
  9145. INT 6C C - HP Vectra AT - IRQ20 - HP-HIL CONTROLLER INTERRUPT
  9146. SeeAlso: INT 0C"IRQ0",INT 6B"HP Vectra",INT 6D"HP Vectra"
  9147. --------V-6D---------------------------------
  9148. INT 6D - VIDEO - many VGA - VIDEO BIOS ENTRY POINT
  9149. Desc:    points at the original INT 10 entry point set up by the VGA BIOS
  9150. Note:    used by IBM, ATI VGA Wonder, Paradise, Video7, and NCR, and many others
  9151. SeeAlso: INT 10
  9152. --------V-6D---------------------------------
  9153. INT 6D - Trident SVGA - VIDEO BIOS HANDLER
  9154. Note:    the BIOS INT 10 handler on various Trident VGA cards consists merely
  9155.       of a call to INT 6D followed by an IRET.
  9156. --------N-6D---------------------------------
  9157. INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM
  9158.     AH = function
  9159.     ???
  9160. Return: ???
  9161. Note:    the installation check consists of testing for a signature area
  9162.       immediately preceding the interrupt handler (see #2338)
  9163. SeeAlso: INT 69/AH=0Ah,INT 6C"DECnet",INT 6E"DECnet"
  9164. Index:    installation check;DECnet DOS Data Link Layer
  9165.  
  9166. Format of DECnet DOS signature area:
  9167. Offset    Size    Description    (Table 2338)
  9168.  -5    BYTE    major version number
  9169.  -4    BYTE    minor version number
  9170.  -3   3 BYTEs    signature (ASCII "DLL")
  9171. --------h-6D---------------------------------
  9172. INT 6D C - HP Vectra AT - IRQ21 - RESERVED HARDWARE INTERRUPT
  9173. SeeAlso: INT 0D"IRQ0",INT 6C"HP Vectra",INT 6E"HP Vectra"
  9174. --------N-6E---------------------------------
  9175. INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
  9176. Notes:    this is the main DECnet DOS access, and is described in Digital manual
  9177.       AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
  9178.     there is a signature/data area immediately prior to the interrupt
  9179.       handler which may be used as an installation check (see #2339)
  9180. Index:    installation check;DECnet DOS
  9181.  
  9182. Format of DECnet DOS signature area:
  9183. Offset    Size    Description    (Table 2339)
  9184.  -5    BYTE    major version number
  9185.  -4    BYTE    minor version number
  9186.  -3   3 BYTEs    signature (ASCII "DNP")
  9187. --------h-6E---------------------------------
  9188. INT 6E C - HP Vectra AT - IRQ22 - RESERVED HARDWARE INTERRUPT
  9189. SeeAlso: INT 0E"IRQ0",INT 6D"HP Vectra",INT 6F/AH=00h"HP Vectra"
  9190. --------!---Section--------------------------
  9191.