Interrupt List, part 13 of 15
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996 Ralf Brown
--------*-62---------------------------------
INT 62 - reserved for user interrupt
--------d-62---------------------------------
INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
Notes:	this vector stores the third four bytes of the parameter table for
	  hard disk 0
SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
--------b-62---------------------------------
INT 62 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
Desc:	the low word of this vector contains the segment of the RAM data area
	  to be used by the expansion ROM at F400h:2000h, and the high word
	  contains the length of the data area; this segment and size are
	  both set to 0000h if no ROM is installed at F400h:2000h
SeeAlso: INT 61"TI Professional PC",INT 63"TI Professional"
SeeAlso: INT 66"TI Professional PC"
--------b-62---------------------------------
INT 62 - HP 95LX - USED BY CALCULATOR
SeeAlso: INT 60"HP 95LX"
----------62---------------------------------
INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
	AH = function (00h to 07h)
	CX = FFFEh
	DX = FFFFh
	???
Return: ???
Note:	the installation check consists of testing for the string "DBLIBRARY"
	  2 bytes past the interrupt handler
SeeAlso: AH=08h"SQL"
Index:	installation check;MS SQL Server|installation check;Sybase DBLIBRARY
----------62---------------------------------
INT 62 - MPAUSE - ???
	details not yet avialable
Program: MPAUSE is a program by Manfred Michael which appeared in the German
	 _EGA-Handbuch_ from  m&t-Verlag
--------N-62---------------------------------
INT 62 - XFS v1.76 - FILTERED PACKET DRIVER API
Program: XFS is a shareware Network File System client by Robert Juhasz
Desc:	XFS requires a packet driver to operate.  Since it does redirections,
	  etc., it provides its own packet driver entry point, changing the
	  signature string of the original packet driver to "XKT DRVR" so that
	  it will no longer be found by the packet driver installation check
Range:	INT 61 to INT 66, selected by scanning for two consecutive free
	  vectors and hooking the second
Note:	the installation check for this vector is the same as that for the
	  packet driver specification: scan for the signature string "PKT DRVR"
	  three bytes past the interrupt handler
SeeAlso: INT 60"Packet Driver",INT 61"XFS"
----------62---------------------------------
INT 62 - PC-DRAFT - PRIMARY DISPLAY DRIVER
	???
Return: ???
Program: PC-DRAFT is a powerful CAD environment by rhv.
SeeAlso: INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT",INT 67"PC-DRAFT"
--------N-6200-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET PHYSICAL HARDWARE ADDRESS
	AH = 00h
	DS:DX -> 6-byte buffer for address
Return: AX = length of hardware address???
Range:	INT 4C to INT FB, selected by configuration
Note:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=01h"ETHDEV",AH=04h"ETHDEV",AH=09h"ETHDEV",AH=0Eh"ETHDEV"
SeeAlso: AH=14h"ETHDEV",AH=18h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
--------V-620000-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
	AX = 0000h
	BX = page number (0000h-003Fh)
Return: AX = status (0000h,0001h,0007h,0008h) (see #2647)
Program: FGDRIVER is the external video driver for the shareware
	  Fastgraph/Light by Ted Gruber Software
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	The amount of memory required by the virtual video page depends on the
	  current video mode
	The installation check consists of testing for the signature "FG" ten
	  bytes beyond the start of the interrupt handler
SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=0038h
Index:	installation check;Fastgraph/Light

(Table 2647)
Values for FGDRIVER status:
 0000h	successful
 0001h	specified page is a physical or logical page
 0007h	virtual page created/released, but memory control blocks corrupted
 0008h	not enough memory
 0009h	attempt to free a page which was never created
 FFFCh	insufficient memory
 FFFDh	page already created, or exists as physical or virtual page
 FFFEh	invalid page number
 FFFFh	memory manager not initialized
SeeAlso: #2648

(Table 2648)
Values for FGDRIVER functions (by driver version):
Name		v1.10	v3.03	v4.02
 FG_ALLOCATE	0042h	0000h	0000h
 FG_ALLOCCMS	009Dh	0001h	0001h
 FG_ALLOCEMS	009Eh	0002h	0002h
 FG_ALLOCXMS	009Fh	0003h	0003h
 FG_AUTOMODE	0004h	0004h	0004h
 FG_BESTMODE	0003h	0005h	0005h
 FG_BOX		00A2h	0006h	0006h
 FG_BOXDEPTH	00A3h	0007h	0007h
 FG_BOXX	 --	0008h	0008h
 FG_BUTTON	0078h	0009h	0009h
 FG_CAPSLOCK	0070h	000Ah	000Ah
 FG_CHGATTR	0035h	000Bh	000Bh
 FG_CHGTEXT	0036h	000Ch	000Ch
 FG_CIRCLE	0030h	000Dh	000Dh
 FG_CIRCLEF	 --	000Eh	000Eh
 FG_CLIPMAP	 --	 --	000Fh
 FG_CLIPMASK	0052h	000Fh	0010h
 FG_CLPIMAGE	004Ah	0010h	0011h
 FG_CLPRECT	002Bh	0011h	0012h
 FG_COLORS	 --	 --	0013h
 FG_COPYPAGE	005Fh	0012h	0014h
 FG_CURSOR	0007h	0013h	0015h
 FG_DASH	0027h	0014h	0016h
 FG_DASHREL	0028h	0015h	0017h
 FG_DEFCOLOR	0014h	0016h	0018h
 FG_DEFPAGES	 --	0017h	0019h
 FG_DISPFILE	004Fh	0018h	001Ah
 FG_DISPLAY	004Dh	0019h	001Bh
 FG_DISPLAYP	004Eh	001Ah	001Ch
 FG_DISPPCX	0060h	 --	 --
 FG_DRAW	0025h	001Bh	001Dh
 FG_DRAWMAP	0047h	001Ch	001Eh
 FG_DRAWMASK	0051h	001Dh	001Fh
 FG_DRAWREL	0026h	001Eh	0020h
 FG_DRAWRELX	 --	001Fh	0021h
 FG_DRAWX	 --	0020h	0022h
 FG_DRECT	002Ch	0021h	0023h
 FG_DRWIMAGE	0049h	0022h	0024h
 FG_EGACHECK	0005h	0023h	0025h
 FG_ELLIPSE	002Dh	0024h	0026h
 FG_ELLIPSEF	 --	0025h	0027h
 FG_ERASE	001Eh	0026h	0028h
 FG_FADEIN	0064h	0027h	0029h
 FG_FADEOUT	0065h	0028h	002Ah
 FG_FILLPAGE	 --	0029h	002Bh
 FG_FINDPAGE	 --	 --	002Ch
 FG_FLICDONE	 --	 --	002Dh
 FG_FLICHEAD	 --	 --	002Eh
 FG_FLICMODE	 --	 --	002Fh
 FG_FLICOPEN	 --	 --	0030h
 FG_FLICPLAY	 --	 --	0031h
 FG_FLICSIZE	 --	 --	0032h
 FG_FLICSKIP	 --	 --	0033h
 FG_FLIPMASK	0054h	002Ah	0034h
 FG_FLOOD	 --	002Bh	0035h
 FG_FLPIMAGE	004Ch	002Ch	0036h
 FG_FONTSIZE	 --	002Dh	0037h
 FG_FREEPAGE	0043h	002Eh	0038h
 FG_GETADDR	0044h	002Fh	0039h
 FG_GETATTR	0037h	0030h	003Ah
 FG_GETBANKS	 --	 --	003Bh
 FG_GETBLOCK	 --	0031h	003Ch
 FG_GETCHAR	0038h	0032h	003Dh
 FG_GETCLIP	 --	 --	003Eh
 FG_GETCLOCK	0099h	0033h	003Fh
 FG_GETCOLOR	0015h	0034h	0040h
 FG_GETDACS	00A4h	0035h	0041h
 FG_GETENTRY	 --	0036h	0042h
 FG_GETHPAGE	0040h	0037h	0043h
 FG_GETIMAGE	0048h	0038h	0044h
 FG_GETINDEX	0016h	0039h	0045h
 FG_GETKEY	006Eh	003Ah	0046h
 FG_GETLINES	0010h	003Bh	0047h
 FG_GETMAP	0046h	003Ch	0048h
 FG_GETMAXX	000Ah	003Dh	0049h
 FG_GETMAXY	000Bh	003Eh	004Ah
 FG_GETMODE	0000h	003Fh	004Bh
 FG_GETPAGE	003Ch	0040h	004Ch
 FG_GETPIXEL	0020h	0041h	004Dh
 FG_GETRGB	001Ch	0042h	004Eh
 FG_GETVIEW	 --	 --	004Fh
 FG_GETVPAGE	003Eh	0043h	0050h
 FG_GETXBOX	 --	 --	0051h
 FG_GETXJOY	0076h	0044h	0052h
 FG_GETXJUST	 --	 --	0053h
 FG_GETXPOS	0021h	0045h	0054h
 FG_GETYBOX	 --	 --	0055h
 FG_GETYJOY	0077h	0046h	0056h
 FG_GETYJUST	 --	 --	0057h
 FG_GETYPOS	0022h	0047h	0058h
 FG_HUSH	008Eh	0048h	0059h
 FG_HUSHNEXT	008Fh	0049h	005Ah
 FG_IMAGEBUF	 --	004Ah	005Bh
 FG_IMAGESIZ	0062h	004Bh	005Ch
 FG_INITEMS	00A0h	004Ch	005Dh
 FG_INITJOY	0075h	004Dh	005Eh
 FG_INITPM	 --	 --	005Fh??? (NOP in v4.02)
 FG_INITXMS	00A1h	004Eh	0060h
 FG_INSIDE	 --	004Fh	0061h
 FG_INTJOY	0079h	0050h	0062h
 FG_INTKEY	006Fh	0051h	0063h
 FG_INVERT	 --	 --	0064h
 FG_JUSTIFY	 --	0052h	0065h
 FG_KBINIT	 --	0053h	0066h
 FG_KBLAST	 --	 --	0067h
 FG_KBRESET	 --	 --	0068h
 FG_KBTEST	 --	0054h	0069h
 FG_LOADPCX	 --	 --	006Ah
 FG_LOCATE	0033h	0055h	006Bh
 FG_MAKEPCX	0061h	0057h	006Ch
 FG_MAKEPPR	 --	0058h	006Dh
 FG_MAKESPR	 --	0059h	006Eh
 FG_MAPRGB	001Dh	005Ah	006Fh
 FG_MEASURE	0098h	005Bh	0070h
 FG_MEMAVAIL	009Bh	005Ch	0071h
 FG_MEMORY	 --	005Dh	0072h
 FG_MOUSE256	 --	 --	0073h
 FG_MOUSEBUT	007Ch	005Eh	0074h
 FG_MOUSECUR	007Eh	005Fh	0075h
 FG_MOUSEFIN	 --	0060h	0076h
 FG_MOUSEINI	007Ah	0061h	0077h
 FG_MOUSELIM	0080h	0062h	0078h
 FG_MOUSEMOV	0081h	0063h	0079h
 FG_MOUSEPOS	007Dh	0064h	007Ah
 FG_MOUSEPTR	007Fh	0065h	007Bh
 FG_MOUSESPD	0082h	0066h	007Ch
 FG_MOUSEVIS	007Bh	0067h	007Dh
 FG_MOVE	0023h	0068h	007Eh
 FG_MOVEREL	0024h	0069h	007Fh
 FG_MUSIC	008Ch	006Ah	0080h
 FG_MUSICB	008Dh	006Bh	0081h
 FG_NUMLOCK	0072h	006Ch	0082h
 FG_PACK	 --	 --	0083h
 FG_PAGESIZE	 --	006Dh	0084h
 FG_PAINT	002Fh	006Eh	0085h
 FG_PALETTE	0017h	006Fh	0086h
 FG_PALETTES	0018h	0070h	0087h
 FG_PAN		0066h	0071h	0088h
 FG_PATTERN	0050h	0072h	0089h
 FG_PCXHEAD	 --	0073h	008Ah
 FG_PCXMODE	 --	0074h	008Bh
 FG_PCXPAL	 --	 --	008Ch
 FG_PCXRANGE	 --	 --	008Dh
 FG_PLAYING	0091h	0075h	008Eh
 FG_POINT	001Fh	0076h	008Fh
 FG_POINTX	 --	0077h	0090h
 FG_POLYEDGE	 --	 --	0091h
 FG_POLYFILL	 --	0078h	0092h
 FG_POLYGON	002Eh	0079h	0093h
 FG_POLYLINE	 --	007Ah	0094h
 FG_POLYOFF	 --	007Bh	0095h
 FG_PRINT	 --	007Ch	0096h
 FG_PRINTC	 --	 --	0097h
 FG_PUTBLOCK	 --	007Dh	0098h
 FG_PUTIMAGE	 --	007Eh	0099h
 FG_QUIET	0090h	007Fh	009Ah
 FG_RECT	002Ah	0080h	009Bh
 FG_RESET	0006h	0081h	009Ch
 FG_RESIZE	0045h	0082h	009Dh
 FG_RESTORE	005Bh	0083h	009Eh
 FG_RESUME	0092h	0084h	009Fh
 FG_REVIMAGE	004Bh	0085h	00A0h
 FG_REVMASK	0053h	0086h	00A1h
 FG_SAVE	 --	0087h	00A2h
 FG_SCALE	 --	 --	00A3h
 FG_SCRLOCK	0074h	0088h	00A4h
 FG_SCROLL	0067h	0089h	00A5h
 FG_SETATTR	0019h	008Ah	00A6h
 FG_SETBANKS	 --	 --	00A7h
 FG_SETCAPS	0071h	008Bh	00A8h
 FG_SETCLIP	0029h	008Ch	00A9h
 FG_SETCOLOR	001Ah	008Dh	00AAh
 FG_SETDACS	00A5h	008Eh	00ABh
 FG_SETENTRY	 --	008Fh	00ACh
 FG_SETFUNC	009Ch	0090h	00ADh
 FG_SETHPAGE	0041h	0091h	00AEh
 FG_SETLINES	0011h	0092h	00AFh
 FG_SETMODE	0001h	0093h	00B0h
 FG_SETNUM	0073h	0094h	00B1h
 FG_SETPAGE	003Dh	0095h	00B2h
 FG_SETRGB	001Bh	0096h	00B3h
 FG_SETVIEW	 --	 --	00B5h
 FG_SETVPAGE	003Fh	0098h	00B6h
 FG_SHEAR	 --	 --	00B7h
 FG_SHOWFLIC	 --	 --	00B8h
 FG_SHOWPCX	 --	009Ah	00B9h
 FG_SHOWPPR	 --	009Bh	00BAh
 FG_SHOWSPR	 --	009Ch	00BBh
 FG_SOUND	0088h	009Dh	00BCh
 FG_SOUNDS	0089h	009Eh	00BDh
 FG_SPLIT	 --	 --	00BEh
 FG_STALL	0097h	009Fh	00BFh
 FG_SUSPEND	0093h	00A0h	00C0h
 FG_SVGAINIT	 --	00A1h	00C1h
 FG_SVGASTAT	 --	00A2h	00C2h
 FG_SVGAVER	 --	00A3h	00C3h
 FG_TCDEFINE	 --	00A4h	00C4h
 FG_TCMASK	005Eh	00A5h	00C5h
 FG_TCXFER	005Dh	00A6h	00C6h
 FG_TESTMODE	0002h	00A7h	00C7h
 FG_TEXT	0032h	00A8h	00C8h
 FG_TEXTC	 --	 --	00C9h
 FG_TRANSFER	005Ch	00A9h	00CAh
 FG_UNPACK	 --	 --	00CBh
 FG_VBADDR	 --	 --	00CCh
 FG_VBALLOC	 --	 --	00CDh
 FG_VBCLOSE	 --	 --	00CEh
 FG_VBCOPY	 --	 --	00CFh
 FG_VBCUT	 --	 --	00D0h
 FG_VBDEFINE	 --	 --	00D1h
 FG_VBFREE	 --	 --	00D2h
 FG_VBHANDLE	 --	 --	00D3h
 FG_VBINIT	 --	 --	00D4h
 FG_VBOPEN	 --	 --	00D5h
 FG_VBPASTE	 --	 --	00D6h
 FG_VBTCCOPY	 --	 --	00D7h
 FG_VBTCXFER	 --	 --	00D8h
 FG_VBUNDEF	 --	 --	00D9h
 FG_VGASTATE	 --	 --	00DAh
 FG_VOICE	008Ah	00AAh	00DBh
 FG_VOICES	008Bh	00ABh	00DCh
 FG_WAITFOR	0096h	00ACh	00DDh
 FG_WAITKEY	006Dh	00ADh	00DEh
 FG_WAITVR	 --	00AEh	00DFh
 FG_WHERE	0034h	00AFh	00E0h
 FG_XALPHA	000Ch	00B0h	00E1h
 FG_XCONVERT	000Eh	00B1h	00E2h
 FG_XVIEW	 --	 --	00E3h
 FG_YALPHA	000Dh	00B2h	00E4h
 FG_YCONVERT	000Fh	00B3h	00E5h
 FG_YVIEW	 --	 --	00E6h
SeeAlso: #2647
--------V-620001-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONV)
	AX = 0001h
	BX = page number (0001h-003Fh)
Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #2647)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	The only operation which is allowed on logical pages is "FG_COPYPAGE"
	  (see AX=0014h)
SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0014h,AX=0038h
--------V-620002-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
	AX = 0002h
	BX = page number (0001h-003Fh)
Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #2647)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	You must first call "FG_INITEMS" (see AX=005Dh) before using this
	  function
	The only operation which is allowed on logical pages is "FG_COPYPAGE"
	  (see AX=0014h)
SeeAlso: AX=0000h,AX=0001h,AX=0003h,AX=0014h,AX=0038h,AX=005Dh
--------V-620003-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
	AX = 0003h
	BX = page number (0001h-003Fh)
Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #2647)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	You must first call "FG_INITXMS" (see AX=0060h) before using this
	  function
	The only operation which is allowed on logical pages is "FG_COPYPAGE"
	  (see AX=0014h)
SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0014h,AX=0038h,AX=0060h
--------V-620004-----------------------------
INT 62 u - FGDRIVER 1.10,3.03+ - "FG_AUTOMODE" - GET VIDEO MODE W/MOST FEATURES
	AX = 0004h
Return: AX = proposed video mode number (see #2674 at AX=00B0h)
Program: FGDRIVER is the external video driver for the shareware
	  Fastgraph/Light by Ted Gruber Software
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=0005h,AX=004Bh,AX=00B0h,AX=00C1h,AX=00C7h
--------V-620005-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
	AX = 0005h
	BX = horizontal resolution
	CX = vertical resolution
	DX = number of video pages required (both physical and virtual)
Return: AX = proposed video mode number or FFFFh if no matching video mode
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	You must first call "FG_SVGAINIT" (see AX=00C1h) to get SVGA video
	  modes
SeeAlso: AX=0004h,AX=004Bh,AX=00B0h,AX=00C1h,AX=00C7h
--------V-620006-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_BOX" - DRAW UNFILLED RECTANGLE
	AX = 0006h
	BX = left column
	CX = right column
	DX = top row
	SI = bottom row
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	The rectangle is drawn in screen space, respecting the clipping region,
	  with edges of the width specified with "FG_BOXDEPTH" (see AX=0007h)
	  (default = 1 is set by "FG_SETMODE")
	This function has no effect in text modes
SeeAlso: AX=0007h,AX=0008h,AX=000Ch,AX=0016h,AX=001Dh,AX=0026h,AX=0051h
SeeAlso: AX=0055h,AX=008Fh
--------V-620007-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
	AX = 0007h
	BX = width of left and right edges in pixels (> 0)
	CX = width of top and bottom edges in pixels (> 0)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=0006h,AX=0008h,AX=0051h,AX=0055h
--------V-620008-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_BOXX" - XOR HOLLOW RECTANGLE
	AX = 0008h
	BX = left column
	CX = right column
	DX = top row
	SI = bottom row
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	The rectangle is XORed into screen space, respecting the clipping
	  region, with edges of the width specified with "FG_BOXDEPTH"
	  (see AX=0007h) (default = 1 is set by "FG_SETMODE")
	This function has no effect in text modes
SeeAlso: AX=0006h,AX=0007h,AX=0021h,AX=0022h,AX=0051h,AX=0055h,AX=0090h
--------V-620009-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
	AX = 0009h
	BX = joystick number (0001h or 0002h)
Return: AX = button states
	    bit 0: top button pressed
	    bit 1: bottom button pressed
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=0052h,AX=0056h,AX=005Eh,AX=0062h,AX=0077h
--------V-62000A-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
	AX = 000Ah
Return: AX = CapsLock state (0000h off, 0001h on)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=0082h,AX=00A4h,AX=00A8h,AX=00B1h
--------V-62000B-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
	AX = 000Bh
	BX = number of characters to recolor
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in graphics modes
	Starting at the current text cursor position, the specified number of
	  characters have their attributes to the current text attribute
SeeAlso: AX=000Ch,AX=003Ah,AX=00A6h
--------V-62000C-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
	AX = 000Ch
	CX = length of string
	ES:BX -> string to be displayed
Return: text cursor updated
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in graphics modes
SeeAlso: AX=000Bh,AX=0096h
--------V-62000D-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
	AX = 000Dh
	BX = radius in horizontal screen space units (> 0)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	The circle is drawn in screen space, centered at the current graphics
	  cursor position
	This call is ignored in text modes
SeeAlso: AX=0006h,AX=0008h,AX=000Eh,AX=0026h,AX=0093h
--------V-62000E-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_CIRCLEF" - DRAW FILLED CIRCLE
	AX = 000Eh
	BX = radius in horizontal screen space units (> 0)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=0008h,AX=000Dh,AX=0027h,AX=0092h
--------V-62000F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_CLIPMAP" - DISPLAY CLIPPED IMAGE (MODE-INDEP)
	AX = 000Fh
	ES:BX -> bitmap
	CX = width
	DX = height
Desc:	display a mode-independent bitmap, showing only the portion within
	  the current clipping limits
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes and in native EGA and VGA graphics
	  modes
	The image is drawn with its lower left corner at the current graphics
	  cursor position
SeeAlso: AX=0011h,AX=001Fh,AX=0034h,AX=0086h,AX=00A9h,AX=00C5h
--------V-620010-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
	AX = 0010h
	ES:BX -> array containing image stored as a masking map (see #2649)
	CX = number of pixel runs in masking map
	DX = width of masking map in pixels
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes and in native EGA and VGA graphics
	  modes
	The image is drawn with its lower left corner at the current graphics
	  cursor position
SeeAlso: AX=0011h,AX=001Fh,AX=0034h,AX=00A1h,AX=00A9h,AX=00C5h
--------V-620011-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
	AX = 0011h
	ES:BX -> mode-specific bitmap
	CX = width of bit map in bytes
	DX = height of bit map in pixel rows
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes
	The image is drawn with its lower left corner at the current graphics
	  cursor position
	The current clipping region is used, extended to a byte boundary
SeeAlso: AX=0010h,AX=0024h,AX=0036h,AX=0044h,AX=00A0h,AX=00A9h,AX=00B9h
--------V-620012-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
	AX = 0012h
	BX = screen space column of left edge
	CX = screen space column of right edge
	DX = screen space row of top edge
	SI = screen space row of bottom edge
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes
SeeAlso: AX=0006h,AX=0010h,AX=0011h,AX=0023h,AX=009Bh,AX=00A9h
--------V-620013-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_COLORS" - GET SIMULTANEOUSLY-AVAILABLE COLORS
	AX = 0013h
Return: AX = number of colors available at one time
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
--------V-620014-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
	AX = 0014h
	BX = source page number (0000h-003Fh)
	CX = destination page number (0000h-003Fh)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	If both source and destination pages are logical pages, they must both
	  be located in the same type (conventional, EMS, XMS) of memory
SeeAlso: AX=009Eh,AX=00A2h,AX=00C6h,AX=00CAh
--------V-620015-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
	AX = 0015h
	BX = new state (0000h invisible, 0001h visible)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes
SeeAlso: AX=000Ch,AX=0054h,AX=0058h,AX=006Bh,AX=0075h,AX=0079h,AX=007Eh
SeeAlso: AX=00E0h
--------V-620016-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
	AX = 0016h
	BX = endpoint column
	CX = endpoint row
	DX = dash pattern (set bits cause drawn pixels)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes
	The starting point is the current graphics cursor position; the cursor
	  position is updated
SeeAlso: AX=0017h,AX=001Dh,AX=008Fh
--------V-620017-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
	AX = 0017h
	BX = endpoint column offset
	CX = endpoint row offset
	DX = dash pattern (set bits cause drawn pixels)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes
	The starting point is the current graphics cursor position; the cursor
	  position is updated
SeeAlso: AX=0016h,AX=001Eh,AX=008Fh
--------V-620018-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
	AX = 0018h
	BX = color index (0000h-00FFh)
	CX = new color value (0 to maximum color value for current video mode)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes and 256-color graphics modes
SeeAlso: AX=0040h,AX=0045h,AX=00AAh
--------V-620019-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DEFPAGES" - DEF SRC/DEST PAGES FOR BLOCK XFERS
	AX = 0019h
	BX = source page
	CX = destination page
Desc:	specify the source and destination SVGA banks for block transfers on
	  extended video pages
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This function is ignored if the video controller does not support
	  extended pages or the current video mode does not allow them
SeeAlso: AX=0014h,AX=00CAh
--------V-62001A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DISPFILE" - DISPLAY STORED IMAGE
	AX = 001Ah
	ES:BX -> ASCIZ filename
	CX = image width in pixels (> 0)
	DX = image format
	    0000h Fastgraph standard pixel run format
	    0001h packed pixel run format
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes
	The image is displayed with its lower left corner at the current
	  graphics cursor position
SeeAlso: AX=001Bh,AX=001Ch,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62001B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
	AX = 001Bh
	ES:BX -> pixel run map (pairs of bytes: color index, count)
	CX = number of pixel runs to display
	DX = width of image in pixels (> 0)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes
	The image is displayed with its lower left corner at the current
	  graphics cursor position
SeeAlso: AX=001Ah,AX=001Ch,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62001C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DISPLAYP" - DISPLAY IMAGE (PACKED PIXEL RUNS)
	AX = 001Ch
	ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
		  contains the color for the first run in its high nybble and
		  the color for the second run in its low nybble)
	CX = number of pixel runs to display
	DX = width of image in pixels (> 0)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes
	The image is displayed with its lower left corner at the current
	  graphics cursor position
SeeAlso: AX=001Ah,AX=001Bh,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62001D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
	AX = 001Dh
	BX = endpoint column
	CX = endpoint row
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes
	The starting point is the current graphics cursor position; the cursor
	  position is updated
SeeAlso: AX=0016h,AX=0020h,AX=0021h,AX=0026h,AX=008Fh,AX=0090h
--------V-62001E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
	AX = 001Eh
	ES:BX -> bitmap (each set bit is pixel drawn in current color)
	CX = width of bitmap in bytes
	DX = height of bitmap in pixel rows
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=0099h,AX=00A0h
--------V-62001F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
	AX = 001Fh
	ES:BX -> array containing image stored as a masking map (see #2649)
	CX = number of pixel runs in masking map
	DX = width of masking map in pixels
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	This call is ignored in text modes and in native EGA and VGA graphics
	  modes
	The image is drawn with its lower left corner at the current graphics
	  cursor position
SeeAlso: AX=0010h,AX=001Fh,AX=00A1h,AX=00A9h

Format of FGDRIVER masking map:
Offset	Size	Description	(Table 2649)
 00h	BYTE	length of first "protect" run (pixels remain unchanged)
 01h	BYTE	length of first "zero" run (pixels set to background color)
 02h	BYTE	length of second "protect" run
 03h	BYTE	length of second "zero" run
	...
--------V-620020-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
	AX = 0020h
	BX = endpoint column offset
	CX = endpoint row offset
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
	The starting point is the current graphics cursor position; the cursor
	  position is updated
SeeAlso: AX=0006h,AX=000Dh,AX=001Dh,AX=0021h,AX=0026h,AX=008Fh
--------V-620021-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAWRELX" - XOR SOLID LINE TO RELATIVE POSITION
	AX = 0021h
	BX = endpoint column offset
	CX = endpoint row offset
Desc:	draw a solid line, XORing each pixel onto the screen
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
	The starting point is the current graphics cursor position; the cursor
	  position is updated
SeeAlso: AX=0006h,AX=000Dh,AX=001Dh,AX=0020h,AX=0026h,AX=0090h
--------V-620022-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAWX" - XOR SOLID LINE TO ABSOLUTE POSITION
	AX = 0022h
	BX = endpoint column
	CX = endpoint row
Desc:	draw a solid line, XORing each pixel onto the screen
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
	The starting point is the current graphics cursor position; the cursor
	  position is updated
SeeAlso: AX=001Dh,AX=0021h,AX=008Fh
--------V-620023-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
	AX = 0023h
	BX = screen space column of left edge
	CX = screen space column of right edge
	DX = screen space row of top edge
	SI = screen space row of bottom edge
	ES:DI -> dithering matrix (video-mode dependent)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
SeeAlso: AX=0006h,AX=0008h,AX=0013h,AX=003Ch,AX=0089h,AX=009Bh
--------V-620024-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
	AX = 0024h
	ES:BX -> video mode-specific bitmap
	CX = width of bitmap in bytes
	DX = height of bitmap in pixel rows
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The image will be drawn with its lower left corner at the current
	  cursor position (either text or graphics)
SeeAlso: AX=0011h,AX=0036h,AX=0044h,AX=0099h,AX=00A0h
--------V-620025-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
	AX = 0025h
Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
	      without an Enhanced Color Display
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00C2h
--------V-620026-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
	AX = 0026h
	BX = horizontal semi-axis length in screen space units
	CX = vertical semi-axis length in screen space units
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
	The ellipse is centered at the current graphics cursor position
SeeAlso: AX=0006h,AX=000Dh,AX=0027h,AX=008Fh,AX=0093h
--------V-620027-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_ELLIPSEF" - DRAW FILLED ELLIPSE IN SCREEN SPACE
	AX = 0027h
	BX = horizontal semi-axis length in screen space units
	CX = vertical semi-axis length in screen space units
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
	The ellipse is centered at the current graphics cursor position
SeeAlso: AX=0006h,AX=000Eh,AX=0026h,AX=008Fh,AX=0092h
--------V-620028-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
	AX = 0028h
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function sets each pixel to 0 in graphics modes, each character
	  cell to a blank with a gray foreground attribute in text modes
SeeAlso: AX=0029h,AX=002Bh,AX=0035h
--------V-620029-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FADEIN" - FADE IN HIDDEN PAGE
	AX = 0029h
	BX = delay (0000h = fastest possible fade-in)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The current hidden page is copied to the current visible page in small
	  random sections to produce a fade-in effect
	This call is ignored in text modes
SeeAlso: AX=0028h,AX=002Ah,AX=002Bh
--------V-62002A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
	AX = 002Ah
	BX = delay (0000h = fastest possible fade-out)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The current visible page is filled with pixels of the current color in
	  small random sections to give a fade-out effect
	This call is ignored in text modes
SeeAlso: AX=0028h,AX=0029h,AX=002Bh
--------V-62002B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FILLPAGE" - FILL THE ACTIVE VIDEO PAGE
	AX = 002Bh
Desc:	fill the active video page with pixels of the current color (graphics
	  modes) or the block character DBh with the current character
	  attributes (text modes)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0028h,AX=0029h,AX=002Ah
--------V-62002C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FINDPAGE" - FIND AVAILABLE VIRTUAL/LOGICAL PAGE
	AX = 002Ch
Return: AX = first available page number (virtual or logical page)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0028h
--------V-62002D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICDONE" - CLOSE FLIC FILE
	AX = 002Dh
	ES:BX -> context descriptor (see AX=0030h)
Return: nothing
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=002Eh,AX=0030h
--------V-62002E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICHEAD" - READ FLI/FLC FILE HEADER
	AX = 002Eh
	ES:BX -> FLICHEAD variable pointer record (see #2651)
Return: AX = status (see #2650)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=002Dh,AX=002Fh,AX=0030h,AX=0032h

(Table 2650)
Values for FGDRIVER FLIC processing status:
 0000h	successful
 FFFEh	not an FLI or FLC file
 FFFFh	file not found

Format of FGDRIVER FLICHEAD variable pointer record:
Offset	Size	Description	(Table 2651)
 00h	WORD	segment of ASCIZ FLI/FLC file name
 02h	WORD	offset of ASCIZ FLI/FLC file name
 04h	WORD	segment of buffer for 128-byte file header
 06h	WORD	offset of buffer for 128-byte file header
--------V-62002F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICMODE" - GET OPTIMAL VIDEO MODE FOR FLI/FLC
	AX = 002Fh
	ES:BX -> 128-byte buffer containing FLI/FLC file header (see AX=002Eh)
Return: AX = optimal 256-color graphics mode number
	    FFFFh if invalid file header
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=002Eh,AX=0030h
--------V-620030-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICOPEN" - OPEN FLI/FLC FILE
	AX = 0030h
	ES:BX -> FLICOPEN variable pointer record (see #2652)
Return: AX = status (see #2650)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=002Dh,AX=002Eh,AX=002Fh,AX=0030h,AX=0031h,AX=0032h

Format of FGDRIVER FLICOPEN variable pointer record:
Offset	Size	Description	(Table 2652)
 00h	WORD	segment of ASCIZ FLI/FLC file name
 02h	WORD	offset of ASCIZ FLI/FLC file name
 04h	WORD	segment of buffer for 16-byte file context descriptor
 06h	WORD	offset of buffer for 16-byte file context descriptor
--------V-620031-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICPLAY" - DISPLAY NEXT FRAME(S) IN FLI/FLC
	AX = 0031h
	ES:BX -> context descriptor (see AX=0030h)
	CX = number of frames to display starting at current frame
	DX = control flags (see #2653)
Return: AX = number of frames displayed
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0030h,AX=0033h,AX=00B8h

Bitfields for FGDRIVER FLI/FLC control flags:
Bit(s)	Description	(Table 2653)
 0	skip inter-frame delay specified in FLI/FLC header
 1	display relative to current graphics position
 2	dipslay image from the FG_IMAGEBUF buffer instead of file
--------V-620032-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICSIZE" - GET IMAGE SIZE
	AX = 0032h
	ES:BX -> FLICSIZE variable pointer record (see #2654)
Return: image height/width buffers updated; height is set to FFFFh on error
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=002Eh,AX=0030h

Format of FGDRIVER FLICSIZE variable pointer record:
Offset	Size	Description	(Table 2654)
 00h	WORD	segment of buffer for 128-byte FLI/FLC file header
 02h	WORD	offset of buffer for 128-byte FLI/FLC file header
 04h	WORD	segment of WORD buffer for image width in pixels
 06h	WORD	offset of WORD buffer for image width in pixels
 08h	WORD	segment of WORD buffer for image height in pixels
 0Ah	WORD	offset of WORD buffer for image height in pixels
--------V-620033-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICSKIP" - SKIP FRAME(S) IN FLI/FLC FILE
	AX = 0033h
	ES:BX -> context descriptor (see AX=0030h)
	CX = number of frames to skip
	    reset to first frame if skip count is negative
Return: AX = number of frames skipped (may be less than requested if EOF)
	    0000h if resetting to first frame
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0030h,AX=0031h
--------V-620034-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
	AX = 0034h
	ES:BX -> array containing image stored as a masking map (see #2649)
	CX = number of pixel runs in masking map
	DX = width of masking map in pixels
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes and in native EGA and VGA graphics
	  modes
	The image is drawn with its lower left corner at the current graphics
	  cursor position
SeeAlso: AX=000Fh,AX=001Fh,AX=0036h,AX=00A1h,AX=00A5h,AX=00C5h
--------V-620035-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLOOD" - FLOOD FILL ARBITRARY CLOSED REGION
	AX = 0035h
	BX = starting column
	CX = starting row
Desc:	fill the bounded region around the specified point (respecting clipping
	  region) with the currrent color
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function is ignored in text modes
SeeAlso: AX=0028h,AX=0085h
--------V-620036-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
	AX = 0036h
	ES:BX -> mode-specific bitmap
	CX = width of bit map in bytes
	DX = height of bit map in pixel rows
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
	The image is drawn with its lower left corner at the current graphics
	  cursor position
	The current clipping region is used, extended to a byte boundary
SeeAlso: AX=0011h,AX=0024h,AX=0034h,AX=0044h,AX=00A0h,AX=00A9h,AX=00B9h
--------V-620037-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FONTSIZE" - SPECIFY FONT SIZE FOR TEXT OUTPUT
	AX = 0037h
	BX = desired character height in scan lines (8, 14, 16)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored if the current mode is not a VGA or SVGA graphics
	  mode, or the specified character height is not 8, 14, or 16
SeeAlso: AX=0096h
--------V-620038-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
	AX = 0038h
	BX = page number (0000h-003Fh)
Return: AX = status (0000h,0001h,0007h,0009h) (see #2647)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0003h
--------V-620039-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
	AX = 0039h
Return: AX = segment of active video page
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0042h,AX=00ACh
--------V-62003A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
	AX = 003Ah
	BX = row
	CX = column
Return: AX = character attribute at specified location on active video page
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in graphics modes
SeeAlso: AX=000Bh,AX=003Dh,AX=0040h,AX=00A6h
--------V-62003B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETBANKS" - GET SVGA READ AND WRITE BANKS
	AX = 003Bh
	ES:BX -> GETBANKS variable pointer record (see #2655)
Return: nothing
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00A7h

Format of FGDRIVER GETBANKS variable pointer record:
Offset	Size	Description	(Table 2655)
 00h	WORD	segment of WORD buffer for read bank number
 02h	WORD	offset of WORD buffer for read bank number
 04h	WORD	segment of WORD buffer for write bank number
 06h	WORD	offset of WORD buffer for write bank number
--------V-62003C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETBLOCK" - GRAB RECTANGLE OF DISPLAY
	AX = 003Ch
	ES:BX -> buffer for screen contents
	CX = leftmost column
	DX = rightmost column
	SI = top row
	DI = bottom row
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	In text modes, coordinates are character positions; in graphics modes,
	  they are defined in screen space, and the left and right edges are
	  adjusted to a byte boundary if necessary
	Use "FG_IMAGESIZ" (see AX=005Ch) to determine the required buffer size
SeeAlso: AX=0044h,AX=005Ch,AX=0098h
--------V-62003D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
	AX = 003Dh
	BX = row
	CX = column
Return: AX = character at specified location on active video page
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in graphics modes
SeeAlso: AX=000Bh,AX=003Ah,AX=0096h,AX=00A6h,AX=00C8h
--------V-62003E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETCLIP" - GET CLIPPING REGION IN SCREEN SPACE
	AX = 003Eh
	ES:BX -> GETCLIP variable pointer record (see #2656)
Return: variables specifed by GETCLIP structure updated
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00CAh

Format of FGDRIVER GETCLIP variable pointer record:
Offset	Size	Description	(Table 2656)
 00h	WORD	segment of WORD buffer for minimum X coordinate (left edge)
 02h	WORD	offset of WORD buffer for minimum X coordinate (left edge)
 04h	WORD	segment of WORD buffer for maximum X coordinate (right edge)
 06h	WORD	offset of WORD buffer for maximum X coordinate (right edge)
 08h	WORD	segment of WORD buffer for minimum Y coordinate (top edge)
 0Ah	WORD	offset of WORD buffer for minimum Y coordinate (top edge)
 0Ch	WORD	segment of WORD buffer for maximum Y coordinate (bottom edge)
 0Eh	WORD	offset of WORD buffer for maximum Y coordinate (bottom edge)
--------V-62003F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
	AX = 003Fh
Return: DX:AX = number of clock ticks since midnight
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: INT 1A/AH=00h
--------V-620040-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
	AX = 0040h
Return: AX = current text attribute or color index (graphics modes)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=000Bh,AX=003Ah,AX=00A6h
--------V-620041-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
	AX = 0041h
	CX = number of DAC registers to return (0001h to 0100h)
	DX = starting DAC register number (0000h to 00FFh)
	ES:BX -> buffer for DAC red/green/blue triples
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The register number wraps back to zero after FFh
SeeAlso: AX=004Eh,AX=0086h,AX=00ABh
--------V-620042-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETENTRY" - GET PAGE TYPE AND ADDRESS
	AX = 0042h
	ES:BX -> variable pointer record (see #2657)
	CX = page number (00h-3Fh)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	Page addresses are segments for pages stored in conventional memory
	  (including physical and virtual pages), and EMS or XMS handles for
	  pages stored in EMS or XMS
SeeAlso: AX=0000h,AX=00ACh

Format of FGDRIVER GETENTRY variable pointer record:
Offset	Size	Description	(Table 2657)
 00h	WORD	segment of WORD buffer for page address
 02h	WORD	offset of WORD buffer for page address
 04h	WORD	segment of WORD buffer for page type (se #2658)
 06h	WORD	offset of WORD buffer for page type

(Table 2658)
Values for FGDRIVER page type:
 0000h	unallocated
 0001h	physical
 0002h	virtual
 0003h	logical page, stored in expanded memory (EMS)
 0004h	logical page, stored in extended memory (XMS)
 0005h	logical page, stored in conventional memory
--------V-620043-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
	AX = 0043h
Return: AX = current hidden video page number (0000h-003Fh)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=004Ch,AX=0050h,AX=00AEh
--------V-620044-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
	AX = 0044h
	ES:BX -> buffer for video mode-specific bitmap
	CX = width of bitmap in bytes
	DX = height of bitmap in pixel rows
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0099h,AX=00A0h
--------V-620045-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
	AX = 0045h
	BX = color index (0000h to 00FFh)
Return: AX = color value for specified color index
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call returns the value passed to it in text and 256-color
	  graphics modes
SeeAlso: AX=0018h,AX=0040h
--------V-620046-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETKEY" - GET NEXT KEYSTROKE
	AX = 0046h
	ES:BX -> variable pointer record (see #2659)
Return: (after next keystroke if no typeahead) variables updated
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=000Ah,AX=0063h,AX=0069h,AX=00DEh,INT 16/AH=00h

Format of FGDRIVER GETKEY variable pointer record:
Offset	Size	Description	(Table 2659)
 00h	WORD	segment of BYTE buffer for ASCII keycode
 02h	WORD	offset of BYTE buffer for ASCII keycode
 04h	WORD	segment of BYTE buffer for extended keycode
 06h	WORD	offset of BYTE buffer for extended keycode
--------V-620047-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
	AX = 0047h
Return: AX = number of text rows on screen in current video mode
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00AFh,AX=00C2h
--------V-620048-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
	AX = 0048h
	ES:BX -> buffer for video mode-independent bitmap
	CX = width of bitmap in bytes
	DX = height of bitmap in pixel rows
Return: each bit in bitmap is set if corresponding pixel is of the current
	  color, cleared otherwise
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
SeeAlso: AX=0011h,AX=001Eh,AX=0024h
--------V-620049-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
	AX = 0049h
Return: AX = maximum X coordinate in screen space
	    (or character space if in text mode)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=004Ah,AX=00C1h
--------V-62004A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
	AX = 004Ah
Return: AX = maximum Y coordinate in screen space
		(or character space if in text mode)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0049h,AX=00C1h
--------V-62004B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
	AX = 004Bh
	ES:BX -> WORD ???
Return: AX = current video mode number
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00B0h
--------V-62004C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
	AX = 004Ch
Return: AX = active video page (0000h-003Fh)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0039h,AX=0042h,AX=0043h,AX=0050h,AX=00B2h
--------V-62004D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
	AX = 004Dh
	BX = column in screen space
	CX = row in screen space
Return: AX = color value of pixel (0 to num_colors-1)
	    0000h in text modes
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=003Ah,AX=003Dh,AX=008Fh,AX=0090h
--------V-62004E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
	AX = 004Eh
	ES:BX -> variable pointer record (see #2660)
	CX = DAC register number
Return: variables updated
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes and CGA/EGA video modes (since
	  they do not use DAC registers)
SeeAlso: AX=00441h,AX=0086h,AX=00ABh

Format of FGDRIVER GETRGB variable pointer record:
Offset	Size	Description	(Table 2660)
 00h	WORD	segment of WORD buffer for red component of DAC register
 02h	WORD	offset of WORD buffer for red component
 04h	WORD	segment of WORD buffer for green component of DAC register
 06h	WORD	offset of WORD buffer for green component
 08h	WORD	segment of WORD buffer for blue component of DAC register
 0Ah	WORD	offset of WORD buffer for blue component
--------V-62004F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETVIEW" - GET VIEWPORT EXTREME LIMITS
	AX = 004Fh
	ES:BX -> variable pointer record (see #2661)
Return: indicated variables updated
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00B5h

Format of FGDRIVER GETVIEW variable pointer record:
Offset	Size	Description	(Table 2661)
 00h	WORD	segment of WORD buffer for viewport left edge (viewport units)
 02h	WORD	offset of WORD buffer for viewport left edge (viewport units)
 04h	WORD	segment of WORD buffer for viewport right edge (viewport units)
 06h	WORD	offset of WORD buffer for viewport right edge (viewport units)
 08h	WORD	segment of WORD buffer for viewport top edge (viewport units)
 0Ah	WORD	offset of WORD buffer for viewport top edge (viewport units)
 0Ch	WORD	segment of WORD buffer for viewport bottom edge (viewp. units)
 0Eh	WORD	offset of WORD buffer for viewport bottom edge (viewp. units)
 10h	WORD	segment of WORD buffer for viewport left edge (screen space)
 12h	WORD	offset of WORD buffer for viewport left edge (screen space)
 14h	WORD	segment of WORD buffer for viewport right edge (screen space)
 16h	WORD	offset of WORD buffer for viewport right edge (screen space)
 18h	WORD	segment of WORD buffer for viewport top edge (screen space)
 1Ah	WORD	offset of WORD buffer for viewport top edge (screen space)
 1Ch	WORD	segment of WORD buffer for viewport bottom edge (screen space)
 1Eh	WORD	offset of WORD buffer for viewport bottom edge (screen space)
--------V-620050-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
	AX = 0050h
Return: AX = visible video page (0000h-003Fh)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0043h,AX=004Ch,AX=00B6h
--------V-620051-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETXBOX" - GET WIDTH OF VERTICAL BOX LINES
	AX = 0051h
Return: AX = width (in pixels) of left and right edges of rectangles
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0006h,AX=0007h,AX=0008h,AX=006Bh
--------V-620052-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
	AX = 0052h
	BX = joystick number (0001h or 0002h)
Return: AX = horizontal position of joystick
	    FFFFh if joystick uninitialized or not present
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The actual coordinates are processor- and joystick-dependent
	You must call "FG_INITJOY" (AX=005Eh) before using this function
SeeAlso: AX=0009h,AX=0056h,AX=005Eh,AX=0062h,AX=0077h
--------V-620053-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETXJUST" - GET HORIZONTAL JUSTIFICATION
	AX = 0053h
Return: AX = string justification
	    0000h strings are centered around current graphics X position
	    0001h strings are right-justified at current graphics X position
	    FFFFh strings are left-justified at current graphics X position
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=006Ch,AX=007Bh
--------V-620054-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
	AX = 0054h
Return: AX = screen space X coordinate of graphics cursor position
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0058h,AX=007Eh,AX=007Fh
--------V-620055-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETYBOX" - GET WIDTH OF HORIZONTAL BOX LINES
	AX = 0055h
Return: AX = width (in pixels) of top and bottom edges of rectangles
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0006h,AX=0007h,AX=0008h,AX=0063h
--------V-620056-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
	AX = 0056h
	BX = joystick number (0001h or 0002h)
Return: AX = vertical position of joystick
	    FFFFh if joystick uninitialized or not present
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The actual coordinates are processor- and joystick-dependent
	You must call "FG_INITJOY" (AX=005Eh) before using this function
SeeAlso: AX=0009h,AX=0052h,AX=005Eh,AX=0062h,AX=0077h
--------V-620057-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETYJUST" - GET VERTICAL JUSTIFICATION
	AX = 0057h
Return: AX = string justification
	    0000h strings are centered around current graphics Y position
	    0001h strings have top edge at current graphics Y position
	    FFFFh strings have bottom edge at current graphics Y position
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0053h,AX=0065h
--------V-620058-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETYPOS" - GET GRAPHICS CURSOR ROW
	AX = 0058h
Return: AX = screen space Y coordinate of graphics cursor position
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0054h,AX=007Eh,AX=007Fh
--------V-620059-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
	AX = 0059h
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function immediately stops any sounds started with "FG_MUSICB",
	  "FG_SOUNDS", or "FG_VOICES"; it is ignored if no asynchronous sound
	  is playing
SeeAlso: AX=005Ah,AX=0081h,AX=00BDh,AX=00DCh
--------V-62005A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
	AX = 005Ah
Program: FGDRIVER is the external video driver for the shareware
	  Fastgraph/Light by Ted Gruber Software
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
	  or "FG_VOICES" after the current repetition completes; it is ignored
	  unless asynchronous sound is continuous
SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
--------V-62005B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_IMAGEBUF" - SPECIFY TEMPORARY IMAGE BUFFER
	AX = 005Bh
	ES:BX -> buffer to be used when creating or displaying GIF/PCX/PPR/SPR
		  images
	CX = size of buffer in bytes or 0000h to use internal buffer
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	Fastgraph's internal buffer is 4096 bytes; this function allows the
	  application to define a larger buffer which will typically speed
	  processing
SeeAlso: AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62005C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
	AX = 005Ch
	BX = image width in pixels
	CX = image height in pixels
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
SeeAlso: AX=003Ch,AX=0098h
--------V-62005D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
	AX = 005Dh
Return: AX = status
	    0000h successful
	    FFFFh expanded memory manager inaccessible or not installed
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0002h,AX=0060h"v4.02"
--------V-62005E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
	AX = 005Eh
	BX = joystick number (0001h or 0002h)
Return: AX = status
	    0000h successful
	    FFFFh joystick not connected or no game port
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	Fastgraph assumes that the requested joystick is centered at the time
	  this function is called
SeeAlso: AX=0009h,AX=0052h,AX=0056h,AX=0062h,AX=0077h
--------V-62005F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INITPM"??? - (NOT IMPLEMENTED)
	AX = 005Fh
	???
Return: ???
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
--------V-620060-----------------------------
INT 62 u - FGDRIVER v1.10 only - "FG_DISPPCX" - DISPLAY PCX FILE
	AX = 0060h
	ES:BX -> ASCIZ filename
	CX = flags
	    bit 0: use current palette rather than PCX file's palette
	    bits 1-15 reserved (0)
Return: AX = status
	    0000h success
	    0001h file not found
	    0002h file is not a valid PCX file
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes and Hercules low-resolution graphics
	The image is displayed with its upper left corner at the current
	  graphics cursor position
SeeAlso: AX=00B9h
--------V-620060-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
	AX = 0060h
Return: AX = status
	    0000h successful
	    FFFFh extended memory manager inaccessible or not installed
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0003h,AX=005Dh
--------V-620061-----------------------------
INT 62 u - FDGRIVER v4.02 - "FG_INSIDE" - CHECK IF POINT INSIDE CONVEX POLYGON
	AX = 0061h
	ES:BX -> vertex array
	CX = number of vertices
	DX = screen space column of point to test
	SI = screen space row of point to test
Return: AX = result
	    0000h point is outside polygon
	    0001h point is inside polygon
	    undefined if not a convex polygon
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0092h,AX=0093h,AX=0094h
--------V-620062-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
	AX = 0062h
	CX = joystick number (0001h or 0002h)
	ES:BX -> variable pointer record (see #2662)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	If the indicated joystick has not been initialized with AX=008Eh, both
	  the button code and joystick position will be set to 00h
	If either button is pressed, a button code of 0Dh is returned;
	  otherwise, a button code of 00h is returned
SeeAlso: AX=0009h,AX=0052h,AX=0046h,AX=005Eh,AX=0077h

Format of FGDRIVER INTJOY variable pointer record:
Offset	Size	Description	(Table 2662)
 00h	WORD	segment of BYTE buffer for button code
 02h	WORD	offset of BYTE buffer for button code
 04h	WORD	segment of BYTE buffer for joystick position
 06h	WORD	offset of BYTE buffer for joystick position
--------V-620063-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
	AX = 0063h
	ES:BX -> variable pointer record (see #2663)
Return: variables updated
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	If the keyboard buffer is empty, both the ASCII and extended keycodes
	  are set to 00h
SeeAlso: AX=000Ah,AX=0046h,AX=0069h,AX=00DEh,INT 16/AH=01h

Format of FGDRIVER INTKEY variable pointer record:
Offset	Size	Description	(Table 2663)
 00h	WORD	segment of BYTE buffer for ASCII keycode
 02h	WORD	offset of BYTE buffer for ASCII keycode
 04h	WORD	segment of BYTE buffer for extended keycode
 06h	WORD	offset of BYTE buffer for extended keycode
--------V-620064-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INVERT" - INVERT ORIENTATION OF BITMAP
	AX = 0064h
	ES:BX -> bitmap
	CX = width of bitmap in bytes
	DX = height of bitmap in pixel rows
Return: nothing
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
--------V-620065-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_JUSTIFY" - SET TEXT OUTPUT JUSTIFICATION
	AX = 0065h
	BX = horizontal justification
	      (00h centered, 01h right-justified, FFh left-justified)
	CX = vertical justification
	      (00h centered, 01h top of characters, FFh bottom of chars)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=000Ch,AX=0037h,AX=0053h,AX=0057h,AX=0096h
--------V-620066-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_KBINIT" - ENABLE/DISABLE LOW-LEVEL KBD HANDLER
	AX = 0066h
	BX = new state (0000h disabled, 0001h enabled)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	When the low-level handler is enabled, "FG_GETKEY", "FG_INTKEY",
	  "FG_WAITKEY", and all other functions calling DOS or BIOS keyboard
	  services become unavailable
SeeAlso: AX=0067h,AX=0068h,AX=0069h
--------V-620067-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_KBLAST" - GET MOST RECENT SCANCODE PROCESSED
	AX = 0067h
Return: AX = scancode for keypress most recently processed by FastGraph's
	      low-level keyboard handler, or 0000h if no keys since FG_KBINIT
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0066h,AX=0068h,AX=0069h
--------V-620068-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_KBRESET" - RESET LOW-LEVEL KEYBOARD HANDLER
	AX = 0068h
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0066h,AX=0067h,AX=0069h
--------V-620069-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_KBTEST" - CHECK WHETHER SPECIFIED KEY PRESSED
	AX = 0069h
	BX = scan code of desired key
Return: AX = state
	    0000h key is not pressed
	    0001h key is currently pressed
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The low-level keyboard handler must have been enabled with AX=0066h
SeeAlso: AX=0066h,AX=0067h,INT 16/AH=01h
--------V-62006A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_LOADPCX" - LOAD .PCX INTO ACTIVE VIRTUAL BUFFER
	AX = 006Ah
	ES:BX -> ASCIZ filename for PCX image
	CX = control flags
	    bit 0: use current palette, overriding stored .PCX palette
	    bit 1: load at current graphics position, not stored position
	    bit 2: load image from FG_IMAGEBUF buffer instead of .PCX file
Return: AX = status
	    0000h successful
	    0001h file not found
	    0002h not a .PCX file
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=006Ch,AX=00B9h,AX=00D5h
--------V-62006B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
	AX = 006Bh
	BX = row
	CX = column
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	There are only eight text cursors shared by successive groups of
	  eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
	  share the second, etc)
SeeAlso: AX=0054h,AX=0058h,AX=007Eh,AX=00E0h
--------V-62006C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
	AX = 006Ch
	BX = left edge in screen space units
	CX = right edge in screen space units
	DX = top edge in screen space units
	SI = bottom edge in screen space units
	ES:DI -> ASCIZ filename of PCX file to create
Return: AX = status
	    0000h successful
	    0001h file not created
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The PCX file is created from the specified region of the active video
	  page; the left and right edges are adjusted to a byte boundary if
	  necessary
	If the specified file already exists, it is overwritten
	This call is ignored in text and Hercules low-resolution graphics modes
SeeAlso: AX=005Bh,AX=006Dh,AX=006Ah,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62006D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MAKEPPR" - CREATE PACKED PIXEL RUN FILE
	AX = 006Dh
	BX = left edge in screen space units
	CX = right edge in screen space units
	DX = top edge in screen space units
	SI = bottom edge in screen space units
	ES:DI -> ASCIZ filename of PPR file to create
Return: AX = status
	    0000h successful
	    0001h file not created
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The PPR file is created from the specified region of the active video
	  page; the left and right edges are adjusted to byte boundaries if
	  necessary
	If the specified file already exists, it is overwritten
	This call is ignored in text modes
SeeAlso: AX=005Bh,AX=006Ch,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62006E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MAKESPR" - CREATE STANDARD PIXEL RUN FILE
	AX = 006Eh
	BX = left edge in screen space units
	CX = right edge in screen space units
	DX = top edge in screen space units
	SI = bottom edge in screen space units
	ES:DI -> ASCIZ filename of SPR file to create
Return: AX = status
	    0000h successful
	    0001h file not created
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The SPR file is created from the specified region of the active video
	  page; the left and right edges are adjusted to byte boundaries if
	  necessary
	If the specified file already exists, it is overwritten
	This call is ignored in text modes
SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62006F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
	AX = 006Fh
	BX = red component
	CX = green component
	DX = blue component
Return: AX = mode-specific palette value corresponding to specified components
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function is only meaningful in 16-color graphics modes
SeeAlso: AX=004Eh,AX=00B3h
--------V-620070-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
	AX = 0070h
Return: AX = delay units per clock tick (processor-dependent)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	These delay units are used by "FG_STALL" (see AX=00BFh)
SeeAlso: AX=00BFh
--------V-620071-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
	AX = 0071h
Return: DX:AX = number of bytes of conventional memory available
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=005Dh,AX=0072h
--------V-620072-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MEMORY" - GET SIZE OF VIDEO MEMORY
	AX = 0072h
Return: AX = size of video memory in KB
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	You must first call "FG_SVGAINIT" (see AX=00C1h) before using this
	  function
SeeAlso: AX=0071h
--------V-620073-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSE256" - DEFINE 256-COLOR MOUSE CURSOR
	AX = 0073h
	ES:BX -> 512-byte cursor definition
	CX = X offset of hot-spot within mouse cursor
	DX = Y offset of hot-spot within mouse cursor
Return: nothing
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	the cursor definition array consists of 256 bytes defining the 16x16
	  screen mask, followed by another 256 bytes definining the 16x16
	  cursor mask
SeeAlso: AX=0074h,AX=0075h,AX=007Bh
--------V-620074-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
	AX = 0074h
	CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
		  -1=left release, -2=right release, -3=middle release)
	ES:BX -> variable pointer record (see #2664)
Return: variables updated
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function returns the count of presses or releases since the last
	  call to this function; if the count is zero, row and column will
	  also be zero
SeeAlso: AX=0075h,AX=0077h,AX=007Ah

Format of FGDRIVER MOUSEBUT variable pointer record:
Offset	Size	Description	(Table 2664)
 00h	WORD	segment of WORD buffer for press/release count
 02h	WORD	offset of WORD buffer for press/release count
 04h	WORD	segment of WORD buffer for screen space col of last press/rls
 06h	WORD	offset of WORD buffer for screen space col of last press/rels
 08h	WORD	segment of WORD buffer for screen space row of last press/rls
 0Ah	WORD	offset of WORD buffer for screen space row of last press/rls
--------V-620075-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
	AX = 0075h
	BX = screen mask
	CX = cursor mask
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in graphics modes
SeeAlso: AX=007Bh,AX=007Dh
--------V-620076-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEFIN" - UNHOOK FASTGRAPH MOUSE HANDLER
	AX = 0076h
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function should be called before switching back to text mode if
	  "FG_MOUSEINI" was called while in an SVGA graphics mode
SeeAlso: AX=0077h
--------V-620077-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
	AX = 0077h
Return: AX = status
	    0002h two-button mouse
	    0003h three-button mouse
	    FFFFh initialization failed
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	After this call, the mouse cursor is invisible
SeeAlso: AX=0076h,AX=0078h,AX=007Ch
--------V-620078-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
	AX = 0078h
	BX = left-most position allowed for mouse cursor
	CX = right-most position allowed
	DX = top-most position allowed
	SI = bottom-most position allowed
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0077h,AX=0079h,INT 33/AX=0007h,INT 33/AX=0008h
--------V-620079-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
	AX = 0079h
	BX = new column
	CX = new row
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function will not move the mouse cursor outside the bounding box
	  specified with AX=009Bh
SeeAlso: AX=0078h,AX=007Ah,INT 33/AX=0004h
--------V-62007A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
	AX = 007Ah
	ES:BX -> variable pointer record (see #2665)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0079h

Format of FGDRIVER MOUSEPOS variable pointer record:
Offset	Size	Description	(Table 2665)
 00h	WORD	segment of WORD buffer for mouse column
 02h	WORD	offset of WORD buffer for mouse column
 04h	WORD	segment of WORD buffer for mouse row
 06h	WORD	offset of WORD buffer for mouse row
 08h	WORD	segment of WORD buffer for button status
 0Ah	WORD	offset of WORD buffer for button status
Note:	button status: bit 0 = left button, bit 1 = right, bit 2 = middle
--------V-62007B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
	AX = 007Bh
	ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
	CX = X offset of hot spot from upper left corner
	DX = Y offset of hot spot from upper left corner
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
SeeAlso: AX=0073h,AX=0075h,INT 33/AX=0009h
--------V-62007C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
	AX = 007Ch
	BX = horizontal mickeys per eight pixels of movement (default 16)
	CX = vertical mickeys per eight pixels of movement (default 16)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
--------V-62007D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
	AX = 007Dh
	BX = new state (0000h invisible, 0001h visible)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0077h,INT 33/AX=0001h,INT 33/AX=0002h
--------V-62007E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
	AX = 007Eh
	BX = new column
	CX = new row
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
SeeAlso: AX=0054h,AX=0058h,AX=006Bh,AX=0079h,AX=007Fh,AX=00E0h
--------V-62007F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
	AX = 007Fh
	BX = column offset
	CX = row offset
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
SeeAlso: AX=0054h,AX=0058h,AX=007Eh
--------V-620080-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MUSIC" - PLAY SERIES OF NOTES
	AX = 0080h
	ES:BX -> '$'-terminated music string in BASIC PLAY format
Return: after music completed
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
	  AX=00AAh) is already in progress
SeeAlso: AX=0081h,AX=00BCh,AX=00DBh
--------V-620081-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
	AX = 0081h
	CX = number of repetitions (negative = continuous play)
	ES:BX -> '$'-terminated music string in BASIC PLAY format
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
	  AX=00AAh) is already in progress
SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
--------V-620082-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
	AX = 0082h
Return: AX = NumLock state (0000h off, 0001h on)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=000Ah,AX=00A4h,AX=00A8h,AX=00B1h
--------V-620083-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PACK" - CONVERT PIXEL-PER-BYTE TO PACKED BITMAP
	AX = 0083h
	ES:BX -> variable pointer record (see #2666)
	CX = width of bitmap in pixels
	DX = height of bitmap in pixels
Return: result bitmap buffer updated
SeeAlso: AX=00CBh

Format of FGDRIVER PACK variable pointer record:
Offset	Size	Description	(Table 2666)
 00h	WORD	segment of source (mode-independent) bitmap
 02h	WORD	offset of source (mode-independent) bitmap
 04h	WORD	segment of buffer for result (mode-specific) bitmap
 06h	WORD	offset of buffer for result (mode-specific) bitmap
--------V-620084-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PAGESIZE" - GET VIDEO PAGE SIZE FOR CURR MODE
	AX = 0084h
Return: DX:AX = page size in bytes
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0072h
--------V-620085-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
	AX = 0085h
	BX = column
	CX = row
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function fills an arbitrary closed region around the specified
	  point with the current color; the screen edges are not considered
	  region boundaries
	This call is ignored in text modes
SeeAlso: AX=0035h
--------V-620086-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
	AX = 0086h
---CGA 4-color graphics---
	BX = CGA paletee number
	CX = background color
---CGA 2-color graphics---
	BX ignored
	CX = foreground color
---16-color graphics---
	BX = palette register number
	CX = palette value
---256-color graphics---
	BX = DAC register number
	CX =  DAC value
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function is ignored in text modes and Hercules graphics modes
	Few EGA/VGA adapters correctly set the foreground color in CGA mode 6
SeeAlso: AX=0041h,AX=004Eh,AX=0087h,AX=00ABh
--------V-620087-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
	AX = 0087h
	ES:BX -> array of 16 WORDs containing values for palette registers
		  (or first 16 DAC registers in 256-color modes)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function is ignored in text modes, CGA and Hercules graphics modes
SeeAlso: AX=0041h,AX=004Eh,AX=0086h,AX=00ABh
--------V-620088-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PAN" - SET SCREEN ORIGIN
	AX = 0088h
	BX = new column for screen origin
	CX = new row for screen origin
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00B2h
--------V-620089-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
	AX = 0089h
	BX = index of pattern to define
	CX = number of predefined display pattern
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	When displaying a pixel run map, Fastgraph uses the pattern associated
	  with each color index rather than displaying the actual color
	This call has no effect in text and 256-color graphics modes
SeeAlso: AX=0023h,AX=0045h
--------V-62008A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PCXHEAD" - GET PCX FILE HEADER
	AX = 008Ah
	ES:BX -> variable pointer record (see #2667)
Return: AX = status
	    0000h successful
	    FFFEh not a PCX file
	    FFFFh file does not exist
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=008Bh,AX=00B9h

Format of FGDRIVER PCXHEAD variable pointer record:
Offset	Size	Description	(Table 2667)
 00h	WORD	segment of ASCIZ filename
 02h	WORD	offset of ASCIZ filename
 04h	WORD	segment of 128-byte buffer for PCX header
 06h	WORD	offset of 128-byte buffer for PCX header
--------V-62008B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PCXMODE" - GET OPTIMAL VIDEO MODE FOR DISPLAY
	AX = 008Bh
	ES:BX -> PCX header (see AX=008Ah)
Return: AX = optimal video mode for PCX file
	    FFFEh not a valid PCX header
	    FFFFh unable to determine compatible video mode
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=008Ah,AX=00B9h
--------V-62008C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PCXPAL" - GET PALETTE STORED IN PCX FILE
	AX = 008Ch
	ES:BX -> variable pointer record (see #2668)
Return: AX = number of colors in palette (16 or 256) or
	    FFFEh not a valid PCX file
	    FFFFh file not found
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=008Dh

Format of FGDRIVER PCXPAL variable pointer record:
Offset	Size	Description	(Table 2668)
 00h	WORD	segment of ASCIZ .PCX filename
 02h	WORD	offset of ASCIZ .PCX filename
 04h	WORD	segment of buffer for .PCX palette RGB triples
 06h	WORD	offset of buffer for .PCX palette RGB triples
Note:	the buffer for the palette must hold at least three times as many bytes
	  as there are colors in the palette
SeeAlso: #2669
--------V-62008D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PCXRANGE" - GET EXTENT OF PCX IMAGE
	AX = 008Dh
	ES:BX -> variable pointer record (see #2669)
Return: indicated variables updated; if the indicated header is not valid,
	  all of the coordinate variables are set to FFFFh
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=008Ch

Format of FGDRIVER PCXRANGE variable pointer record:
Offset	Size	Description	(Table 2669)
 00h	WORD	segment of 128-byte PCX file header
 02h	WORD	offset of 128-byte PCX file header
 04h	WORD	segment of WORD buffer for X coordinate of image's left edge
 04h	WORD	offset of WORD buffer for X coordinate of image's left edge
 08h	WORD	segment of WORD buffer for X coordinate of image's right edge
 0Ah	WORD	offset of WORD buffer for X coordinate of image's right edge
 0Ch	WORD	segment of WORD buffer for Y coordinate of image's top edge
 0Eh	WORD	offset of WORD buffer for Y coordinate of image's top edge
 10h	WORD	segment of WORD buffer for X coordinate of image's bottom edge
 12h	WORD	offset of WORD buffer for X coordinate of image's bottom edge
SeeAlso: #2668
--------V-62008E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
	AX = 008Eh
Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
--------V-62008F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POINT" - DISPLAY A PIXEL
	AX = 008Fh
	BX = column
	CX = row
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
SeeAlso: AX=0006h,AX=001Dh,AX=004Dh,AX=0090h
--------V-620090-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POINTX" - DISPLAY A PIXEL IN XOR MODE
	AX = 0090h
	BX = column
	CX = row
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
SeeAlso: AX=004Dh,AX=008Fh
--------V-620091-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POLYEDGE" - SPECIFY INCLUSION OF FINAL PIXELS
	AX = 0091h
	BX = edge flag
	    0000h include right- and bottom-edge pixels when drawing polygons
		  with FG_POLYFILL
	    0001h (default) exclue right- and bottom-edge pixels
SeeAlso: AX=0092h
--------V-620092-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POLYFILL" - DRAW A FILLED CONVEX POLYGON
	AX = 0092h
	CX = number of vertices
	ES:BX -> variable pointer record (see #2670)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The vertex array consists of pairs of words specifying the X and Y
	  coordinates of each vertex; the work array is used internally and
	  must contain at least four times as many bytes as the polygon is
	  high in pixels
	This function is ignored in text modes
	If the polygon is non-convex, only a portion of it may be filled
SeeAlso: AX=000Eh,AX=0027h,AX=0091h,AX=0093h,AX=0094h,AX=0095h

Format of FGDRIVER POLYFILL variable pointer record:
Offset	Size	Description	(Table 2670)
 00h	WORD	segment of vertex array (see #2672)
 02h	WORD	offset of vertex array
 04h	WORD	segment of work array
 06h	WORD	offset of work array
SeeAlso: #2671
--------V-620093-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
	AX = 0093h
	CX = number of vertices in polygon
	ES:BX -> variable pointer record (see #2671)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
SeeAlso: AX=0091h,AX=0092h,AX=0094h,AX=0095h

Format of FGDRIVER POLYGON variable pointer record:
Offset	Size	Description	(Table 2671)
 00h	WORD	segment of WORD array containing vertex columns
 02h	WORD	offset of WORD array containing vertex columns
 04h	WORD	segment of WORD array containing vertex rows
 06h	WORD	offset of WORD array containing vertex rows
SeeAlso: #2670
--------V-620094-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POLYLINE" - DRAW AN UNFILLED POLYGON
	AX = 0094h
	CX = number of vertices in polygon
	ES:BX -> vertex array (see #2672)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function is equivalent to "FG_POLYGON", but uses only a single
	  array to define the vertices
	This call is ignored in text modes
SeeAlso: AX=008Fh,AX=0092h,AX=0093h,AX=0095h

Format of FGDRIVER POLYFILL/POLYLINE vertex array element:
Offset	Size	Description	(Table 2672)
 00h	WORD	column
 02h	WORD	row
SeeAlso: #2671
--------V-620095-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POLYOFF" - DEFINE POLYGON DRAWING OFFSET
	AX = 0095h
	BX = horizontal offset (default 0)
	CX = vertical offset (default 0)
Desc:	define the offsets applied to all vertices of polygons drawn with
	  "FG_POLYFILL" or "FG_POLYLINE"
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0092h,AX=0094h
--------V-620096-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PRINT" - DISPLAY STRING OF HARDWARE CHARACTERS
	AX = 0096h
	CX = length of string
	ES:BX -> string to display
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The string is displayed in the current color, and the graphics cursor
	  is updated to be just to the right of the last displayed character
	This function is ignored in text modes
SeeAlso: AX=000Ch,AX=0037h,AX=0065h,AX=0097h
--------V-620097-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PRINTC" - DISPLAY STRING OF HW CHARS (CLIPPED)
	AX = 0097h
	CX = length of string
	ES:BX -> string to display
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The string is displayed in the current color, and the graphics cursor
	  is updated to be just to the right of the last displayed character;
	  only the portion of the string that lies within the current clipping
	  area is displayed
	This function is ignored in text modes
SeeAlso: AX=0096h
--------V-620098-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PUTBLOCK" - RESTORE RECTANGLE OF DISPLAY
	AX = 0098h
	ES:BX -> buffer containing previously-saved image
	CX = left edge
	DX = right edge
	SI = top edge
	DI = bottom edge
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	In text modes, coordinates are character positions; in graphics modes,
	  they are defined in screen space, and the left and right edges are
	  adjusted to a byte boundary if necessary
SeeAlso: AX=003Ch,AX=0099h
--------V-620099-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PUTIMAGE" - DISPLAY MODE-SPECIFIC BITMAP IMAGE
	AX = 0099h
	ES:BX -> buffer containing mode-specific bitmap
	CX = width in bytes
	DX = height in pixel rows
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The bitmap is displayed with its lower left corner at the graphics
	  cursor position; color 0 is NOT treated as transparent
SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=0098h
--------V-62009A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
	AX = 009Ah
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call has no effect if there is no continuous sound playing
SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00DCh
--------V-62009B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
	AX = 009Bh
	BX = left edge column
	CX = right edge column
	DX = top edge row
	SI = bottom edge row
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0006h,AX=0012h,AX=0023h,AX=003Ch
--------V-62009C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
	AX = 009Ch
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in graphics modes
	The screen attributes are only restored if ANSI.SYS is loaded
SeeAlso: AX=0028h,AX=00B0h
--------V-62009D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
	AX = 009Dh
	BX = new page width in pixels
	CX = new page height in pixels
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The visible page must be set to 0000h before making this call
	The mouse, joysticks, expanded memory, and extended memory must be
	  reinitialized after this call
SeeAlso: AX=0084h,AX=00ACh
--------V-62009E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
	AX = 009Eh
	BX = left edge column
	CX = right edge column
	DX = top edge row
	SI = bottom edge row
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The left and right edges are adjusted to byte boundaries if necessary
SeeAlso: AX=00A2h,AX=00C6h
--------V-62009F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
	AX = 009Fh
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00BDh,AX=00C0h
--------V-6200A0-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
	AX = 00A0h
	ES:BX -> mode-specific bitmap
	CX = width of bitmap in bytes
	DX = height of bitmap in pixel rows
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
	The image is drawn with its lower left corner at the current graphics
	  cursor position
SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=00A1h,AX=00A9h,AX=00B9h
--------V-6200A1-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
	AX = 00A1h
	ES:BX -> array containing image stored as a masking map (see #2649)
	CX = number of pixel runs in masking map
	DX = width of masking map in pixels
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes and in native EGA and VGA graphics
	  modes
	The image is drawn with its lower left corner at the current graphics
	  cursor position
SeeAlso: AX=0010h,AX=001Fh,AX=0034h,AX=00A0h,AX=00A9h,AX=00C5h
--------V-6200A2-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
	AX = 00A2h
	BX = left edge column
	CX = right edge column
	DX = top edge row
	SI = bottom edge row
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The left and right edges are adjusted to byte boundaries if necessary
SeeAlso: AX=009Eh,AX=00C6h
--------V-6200A3-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SCALE" - SCALE BITMAP
	AX = 00A3h
	ES:BX -> variable pointer record (see #2673)
	CX = width of source bitmap in pixels (0 < width <= 1024)
	DX = height of source bitmap in pixels (0 < height <= 1024)
	SI = desired width of scaled bitmap (0 < width <= 1024)
	DI = desired height of scaled bitmap (0 < height <= 1024)
Return: nothing
SeeAlso: AX=00B7h

Format of FGDRIVER SCALE variable pointer record:
Offset	Size	Description	(Table 2673)
 00h	WORD	segment of source bitmap (one pixel per byte)
 02h	WORD	offset of source bitmap
 04h	WORD	segment of buffer for resulting scaled bitmap
 06h	WORD	offset of buffer for resulting scaled bitmap
--------V-6200A4-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
	AX = 00A4h
Return: AX = ScrollLock state (0000h off, 0001h on)
Program: FGDRIVER is the external video driver for the shareware
	  Fastgraph/Light by Ted Gruber Software
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=000Ah,AX=0082h,AX=00A8h,AX=00B1h
--------V-6200A5-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
	AX = 00A5h
	BX = left edge column
	CX = right edge column
	DX = top edge row
	SI = bottom edge row
	DI = number of pixels by which to scroll (positive scrolls up,
	      negative scrolls down)
	ES = type of scroll
	    0000h circular (rows scrolled off are copied to vacated rows)
	    else vacated rows are filled with the current color
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	In graphics modes, the left and right edges are adjusted to byte
	  boundaries if necessary
	Circular scrolling uses part of the hidden page as a workspace
SeeAlso: AX=0088h,AX=00B2h
--------V-6200A6-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
	AX = 00A6h
	BX = foreground
	CX = background
	DX = blink (0000h nonblinking, 0001h blink)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in graphics modes
SeeAlso: AX=000Bh,AX=003Ah,AX=0048h
--------V-6200A7-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETBANKS" - SET SVGA READ AND WRITE BANKS
	AX = 00A7h
	BX = memory bank from which to read (FFFFh leave unchanged)
	CX = memory bank to which to write (FFFFh leave unchanged)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=003Bh
--------V-6200A8-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
	AX = 00A8h
	BX = new state (0000h off, 0001h on)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=000Ah,AX=0082h,AX=00A4h,AX=00B1h
--------V-6200A9-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETCLIP" - SET CLIPPING REGION
	AX = 00A9h
	BX = left edge of clipping region
	CX = right edge of clipping region
	DX = top edge of clipping region
	SI = bottom edge of clipping region
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0010h,AX=001Fh,AX=0034h,AX=003Eh,AX=00A1h,AX=00C5h
--------V-6200AA-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETCOLOR" - SET CURRENT COLOR
	AX = 00AAh
	BX = new color index (or text attribute in text modes)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0018h,AX=0040h,AX=0045h
--------V-6200AB-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
	AX = 00ABh
	CX = number of DAC registers to set (0001h to 0100h)
	DX = starting DAC register number (0000h to 00FFh)
	ES:BX -> buffer containing DAC red/green/blue triples
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The register number wraps back to zero after reaching FFh
	This call has no effect in text modes or graphics modes below 11h
SeeAlso: AX=0041h,AX=004Eh,AX=0086h,INT 10/AX=1012h
--------V-6200AC-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETENTRY" - SET TYPE AND ADDRESS OF VIDEO PAGE
	AX = 00ACh
	BX = page number (00h-3Fh)
	CX = page address
	DX = page type (see #2658 at AX=0042h)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0038h,AX=0042h,AX=00B0h
--------V-6200AD-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
	AX = 00ADh
	BX = operation
	    0000h replacement
	    0001h AND
	    0002h OR
	    0003h XOR
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function is only available in native EGA/VGA graphics modes
	  (0Dh to 12h)
SeeAlso: AX=001Eh,AX=008Fh
--------V-6200AE-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
	AX = 00AEh
	BX = new hidden page (0000h to 003Fh)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The specified page must be a physical page or a virtual page
SeeAlso: AX=0043h,AX=00B2h,AX=00B6h
--------V-6200AF-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
	AX = 00AFh
	BX = new screen size (25, 43, 50)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0047h
--------V-6200B0-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
	AX = 00B0h
	BX = new video mode or FFFFh for current mode (see #2674)
	ES:DX -> WORD ???
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call resets the active video page to page 0000h, the clipping
	  region to the entire screen, text rows to 25, etc.
SeeAlso: AX=004Bh,INT 10/AH=00h

(Table 2674)
Values for FGDRIVER video mode:
 00h-07h standard BIOS modes
 09h	PCjr/Tandy1000 320x200x16
 0Bh	Hercules graphics 720x348
 0Ch	Hercules graphics 320x200
 0Dh-13h standard BIOS modes
 14h	VGA graphics 320x200x256
 15h	VGA graphics 320x400x256
 16h	VGA graphics 320x240x256
 17h	VGA graphics 320x480x256
 18h	SVGA graphics 640x400x256
 19h	SVGA graphics 640x480x256
 1Ah	SVGA graphics 800x600x256
 1Bh	SVGA graphics 1024x768x256
 1Ch	SVGA graphics 800x600x16
 1Dh	SVGA graphics 1024x768x16
--------V-6200B1-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
	AX = 00B1h
	BX = new state (0000h off, 0001h on)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=000Ah,AX=0082h,AX=00A4h,AX=00A8h
--------V-6200B2-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
	AX = 00B2h
	BX = new video page (0000h to 003Fh)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The specified page must be a physical or virtual page
SeeAlso: AX=0039h,AX=0042h,AX=0043h,AX=0050h,AX=0088h
--------V-6200B3-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
	AX = 00B3h
	BX = palette or DAC register number
	CX = red color component
	DX = green component
	SI = blue component
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The register number may be negative for Tandy, PCjr, and 200-line
	  EGA graphics modes to specify an intense color
	This call has no effect in text, CGA graphics, and Hercules graphics
	  modes
SeeAlso: AX=004Eh
--------V-6200B4-----------------------------
INT 62 u - FGDRIVER v4.02 - UNUSED
	AX = 00B4h
Return: AX = 0000h
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
--------V-6200B5-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETVIEW" - DEFINE VIEWPORT
	AX = 00B5h
	ES:BX -> variable record (see #2675)
	CX = viewport's top edge in screen space
	DX = viewport's bottom edge in screen space
Return: nothing
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=004Fh

Format of FGDRIVER SETVIEW variable record:
Offset	Size	Description	(Table 2675)
 00h	WORD	viewport's left edge in viewport units
 02h	WORD	viewport's right edge in viewport units
 04h	WORD	viewport's top edge in viewport units
 06h	WORD	viewport's bottom edge in viewport units
 08h	WORD	viewport's left edge in screen space
 0Ah	WORD	viewport's right edge in screen space
--------V-6200B6-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
	AX = 00B6h
	BX = new video page (0000h to 003Fh)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The specified page must be a physical or virtual page
SeeAlso: AX=0043h,AX=00AEh,AX=00B2h
--------V-6200B7-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SHEAR" - SHEAR UNPACKED BITMAP
	AX = 00B7h
	ES:BX -> variable pointer record (see #2676)
	CX = bitmap width (0 < width <= 1024)
	DX = bitmap height (0 < height <= 1024)
	SI = size of resulting image (width for horiz. shear, height for vert.)
	DI = shear type
	    0000h horizontal shear to left
	    0001h horizontal shear to right
	    0002h vertical shear to left (left edge stretched up)
	    0003h vertical shear to right (right edge stretched up)
Return: nothing
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=00A3h

Format of FGDRIVER SHEAR variable pointer record:
Offset	Size	Description	(Table 2676)
 00h	WORD	segment of source bitmap
 02h	WORD	offset of source bitmap
 04h	WORD	segment of buffer for resulting bitmap
 06h	WORD	offset of buffer for resulting bitmap
--------V-6200B8-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SHOWFLIC" - DISPLAY IMAGE FROM FLI/FLC FILE
	AX = 00B8h
	ES:BX -> ASCIZ filename for FLI/FLC file
	CX = number of times to display image file (0000h = continuously)
	DX = control flags (see #2653 at AX=0031h)
Return: AX = status
	    0000h successful
	    0001h file not found
	    0002h not a valid FLI/FLC file
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	the FLI/FLC display may be stopped by the user by pressing Esc
SeeAlso: AX=0030h,AX=0031h,AX=00B9h
--------V-6200B9-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SHOWPCX" - DISPLAY IMAGE FROM PCX FILE
	AX = 00B9h
	ES:BX -> ASCIZ filename of PCX image
	CX = flags (see #2677)
Return: AX = status
	    0000h success
	    0001h file not found
	    0002h not a PCX file
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function is ignored in text modes and Hercules low-res graphics
SeeAlso: AX=005Bh,AX=0060h"1.10",AX=006Ch,AX=006Dh,AX=006Eh,AX=00B8h,AX=00BAh
SeeAlso: AX=00BBh

Bitfields for FGDRIVER flags:
Bit(s)	Description	(Table 2677)
 0	use current palette rather than PCX file's palette
 1	display image at cursor position instead of position in PCX header
 2-15	reserved
--------V-6200BA-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SHOWPPR" - DISPLAY IMAGE FROM PPR FILE
	AX = 00BAh
	ES:BX -> ASCIZ filename of packed pixel run image
	CX = width in pixels (nonzero)
Return: AX = status
	    0000h successful
	    0001h file not found
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The image is displayed with its lower left corner at the current
	  graphics cursor position
	This function is ignored in text modes and 256-color graphics modes
SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BBh
--------V-6200BB-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SHOWSPR" - DISPLAY IMAGE FROM SPR FILE
	AX = 00BBh
	ES:BX -> ASCIZ filename of standard pixel run image
	CX = width in pixels (nonzero)
Return: AX = status
	    0000h successful
	    0001h file not found
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The image is displayed with its lower left corner at the current
	  graphics cursor position
	This function is ignored in text modes
SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BAh
--------V-6200BC-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
	AX = 00BCh
	BX = frequency in Hertz (18-32767)
	CX = duration in clock ticks (0000h or negative for continuous sound)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
	  AX=00AAh) is already in progress
SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00C0h,AX=00DBh
--------V-6200BD-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
	AX = 00BDh
	CX = number of times to cycle through sound list
	ES:BX -> sounds array (see #2678)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
	  AX=00AAh) is already in progress
SeeAlso: AX=0059h,AX=0081h,AX=00BCh,AX=00C0h,AX=00DCh

Format of FGDRIVER sounds array element:
Offset	Size	Description	(Table 2678)
 00h	WORD	frequency of sound in Hertz (0000h ends array)
 02h	WORD	duration of sound in clock ticks
--------V-6200BE-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SPLIT" - ENABLE/DISABLE SPLIT SCREEN ENVIRONMNT
	AX = 00BEh
	BX = beginning row for bottom half of split-screen
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
--------V-6200BF-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
	AX = 00BFh
	BX = duration in processor-dependent delay units (see AX=0070h)
Return: after delay elapses
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0070h,INT 2F/AX=1224h
--------V-6200C0-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
	AX = 00C0h
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call has no effect if there is no asynchronous sound in progress
	The program must not exit while sound is suspended
SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00C0h,AX=00DBh
--------V-6200C1-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SVGAINIT" - INITIALIZE FASTGRAPH SVGA KERNEL
	AX = 00C1h
	BX = method (see #2679)
Return: AX = status
	    0000h no VESA BIOS or supported SVGA chipset
	    0001h using VESA BIOS
	    0002h-0016h specific chipset being used (same as "method" below)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function must be called before attempting to set SVGA graphics
	  modes (18h to 1Dh) or using "FG_BESTMODE", "FG_TESTMODE", or
	  "FG_MEMORY"
SeeAlso: AX=0025h,AX=00C2h,AX=00C3h

(Table 2679)
Values for FGDRIVER SVGA method:
 0000h	autodetect, give chipset-specific code priority over VESA
 0001h	autodetect, give VESA priority over chipset-specific code
 0002h	Ahead type "A"
 0003h	Ahead type "B"
 0004h	ATI 18800
 0005h	ATI 18800-1
 0006h	ATI 28800
 0007h	Chips & Technologies 82c451/455/456
 0008h	C&T 82c452
 0009h	C&T 82c453
 000Ah	Genoa 6000 series
 000Bh	Oak OTI-067
 000Ch	Paradise PVGA1a
 000Dh	Paradise WD90C00/WD90C10
 000Eh	Paradise WD90C11/WD90C30/WD90C31
 000Fh	Trident 8800
 0010h	Trident 8900
 0011h	Tseng ET3000
 0012h	Tseng ET4000
 0013h	Video7
 0014h	Cirrus Logic 5400 series
 0015h	S3
 0016h	Trident 8900B/8900C/9000
--------V-6200C2-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SVGASTAT" - GET SVGA CHIPSET INFORMATION
	AX = 00C2h
Return: AX = chipset information (see #2680)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0025h,AX=00C1h,AX=00C3h

Bitfields for FGDRIVER chipset information:
Bit(s)	Description	(Table 2680)
 0	SVGA kernel initialized
 1	VESA support enabled
 2	extended video pages available in modes 13-23
 3	SVGA chipset has separate read and write banks
 4-15	reserved (0)
--------V-6200C3-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SVGAVER" - GET FASTGRAPH SVGA KERNEL VERSION
	AX = 00C3h
	ES:BX -> variable pointer record (see #2681)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00C1h,AX=00C2h

Format of FGDRIVER variable pointer record:
Offset	Size	Description	(Table 2681)
 00h	WORD	segment of WORD buffer for major version
 02h	WORD	offset of WORD buffer for major version
 04h	WORD	segment of WORD buffer for minor version (hundredths)
 06h	WORD	offset of WORD buffer for minor version
--------V-6200C4-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TCDEFINE" - DEFINE TRANSPARENCY OF COLOR INDEX
	AX = 00C4h
	BX = color index
	CX = transparency (00h opaque, other transparent)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function is ignored in text modes
SeeAlso: AX=00C5h,AX=00C6h
--------V-6200C5-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TCMASK" - SET TRANSPARENT COLORS
	AX = 00C5h
	BX = colors to consider transparent (bit 0 = color 0, etc)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This call is ignored in text modes
	The specified colors are considered transparent by "FG_TCXFER"
SeeAlso: AX=00C4h,AX=00C6h
--------V-6200C6-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
	AX = 00C6h
	CX = source video page
	DX = destination video page
	ES:BX -> copy record (see #2682)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	Pixels which are in any of the colors defined as transparent with
	  "FG_TCMASK" (see AX=00C5h) are left unchanged in the destination
	  region
	The source and destination regions must not overlap if they are located
	  on the same page
	This call is ignored in text modes
SeeAlso: AX=00C4h,AX=00C5h,AX=00CAh
--------V-6200C7-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
	AX = 00C7h
	BX = desired video mode (00h-17h, also 18h-1Dh after "FG_SVGAINIT")
	CX = required number of video pages (ignore memory size if <= 0)
Return: AX = status
	    0000h mode not available with requested number of pages
	    0001h mode is available
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0005h,AX=00B0h
--------V-6200C8-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
	AX = 00C8h
	CX = length of string
	ES:BX -> string
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The string is displayed starting at the text cursor position using the
	  current text attribute (text modes) or color index (graphics modes)
	The text cursor position is updated after this call
SeeAlso: AX=000Ch,AX=0096h,AX=00C9h
--------V-6200C9-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TEXTC" - DISPLAY STRING OF CHARACTERS (CLIPPED)
	AX = 00C9h
	CX = length of string
	ES:BX -> string
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	The string is displayed starting at the text cursor position using the
	  current text attribute (text modes) or color index (graphics modes),
	  showing only the portion within the current clipping window
	The text cursor position is updated after this call
SeeAlso: AX=00C8h
--------V-6200CA-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TRANSFER" - COPY REGION
	AX = 00CAh
	CX = source video page
	DX = destination video page
	ES:BX -> copy record (see #2682)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	The source and destination regions must not overlap if they are located
	  on the same page
SeeAlso: AX=009Eh,AX=00A2h,AX=00A5h,AX=00C6h

Format of FGDRIVER copy record:
Offset	Size	Description	(Table 2682)
 00h	WORD	left edge column of source region
 02h	WORD	right edge column of source region
 04h	WORD	top edge row of source region
 06h	WORD	bottom edge row of source region
 08h	WORD	left edge of destination
 0Ah	WORD	bottom edge of destination
--------V-6200CB-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_UNPACK" - EXPAND MODE-SPECIFIC BITMAP
	AX = 00CBh
	ES:BX -> variable pointer record (see #2683)
	CX = size of source bitmap in bytes
Return: result buffer filled
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=0083h

Format of FGDRIVER UNPACK variable pointer record:
Offset	Size	Description	(Table 2683)
 00h	WORD	segment of source bitmap
 02h	WORD	offset of source bitmap
 04h	WORD	segment of buffer for resulting bitmap
 06h	WORD	offset of buffer for resulting bitmap
--------V-6200CC-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBADDR" - GET ADDRESS OF VIRTUAL BUFFER
	AX = 00CCh
	BX = virtual buffer handle (0000h-001Fh)
Return: DX:AX -> virtual buffer
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=00CDh,AX=00CEh,AX=00CFh,AX=00D3h
--------V-6200CD-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBALLOC" - CREATE VIRTUAL BUFFER
	AX = 00CDh
	BX = width of virtual buffer in pixels
	CX = height in pixels
Return: AX = handle for virtual buffer, or
	    FFFEh out of memory
	    FFFFh virtual buffer table full
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=00CCh,AX=00CEh,AX=00D0h,AX=00D1h,AX=00D2h,AX=00D4h
--------V-6200CE-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBCLOSE" - CLOSE ACTIVE VIRTUAL BUFFER
	AX = 00CEh
Desc:	close the active virtual buffer and direct further graphics to the
	  active video page
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=00CCh,AX=00D1h,AX=00D4h,AX=00D5h,AX=00D9h
--------V-6200CF-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBCOPY" - COPY RECT BETWEEN VIRTUAL BUFFERS
	AX = 00CFh
	ES:BX -> variable record (see #2684)
	CX = handle for source virtual buffer
	DX = handle for destination virtual buffer
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	if the destination buffer is the same as the source buffer, the regions
	  must not overlap
SeeAlso: AX=00D0h,AX=00D1h,AX=00D4h,AX=00D6h,AX=00D7h

Format of FGDRIVER VBCOPY variable record:
Offset	Size	Description	(Table 2684)
 00h	WORD	source region's left edge
 02h	WORD	source region's right edge
 04h	WORD	source region's top edge
 06h	WORD	source region's bottom edge
 08h	WORD	X coordinate of destination's upper left corner
 0Ah	WORD	Y coordinate of destination's upper left corner
--------V-6200D0-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBCUT" - COPY RECT FROM VIDEO TO VIRTUAL BUFFER
	AX = 00D0h
	BX = source region's left edge
	CX = source region's right edge
	DX = source region's top edge
	SI = source region's bottom edge
	DI = X coordinate of destination's upper left corner
	ES = Y coordinate of destination's upper left corner
Desc:	copy a rectangle from the active video page to the active virtual
	  buffer
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=00CDh,AX=00CFh,AX=00D4h,AX=00D6h
--------V-6200D1-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBDEFINE" - CREATE VIRTUAL BUFFER
	AX = 00D1h
	ES:BX -> memory block for virtual buffer
	CX = buffer width in pixels
	DX = buffer height in pixels
Return: AX = virtual buffer handle
	    FFFFh on error
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	the application-provided buffer must be large enough to hold CX*DX
	  bytes
SeeAlso: AX=00CCh,AX=00CDh,AX=00CEh,AX=00D2h,AX=00D4h,AX=00D5h
--------V-6200D2-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBFREE" - RELEASE VIRTUAL BUFFER
	AX = 00D2h
	BX = virtual buffer handle
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	this function should be used only for buffers created with FG_VBALLOC
SeeAlso: AX=00CDh,AX=00D4h,AX=00D5h
--------V-6200D3-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBHANDLE" - GET ACTIVE VIRTUAL BUFFER'S HANDLE
	AX = 00D3h
Return: AX = handle for active virtual buffer
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=00CCh,AX=00D4h
--------V-6200D4-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBINIT" - INITIALIZE VIRTUAL BUFFER ENVIRONMENT
	AX = 00D4h
Return: nothing
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	this function must be called before any other virtual buffer functions
	  are used
SeeAlso: AX=00CDh,AX=00D5h
--------V-6200D5-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBOPEN" - MAKE VIRTUAL BUFFER ACTIVE
	AX = 00D5h
	BX = virtual buffer handle
Return: AX = status
	    0000h successful
	    FFFEh no buffer defined for specified handle
	    FFFFh invalid buffer handle
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=00CDh,AX=00CEh,AX=00D1h,AX=00D4h,AX=00D9h
--------V-6200D6-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBPASTE" - COPY RECT FROM VIRTUAL BUF TO VIDEO
	AX = 00D6h
	BX = source region's left edge
	CX = source region's right edge
	DX = source region's top edge
	SI = source region's bottom edge
	DI = X coordinate of destination's upper left corner
	ES = Y coordinate of destination's upper left corner
Desc:	copy a rectangle from the active virtual buffer to the active video
	  page
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=00CFh,AX=00D0h,AX=00D4h,AX=00D7h
--------V-6200D7-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBTCCOPY" - COPY RECTANGLE BETWEEN VIRTUAL BUFS
	AX = 00D7h
	ES:BX -> variable record (see #2685)
	CX = source virtual buffer's handle
	DX = destination virtual buffer's handle
Desc:	copy rectangle from one virtual buffer to another with transparent
	  colors
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	if the destination buffer is the same as the source buffer, the regions
	  must not overlap
SeeAlso: AX=00CFh,AX=00D0h,AX=00D6h,AX=00D8h

Format of FGDRIVER VBTCCOPY variable record:
Offset	Size	Description	(Table 2685)
 00h	WORD	source region's left edge
 02h	WORD	source region's right edge
 04h	WORD	source region's top edge
 06h	WORD	source region's bottom edge
 08h	WORD	X coordinate of destination region's upper left corner
 0Ah	WORD	Y coordinate of destination region's upper left corner
--------V-6200D8-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBTCXFER" - COPY RECTANGLE TO ACTIVE VIDEO PAGE
	AX = 00D8h
	BX = source region's left edge
	CX = source region's right edge
	DX = source region's top edge
	SI = source region's bottom edge
	DI = X coordinate of destination's upper left corner
	ES = Y coordinate of destination's upper left corner
Desc:	copy a rectangle from the active virtual buffer to the active video
	  page, with transparent colors
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
SeeAlso: AX=00D6h,AX=00D7h
--------V-6200D9-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBUNDEF" - RELEASE HANDLE FOR VIRTUAL BUFFER
	AX = 00D9h
	BX = virtual buffer handle
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	the specified handle must not reference the currently-active virtual
	  buffer
SeeAlso: AX=00D1h,AX=00D5h
--------V-6200DA-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VGASTATE" - SAVE/RESTORE VGA CONTROLLER STATE
	AX = 00DAh
	BX = direction (0000h save, else restore)
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648)
	this function is only meaningful in modes 0Dh and above
--------V-6200DB-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VOICE" - START SOUND
	AX = 00DBh
	BX = channel on TI sound chip
	    1-3 = channels 1-3, 4 = channel 4 with periodic noise,
	    5 = channel 4 with white noise
	CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
	      2=2048 Hz for channels 4 and 5)
	DX = volume
	SI = duration in clock ticks (continuous if <= 0)
Program: FGDRIVER is the external video driver for the shareware
	  Fastgraph/Light by Ted Gruber Software
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function is only available on the PCjr and Tandy 1000 machines
SeeAlso: AX=0080h,AX=00BCh,AX=00DCh
--------V-6200DC-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
	AX = 00DCh
	ES:BX -> tone array (see #2686)
	CX = number of times to repeat tone array
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	This function is only available on the PCjr and Tandy 1000 machines
SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DBh

Format of FGDRIVER tone array element:
Offset	Size	Description	(Table 2686)
 00h	WORD	channel number (0000h terminates array)
 02h	WORD	frequency
 04h	WORD	volume
 06h	WORD	duration in 1/72.8 seconds
--------V-6200DD-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
	AX = 00DDh
	BX = duration in clock ticks
Return: after delay elapses
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00BFh,INT 1A/AX=FF01h
--------V-6200DE-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
	AX = 00DEh
Return: after next key pressed
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=000Ah,AX=0046h,AX=0063h,AX=0069h,INT 16/AH=00h
--------V-6200DF-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_WAITVR" - ENABLE/DISABLE VERTICAL RETRACE WAIT
	AX = 00DFh
	BX = new state (0000h disabled, 0001h enabled)
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
--------V-6200E0-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_WHERE" - GET CURRENT CURSOR POSITION
	AX = 00E0h
	ES:BX -> variable pointers (see #2687)
Return: indicated variables filled with cursor row and column for active
	  display
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=0054h,AX=0058h,AX=006Bh,AX=007Eh

Format of FGDRIVER variable pointers:
Offset	Size	Description	(Table 2687)
 00h	WORD	segment of WORD buffer for cursor row
 02h	WORD	offset of WORD buffer for cursor row
 04h	WORD	segment WORD buffer for cursor column
 06h	WORD	offset WORD buffer for cursor column
--------V-6200E1-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
	AX = 00E1h
	BX = screen space column
Return: AX = character space column containing specified coordinate
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00E2h,AX=00E4h
--------V-6200E2-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
	AX = 00E2h
	BX = character space column
Return: AX = screen space column of leftmost pixel in specified character col
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00E2h,AX=00E5h
--------V-6200E3-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_XVIEW" - CONVERT VIEWPORT COORDINATE
	AX = 00E3h
	BX = horizontal viewport coordinate
Return: AX = screen space X coordinate corresponding to supplied coordinate
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	if no viewport has been defined, the returned coordinate will be the
	  same as the viewport coordinate
SeeAlso: AX=00E2h,AX=00E6h
--------V-6200E4-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
	AX = 00E4h
	BX = screen space row
Return: AX = character space row containing specified coordinate
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00E1h,AX=00E5h
--------V-6200E5-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
	AX = 00E5h
	BX = character space row
Return: AX = screen space row of topmost pixel in specified character row
Note:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
SeeAlso: AX=00E2h,AX=00E4h,AX=00E6h
--------V-6200E6-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_YVIEW" - TRANSLATE VERTICAL VIEWPORT COORDINATE
	AX = 00E6h
	BX = viewport Y coordinate
Return: AX = screen space row for viewport coordinate
Program: FGDRIVER is the external video driver for the shareware
	  Fastgraph/Light by Ted Gruber Software
Notes:	the FGDRIVER functions are rearranged with each major release, but
	  their parameters do not change (see #2648 at AX=0000h)
	if no viewport has been defined, the returned coordinate will be the
	  same as the viewport coordinate
SeeAlso: AX=00E3h,AX=00E5h
--------T-6201-------------------------------
INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
	AH = 01h
Program: Cswitch is a set of multitasking functions by Herb Rose
SeeAlso: AH=05h"Cswitch",AH=06h"Cswitch",INT 15/AX=1000h,INT 2F/AX=1680h
--------N-6201-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
	AH = 01h
Return: CF clear if successful
	CF set on error
	    AL = error code
Range:	INT 4C to INT FB, selected by configuration
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------T-6202-------------------------------
INT 62 - Cswitch - WAIT FOR SEMAPHORE
	AH = 02h
	DX = semaphore number (0-63)
Return: AX = FFFFh bad semaphore number
	     else  success
SeeAlso: AH=03h"Cswitch",AH=04h"Cswitch"
--------N-6202-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - INITIALIZE
	AH = 02h
Return: CF clear if successful
	CF set on error
	    AL = error code
SeeAlso: AH=00h"ETHDEV",AH=03h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
--------T-6203-------------------------------
INT 62 - Cswitch - CHECK SEMAPHORE
	AH = 03h
	DX = semaphore number (0-63)
Return: AX = status
	    FFFFh not owned
	    else  owned
SeeAlso: AH=02h,AH=04h
--------N-6203-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET REAL IP ADDRESS
	AH = 03h
	DS:SI -> DWORD buffer for IP address
Return: CF clear if successful
	CF set on error
	    AL = error code
Range:	INT 4C to INT FB, selected by configuration
Note:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------T-6204-------------------------------
INT 62 - Cswitch - TRIGGER SEMAPHORE
	AH = 04h
	DX = semaphore number (0-63)
Return: AX = status
	    FFFFh bad semaphore number
	    else  success
SeeAlso: AH=02h"Cswitch",AH=03h"Cswitch"
--------N-6204-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
	AH = 04h
	BX = ???
	ES:SI -> FAR routine for ???
Return: CF clear if successful
	CF set on error
	    AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------T-6205-------------------------------
INT 62 - Cswitch - SLEEP
	AH = 05h
	BX = seconds to sleep
SeeAlso: AH=01h"Cswitch",AH=06h"Cswitch",AH=08h"Cswitch"
--------N-6205-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
	AH = 05h
	???
Return: CF clear if successful
	CF set on error
	    AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------T-6206-------------------------------
INT 62 - Cswitch - SUSPEND
	AH = 06h
SeeAlso: AH=05h"Cswitch",AH=08h"Cswitch"
--------N-6206-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
	AH = 06h
	???
Return: CF clear if successful
	CF set on error
	    AL = error code
Range:	INT 4C to INT FB, selected by configuration
Note:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------T-6207-------------------------------
INT 62 - Cswitch - SPAWN
	AH = 07h
	ES:BX -> function address to start executing at
	CX = priority (1-10)
Return: AX = result/status
	    FFFDh  no free memory control blocks
	    FFFEh  no free task control blocks
	    FFFFh  not enough memory to create new task stack
	    >0	   the tcb number of the new task, indicating no error
SeeAlso: AH=0Fh"Cswitch",AH=10h"Cswitch"
--------N-6207-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
	AH = 07h
	DS:SI -> ???
Return: CF clear if successful
	CF set on error
	    AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------T-6208-------------------------------
INT 62 - Cswitch - WAKE UP TASK
	AH = 08h
	BX = tcb identifier
SeeAlso: AH=05h,AH=06h
--------N-6208-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
	AH = 08h
	CX = ???
	ES:SI -> ??? buffer (see #2688)
Return: CF clear if successful
	CF set on error
	    AL = error code
Range:	INT 4C to INT FB, selected by configuration
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"

Format of BW-TCP ??? buffer:
Offset	Size	Description	(Table 2688)
 00h  6 BYTEs	hardware address???
 06h  6 BYTEs	???
 0Ch	WORD	???
 0Eh	WORD	???
----------6208--CXFFFE-----------------------
INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
	AH = 08h
	CX = FFFEh
	DX = FFFFh
Return: AX = PSP address of resident DBLIBRARY
Note:	this call does not free the memory allocated to the TSR; the calling
	  code must do the deallocation.
SeeAlso: INT 62"DBLIBRARY"
--------T-6209-------------------------------
INT 62 - Cswitch - SET PRIORITY
	AH = 09h
	BX = new base priority (1-10)
Note:	the lower the priority is numerically, the more often the task will run
--------N-6209-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - HOOK TIMER INTERRUPT
	AH = 09h
Return: CF clear if successful
	    AX = handler ID
	CF set on error
	    AL = error code
Range:	INT 4C to INT FB, selected by configuration
Note:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=0Ah"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
SeeAlso: INT 64"BW-NFS"
--------T-620A-------------------------------
INT 62 - Cswitch - TEST MESSAGE QUEUE
	AH = 0Ah
	DX = queue number (0-63)
Return: AX = result/message size
	    0000h nothing on queue
	    FFFFh bad queue number
	    else  number of bytes in first message in queue
SeeAlso: AH=0Bh"Cswitch",AH=0Ch"Cswitch"
--------N-620A-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - UNHOOK TIMER INTERRUPT
	AH = 0Ah
	DX = handler ID
Return: CF clear if successful
	CF set on error
	    AL = error code
SeeAlso: AH=09h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
SeeAlso: INT 64"BW-NFS"
--------T-620B-------------------------------
INT 62 - Cswitch - SEND MESSAGE
	AH = 0Bh
	CX = number of bytes to write
	DS:SI -> buffer
	DX = queue number (0-63)
Return: AX = result/message size
	    0000h no message was on queue
	    FFFEh triggered by something arriving, redo the call
	    FFFFh bad queue number
	    else  number of bytes in message
SeeAlso: AH=0Ah"Cswitch",AH=0Ch"Cswitch"
--------N-620B-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ADD ???
	AH = 0Bh
	AL = ???
	DX = ???
	BP = ???
	ES:SI -> ???
Return: CF clear if successful
	CF set on error
	    AL = error code
SeeAlso: AH=0Ch"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
SeeAlso: INT 64"BW-NFS"
--------T-620C-------------------------------
INT 62 - Cswitch - READ MESSAGE
	AH = 0Ch
	CX = number of bytes to read
	DS:SI -> buffer
	DX = queue number (0-63)
Return: AX = status
	    FFFFh bad queue number
	    else  number of bytes transferred
SeeAlso: AH=0Ah,AH=0Bh
--------N-620C-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - REMOVE ???
	AH = 0Ch
	DX = ???
	BP = ???
Return: CF clear if successful
	CF set on error
	    AL = error code
Range:	INT 4C to INT FB, selected by configuration
Note:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=0Bh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
SeeAlso: INT 64"BW-NFS"
--------T-620D-------------------------------
INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
	AH = 0Dh
SeeAlso: AH=0Eh"Cswitch"
--------N-620D-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
	AH = 0Dh
Return: CF clear if successful
	CF set on error
	    AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------T-620E-------------------------------
INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
	AH = 0Eh
SeeAlso: AH=0Dh"Cswitch"
--------N-620E-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - BEGIN CRITICAL SECTION
	AH = 0Eh
Return: CF clear if successful
	CF set on error
	    AL = error code
SeeAlso: AH=0Fh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
--------T-620F-------------------------------
INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
	AH = 0Fh
	ES:BX -> command line
	CX = priority (1-10)
	DX = background flag (nonzero allows loading to EMS)
Return: AX = status
	    0000h task loader queue is full
	    0001h  no error
SeeAlso: AH=07h"Cswitch",AH=10h"Cswitch",AH=13h"Cswitch"
--------N-620F-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - END CRITICAL SECTION
	AH = 0Fh
Return: CF clear if successful
	CF set on error
	    AL = error code
Range:	INT 4C to INT FB, selected by configuration
Note:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=0Eh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
--------T-6210-------------------------------
INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
	AH = 10h
SeeAlso: AH=07h"Cswitch",AH=0Fh"Cswitch"
--------N-6210-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - QUERY CRITICAL SECTION
	AH = 10h
Return: CF clear if no critical section active
	CF set if in critical section
SeeAlso: AH=0Eh"ETHDEV",AH=0Fh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
--------T-6211-------------------------------
INT 62 - Cswitch - GET TCB INFORMATION
	AH = 11h
	ES:BX -> a pointer which will be set to the tcb address
Return: AX = tcb indentifier
SeeAlso: AH=12h
--------N-6211-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
	AH = 11h
	ES:SI -> ???
Return: CF clear
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------T-6212-------------------------------
INT 62 - Cswitch - GET TCB ADDRESS
	AH = 12h
	ES:BX -> a pointer which will be set to the tcb table address
Return: AX = tcb indentifier
SeeAlso: AH=11h"Cswitch"
--------N-6212-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET SOCKET NUMBER???
	AH = 12h
Return: CF clear if successful
	    AX = socket number??? (memory variable incremented after reading)
	CF set on error
	    AL = error code
Range:	INT 4C to INT FB, selected by configuration
Note:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------T-6213-------------------------------
INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
	AH = 13h
Return: AX = result
	    FFFCh no Memory Control Blocks available
	    FFFDh no TCBs available
	    FFFEh insufficient memory
	    FFFFh cannot open file
	    0000h load in progress (not done yet)
	    else  tcb indentifier
SeeAlso: AH=0Fh
--------N-6213-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
	AH = 13h
	CX = ???
Return: CF clear if successful
	    AL = 00h
	CF set on error
	    AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------N-6214-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
	AH = 14h
	ES:SI -> ???
Return: CF clear if successful
	    AL = 00h
	CF set on error
	    AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------N-6215-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET ???
	AH = 15h
Return: CF clear if successful
	    AX = ??? (destroyed???)
	CF set on error
	    AL = error code
Range:	INT 4C to INT FB, selected by configuration
Notes:	call this function after reading the "ETHDEV27" device
	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------N-6216-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
	AH = 16h
	???
Return: CF clear if successful
	CF set on error
	    AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------N-6217-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
	AH = 17h
	DX = segment of ???
Return: CF clear
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------N-6218-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ALLOCATE AND MAP EMS FOR DRIVER
	AH = 18h
Return: CF clear if successful
	CF set on error
	    AL = error code
Range:	INT 4C to INT FB, selected by configuration
Notes:	calls function 17h after EMS allocated and mapped
	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
--------R-6247-------------------------------
INT 62 - PC Tools v7 COMMUTE - ???
	AH = 47h
	AL = subfunction (00h-31h)
	???
	CF set
Return: ???
Program: COMMUTE is a remote-control program bundled with Central Point
	  Software's PC Tools
--------R-6248-------------------------------
INT 62 - PC Tools v7 COMMUTE - ???
	AH = 48h
	AL = ???
	???
	CF set
Return: ???
--------R-6249-------------------------------
INT 62 - PC Tools v7 COMMUTE - ???
	AH = 49h
	???
	CF set
Return: ???
Note:	may be the same as AH=4Ch
--------R-624A-------------------------------
INT 62 - PC Tools v7 COMMUTE - ???
	AH = 4Ah
	AL = subfunction (00h-46h)
	???
	CF set
Return: ???
--------R-624B--BX1234-----------------------
INT 62 - PC Tools v7 COMMUTE - ???
	AH = 4Bh
	BX = 1234h
	CX = 1234h
	ES = ???
	CF set
Return: ???
Program: COMMUTE is a remote-control program bundled with Central Point
	  Software's PC Tools
--------R-624C-------------------------------
INT 62 - PC Tools v7 COMMUTE - ???
	AH = 4Ch
	BL = subfunction
	    00h ???
	    02h ???
Return: CF clear if successful
	CF set on error
--------R-626262-----------------------------
INT 62 - PC Tools v7 COMMUTE - INSTALLATION CHECK
	AX = 6262h
	CF set
Return: AX = 0000h
	BX = segment of resident code's PSP
Program: COMMUTE is a remote-control program bundled with Central Point
	  Software's PC Tools
--------s-62C0-------------------------------
INT 62 U - GWBTSR - API
	AH = C0h
	AL = function
	    00h installation check
		Return: AX = 00FFh if installed
	    01h ???
Program: GWBTSR is a huge (48K) resident mixer controller for the Gateway 2000
	  sound card (OEM version of Aztech Sound Galaxy)
Index:	installation check;GWBTSR
--------N-62FE-------------------------------
INT 62 - BW-TCP - ETHDRV.SYS - MAP EMS PAGE FRAME
	AH = FEh
	AL = direction
	    00h map in driver's memory block
	    01h map out driver's memory block
Return: CF clear if successful
	CF set on error
	    AL = error code
Range:	INT 4C to INT FB, selected by configuration
Notes:	this function is supported by at least the SLIP and ODI versions of
	  ETHDEV.SYS
	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=00h"ETHDEV",INT 62/AH=18h"ETHDEV"
SeeAlso: INT 63"BW-TCP",INT 64/AH=FEh
--------*-63---------------------------------
INT 63 - reserved for user interrupt
--------d-63---------------------------------
INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
Desc:	this vector stores the last four bytes of the parameter table for
	  hard disk 0
SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
--------b-63---------------------------------
INT 63 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
Desc:	the low word of this vector contains the segment of the RAM data area
	  to be used by the expansion ROM at F400h:4000h, and the high word
	  contains the length of the data area; this segment and size are
	  both set to 0000h if no ROM is installed at F400h:4000h
SeeAlso: INT 60"TI Professional PC",INT 62"TI Professional"
SeeAlso: INT 64"TI Professional PC"
----------63---------------------------------
INT 63 - Oracle SQL Protected Mode Executive - ???
--------d-63---------------------------------
INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
Desc:	the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if
	  INT 13 has been moved there) and places the old value here
----------63---------------------------------
INT 63 - Kofax KF9X00 image manipulation card interface
--------Q-63---------------------------------
INT 63 - DESQview/X - SOCKET API
Notes:	parameters are passed by patching (!) data field immediately following
	  the entry point, as detailed below (see #2689); the preferred
	  method for calling the socket API is via INT 15/AX=DE2Eh
	the installation check consists of testing for the string "dvxunix"
	  (yes, lowercase) at offset 9 from the interrupt handler start
	  (see #2689)
SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
Index:	installation check;DESQview/X socket interface

Format of DESQview/X socket interrupt handler entry:
Offset	Size	Description	(Table 2689)
 00h  3 BYTEs	near jump or short jump + NOP to actual interrupt handler
 03h	WORD	offset from following pointer for initial top of local stack
 05h	DWORD	pointer to argument/stack block (see INT 15/AX=DE2Eh)
 09h  7 BYTEs	signature "dvxunix"
--------b-6300-------------------------------
INT 63 - HP 100LX - MAP HIGH MEMORY
	AH = 00h
	AL = physical page (00h seg C000, 01h seg C400h, ...)
	BX = zero-based logical page
	CX = page number
	DX = device ID (00h system ROM, 05h plugin, etc.)
Return: ???
SeeAlso: AH=01h
--------N-6300-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - SET IP ADDRESS???
	AH = 00h
	DS:BX -> DWORD containing IP address (big-endian)
Return: CF clear if successful
	CF set on error
	AX destroyed
Range:	INT 4D to INT FC, selected by configuration
Note:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
--------b-6301-------------------------------
INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
	AH = 01h
	AL = function (00h save, 01h restore)
	???
Return: ???
--------N-6301-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 01h
	ES:BX -> ???
	???
Return: ???
Range:	INT 4D to INT FC, selected by configuration
Note:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
--------N-6302-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 02h
	???
Return: ???
SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
--------N-6303-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - GET IP ADDRESS
	AH = 03h
	DS:SI -> buffer for DWORD IP address (big-endian)
Return: AX destroyed
	CF clear if successful
	CF set on error
Note:	this call may use ARP or RARP to determine the address
--------N-6304-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 04h
	???
Return: ???
--------N-6305-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 05h
	DS:BX -> ???
	ES:SI -> ???
Return: ???
Range:	INT 4D to INT FC, selected by configuration
--------N-6306-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 06h
	???
Return: ???
--------N-6307-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 07h
	???
Return: ???
--------N-6308-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - SET DEFAULT ??? HANDLER
	AH = 08h
	DS:BX -> DWORD containing IP address
Return: CF clear if successful
	CF set on error
	???
--------N-6309-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
	AH = 09h
	BL = handler type
	ES:SI -> FAR handler of specified type
Return: ???
SeeAlso: AH=0Ah,AH=0Dh
--------N-630A-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
	AH = 0Ah
	BL = handler type
Return: CF clear if successful
	CF set on error (no handler of specified type installed)
SeeAlso: AH=09h
--------N-630B-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 0Bh
	AL = ???
	DL = ???
	DS:BX -> ???
	ES:SI -> ???
Return: ???
--------N-630C-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 0Ch
	???
Return: ???
Range:	INT 4D to INT FC, selected by configuration
--------N-630D-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
	AH = 0Dh
	???
Return: ???
Note:	if not already installed, installs a type 06h handler with AH=09h
SeeAlso: AH=09h
--------N-630E-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
	AH = 0Eh
	???
Return: ???
SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
--------N-630F-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 0Fh
	AL = ???
	SI = ???
	DS:DI -> ???
	???
Return: ???
Range:	INT 4D to INT FC, selected by configuration
--------N-6310-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 10h
	DS:DI -> ???
	???
Return: ???
--------N-6311-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 11h
	???
Return: ???
--------N-6312-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
	AH = 12h
	DS:SI -> ???
	ES:BP -> ???
Return: ???
SeeAlso: INT 61/AH=23h
--------N-6313-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - NOP
	AH = 13h
Return: nothing
Range:	INT 4D to INT FC, selected by configuration
--------N-6314-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
	AH = 14h
	BX = network descriptor???
	DS:SI -> ???
	ES:BP -> ???
Return: ???
SeeAlso: INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
--------N-6315-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 15h
	DS:DI -> ???
	???
Return: ???
Range:	INT 4D to INT FC, selected by configuration
--------N-6316-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
	AH = 16h
	DS:DI -> ???
Return: ???
Note:	calls AH=17h after preprocessing
SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
--------N-6317-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 17h
	DS:DI -> ???
	???
Return: ???
Range:	INT 4D to INT FC, selected by configuration
SeeAlso: AH=18h
--------N-6318-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 18h
	DS:DI -> ???
	???
Return: ???
Note:	same as AH=17h, except performed with interrupts disabled
SeeAlso: AH=17h
--------N-6319-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
	AH = 19h
	DS:DI -> ???
	???
Return: BX = number of bytes NOT written
	???
Range:	INT 4D to INT FC, selected by configuration
Note:	calls AH=17h with interrupts disabled and ??? set to 01h
SeeAlso: AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
--------N-631A-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
	AH = 1Ah
	CX = maximum number of bytes to read
	ES:BP -> ???
	???
Return: CX = number of bytes actually read
	???
SeeAlso: AH=19h,INT 61/AH=1Bh"PC/TCP"
--------N-631B-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 1Bh
	CX = ???
	ES:BP -> ???
Return: DX = ???
	???
Range:	INT 4D to INT FC, selected by configuration
--------N-631C-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 1Ch
	DS:DI -> ???
	???
Return: ???
Note:	calls AH=17h with ???
SeeAlso: AH=17h
--------N-631D-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 1Dh
	???
Return: ???
Range:	INT 4D to INT FC, selected by configuration
--------N-631E-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 1Eh
	DS:BX -> DWORD containing IP address (big-endian)
	???
Return: CF clear if successful
	CF set on error
	???
--------N-631F-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - SET SOCKET ??? HANDLER
	AH = 1Fh
	BX = socket number
	ES:SI -> FAR function for ???
Return: CF clear if successful
	CF set on error (out of slots)
SeeAlso: AH=20h
--------N-6320-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - REMOVE SOCKET ??? HANDLER
	AH = 20h
	BX = socket number
Return: CF clear if successful
	CF set on error (not set)
Range:	INT 4D to INT FC, selected by configuration
SeeAlso: AH=1Fh
--------N-6321-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 21h
	ES:SI -> ???
Return: ???
SeeAlso: INT 61/AH=1Ch"PC/TCP"
--------N-6322-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
	AH = 22h
Return: CF clear
Range:	INT 4D to INT FC, selected by configuration
Note:	decrements a counter if not already zero, and calls AH=0Ah with BL=11h
	  if the counter reaches zero
--------N-6323-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 23h
	DS:BX -> ???
	ES:SI -> 6-byte buffer for ???
Return: CF clear if successful
	CF set on error
--------N-6324-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
	AH = 24h
Return: AX = socket number (0400h-FFFFh)
Range:	INT 4D to INT FC, selected by configuration
Note:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
SeeAlso: INT 62/AH=12h"ETHDEV",INT 64"BW-NFS"
--------N-6325-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
	AH = 25h
Return: CL:CH:DL:DH = caller's Internet address
SeeAlso: AH=26h,INT 61/AH=05h"PC/TCP"
--------N-6326-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
	AH = 26h
	CL:CH:DL:DH = Internet address
Return: nothing
Range:	INT 4D to INT FC, selected by configuration
Note:	this function sets a different variable than AH=25h returns
SeeAlso: AH=25h
--------N-6327-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - SET ???
	AH = 27h
	BX = ???
	ES:SI -> ???
Return: ???
--------N-6328-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 28h
	???
Return: ???
--------N-6329-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
	AH = 29h
	???
Return: ???
Range:	INT 4D to INT FC, selected by configuration
Note:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
--------*-64---------------------------------
INT 64 - reserved for user interrupt
--------d-64---------------------------------
INT 64 - Adaptec controllers - DRIVE 1 DATA
Desc:	this vector stores the first four bytes of the parameter table for
	  hard disk 1
Notes:	these vectors are used by the following Adaptec controllers:
	    ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
	these vectors are NOT used by the following Adaptec controllers:
	    ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
--------b-64---------------------------------
INT 64 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
Desc:	the low word of this vector contains the segment of the RAM data area
	  to be used by the expansion ROM at F400h:6000h, and the high word
	  contains the length of the data area; this segment and size are
	  both set to 0000h if no ROM is installed at F400h:6000h
SeeAlso: INT 60"TI Professional PC",INT 63"TI Professional"
SeeAlso: INT 65"TI Professional PC"
----------64---------------------------------
INT 64 - Oracle SQL Protected Mode Executive - ???
--------N-64---------------------------------
INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
Note:	equivalent to INT 7A for NetWare versions through 2.0a only; later
	  versions do not use this interrupt for IPX/SPX access, instead
	  getting an entry point from INT 2F/AX=7A00h
SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
--------h-64---------------------------------
INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
SeeAlso: INT 65"DG10",INT 66"DG10"
--------r-64---------------------------------
INT 64 - Extended Batch Language v3.14+
	AH = function
	    00h to 5Fh chained to previous handler
	    60h to 6Ch reserved, return immediately
	    80h to FFh chained to previous handler
	    6Dh (v4.01+) insert tone in queue
		AL = ???
		CX = frequency in Hertz
		DL = duration in clock ticks
		Return: AL = 00h if note stored
			   = 01h if no room to store
	    6Eh clear ??? counter/flag
	    6Fh return counter/flag that AH=6Eh clears
	    70h ???
		AL = ???
	    71h ???
		AL = ???
	    72h ???
	    73h insert byte at end of keyboard buffer
		AL = byte to insert
		Return: AL = 00h if byte inserted
			   = 01h if no room to store
	    74h insert byte at front of keyboard buffer
		AL = byte to insert
		Return: AL = 00h if byte inserted
			   = 01h if no room to store
	    75h ???
	    76h get keyboard "stack" status
		AL = 'K' if kbd read will read physical keyboard
		     'S' if it will read EBL internal keyboard buffer
		AH = ???
	    77h clear internal keyboard buffer
	    78h ???
		AL = ???
	    79h ???
	    7Ah ???
		AL = ???
	    7Bh ???
		AL = ???
	    7Ch ???
		AL = ???
	    7Dh ???
		AL = ???
	    7Eh clear buffer for ???
	    7Fh installation check
		Return: CX = version in BCD
			DI = segment of ???
			BX = segment of next program's PSP???
Program: Extended Batch Language is a batch-file enhancer by Seaware
Notes:	the chaining does not check whether the interrupt had been hooked
	  before, so if you try to chain when the previous vector was
	  0000h:0000h, you'll be in trouble
	functions 72h and 7Ah-7Dh appear to be interfaces to the optional
	  floating-point and extended function packages
Index:	installation check;EBL|installation check;Extended Batch Language
--------d-64---------------------------------
INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
Note:	This vector is overwritten by Pdisk to install custom harddrive types.
	  It can either destroy 4 vectors and take no memory or TSR and take
	  up some memory.
SeeAlso: INT 65"Pdisk"
----------64---------------------------------
INT 64 - PC-DRAFT - ASYNCHRONOUS DRIVER
	???
Return: ???
Program: PC-DRAFT is a powerful CAD environment by rhv.
SeeAlso: INT 62"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT",INT 67"PC-DRAFT"
--------N-6401-------------------------------
INT 64 U - BW-NFS - BWRPC - ???
	AH = 01h
	ES:BX -> ??? (at least 8 bytes)
	ES:BP -> DWORD ???
	???
Return: CF clear if successful
	    ???
	CF set on error
	    CX = 0000h
Range:	INT 4E to INT FD, selected by configuration
Notes:	the Beame&Whiteside TCP/IP protocol stack uses two consecutive
	  interrupts (62h and 63h by default); the BW-NFS client uses a third
	  consecutive interrupt (64h by default) if it is loaded
	the BWRPC installation check consists of determining the interrupt
	  vector assigned to it (two more than the value returned by reading
	  the ETHDEV27 device), and testing whether the word immediately
	  preceding the interrupt handler is 4257h ('BW')
SeeAlso: INT 62/AH=00h"ETHDEV",INT 63"BW-TCP"
Index:	installation checks;BWRPC
--------N-6402-------------------------------
INT 64 U - BW-NFS - BWRPC - ???
	AH = 02h
	DS:DI -> ???
Return: ???
Note:	this call is passed directly through to INT 62/AH=07h
SeeAlso: INT 62/AH=07h"ETHDEV"
--------N-6403-------------------------------
INT 64 U - BW-NFS - BWRPC - ADD ???
	AH = 03h
	AL = ???
	BP = ???
	ES:SI -> ???
Return: ???
Note:	this call is passed directly through to INT 62/AH=0Bh
SeeAlso: AH=04h,INT 62/AH=0Bh"ETHDEV"
--------N-6404-------------------------------
INT 64 U - BW-NFS - BWRPC - REMOVE ???
	AH = 04h
	BP = ???
Return: ???
Range:	INT 4E to INT FD, selected by configuration
Note:	this call is passed directly through to INT 62/AH=0Ch
SeeAlso: AH=03h,INT 62/AH=0Ch"ETHDEV"
--------N-6405-------------------------------
INT 64 U - BW-NFS - BWRPC - ???
	AH = 05h
	CX = ???
Return: ???
Note:	this call is passed directly through to INT 62/AH=13h
SeeAlso: INT 62/AH=13h"ETHDEV"
--------N-6406-------------------------------
INT 64 U - BW-NFS - BWRPC - ???
	AH = 06h
	ES:SI -> ???
Return: AL = 00h if CF clear
Range:	INT 4E to INT FD, selected by configuration
Note:	this call is passed directly through to INT 62/AH=14h
SeeAlso: INT 62/AH=14h"ETHDEV"
--------N-6407-------------------------------
INT 64 U - BW-NFS - BWRPC - GET IP ADDRESS
	AH = 07h
Return: CX:DX = IP address
--------N-6410-------------------------------
INT 64 U - BW-NFS - BWRPC - CALL ETHDEV.SYS
	AH = 10h
	AL = ETHDEV function number
	other registers as appropriate for ETHDEV call
Return: as returned by ETHDEV
Note:	this call is passed directly through to INT 62
SeeAlso: INT 62/AH=00h"ETHDEV"
--------N-6411-------------------------------
INT 64 U - BW-NFS - BWRPC - NOP???
	AH = 11h
Return: CF clear
Range:	INT 4E to INT FD, selected by configuration
--------N-64FE-------------------------------
INT 64 - BW-NFS - BWRPC - MAP EMS PAGE FRAME
	AH = FEh
	AL = direction
	    00h map in driver's memory block
	    01h map out driver's memory block
Return: CF clear if successful
	CF set on error
	    AL = error code
Range:	INT 4E to INT FD, selected by configuration
Note:	this call is passed through directly to ETHDEV.SYS (see INT 62/AH=FEh)
SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=FEh,INT 63"BW-TCP"
--------*-65---------------------------------
INT 65 - reserved for user interrupt
--------d-65---------------------------------
INT 65 - Adaptec controllers - DRIVE 1 DATA
Desc:	this vector stores the second four bytes of the parameter table for
	  hard disk 1
SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec",#0598
--------b-65---------------------------------
INT 65 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
Desc:	the low word of this vector contains the segment of the RAM data area
	  to be used by the expansion ROM at F400h:8000h, and the high word
	  contains the length of the data area; this segment and size are
	  both set to 0000h if no ROM is installed at F400h:8000h
SeeAlso: INT 60"TI Professional PC",INT 64"TI Professional"
SeeAlso: INT 66"TI Professional PC"
--------h-65---------------------------------
INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
SeeAlso: INT 64"DG10",INT 66"DG10"
--------N-65---------------------------------
INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
--------U-65---------------------------------
INT 65 - SD.COM v6.2
Desc:	The unregistered version of SD62.COM uses the low byte of this vector
	  to count the number of invocations, displaying a registration
	  reminder each time after the 20th use.
--------d-65---------------------------------
INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
----------65---------------------------------
INT 65 - PC-DRAFT - SECONDARY DISPLAY DRIVER
	???
Return: ???
Program: PC-DRAFT is a powerful CAD environment by rhv.
SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 66"PC-DRAFT",INT 67"PC-DRAFT"
--------s-65---------------------------------
INT 65 - Ad Lib SOUND.COM - INTERFACE
	SI = function number (see also entries below)
	    0000h Init
	    0002h RelTimeStart
	    0003h SetState
	    0004h GetState
	    0005h Flush
	    0006h SetMode
	    0007h GetMode
	    0008h SetRelVolume
	    0009h SetTempo
	    000Ah SetTranspose
	    000Bh GetTranspose
	    000Ch SetActVoice
	    000Dh GetActVoice
	    000Eh PlayNoteDel
	    000Fh PlayNote
	    0010h SetTimbre
	    0011h SetPitch
	    0012h SetTickBeat
	    0013h NoteOn
	    0014h NoteOff
	    0015h Timbre
	    0016h SetPitchBend
	    0017h WaveForm
	ES:BX -> arguments
Note:	the installation check consists of checking for the signature block
	  immediately preceding the interrupt handler (see #2690)
SeeAlso: SI=8000h
Index:	installation check;Ad Lib SOUND.COM

Format of AdLib signature block:
Offset	Size	Description	(Table 2690)
 00h	WORD	version number
 02h 19 BYTEs	"SOUND-DRIVER-AD-LIB"
 15h	BYTE	01h
 16h	BYTE	01h
 17h	BYTE	00h
--------s-65----SI0000-----------------------
INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
	SI = 0000h
--------s-65----SI0003-----------------------
INT 65 - Ad Lib SOUND.COM - SET STATE
	SI = 0003h
	ES:BX -> WORD new state (0000h disabled, 0001h enabled)
SeeAlso: SI=0004h
--------s-65----SI0004-----------------------
INT 65 - Ad Lib SOUND.COM - GET STATE
	SI = 0004h
Return: AX = status
	    0000h all done playing sounds
	    else  still playing sounds
SeeAlso: SI=0003h
--------s-65----SI0006-----------------------
INT 65 - Ad Lib SOUND.COM - SET MODE
	SI = 0006h
	ES:BX -> WORD new mode (0000h melodic, 0001h percussive)
SeeAlso: SI=0007h
--------s-65----SI0007-----------------------
INT 65 - Ad Lib SOUND.COM - GET MODE
	SI = 0007h
Return: AX = mode
	    0000h melodic
	    0001h percussive
SeeAlso: SI=0006h
--------s-65----SI000C-----------------------
INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
	SI = 000Ch
	ES:BX -> WORD voice = 0000h to 0008h
SeeAlso: SI=000Dh
--------s-65----SI000D-----------------------
INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
	SI = 000Dh
Return: AX = voice (0000h to 0008h)
SeeAlso: SI=000Ch
--------s-65----SI8000-----------------------
INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
	SI = 8000h
Return: DX:AX -> internal data structures
Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
	  Pro Audio Spectrum sound boards
SeeAlso: SI=8001h
--------s-65----SI8001-----------------------
INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
	SI = 8001h
Return: AX = ???
	DX = number of voices??? (09h or 0Bh)
SeeAlso: SI=8000h
--------s-65----SI8002-----------------------
INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
	SI = 8002h
SeeAlso: SI=8003h
--------s-65----SI8003-----------------------
INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
	SI = 8003h
SeeAlso: SI=8002h
--------s-65----SI8004-----------------------
INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
	SI = 8004h
Return: AX = ??? (0280h)
	DX = ??? (01A0h)
--------s-65----SI8005-----------------------
INT 65 U - Media Vision FM.COM v4.1a+ - ???
	SI = 8005h
	???
Return: ???
SeeAlso: SI=8000h
--------S-65---------------------------------
INT 65 U - EZRECV v1.0 - API
	AX = function
	    0000h ???
		Return: AX = ??? or FFFFh
	    0001h ???
		Return: AX = status (0000h or 0001h)
	    0002h ???
		Return: AX = status (0000h or 0001h)
	    0003h set ??? to 0001h
		Return: AX = 0000h
	    0004h ???
		Return: AX = ???
Return: BH = COM port being used
	BL = speed???
	CH = ???
	CL = ???
	DX = ???
	DS = ???
	ES = EZRECV data segment
Program: EZRECV is a background Zmodem file receiver by Express Consulting
--------*-66---------------------------------
INT 66 - reserved for user interrupt
--------d-66---------------------------------
INT 66 - Adaptec controllers - DRIVE 1 DATA
Desc:	this vector stores the third four bytes of the parameter table for
	  hard disk 1
SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
--------b-66---------------------------------
INT 66 - TI Professional PC - SYSTEM INFORMATION (NOT A VECTOR!)
Desc:	the low word of this vector contains the system memory size in
	  paragraphs; the third byte contains the number of outstanding
	  interrupt requests, and the fourth byte contains a description
	  of the installed drive types (see #2691)
SeeAlso: INT 60"TI Professional PC",INT 67"TI Professional"

Bitfields for TI Professional drive type information:
Bit(s)	Description	(Table 2691)
 7	floppy drive D: has 80 tracks
 6	floppy drive D: is double-sided
 5	floppy drive C: has 80 tracks
 4	floppy drive C: is double-sided
 3	floppy drive B: has 80 tracks
 2	floppy drive B: is double-sided
 1	floppy drive A: has 80 tracks
 0	floppy drive A: is double-sided
--------h-66---------------------------------
INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
SeeAlso: INT 64"DG10"
--------N-66---------------------------------
INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
Program: TurboNET is a NetBIOS-based file redirector and server
Note:	hooked but not used (IRET) by both redirector and server; called from
	  server's INT 28 handler
SeeAlso: INT 2F/AX=8100h
--------d-66---------------------------------
INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
--------W-66---------------------------------
INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
Note:	This Windows 3.x Virtual Device Driver implements a virtual timer
	  which will expire and call INT 66.  This timer can be used to
	  calculate elapsed execution time etc.
--------K-66---------------------------------
INT 66 - Newkey v5.4 - INSTALLATION VECTOR
Return: immediately (IRET)
Program: Newkey is a shareware keyboard macro program by Frank A. Bell
Range:	INT 60h to INT 67h, selected by scanning for highest unused vector
Note:	the installation check consists of testing for the signature bytes
	  FDh FCh FFh FEh at offset 03h in the interrupt handlers segment
BUG:	the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
	  before falling back to INT 60-67, but only uses the last of these
	  ranges in v5.4
SeeAlso: INT 2F/AX=E300h
Index: installation checks;Newkey|Newkey;installation check
----------66---------------------------------
INT 66 - PC-DRAFT - TABLET/DIGITIZER DRIVER
	???
Return: ???
Program: PC-DRAFT is a powerful CAD environment by rhv.
SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 67"PC-DRAFT"
--------U-66---------------------------------
INT 66 - PC-Magazin - INCA
	details not yet availble
Program: INCA is a utility from PC-Magazin (the German edition of PC Magazine)
	  issue 51-52/85.
SeeAlso: INT 61"SWAPx"
--------F-6601-------------------------------
INT 66 - BitFax Scheduler - SET MODE???
	AH = 01h
SeeAlso: AH=02h
--------F-6602-------------------------------
INT 66 - BitFax Scheduler - SET MODE???
	AH = 02h
SeeAlso: AH=01h
--------F-6603-------------------------------
INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
	AH = 03h
	???
Return: ???
SeeAlso: AH=05h
--------F-6604-------------------------------
INT 66 - BitFax Scheduler - GET STATUS???
	AH = 04h
Return: AX = ??? (0000h or 0001h)
	DX = BitSched version???  (for versions >= 3.00)
	    9796h (ver. 3.00)
	    97E6h (ver. 3.02)
	    92D0h (ver. 3.04.06)
	    9510h (ver. 3.06.02)
SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
--------F-6605-------------------------------
INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
	AH = 05h
	BX:CX -> command block (see #2692)
	???
Return: ???
SeeAlso: AH=03h

Format of BitFax command block:
Offset	Size	Description	(Table 2692)
 00h 18 BYTEs	configuration bytes???
 12h	BYTEs	ASCIZ temporary file name to place converted fax
 52h	BYTEs	ASCIZ directory containing BitFax executables
 92h	BYTEs	ASCIZ telephone number
 C2h	BYTE	cover page control (00h don't send, 01h do send cover page)
 C3h 15 BYTEs	configuration bytes???
 E2h	BYTEs	ASCIZ path of BITFAX.TRA file (containing additional
		  configuration information???)
122h	BYTEs	configuration bytes???
12Ch	BYTE	00h don't send cover page
		01h send cover page
12Dh  7 BYTEs	configuration bytes???
134h	BYTEs	ASCIZ path of file to send
174h	BYTEs	more configuration bytes???
	???
--------F-6606-------------------------------
INT 66 - BitFax Scheduler - SET MODE???
	AH = 06h
Return: DX = BitSched version??? (same as AH=04h)
SeeAlso: AH=04h
--------s-660688-----------------------------
INT 66 - IBMSND driver, DIGPAK - PLAY 8-BIT DIGITIZED SOUND
	AX = 0688h
	DS:SI -> SNDSTRUC (see #2693)
Return: ???
Program: The IBMSND driver is part of John W. Ratcliff's
	   The IBM Digitized Sound Package
	DIGPAK is a set of digitized sound drivers written by
	  John W. Ratcliff, The Audio Solution, Inc.
Note:	the installation check consists of looking for a valid signature
	  string six bytes prior to the interrupt handler; this string may
	  be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
	  determine whether IBMSND is installed)
SeeAlso: AX=068Bh,AX=068Fh,AX=0701h

Format of IBMSND driver SNDSTRUC:
Offset	Size	Description	(Table 2693)
 00h	DWORD	-> audio data
 04h	WORD	length of audio data in bytes
 06h	DWORD	-> playback status flag
 0Ah	WORD	playback frequency
--------s-660689-----------------------------
INT 66 - IBMSND driver, DIGPAK - REPORT SOUND DRIVER STATUS
	AX = 0689h
Return: AX = status
	    0000h no sound playing
	    0001h sound effect is currently playing
	---DIGPAK---
	BX = version number (v3.1+)
	DX = looping status
	    0000h no sound looping
	    0001h sound effect is currently looping
SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
Index:	version check;DIGPAK
--------s-66068A-----------------------------
INT 66 - IBMSND driver, DIGPAK - PREFORMAT SOUND
	AX = 068Ah
	DS:SI -> SNDSTRUC (see #2693)
Desc:	convert audio data into output hardware format
SeeAlso: AX=068Bh
--------s-66068B-----------------------------
INT 66 - IBMSND driver, DIGPAK - PLAY PREFORMATTED SOUND
	AX = 068Bh
	DS:SI -> SNDSTRUC (see #2693)
Return: AX = ???
SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
--------s-66068C-----------------------------
INT 66 - IBMSND driver, DIGPAK - REPORT AUDIO DRIVER CAPABILITIES
	AX = 068Ch
Return: AX = capabilities (see #2694)
	DX = playback rate if fixed-frequency playback
	---DIGPAK---
	BX:CX -> ASCIZ ID string
SeeAlso: AX=0689h,AX=068Dh

Bitfields for IBMSND driver capabilities:
Bit(s)	Description	(Table 2694)
 0	can play audio in background
 1	data is massaged for output device
 2	driver plays at fixed frequency, resampling input data to fit
 3	driver uses timer interrupt
---DIGPAK---
 4	device supports timer sharing
 5	supports looped sounds and pending
 6	supports stereo panning
 7	supports 8-bit PCM stereo playback
 8	supports audio recording
 9	supports DMA bakcfilling
--------s-66068D-----------------------------
INT 66 - IBMSND driver, DIGPAK - REPORT CURRENT SAMPLE ADDRESS
	AX = 068Dh
Return: AX = current playback address
Desc:	determine what point in the audio data the playback has reached, for
	  synchronization with video or animation effects
Notes:	this function applies to background playback only
	the reported address may be an approximation rather than the exact
	  address
SeeAlso: AX=068Ch,AX=0691h
--------s-66068E-----------------------------
INT 66 - IBMSND driver, DIGPAK - SET CALLBACK ADDRESS
	AX = 068Eh
	BX:DX -> callback function
	    0000h:0000h to disable callback
	DS = value to load into DS when calling the callback function
Desc:	specify the function to be called when playback of a sound effect is
	  completed
Note:	the callback function will typically be called during a hardware
	  interrupt, so all the usual precautions should be taken except for
	  preserving registers
SeeAlso: AX=0691h
--------s-66068F-----------------------------
INT 66 - IBMSND driver, DIGPAK - STOP CURRENT SOUND
	AX = 068Fh
Desc:	cause any currently-playing sound effect to be terminated
SeeAlso: AX=0688h,AX=068Bh
--------s-660690-----------------------------
INT 66 - IBMSND driver, DIGPAK - "SetAudioHardware" - SET UP HARDWARE INFO
	AX = 0690h
	BX = IRQ
	CX = base address
	DX = other setup value (device-dependent???)
--------s-660691-----------------------------
INT 66 - IBMSND driver, DIGPAK - REPORT CALLBACK ADDRESS
	AX = 0691h
Return: AX:DX -> current callback function
	BX = original caller's DS register
Program: The IBMSND driver is part of John W. Ratcliff's
	   The IBM Digitized Sound Package
	DIGPAK is a set of digitized sound drivers written by
	  John W. Ratcliff, The Audio Solution, Inc.
SeeAlso: AX=068Eh
--------s-660693-----------------------------
INT 66 - DIGPAK - SET TIMER DIVISOR RATE
	AX = 0693h
	DX = rate
Program: DIGPAK is a set of digitized sound drivers written by
	  John W. Ratcliff, The Audio Solution, Inc.
--------s-660694-----------------------------
INT 66 - DIGPAK - PLAY PREFORMATTED DATA
	AX = 0694h
	DS:SI -> Sound Data structure (see #2693)
Return: AX = status???
--------s-660695-----------------------------
INT 66 - DIGPAK - POST AUDIO PENDING
	AX = 0695h
	DS:SI -> Sound Data structure (***)
Return: AX = status
	    0000h sound started playing
	    0001h sound was posted as pending to play
	    0002h sound effect already pending, this one not posted
SeeAlso: AX=0696h
--------s-660696-----------------------------
INT 66 - DIGPAK - GET AUDIO PENDING STATUS
	AX = 0696h
Return: AX = status
	    0000h no sound is playing
	    0001h sound playing, and a sound is pending
	    0002h sound playing, no sound pending
SeeAlso: AX=0695h
--------s-660697-----------------------------
INT 66 - DIGPAK - SET STEREO PANNING
	AX = 0697h
	DX = panning position (0 = right, 127 = left)
Return: AX = status
	    0000h command ignored (not supported)
	    0001h panning set
--------s-660698-----------------------------
INT 66 - DIGPAK - SET PLAY MODE
	AX = 0698h
	DX = playback mode
	    0000h 8-bit PCM
	    0001h 8-bit stereo PCM
	    0002h 16-bit PCM
	    0003h 16-bit stereo PCM
Return: AX = status
	    0000h command ignored
	    0001h mode set
--------s-660699-----------------------------
INT 66 - DIGPAK - GET ADDRESSES
	AX = 0699h
Return: AX = pending address
	BX = semaphore address
--------s-66069A-----------------------------
INT 66 - DIGPAK - SET RECORD MODE
	AX = 069Ah
	DX = recording mode
	    0000h turn audio recording on
	    0001h turn audio recording off
Return: AX = status
	    0000h command ignored
	    0001h audio recording mode set
--------s-66069B-----------------------------
INT 66 - DIGPAK - STOP NEXT LOOP
	AX = 069Bh
--------s-66069C-----------------------------
INT 66 - DIGPAK - SET DMA BACKFILL MODE
	AX = 069Ch
	DX = mode
	    0000h turn backfill mode on
	    0001h turn backfill mode off
Return: AX = status
	    0000h command ignored
	    0001h backfill mode set
SeeAlso: AX=069Dh,AX=069Eh
--------s-66069D-----------------------------
INT 66 - DIGPAK - REPORT DMA COUNTER
	AX = 069Dh
Return: AX = DMA counter
SeeAlso: AX=069Eh
--------s-66069E-----------------------------
INT 66 - DIGPAK - VERIFY DMA BLOCK
	AX = 069Eh
	CX = length of buffer
	ES:BX -> buffer containing sound data
Return: AX = status
	    0000h block crosses 64K bounadary
	    0001h block is OK
SeeAlso: AX=069Dh
--------s-66069F-----------------------------
INT 66 - DIGPAK - SET PCM VOLUME
	AX = 069Fh
	BX = left channel volume (0-100)
	CX = right channel volume (0-100)
Return: AX =  status
	    0000h command ignored
	    0001h volume set
--------s-6606A0-----------------------------
INT 66 - DIGPAK - SET DPMI MODE
	AX = 06A0h
	DX = mode
	    0000h 32-bit register addressing on
	    0001h 32-bit register addressing off
SeeAlso: INT 31/AX=0400h
--------s-660700-----------------------------
INT 66 - MIDPAK - UNINSTALL
	AX = 0700h
Note:	this function should NOT be called by applications
Program: MIDPAK is a set of MIDI sound drivers developed by Miles Design
	  Incorporated.
--------s-660701-----------------------------
INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
	AX = 0701h
Return: AX = digitized sound capabilities
	    0000h if digitized sound driver (functions 06xxh) not available
Notes:	the installation check for the MIDI driver is to test for the signature
	  "MIDI" six bytes before the interrupt handler
	also supported by MIDPAK, the successor to the Digitized Sound
	  Package's MIDI driver
SeeAlso: AX=0688h
--------s-660702-----------------------------
INT 66 - MIDPAK - PLAY SEQUENCE
	AX = 0702h
	BX = Sequence number
Return: AX = status
	    0000h Sequence is being played
	    0001h Sequence not available
SeeAlso: AX=0703h,AX=0705h
--------s-660703-----------------------------
INT 66 - MIDPAK - SEGUE SEQUENCE
	AX = 0703h
	BX = sequence number
	CX = activation code (FFFFh is next trigger)
Return: ???
--------s-660704-----------------------------
INT 66 - MIDPAK - REGISTER XMIDI
	AX = 0704h
	CX:BX -> XMIDI sequence data
	DI:SI = length of XMIDI data
Return: AX = status
	    0000h unable to register XMIDI data
	    0001h XMIDI file registered resident
	    0002h XMIDI file was registered to the application
--------s-660705-----------------------------
INT 66 - MIDPAK - STOP MIDI
	AX = 0705h
SeeAlso: AX=0702h,AX=0709h
--------s-660706-----------------------------
INT 66 O - MIDPAK - REMAP CHANNEL
	AX = 0706h
	BX = sequence
	CX = physical
--------s-660707-----------------------------
INT 66 - MIDPAK - REPORT TRIGGER EVENT COUNTER
	AX = 0707h
Return: AX = count of number of callbacks since last reset
	DX = ID
SeeAlso: AX=0708h,AX=0713h
--------s-660708-----------------------------
INT 66 - MIDPAK - RESET EVENT TRIGGER COUNTER
	AX = 0708h
SeeAlso: AX=0707h,AX=0713h
--------s-660709-----------------------------
INT 66 O - MIDPAK - MIDI SLEEP
	AX = 0709h
SeeAlso: AX=070Ah
--------s-66070A-----------------------------
INT 66 O - MIDPAK - MIDI AWAKE
	AX = 070Ah
SeeAlso: AX=0709h
--------s-66070B-----------------------------
INT 66 - MIDPAK - RESUME PLAYING
	AX = 070Bh
SeeAlso: AX=070Ch
--------s-66070C-----------------------------
INT 66 - MIDPAK - GET SEQUENCE STATUS
	AX = 070Ch
Return: AX = status
	    0000h sequence stopped
	    0001h sequence playing
	    0002h sequence done
SeeAlso: AX=070Bh
--------s-66070D-----------------------------
INT 66 - MIDPAK - REGISTER XMIDI FILE
	AX = 070Dh
	CX:BX -> ASCII filename
SeeAlso: AX=0704h,AX=0710h
--------s-66070E-----------------------------
INT 66 - MIDPAK - GET RELATIVE VOLUME
	AX = 070Eh
Return:	AX = current volume
SeeAlso: AX=070Fh
--------s-66070F-----------------------------
INT 66 - MIDPAK - SET RELATIVE VOLUME
	AX = 070Fh
	BX = new volume
	CX = time
SeeAlso: AX=070Eh
--------s-660710-----------------------------
INT 66 - MIDPAK - LOAD MIDPAK DRIVER
	AX = 0710h
	BX = segment of .ADV driver
	CX = 0000h (offset must be zero)
	DX:SI -> .AD driver
SeeAlso: AX=070Dh
--------s-660711-----------------------------
INT 66 - MIDPAK - POLL MIDPAK
	AX = 0711h
Return: AX = ???
	???
SeeAlso: AX=0712h
--------s-660712-----------------------------
INT 66 - MIDPAK - GET MIDI CLOCK
	AX = 0712h
Return: AX:DX = clock counter
	CX:BX = clock address
SeeAlso: AX=0711h,AX=0713h
--------s-660713-----------------------------
INT 66 - MIDPAK - GET TRIGGER COUNT ADDRESS
	AX = 0713h
Return: AX:DX -> trigger counter address
SeeAlso: AX=0707h,AX=0712h,AX=0714h
--------s-660714-----------------------------
INT 66 - MIDPAK - GET EVENT ID ADDRESS
	AX = 0714h
Return: AX:DX -> event ID
SeeAlso: AX=0713h,AX=0716h
--------s-660716-----------------------------
INT 66 - MIDPAK - REPORT SEQUENCE NUMBER
	AX = 0716h
Return: AX = current sequence number
SeeAlso: AX=0702h
Program: MIDPAK is a set of MIDI sound drivers developed by Miles Design
	  Incorporated.
--------n-6610-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - GET ???
	AH = 10h
Return: CF clear
	AX = 0000h
	BX = ??? (0012h)
	DX:CX -> TDMOUSE INT 33 handler (IRET to hide mouse from other apps)
Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
	  a touchpad; PenDOS is a set of programs by Communication Intelligence
	  Corporation which makes applications pen-aware
--------n-6611-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
	AH = 11h
	DX:BX -> new handler for ???
Return: CF clear
	AX = 0000h
	DX:BX -> old handler for ??? (points at RETF by default)
--------n-6612-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - INITIALIZE
	AH = 12h
Return:	CF clear
	AX = 0000h
Note:	this function calls the old mouse handler with functions 0000h, 0002h,
	  0007h, 0008h, 000Fh, 0004h, and 000Ch (in that order)
SeeAlso: AH=13h
--------n-6613-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - SHUTDOWN???
	AH = 13h
Return: CF clear
	other register as returned by INT 33/AX=0000h
SeeAlso: AH=12h
--------n-6614-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - ???
	AH = 14h
	BX = ???
	CX = ???
Return: CF clear
	AX = 0000h
--------n-6615-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
	AH = 15h
	DX:BX -> new handler for ???
Return: CF clear
	AX = 0000h
	DX:BX -> old handler (points at RETF by default)
--------n-6616-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - UNUSED FUNCTIONS
	AH = 16h to 1Fh
Return: CF set
Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
	  a touchpad; PenDOS is a set of programs by Communication Intelligence
	  Corporation which makes applications pen-aware
--------n-6621-------------------------------
INT 66 - PenDOS - PINK - ???
	AH = 21h
Return: CF clear if successful
	CF set on error
Note:	this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
--------n-6622-------------------------------
INT 66 - PenDOS - PINK - ???
	AH = 22h
	DX:BX -> ???
	CL = ???
Return: CF clear if successful
	CF set on error
	???
SeeAlso: AH=24h
--------n-6623-------------------------------
INT 66 - PenDOS - PINK - ???
	AH = 23h
	???
Return: CF clear if successful
	CF set on error
	???
--------n-6624-------------------------------
INT 66 - PenDOS - PINK - ???
	AH = 24h
	DX:BX -> ???
	CL = ???
Return: CF clear if successful
	CF set on error
	???
SeeAlso: AH=22h
--------n-6625-------------------------------
INT 66 - PenDOS - PINK - ???
	AH = 25h
	CL = ??? (NOP if 00h)
	???
Return: CF clear if successful
	CF set on error
	???
--------n-6627-------------------------------
INT 66 - PenDOS - PINK - ???
	AH = 27h
	BL = ???
	BH = ???
	CL = ??? (0-3)
	DL = ??? (> BL)
	DH = ??? (> BH)
Return: ???
--------n-6628-------------------------------
INT 66 - PenDOS - PINK - ???
	AH = 28h
	???
Return: CF clear if successful
	CF set on error
	???
Note:	this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
--------n-6629-------------------------------
INT 66 - PenDOS - PINK - ???
	AH = 29h
	???
Return: ???
Note:	this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
--------n-662A-------------------------------
INT 66 - PenDOS - PINK - ???
	AH = 2Ah
	DL = ??? (nonzero)
	DH = ??? (nonzero)
Return: CF clear if successful
	CF set on error
	???
--------n-662B-------------------------------
INT 66 - PenDOS - PINK - ???
	AH = 2Bh
	???
Return: CF clear if successful
	CF set on error
	???
--------n-662F-------------------------------
INT 66 - PenDOS - PINK - INITIALIZE
	AH = 2Fh
	???
Return: AX = status
	    0000h failed
	    FFFFh successful
	???
Note:	this function sets ??? flag or counter to FFFFh and hooks INT 1Ch
--------F-663345-----------------------------
INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
	AX = 3345h
Return: AX = FFFFh error removing TSR
Note:	the installation check consists of checking for the signature
	  "BitFax Scheduler" beginning two bytes past the interrupt handler
SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
Index:	installation check;BitFax Scheduler
--------n-6640-------------------------------
INT 66 - PenDOS - PKEYUS - GET VERSION
	AH = 40h
Return: CF clear
	AX = 0000h
	BH = major version (02h for version bundled with IBM DOS 6.1)
	BL = minor version (00h for version bundled with IBM DOS 6.1)
	DL = ??? (4Eh)
	DH = ??? (0Eh)
--------n-6641-------------------------------
INT 66 - PenDOS - PKEYUS - SET ???
	AH = 41h
	BX = ???
	CL = ??? (08h-20h)
	DL = screen column??? (<= 50h)
	DH = screen row???  (<= 3Ch)
Return: AX = status (0000h successful, 0001h error)
Note:	this function also sets an internal flag
SeeAlso: AH=42h,AH=43h
--------n-6642-------------------------------
INT 66 - PenDOS - PKEYUS - ???
	AH = 42h
Return: CF clear
	AX = 0000h
Note:	this function also clears the flag set by AH=41h
SeeAlso: AH=41h
--------n-6643-------------------------------
INT 66 - PenDOS - PKEYUS - ???
	AH = 43h
	BX = ???
	DX = ???
Return: AX = status
	    0000h if AH=41h flag set
	    else
		AH = ???
		AL = ???
		BX = ???
		DX = ???
SeeAlso: AH=41h
--------n-6644-------------------------------
INT 66 - PenDOS - PKEYUS - UNUSED FUNCTIONS
	AH = 44h to 4Fh
Return: CF set
--------n-6650-------------------------------
INT 66 - PenDOS - PMOUSE - SET ???
	AH = 50h
	BX = ???
	CH = ???
	DX = ???
Return: CF clear
	AX = 0000h
--------n-6651-------------------------------
INT 66 - PenDOS - PMOUSE - NOP
	AH = 51h
Return: CF set
--------n-6652-------------------------------
INT 66 - PenDOS - PMOUSE - ???
	AH = 52h
	BX = ???
	CL = ???
	DX = ???
Return: ???
--------n-6653-------------------------------
INT 66 - PenDOS - PMOUSE - UNUSED FUNCTIONS
	AH = 53h to 57h
Return: CF set
--------n-66---------------------------------
INT 66 - PenDOS - PMOUSE - ALTERNATE API
	AH = function (58h-5Fh)
Note:	these functions exactly duplicate AH=50h-57h
--------U-66AA02-----------------------------
INT 66 - HelpTSR v2.10 - INSTALLATION CHECK
	AX = AA02h
Return: ES:DI -> 7 byte signature "HelpTSR" if resident
Program: HelpTSR is a resident viewer by David Jurgens for HelpPC
--------n-66C5-------------------------------
INT 66 - PenDOS - VLOAD - API
	AH = C5h
	???
Return: ???
--------t-66FFFBBXFFFB-----------------------
INT 66 - MicroHelp Stay-Res Plus - ???
	AX = FFFBh
	BX = FFFBh
	???
Return: ???
SeeAlso: AX=FFFEh,INT 2D"AMIS"
--------t-66FFFEBXFFFE-----------------------
INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
	AX = FFFEh
	BX = FFFEh
Return: only if unsuccessful
Notes:	installation check is for the interrupt handler to begin with the bytes
	  FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
	  appear at offset 0005h (older versions) or the offset returned by
	  AX=FFFFh/BX=FFF0h in the interrupt handler segment.
	Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
	  and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
Index:	installation check;MicroHelp Stay-Res|installation check;ThesPlus
Index:	installation check;Personal Calendar|installation check;CAL
--------t-66FFFFBXFFF0-----------------------
INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
	AX = FFFFh
	BX = FFF0h
Return: DI = offset of program name in interrupt handler segment
SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
--------d-67---------------------------------
INT 67 - Adaptec controllers - DRIVE 1 DATA
Desc:	this vector stores the last four bytes of the parameter table for
	  hard disk 1
SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
--------b-67---------------------------------
INT 67 - TI Professional PC - SYSTEM DATA (NOT A VECTOR!)
Desc:	this vector contains the TI Pro's system configuration words
	  (see #2695)
SeeAlso: INT 66"TI Professional PC"

Bitfields for TI Professional PC System Configuration doubleword:
Bit(s)	Description	(Table 2695)
 0	8087 present
 31-1	reserved (0)
--------d-67---------------------------------
INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
--------I-67---------------------------------
INT 67 - Sangoma CCPOP 3270 resident module
SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
--------U-67---------------------------------
INT 67 - CUCKOO.COM - INSTALLATION CHECK
Program: CUCKOO is a resident on-screen clock with optional hourly chime or
	  cuckoo by an unknown author with revisions by Thomas A. Lundin
Note:	this is not a vector; when loaded for the first time, CUCKOO.COM uses
	  the last unused (0000h:0000h) vector in the range 60h-67h to store
	  the signature value 434Ch:4F4Bh ('CLOK')
----------67---------------------------------
INT 67 - PC-DRAFT - KEYBOARD DRIVER
	???
Return: ???
Program: PC-DRAFT is a powerful CAD environment by rhv.
SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT"
--------N-6700-------------------------------
INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
	AH = 00h
	DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see #2696)
	AH = semaphore owner if status=02h
SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h

(Table 2696)
Values for PC-NET semaphore function status:
 00h	successful
 01h	invalid function
 02h	semaphore already locked
 03h	unable to lock semaphore
 04h	semaphore space exhausted
--------N-6701-------------------------------
INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
	AH = 01h
	DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see #2696)
	AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
--------N-6702-------------------------------
INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
	AH = 02h
	DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see #2696)
	AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
--------m-671E-------------------------------
INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
	AH = 1Eh
Return: AH = 00h if installed
	    AL destroyed
	    ES:DI -> ASCII signature "MemLimit"
SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
--------m-671F-------------------------------
INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
	AH = 1Fh
	DS:SI -> request packet (see #2697)
Return: AH = status (00h successful, 84h invalid function code, etc.)
SeeAlso: AH=1Eh

Format of 386MAX MEMLIMIT request packet:
Offset	Size	Description	(Table 2697)
 00h	WORD	function code (00h-0Fh)
 02h	WORD	return code (see #2698)
 04h  4 BYTEs	???
 08h	WORD	???
	???

(Table 2698)
Values for 386MAX MEMLIMIT return code:
 00h	unknown request
 01h	invalid parameter for VCPI limit
 02h	VCPI limit set
 03h	invalid parameter for EMS limit
 04h	EMS limit set
 05h	DPMI disabled
 06h	XMS disabled
 07h	XMS limit set
 08h	unable to uninstall
 09h	unloaded
--------u-672833-----------------------------
INT 67 - Q87 v4+ - PREPARE TO UNLOAD AND GET XMS HANDLE FOR Q87 MEMORY
	AX = 2833h
	EAX = 29482833h (entire EAX value required)
Return: EAX = XMS handle for memory allocated when Q87 was installed
	EBX = status
	    00000000h Q87 is in demo mode (countdown running);
			  Q87 remains active
	    00000001h Q87 is in registered mode; memory manager's IDT, GDT,
			  and optionally CR0 (if BL <> 5Fh on entry) have
			  been restored
	    00000002h Q87 is in demo mode (demo time has expired);
			  Q87 remains active
Note:	this call is used by UNLOAD87 to release the memory used by Q87
BUG:	v4.00-v4.03 will hang on most machines when run under bare DOS with
	  no memory manager, because neither Q87 nor UNLOAD87 checks whether
	  there is a valid INT 67 handler before performing an installation
	  check via INT 67
SeeAlso: AX=4321h,INT 21/AX=4321h/EAX=87654321h
--------m-673F--CX5145-----------------------
INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
	AH = 3Fh
	CX = 5145h ("QE")
	DX = 4D4Dh ("MM")
Return: AH = 00h if installed
	    ES:DI -> QEMM API entry point (see #2699,#2702,#2814)
Notes:	if no other program has hooked INT 67, an alternate installation
	  check is to test for the string
	  "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
	  handler's segment; the word at offset 12h contains the offset in
	  the handler's segment of the API entry point
	although this function is still undocumented, Quarterdeck has recently
	  documented two alternate methods for determining the QEMM API entry
	  point, as well as several of the API functions
	MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
	  the alternate QEMM installation check and entry point functions 00h,
	  02h, and 03h; version 4D only provides the signature string if the
	  commandline argument "DV" is provided
	386MAX v6.01 responds to this call, but DESQview 2.42 does not
	  recognize the returned entry point as providing QEMM's capabilities
	  because a) only functions 0Ch (different from QEMM 0Ch) and
			1000h-1009h are supported,
		  b) status is returned as for EMS functions, not QEMM funcs
		  c) the protected-mode entry point returned by function 1000h
			only supports functions 0Ch, 1004h, 1005h, and 100Ah
	the string check mentioned above is not supported by 386MAX
SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h

(Table 2699)
Values for calling QEMM "QPI_GetStatus" function:
	AH = 00h get QEMM state
Return: CF clear
	AL = QEMM state
	    bit 0 set if QEMM turned OFF
	    bit 1 set if in "Auto" mode
Note:	this function is officially documented
SeeAlso: #2700,#2701,#2702,#2814

(Table 2700)
Values for calling QEMM "QPI_SetStatus" function:
	AH = 01h set QEMM state
	AL = new state
	    bit 0 set: place QEMM in OFF state
Return: CF clear if successful
	CF set on error
Note:	this function is officially documented
SeeAlso: #2699

(Table 2701)
Values for calling QEMM QPI function 02h:
	AH = 02h get ???
Return: CF clear
	AX = segment of ??? data structure
	Data Structure
	Offset	Size	Description
	 00h	DWORD	page table entry for ???
		???
SeeAlso: #2702

(Table 2702)
Values for calling QEMM "QPI_GetVersion" function:
	AH = 03h get QEMM version
Return: CF clear
	AX = BX = version in BCD
Notes:	this function is officially documented.	 The most recent official docs
	  state that the version is returned in both AX and BX; older
	  documentation only mentions BX
	MICEMM returns AX=0001h, BX unchanged
SeeAlso: #2699,#2703

(Table 2703)
Values for calling QEMM QPI function 04h:
	AH = 04h allocate 4K page and set AUTO/ON mode
Return: CF clear if successful
	    DX = page number of a 4K page
	CF set if unable to allocate page
Note:	QEMM mode unchanged if not AUTO/OFF
SeeAlso: #2704

(Table 2704)
Values for calling QEMM QPI function 05h:
	AH = 05h free 4K page and turn QEMM off
	DX = page number returned by function 04h
Return: CF clear
Note:	QEMM mode unchanged if not AUTO/ON
SeeAlso: #2703,#2705

(Table 2705)
Values for calling QEMM QPI function 06h:
	AH = 06h make new mapping context???
	DX = page number of 4K page to hold page table
Return: CF clear
Note:	copies page table into given page and then sets ??? page table entry
	  to point at copy
SeeAlso: #2706,#2707

(Table 2706)
Values for calling QEMM QPI function 07h:
	AH = 07h get mapping context
Return: CF clear
	DX = page number of page table for current mapping context
SeeAlso: #2702,#2705,#2707

(Table 2707)
Values for calling QEMM QPI function 08h:
	AH = 08h set mapping context???
	DX = linear page number of page table
Return: CF clear
SeeAlso: #2702,#2705,#2706,#2708,#2710

(Table 2708)
Values for calling QEMM QPI function 09h:
	AH = 09h get linear page number for page table entry
	CX = page table index
Return: CF clear
	DX = linear page number
SeeAlso: #2709

(Table 2709)
Values for calling QEMM QPI function 0Ah:
	AH = 0Ah set linear page number for page table entry
	CX = page table index
	DX = linear page number
Return: CF clear
SeeAlso: #2708

(Table 2710)
Values for calling QEMM QPI function 0Bh:
	AH = 0Bh map 4K pages
	BX = number of pages
	CX = first page number (must be 0100h to allocate HMA)
	DX = EMS handle (memory belonging to EMS handle will be mapped
	      into the address space beginning with the first page
	      allocated to the handle)
Return: AH = 00h
SeeAlso: #2707,#2711

(Table 2711)
Values for calling QEMM QPI function 0Ch:
	AH = 0Ch get available memory
Return: CF clear
	BX = 0001h
	CX = total 4K pages???
	DX = number of 4K pages free
SeeAlso: #2710,#2712

(Table 2712)
Values for calling QEMM QPI function 0Dh:
	AH = 0Dh CRT controller I/O port trapping
	AL = mode
	    00h only trap on I/O ports 03C0h-03C5h, 03C7h, 03CAh-03CFh
	    01h trap on ports 03B4h, 03B5h, 03B8h, 03C6h, 03C8h, 03C9h,
		  03D4h, and 03D5h
	    02h only trap on I/O ports 03C6h, 03C8h, and 03C9h
Return: CF clear

(Table 2713)
Values for calling QEMM QPI function 0Eh:
	AH = 0Eh set cursor virtualization callbacks
	DS:BX -> FAR routine for getting hardware cursor address
	ES:DX -> FAR routine for setting hardware cursor address
Return: CF clear
Note:	both callbacks are invoked with CL indicating which
	  CRT controller register to access (0Eh for high
	  byte of cursor address, 0Fh for low byte)
	the DS:BX callback should return BX=cursor address;
	  ES:DX is called with BL or BH (depending on CL)
	  set to the appropriate half of the cursor's address

(Table 2714)
Values for calling QEMM QPI function 0Fh:
	AH = 0Fh unmap 4K pages
	CX = first page number
	DX = number of pages
Return: CF clear
	AL = 00h/01h if ???
Note:	if CX=0100h and DX=0010h, the HMA is remapped to
	  simulate a disabled A20

(Table 2715)
Values for calling QEMM QPI function 1000h:
	AX = 1000h get protected-mode interface
	DS:SI -> 16-byte buffer for two GDT entries
	ES:DI -> buffer for 4K page table
Return: CF clear
	EAX = offset of protected-mode API entry point
	DS:SI buffer filled with two GDT descriptors
		first is QEMM code segment, second is data???
	ES:DI buffer filled with 4K page table
	DI points to first unused page table entry
SeeAlso: INT 67/AX=DE01h

(Table 2716)
Values for calling QEMM QPI function 1001h:
	AX = 1001h get CPU debug registers
	ES:DI -> buffer for debug registers (8 DWORDs)
Return: CF clear
	BL = INT01 handling (see function 1002h)
	ES:DI buffer filled

(Table 2717)
Values for calling QEMM QPI function 1002h:
	AX = 1002h set CPU debug registers
	BL = INT01 handling
	    00h	 reflect all debugging exceptions as V86-mode INT 01's
	    else convert debugging exceptions other than single-step
		  into V86-mode INT 03's, single-step to INT 01's
	ES:DI -> buffer containing debug registers (8 DWORDs)
Return: CF clear
Notes:	identical to INT 67/AX=DE09h if BL=01h
	the INT01 handling flag is set to 01h by the general-protection
	  violation handler for certain privileged instructions

(Table 2718)
Values for calling QEMM QPI function 1003h:
	AX = 1003h get machine status word CR0
Return: CF clear
	EAX = contents of CR0
SeeAlso: INT 67/AX=DE07h

(Table 2719)
Values for calling QEMM QPI function 1004h:
	AX = 1004h allocate a 4K page
Return: CF clear if successful
	    EDX = linear address of allocated page
	CF set on error
SeeAlso: INT 67/AX=DE04h

(Table 2720)
Values for calling QEMM QPI function 1005h:
	AX = 1005h free 4K page
	EDX = linear address of page to free
Return: CF clear
SeeAlso: INT 67/AX=DE05h

(Table 2721)
Values for calling QEMM QPI function 1006h:
	AX = 1006h NOP
Return: CF set

(Table 2722)
Values for calling QEMM QPI function 1007h:
	AX = 1007h get maximum physical memory address
Return: CF clear
	EDX = physical address of highest 4K memory page
SeeAlso: INT 67/AX=DE02h

(Table 2723)
Values for calling QEMM QPI function 1008h:
	AX = 1008h get physical address of page in first megabyte
	CX = page number (linear address shifted right 12 bits)
Return: CF clear
	EDX = linear address of page
SeeAlso: function 1F00h

(Table 2724)
Values for calling QEMM QPI function 1009h:
	AX = 1009h switch to protected mode
	ESI = linear address in first megabyte of system reg values
	      (see INT 67/AX=DE0Ch)
	interrupts disabled
Return: interrupts disabled
	GDTR, IDTR, LDTR, TR loaded
	SS:ESP must have at least 16 bytes space, and the
	      entry point is required to set up a new stack
	      before enabling interrupts
	EAX, ESI, DS, ES, FS, GS destroyed

(Table 2725)
Values for calling QEMM QPI function 100Ah:
	AX = 100Ah switch back to virtual-86 mode
	DS = selector for data segment from function 1000h
	SS:ESP in first megabyte of linear memory
	interrupts disabled
	STACK:	QWORD  return address from FAR call to 32-bit segment
		DWORD  EIP
		DWORD  CS
		DWORD  reserved for EFLAGS
		DWORD  ESP
		DWORD  SS
		DWORD  ES
		DWORD  DS
		DWORD  FS
		DWORD  GS
	will switch to virtual86 mode with interrupts disabled, all
	  segment registers loaded, and EAX destroyed.

(Table 2726)
Values for calling QEMM QPI function 11h:
	AH = 11h get memory type map
	AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
	      by QEMM 6.00)
	ES:DI -> 256-byte buffer for memory types
Return: CF clear
	BL = ???
	ES:DI buffer filled
Note:	each byte of the buffer corresponds to a 4K page, and
	  contains the type of that page: 00h = mappable,
	  02h = mapped ROM, 03h = high RAM, 04h = excluded,
	  05h = video, 06h = ROM, 07h = adapter ROM,
	  08h = split ROM, 09h = page frame, 0Ah = RAMmable,
	  0Bh = conventional, 83h = high RAM under MS Windows

(Table 2727)
Values for calling QEMM QPI function 12h:
	AH = 12h get HIRAM chain
Return: CF clear
	BX = segment of first MCB in high memory
	    0000h if no high memory

(Table 2728)
Values for calling QEMM QPI function 1300h:
	AX = 1300h VIDRAMEGA???
	BL = 00h copy ???
	     nonzero copy ??? (reverse)
Return: CF clear
	AL = status
	    00h if all pages clean
	    01h if any page dirty

(Table 2729)
Values for calling QEMM QPI function 1301h:
	AX = 1301h check if pages modified
	DX:DI = start address of range to check
	CX = length of range in paragraphs
Return: CF clear
	CX = status
	    0000h none of the indicated pages is dirty
		DI destroyed
	    1000h one or more pages is dirty
		DI = low word of first dirty page's linear addr

(Table 2730)
Values for calling QEMM QPI function 1302h:
	AX = 1302h ???
	BL = ???
	BH = ???
	CX = ???
	SI = offset of ???
	DI = offset of ???
	???
Return: CF clear
	???
Note:	disables certain interrupts at the two 8259 PICs during
	  execution; also modifies CRT controller during
	  execution under certain circumstances

(Table 2731)
Values for calling QEMM QPI function 1303h:
	AX = 1303h initialize EGA graphics virtualization
	BX = number of pages (less 1) of EMS to allocate
Return: CF clear if successful
	    DX = EMS handle
	CF set on error

(Table 2732)
Values for calling QEMM QPI function 1304h:
	AX = 1304h shutdown EGA graphics virtualization
	DX = EMS handle being used for virtualization
Return: CF clear

(Table 2733)
Values for calling QEMM QPI function 1305h:
	AX = 1305h select portion of EGA graphics to virtualize???
	(related to graphics virtualization, changes memory mappings)
	CX = start offset within A000h segment of virtualized mem???
Return: CF clear
Note:	disables certain interrupts at the two 8259 PICs during
	  execution (see func 130Ch) and runs inside a QEMM
	  critical section

(Table 2734)
Values for calling QEMM QPI function 1306h:
	AX = 1306h set DESQview critical section counter address
	ES:BX -> WORD DESQview critical section counter or 0000h:0000h
Return: CF clear
Note:	also sets a pointer in the low-memory part of QEMM to
	  the current value of INT 15 if ES:BX not 0000h:0000h

(Table 2735)
Values for calling QEMM QPI function 1307h:
	AX = 1307h ??? (changes memory mappings for entire A000h segment)
Return: CF clear
Note:	disables certain interrupts at the two 8259 PICs during
	  execution (see func 130Ch) and runs inside a QEMM
	  critical section

(Table 2736)
Values for calling QEMM QPI function 1308h:
	AX = 1308h start/reset CRT controller I/O trapping
	BL = subfunction
	    00h restore CRTC I/O port trapping to previous state
	    else start trapping all accesses to I/O ports 03B0-03DF
Return: CF clear
Note:	if called more than once in a row with BL nonzero, the
	  original state of the I/O port trapping will be lost

(Table 2737)
Values for calling QEMM QPI function 1309h:
	AX = 1309h Hercules mode-change support
	ES:BX -> new address for Hercules mode-change callback
Return: CF clear
Note:	the callback function is called whenever the CRTC mode
	  register is written, with AL set to the value written

(Table 2738)
Values for calling QEMM QPI function 130Ah:
	AX = 130Ah virtualize EGA/VGA DAC registers (I/O ports 03C8h/03C9h)
	CX:DX -> DAC register virtualization buffer (see #2821)
		or 0000h:0000h to disable
Return: CF clear

(Table 2739)
Values for calling QEMM QPI function 130Bh:
	AX = 130Bh ???
	BL = ??? (??? or 00h)
Return: CF clear
	???
Note:	calls AX=130Eh in some cases

(Table 2740)
Values for calling QEMM QPI function 130Ch:
	AX = 130Ch set interrupts to mask
	BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
	      AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
Return: CF clear

(Table 2741)
Values for calling QEMM QPI function 130Dh:
	AX = 130Dh map EGA memory at A0000h
	???
Return: CF clear
Note:	disables certain interrupts at the two 8259 PICs during execution
	  (see #2740) and runs inside a QEMM critical section
	calls AX=1307h (see #2735)

(Table 2742)
Values for calling QEMM QPI function 130Eh:
	AX = 130Eh ??? (modifies CRT controller setup)
	???
Return: CF clear

(Table 2743)
Values for calling QEMM QPI function 130Fh:
	AX = 130Fh reset ???
Return: CF clear

(Table 2744)
Values for calling QEMM QPI function 1310h:
	AX = 1310h copy modified pages to physical video RAM???
	???
Return: CF clear
Note:	disables certain interrupts at the two 8259 PICs during execution
	  (see #2740) and runs inside a QEMM critical section
	also calls AX=130Dh (see #2741)

(Table 2745)
Values for calling QEMM QPI function 1311h:
	AX = 1311h set ???
	BL = zero/nonzero???
Return: CF clear
Note:	certain operations will be performed with interrupts
	  (as set by AX=130Ch) enabled rather than disabled if
	  called with BL nonzero

(Table 2746)
Values for calling QEMM QPI function 1312h:
	AX = 1312h (v6.02) NOP???
Note:	called by DV 2.42, but appears to be a NOP in QEMM 6.02

(Table 2747)
Values for calling QEMM QPI function 1400h:
	AX = 1400h initialize DESQview "protection level" support
	ES:DI -> protection level configuration (at least 24 bytes)
		(see #2815)
	BL = highest ??? to return (one less than number of words)
Return: CF clear
	AX = ??? (4204h for v6.00)
Note:	QEMM also sets the protected mode INT 02 and INT 06
	  vectors to alternate handlers in certain cases

(Table 2748)
Values for calling QEMM QPI function 1401h:
	AX = 1401h turn off DESQview protection level support
		Return: CF clear
			???
		Notes:	clears the DV critical-section flag address set with
			  function 1306h
			QEMM also sets the protected mode INT 02 and INT 06
			  vectors to the default handlers if they had been
			  revectored by function 1400h

(Table 2749)
Values for calling QEMM QPI function 1402h:
	AX = 1402h set protection level???
		BL = protection level???
		    00h NOP
		    01h ???
		    02h ???
		    other (03h) ???
		ES:DI -> ???
		Return: CF clear
			???
		Format of Data structure:
		Offset	Size	Description
		 00h	WORD	segment of ??? (X, word at X:0136h set to X)
		 02h	WORD	segment of ??? (word at X:0124h set to this)
		 04h	WORD	number of paragraphs of ???
		 06h  3 WORDs	??? (copied to X:0000h)
		 0Ch	WORD	???

(Table 2750)
Values for calling QEMM QPI function 1403h:
	AX = 1403h add ??? to end of list and ??? (execute func 1406h)
		ES:DI -> ??? structure added to end of ??? list
			(at least 31 bytes, DWORD at offset 06h used for
			 storing pointer to next struc, WORD at offset 00h
			 seems to be a key or index)
		Return: CF clear

(Table 2751)
Values for calling QEMM QPI function 1404h:
	AX = 1404h NOP
		Return: CF clear

(Table 2752)
Values for calling QEMM QPI function 1405h:
	AX = 1405h remove ??? from ??? list
		BX = key???
		Return: CF clear

(Table 2753)
Values for calling QEMM QPI function 1406h:
	AX = 1406h ???
		???
		Return: CF clear
			???
		Notes:	this function is a NOP unless protection level 2 or 3
			  is active
			when not a NOP, one of the actions is to write-protect
			  certain memory pages

(Table 2754)
Values for calling QEMM QPI function 1407h:
	AX = 1407h ???
		???
		Return: CF clear
			???
		Note:	same as function 1406h, but only does anything if
			  protection level 2 is active

(Table 2755)
Values for calling QEMM QPI function 1408h:
	AX = 1408h unprotect???
		???
		Return: CF clear
			???

(Table 2756)
Values for calling QEMM QPI function 1409h:
	AX = 1409h abort program causing protection violation???
		???
		Return: CF clear
			???

(Table 2757)
Values for calling QEMM QPI function 140Ah:
	AX = 140Ah set ???
		BX = index of ???
		Return: CF clear
			???
		Notes:	no range checking is performed on BX
			this function is a NOP unless protection level 3 active

(Table 2758)
Values for calling QEMM QPI function 140Bh:
	AX = 140Bh get ???
		BX = index of ???
		SI = 0000h
		Return: CF clear
			SI = segment of 256-byte buffer??? or 0000h
		Notes:	no range checking is performed on BX
			this function is a NOP unless protection level 3 active

(Table 2759)
Values for calling QEMM QPI function 15h:
	AH = 15h set timer channel 0 virtualization buffer
		ES:BX -> WORD buffer for timer channel 0 divisor
			0000h:0000h to disable virtualization
		Return: CF clear

(Table 2760)
Values for calling QEMM v5.00+ QPI function 1600h:
	AX = 1600h get memory access status
		ES:DI -> 256-byte buffer
		Return: ES:DI buffer filled
		Note:	each byte of the buffer indicates the status of a 4K
			  page (bit 0 set if read, bit 1 set if written)

(Table 2761)
Values for calling QEMM v5.00+ QPI function 1601h:
	AX = 1601h set memory access status
		ES:DI -> 256-byte buffer containing access statuses (see #2760)

(Table 2762)
Values for calling QEMM v5.00+ QPI function 17h:
	AH = 17h get memory usage statistics
		ES:DI -> 81-byte buffer for memory statistics (see #2819)
		Return: CF clear

(Table 2763)
Values for calling QEMM v5.11+ QPI function 18h:
	AH = 18h check whether conventional memory mapped into address range
		ES:BX = starting address
		CX = number of 4K pages
		Return: CF clear
			AL = 00h one or more pages is remapped
			     01h all pages in range are conventional memory
				(physical address == virtual address)

(Table 2764)
Values for calling QEMM v5.11+ QPI function 19h:
	AH = 19h NOP
		Return: CF set

(Table 2765)
Values for calling QEMM v5.11+ "QPI_UntrappedIORead" function:
	AX = 1A00h get byte from I/O port
	DX = port number
Return: CF clear
	BL = port value
Note:	this function was officially documented with the release of QEMM 7.50

(Table 2766)
Values for calling QEMM v5.11+ "QPI_UntrappedIOWrite" function:
	AX = 1A01h send byte to I/O port
	BL = value to send
	DX = port number
Return: CF clear
Note:	this function was officially documented with the release of QEMM 7.50

(Table 2767)
Values for calling QEMM v5.11+ "QPI_UntrappedIOReadIndexed" function:
	AX = 1A02h
	BH = index value to send
	DX = base port number
Return: CF clear
	BL = value read from I/O port (DX+1)
Note:	this function was officially documented with the release of QEMM 7.50

(Table 2768)
Values for calling QEMM v5.11+ "QPI_UntrappedIOWriteIndexed" function:
	AX = 1A03h send bytes to two consecutive I/O ports
	BH = value for first I/O port (DX)
	BL = value for second I/O port (DX+1)
	DX = base port number
Return: CF clear
Note:	this function was officially documented with the release of QEMM 7.50

(Table 2769)
Values for calling QEMM v7.03+ "QPI_UntrappedIO" function:
	AX = 1A04h
	BX = value to write to port
	CX = direction and size
	    bit 2: output instead of input
	    bit 3: word instead of byte
	DX = I/O port to be accessed
Return: CF clear
	BX = value read (if CX indicates read)
Note:	this function was officially documented with the release of QEMM 7.50

(Table 2770)
Values for calling QEMM v7.03+ function 1A05h
	AX = 1A05h
	???
Return: ???

(Table 2771)
Values for calling QEMM v7.03+ "QPI_GetIOCallback" function:
	AX = 1A06h
Return: CF clear
	ES:DI -> current I/O callback function
Note:	this function was officially documented with the release of QEMM 7.50

(Table 2772)
Values for calling QEMM v7.03+ "QPI_SetIOCallback" function:
	AX = 1A07h
	ES:DI -> new I/O callback function (see #2773)
Return: CF clear
Note:	this function was officially documented with the release of QEMM 7.50

(Table 2773)
Values QEMM v7.03+ I/O callback function is called with:
	AL/AX = data to/from trapped port
	CL = I/O direction (00h = IN instruction, else OUT instruction)
	DX = I/O port address
Return: CF clear if port handled by callback function
	CF set if not handled
	all other registers returned to application executing the IN or OUT
	  instruction (allowing arbitrary changes to port address, data value,
	  etc.)
SeeAlso: #2772

(Table 2774)
Values for calling QEMM v7.03+ "QPI_GetPortTrap" function:
	AX = 1A08h
	DX = I/O port number
Return: CF clear
	BL = trapping state (00h not being trapped, 01h trap installed)
Note:	this function was officially documented with the release of QEMM 7.50

(Table 2775)
Values for calling QEMM v7.03+ "QPI_SetPortTrap" function:
	AX = 1A09h
	DX = I/O port number
Return: CF clear
Note:	this function was officially documented with the release of QEMM 7.50

(Table 2776)
Values for calling QEMM v7.03+ "QPI_ClearPortTrap" function:
	AX = 1A0Ah
	DX = I/O port number
Return: CF clear
Note:	this function was officially documented with the release of QEMM 7.50

(Table 2777)
Values for calling QEMM v5.11+ QPI function 1B00h:
	AX = 1B00h get EMM Import Structure address
	ES:DI -> buffer for EMM import data structure (see #2817)
Return: CF set on error
	CF clear if successful
SeeAlso: INT 21/AX=4402h/SF=01h

(Table 2778)
Values for calling QEMM v5.11+ QPI function 1B01h:
	AX = 1B01h disable V86 mode
Return: CF set on error
	    (i.e. no Global EMM Import rec. allocated)
	CF clear if successful
Note:	shuts down EMS and initializes Global EMM Import record; this function
	  is invoked from the callback supplied by INT 2F/AX=1605h

(Table 2779)
Values for calling QEMM v5.11+ QPI function 1B02h:
	AX = 1B02h enable V86 mode
Return: CF set on error
	CF clear if successful
Note:	restarts EMS and frees Global EMM Import record; this function is
	  invoked from the callback supplied by INT 2F/AX=1605h

(Table 2780)
Values for calling QEMM v5.11+ QPI function 1B03h:
	AX = 1B03h MS Windows initializing
	CX = segment from which Windows init broadcast made???
	DX = Windows startup flags
	DI = Windows version number (major in upper byte)
Return: CF clear if successful
	    DS:SI -> V86 mode enable/disable callback
		  (see #1915 at INT 2F/AX=1605h)
	    ES:BX -> startup info structure (see #1912 at INT 2F/AX=1605h)
	CF set on error (unable to start Windows)
SeeAlso: INT 2F/AX=1605h

(Table 2781)
Values for calling QEMM v5.11+ QPI function 1B04h:
	AX = 1B04h MS Windows terminating
Return: CF clear

(Table 2782)
Values for calling QEMM v5.11+ QPI function 1B05h:
	AX = 1B05h determine whether program is driver
	DS:DX -> ASCIZ filename
Return: CF clear
	AL = status
	    01h if string ends in ".DRV"
	    FFh if string ends in "GDI.EXE"
	    00h otherwise
Note:	when MS Windows 3.0 standard mode starts, QEMM patches all drivers
	  until GDI.EXE is loaded

(Table 2783)
Values for calling QEMM v5.11+ QPI function 1B06h:
	AX = 1B06h patch protected-mode check in Windows driver
	CX = length of data pointed at by DS:DX
	DS:DX -> buffer containing Windows driver code
Return: CF clear
Note:	patches all SMSW x/TEST x,1 instruction sequences into MOV x,CS/VERW x
	  sequences, which has the effect that the protected-mode check will
	  only indicate protected mode in native protected mode and not in V86
	  mode

(Table 2784)
Values for calling QEMM v5.11+ QPI function 1B07h:
	AX = 1B07h
BUG: QEMM 6.00-7.01 accept this and branch randomly

(Table 2785)
Values for calling QEMM v5.11+ QPI function 1Bxxh:
	AX = 1B08h to 1BFFh
Return: CF set

(Table 2786)
Values for calling QEMM v5.11+ QPI function 1C00h:
	AX = 1C00h disable IRQ0-7 calldowns
Return: CF clear

(Table 2787)
Values for calling QEMM v5.11+ QPI function 1C01h:
	AX = 1C01h set V86-mode IRQ0-7 handlers
	ES:DI -> 8 DWORDs containing V86-mode handler addresses
Return: CF clear

(Table 2788)
Values for calling QEMM v5.11+ QPI function 1C02h:
	AX = 1C02h disable IRQ8-15 handlers
Return: CF clear

(Table 2789)
Values for calling QEMM v5.11+ QPI function 1C03h:
	AX = 1C03h set V86-mode IRQ8-15 handlers
	ES:DI -> 8 DWORDs containing V86-mode handler addresses
BUG:	although the jump table only contains four entries, QEMM 6.00 will
	  attempt to use it for any value of AL between 00h and 2Ah, thus
	  branching unpredictably for AL=04h-2Ah; QEMM v7.01 behaves
	  similarly for AL=04h-1Bh
Note:	when enabled, the appropriate IRQs are reflected back to the specified
	  handlers in virtual-86 mode after the CPU automatically invokes the
	  protected-mode handler inside QEMM

(Table 2790)
Values for calling QEMM v7.03+ "QPI_SimulateHWInt" function:
	AX = 1C04h
	BX = number of interrupt to simulate
Return: ???
Notes:	this function will allow proper simulation of a hardware interrupt
	  under DESQview and DESQview/X, where the correct interrupt handler
	  may be in a different process with a completely different address
	  space
	this function was officially documented with the release of QEMM v7.50

(Table 2791)
Values for calling QEMM v6.0x only QPI function 1D00h:
	AX = 1D00h switch to pre-Stealth interrupt vector table
Return: CF clear if supported (QEMM v6.x)
	CF set if not supported (QEMM v7+)
Notes:	also switches VGA Save table pointer (0040h:00A8h) and overwrites the
	  vectors currently assigned for use by the two interrupt controllers
	  (see INT 67/AX=DE0Ah) with the vectors for INT 08-0F and 70-77 (to
	  avoid crashing the system).
	functions 1Dxxh are not supported by QEMM v7.01, and always return CF
	  set

(Table 2792)
Values for calling QEMM v6.0x only QPI function 1D01h:
	AX = 1D01h restore user interrupt vector table
Return: CF clear if supported (QEMM v6.x)
	CF set if not supported (QEMM v7+)
Notes:	interrupts should be disabled around the AX=1D00h and AX=1D01h calls
	  because QEMM does not modify the memory maps to map in ROM, so
	  an interrupt could be disastrous
	clears any pending IRQ7 at end of function
	functions 1Dxxh are not supported by QEMM v7.01, and always return CF
	  set

(Table 2793)
Values for calling QEMM v6.00+ QPI function 1Dxxh:
	AX = 1D02h to 1DFFh
Return: CF set

(Table 2794)
Values for calling QEMM v6.00+ "QEMM_GET_INFO"/"QPI_GetInfo" function:
	AX = 1E00h get Stealth configuration
Return:	CF clear
	BL = memory configuration flags (documented as "reserved") (see #2818)
	BH = (v7.00+) disk buffer flags
	    bit 0: DISKBUFFRAME buffer instead of DISKBUF buffer
	    bit 1: buffer has already been used
	CL = stealth type (00h none, 46h Frame, 4Dh Map, 50h Protect)
	CH = suspend/resume interrupt (00h none)
	DL = (v7.00+) size of QEMM disk buffer in KB (00h none)
	DH = reserved (always 00h for v6.00)
	SI = reserved (always 0000h for v6.00)
	DI = reserved (always 0000h for v6.00)
Note:	this function is officially documented

(Table 2795)
Values for calling QEMM v6.00+ "QPI_GetStealthCount" function:
	AX = 1E01h get number of Stealth'ed ROMs
Return: CF clear
	BX = number of Stealth'ed ROMs
Note:	this function is officially documented

(Table 2796)
Values for calling QEMM v6.00+ "QPI_GetStealthList" function:
	AX = 1E02h
	ES:DI -> buffer for Stealth ROM info (see #2820)
Return: CF clear
	BX = number of Stealth'ed ROMs
	ES:DI buffer filled
Note:	this function is officially documented

(Table 2797)
Values for unimplemented Stealth information functions:
	AX = 1E03h to 1EFFh
Return: CF set


(Table 2798)
Values for calling QEMM v6.00+ "QEMM_GET_PTE"/"QPI_GetPTE" function:
	AX = 1F00h get page table entry
	CX = page number (0000h-010Fh)
Return:	CF clear
	EDX = page table entry
Note:	this function is officially documented

(Table 2799)
Values for calling QEMM v6.00+ "QEMM_SET_PTE"/"QPI_SetPTE" function:
	AX = 1F01h set page table entry
	CX = page number (0000h-010Fh)
	EDX = new page table entry
Return: CF clear
Note:	this function is officially documented
SeeAlso: function 1008h

(Table 2800)
Values for calling QEMM v6.00+ QPI function 1Fxxh:
	AX = 1F02h to 1FFFh
Return: CF set

(Table 2801)
Values for calling QEMM v6.00+ "QEMM_GET_VHI_INFO"/"QPI_GetVHIInfo" function:
	AX = 2000h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
Return: CF clear
	BL = flags
	    bit 7: VirtualHDIRQ setting respected
		  (set if Stealth active)
	    bits 6-1 reserved
	    bit 0: VirtualHDIRQ currently enabled
		(INT 15/AH=90h suppressed when enabled)
Note:	this function is officially documented
SeeAlso: #2802

(Table 2802)
Values for calling QEMM v6.00+ "QEMM_SET_VHI_INFO"/"QPI_SetVHIInfo" function:
	AX = 2001h set VirtualHDIRQ state
	BL bit 0 = new VirtualHDIRQ state
Return: CF clear
	BL = old VHI setting (bits 0 and 7, see #2801)
Note:	this function is officially documented
SeeAlso: #2801

(Table 2803)
Values for calling QEMM v6.00+ QPI function 20xxh:
	AX = 2002h to 20FFh
Return: CF set

(Table 2804)
Values for calling QEMM v6.00+ "QEMM_COPY_STEALTH_ROMS"/"QPI_CopyStealthRoms":
	AX = 2100h copy data from Stealthed address space
	DS:SI -> start address of hidden memory to copy
	ES:DI -> buffer for copied data
	ECX = number of bytes to copy
Return: CF clear if successful
	CF set on error (no Stealth or DS:SI < C000h:0000h or DS:SI + ECX > 1M)
Note:	this function was officially documented with the release of QEMM 7.50

(Table 2805)
Values for calling QEMM v6.00+ QPI function 21xxh:
	AX = 2101h to 21FFh
Return: CF set

(Table 2806)
Values for calling QEMM v6.03+ QPI function 2200h:
	AX = 2200h DESQview/X support -- get ???
Return: CF clear
	ES:DI -> ???

(Table 2807)
Values for calling QEMM v6.03+ QPI function 2201h:
	AX = 2201h DESQview/X support -- set ???
	ES:DI -> ??? or 0000h:0000h
Return: CF clear if successful
	CF set on error

(Table 2808)
Values for calling QEMM v6.04+ QPI function 2300h:
	AX = 2300h get ???
	BX = which ??? to get (must be 0000h for v6.04)
Return: CF clear if successful
	    ES:DI -> ???
	CF set on error

(Table 2809)
Values for calling QEMM v6.04+ QPI function 2301h:
	AX = 2301h set ???
	BX = which ??? to set (must be 0000h for v6.04)
	ES:DI -> ???
Return: CF clear if successful
	CF set on error

(Table 2810)
Values for calling QEMM v6.04+ QPI function 2302h:
	AX = 2302h clear specified ???
	BX = which ??? to clear (must be 0000h for v6.04)
Return: CF clear if successful
	CF set on error

(Table 2811)
Values for calling QEMM v6.04+ QPI function 23FFh:
	AX = 23FFh clear all ???
Return: CF clear if successful
	CF set on error

(Table 2812)
Values for calling QEMM v6.04+ QPI function 23xxh:
	AX = 2303h to 23FEh
Return: CF set

(Table 2813)
Values for calling QEMM v7.01+ QPI function 24h:
	AH = 24h ST-DBL support
	AL = subfunction
	    00h set ???
		EDX -> information table (EDX = segment SHL 16 + offset)
	    01h ???
Return: CF clear if successful
	CF set on error

(Table 2814)
Values for calling QEMM unimplemented QPI functions:
	AH = 25h to FFh
Return: CF set

Format of QEMM protection level configuration:
Offset	Size	Description	(Table 2815)
 00h	WORD	segment of 128 breakpoint (INT 3) instructions for use in
		  DESQview protection level 3 interrupt vector checking, or
		  0000h to disable; in pl3, INTs 00-7F are pointed at these
		  breakpoints
 02h	DWORD	-> array of actual interrupt handler addresses for INT 00-7F
		  when interrupt vectors are pointed at protection level 3
		  breakpoints
 06h	DWORD	far pointer to ??? region list (see #2816)
 0Ah	DWORD	far pointer to buffer for returned ???
 0Eh	DWORD	seg:ofs of function to call on protection violation???
 12h	WORD	segment of ???
 14h	DWORD	far pointer to DWORD containing number of paragraphs of
		  ??? for segment at offset 12h
	???

Format of protection level Region List:
Offset	Size	Description	(Table 2816)
 00h	WORD	number of PAIRS of pointers to follow
 02h 2N DWORDs	start/end seg:ofs addresses of ??? regions
Note:	QEMM converts the segmented addresses into linear addresses in place

Format of EMM Import structure:
Offset	Size	Description	(Table 2817)
 00h	DWORD	physical address of EMM import struct
 04h	BYTE	major version (v6.00 sets to 01h)
 05h	BYTE	minor version (v6.00 sets to 00h/0Bh)
SeeAlso: INT 21/AX=4402h/SF=01h

Bitfields for memory configuration flags:
Bit(s)	Description	(Table 2818)
 0	conventional memory sorted
 1	conventional memory filled
 2	???
 3	???
 4	expanded memory is in use
 5	???

Format of QEMM 6.0 memory statistics:
Offset	Size	Description	(Table 2819)
 00h	BYTE	01h if Shadow RAM found, 00h otherwise
 01h	DWORD	initial conventional memory in bytes
 05h	DWORD	initial extended memory in bytes
 09h	DWORD	initial expanded memory in bytes
 0Dh	DWORD	initial "top" or "shadow" memory in bytes
 11h	DWORD	Unavailable conventional memory in bytes
 15h	DWORD	Unavailable extended memory in bytes
 19h	DWORD	Unavailable expanded memory in bytes
 1Dh	DWORD	Unavailable "top" or "shadow" memory in bytes
		Add to offset 49h for Total unavailable top/shadow.
 21h	DWORD	QEMM code size in bytes
 25h	DWORD	QEMM data size in bytes
 29h	DWORD	bytes used for TASKS=
 2Dh	DWORD	DMA buffer size
 31h	DWORD	bytes used for MAPS=
 35h	DWORD	bytes of high RAM
 39h	DWORD	bytes used by mapped ROMs
 3Dh	DWORD	bytes of conventional memory provided by QEMM
 41h	DWORD	bytes of extended memory NOT converted by QEMM (EXT=xxx)
 45h	DWORD	bytes of EMS/XMS pool memory provided by QEMM
 49h	DWORD	Unavailable "top" or "shadow" memory in bytes
		Add to offset 1Dh for Total unavailable top/shadow.
 4Dh	DWORD	conventional memory overhead in bytes
		(set to 0 by QEMM.COM prior to call)

Format of Stealth ROM info [array]:
Offset	Size	Description	(Table 2820)
 00h	WORD	starting segment of ROM
 02h	WORD	length of ROM in paragraphs

Format of QEMM EGA/VGA DAC register virtualization buffer:
Offset	Size	Description	(Table 2821)
 00h	BYTE	(temp) current color register number
 01h	BYTE	(temp) number of bytes written so far for current color reg
 02h 768 BYTEs	three bytes per color register
--------m-6740-------------------------------
INT 67 - LIM EMS - GET MANAGER STATUS
	AH = 40h
Return: AH = status (00h,80h,81h,84h) (see #2822)
Note:	this call can be used only after establishing that the EMS driver is in
	  fact present
SeeAlso: AH=3Fh,AX=FFA5h

(Table 2822)
Values for EMS function status:
 00h	successful
 80h	internal error
 81h	hardware malfunction
 83h	invalid handle
 84h	undefined function requested by application
 85h	no more handles available
 86h	error in save or restore of mapping context
 87h	insufficient memory pages in system
 88h	insufficient memory pages available
 89h	zero pages requested
 8Ah	invalid logical page number encountered
 8Bh	invalid physical page number encountered
 8Ch	page-mapping hardware state save area is full
 8Dh	save of mapping context failed
 8Eh	restore of mapping context failed
 8Fh	undefined subfunction
 90h	undefined attribute type
 91h	feature not supported
 92h	successful, but a portion of the source region has been overwritten
 93h	length of source or destination region exceeds length of region
	  allocated to either source or destination handle
 94h	conventional and expanded memory regions overlap
 95h	offset within logical page exceeds size of logical page
 96h	region length exceeds 1M
 97h	source and destination EMS regions have same handle and overlap
 98h	memory source or destination type undefined
 9Ah	specified alternate map register or DMA register set not supported
 9Bh	all alternate map register or DMA register sets currently allocated
 9Ch	alternate map register or DMA register sets not supported
 9Dh	undefined or unallocated alternate map register or DMA register set
 9Eh	dedicated DMA channels not supported
 9Fh	specified dedicated DMA channel not supported
 A0h	no such handle name
 A1h	a handle found had no name, or duplicate handle name
 A2h	attempted to wrap around 1M conventional address space
 A3h	source array corrupted
 A4h	operating system denied access
--------m-6741-------------------------------
INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
	AH = 41h
Return: AH = status (see also AH=40h)
	    00h function successful
		BX = segment of page frame
SeeAlso: AH=58h,AH=68h
--------m-6742-------------------------------
INT 67 - LIM EMS - GET NUMBER OF PAGES
	AH = 42h
Return: AH = status (see also AH=40h)
	    00h function successful
		BX = number of unallocated pages
		DX = total number of pages
BUG:	DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
	  when this call is made; use AH=46h to ensure that EMM386 is ON
	  before making this call
SeeAlso: INT 2F/AX=2702h
--------m-6743-------------------------------
INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
	AH = 43h
	BX = number of logical pages to allocate
Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see #2822)
	DX = handle if AH=00h
SeeAlso: AH=45h
--------u-674321-----------------------------
INT 67 - Q87 v4+ - INSTALLATION CHECK
	AX = 4321h
	EAX = 87654321h (entire EAX value required)
Return: EAX = 12345678h if Q87 is installed
Note:	this call requires that VCPI services be available; if they are not,
	  this call will not be recognized
BUG:	v4.00-v4.03 will hang on most machines when run under bare DOS with
	  no memory manager, because neither Q87 nor UNLOAD87 checks whether
	  there is a valid INT 67 handler before performing an installation
	  check via INT 67
SeeAlso: AX=2833h,INT 21/AX=4321h
--------m-6744-------------------------------
INT 67 - LIM EMS - MAP MEMORY
	AH = 44h
	AL = physical page number (0-3)
	BX = logical page number
	    or FFFFh to unmap (QEMM)
	DX = handle
Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see #2822)
SeeAlso: AH=69h
--------m-6745-------------------------------
INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
	AH = 45h
	DX = EMM handle
Return: AH = status (00h,80h,81h,83h,84h,86h) (see #2822)
SeeAlso: AH=43h
--------m-6746-------------------------------
INT 67 - LIM EMS - GET EMM VERSION
	AH = 46h
Return: AH = status (00h,80h,81h,84h) (see #2822)
	AL = EMM version number if AH=00h
--------m-6747-------------------------------
INT 67 - LIM EMS - SAVE MAPPING CONTEXT
	AH = 47h
	DX = handle
Return: AH = status (00h,80h,81h,83h,84h,8Ch-8Eh) (see #2822)
SeeAlso: AH=48h
--------m-6748-------------------------------
INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
	AH = 48h
	DX = handle
Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see #2822)
SeeAlso: AH=47h
--------m-6749-------------------------------
INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
	AH = 49h
Note:	defined in EMS 3.0, but undocumented in EMS 3.2
--------m-674A-------------------------------
INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
	AH = 4Ah
Note:	defined in EMS 3.0, but undocumented in EMS 3.2
--------m-674B-------------------------------
INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
	AH = 4Bh
Return: AH = status (00h,80h,81h,83h,84h) (see #2822)
	BX = number of EMM handles if AH=00h
--------m-674C-------------------------------
INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
	AH = 4Ch
	DX = EMM handle
Return: AH = status (see #2014)
	BX = number of logical pages if AH=00h
SeeAlso: AH=4Dh
--------m-674D-------------------------------
INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
	AH = 4Dh
	ES:DI -> array to receive information
Return: AH = status (00h,80h,81h,84h) (see #2822)
	---if AH=00h---
	BX = number of active EMM handles
	array filled with 2-word entries, consisting of a handle and the
	  number of pages allocated to that handle
SeeAlso: AH=4Ch
--------m-674E-------------------------------
INT 67 - LIM EMS - GET OR SET PAGE MAP
	AH = 4Eh
	AL = subfunction
	    00h get mapping registers
	    01h set mapping registers
	    02h get and set mapping registers at once
	    03h get size of page-mapping array
	DS:SI -> array holding information (AL=01h/02h)
	ES:DI -> array to receive information (AL=00h/02h)
Return: AH = status (00h,80h,81h,84h,8Fh,A3h) (see also AH=40h)
	    00h successful
		AL = bytes in page-mapping array (AL=03h only)
		array pointed to by ES:DI receives mapping info (AL=00h/02h)
Notes:	this function was designed to be used by multitasking operating systems
	  and should not ordinarily be used by appplication software.
	MD386 returns the size of the page-mapping array in AX instead of AL
SeeAlso: AH=4Fh
--------m-674F-------------------------------
INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
	AH = 4Fh
	AL = subfunction
	    00h get partial page map
	       DS:SI -> structure containing list of segments whose mapping
			contexts are to be saved
	       ES:DI -> array to receive page map
	    01h set partial page map
	       DS:SI -> structure containing saved partial page map
	    02h get size of partial page map
	       BX = number of mappable segments in the partial map to be saved
Return: AH = status (00h,80h,81h,84h,8Bh,8Fh,A3h) (see also AH=40h)
	    8Bh one of the specified segments is not mappable
	    A3h contents of partial page map corrupted or count of mappable
		segments exceeds total number of mappable segments in system
	AL = size of partial page map for subfunction 02h
SeeAlso: AH=4Eh
--------m-6750-------------------------------
INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
	AH = 50h
	AL = subfunction
	    00h use physical page numbers
	    01h use segment addresses
	DX = handle
	CX = number of entries in array
	DS:SI -> mapping array (see #2823)
Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2822)
SeeAlso: AH=40h

Format of EMS mapping array entry:
Offset	Size	Description	(Table 2823)
 00h	WORD	logical page number or FFFFh to unmap physical page
 02h	WORD	physical page number or segment address
--------m-6751-------------------------------
INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
	AH = 51h
	DX = handle
	BX = number of pages to be allocated to handle
Return:	AH = status (00h,80h,81h,83h,84h,87h,88h) (see #2824)
	BX = actual number of pages allocated to handle

(Table 2824)
Values for EMS function status:
 00h	successful
 80h	internal error
 81h	hardware malfunction
 83h	invalid handle
 84h	undefined function requested
 87h	more pages requested than present in system
 88h	more pages requested than currently available
 8Ah	invalid logical page number encountered
 8Bh	invalid physical page number encountered
 8Fh	undefined subfunction
 90h	undefined attribute type
 91h	feature not supported
 A0h	no such handle name
 A1h	duplicate handle name
--------m-6752-------------------------------
INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
	AH = 52h
	AL = subfunction
	    00h get handle attributes
		Return: AL = attribute
			    00h handle is volatile
			    01h handle is nonvolatile
	    01h set handle attributes
		BL = new attribute (see returned AL)
	    02h get attribute capability
		Return: AL = attribute capability
			    00h only volatile handles supported
			    01h both volatile and non-volatile supported
	DX = handle
Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see #2822)
SeeAlso: AH=53h
--------m-6753-------------------------------
INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
	AH = 53h
	AL = subfunction
	    00h get handle name
	       ES:DI -> 8-byte buffer for handle name
	    01h set handle name
	       DS:SI -> 8-byte handle name
	DX = handle
Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see #2822)
SeeAlso: AH=52h
--------m-6754-------------------------------
INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
	AH = 54h
	AL = subfunction
	    00h get handle directory
	       ES:DI -> buffer for handle directory (see #2825)
	    01h search for named handle
	       DS:SI -> 8-byte name
	    02h get total number of handles
Return: AL = number of entries in handle directory (subfunction 00h)
	DX = value of named handle (subfunction 01h)
	BX = total number of handles (subfunction 02h)
	AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also #2824)
	    A1h a handle found had no name

Format of EMS handle directory entry:
Offset	Size	Description	(Table 2825)
 00h	WORD	handle
 02h  8 BYTEs	handle's name
--------m-6755-------------------------------
INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
	AH = 55h
	AL = subfunction
	    00h physical page numbers provided by caller
	    01h segment addresses provided by caller
	DX = handle
	DS:SI -> structure containing map and jump address
Return: (at target address unless error)
	AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2822)
SeeAlso: AH=56h
--------m-6756-------------------------------
INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
	AH = 56h
	AL = subfunction
	    00h physical page numbers provided by caller
		DX = handle
		DS:SI -> structure containing page map and call address
	    01h segment addresses provided by caller
		DX = handle
		DS:SI -> structure containing page map and call address
	    02h get page map stack space required
		Return: BX = stack space required
Return: (if successful, the target address is called.  Use a RETF to return and
	 restore mapping context)
	AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2822)
SeeAlso: AH=55h
--------m-6756FF-----------------------------
INT 67 - RM386 v6.00 - ???
	AX = 56FFh
	DS:SI -> ???
	???
Return: ???
--------m-6757-------------------------------
INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
	AH = 57h
	AL = subfunction
	    00h move memory region
	    01h exchange memory region
	DS:SI -> structure describing source and destination (see #2827)
Return: AH = status (see #2826)
Note:	source and destination may overlap for a move, in which case the copy
	  direction is chosen such that the destination receives an intact copy
	  of the source region

(Table 2826)
Values for EMS function status:
 00h	successful
 80h	internal error
 81h	hardware failure
 83h	invalid handle
 84h	undefined function requested
 8Ah	invalid logical page number encountered
 8Fh	undefined subfunction
 92h	successful, but a portion of the source region has been overwritten
 93h	length of source or destination region exceeds length of region
	  allocated to either source or destination handle
 94h	conventional and expanded memory regions overlap
 95h	offset within logical page exceeds size of logical page
 96h	region length exceeds 1M
 97h	source and destination EMS regions have same handle and overlap
 98h	memory source or destination type undefined
 A2h	attempted to wrap around 1M conventional address space

Format of EMS copy data:
Offset	Size	Description	(Table 2827)
 00h	DWORD	region length in bytes
 04h	BYTE	source memory type
		00h conventional
		01h expanded
 05h	WORD	source handle (0000h if conventional memory)
 07h	WORD	source initial offset (within page if EMS, segment if convent)
 09h	WORD	source initial segment (conv mem) or logical page (EMS)
 0Bh	BYTE	destination memory type
		00h conventional
		01h expanded
 0Ch	WORD	destination handle
 0Eh	WORD	destination initial offset
 10h	WORD	destination initial segment or page
--------m-6758-------------------------------
INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
	AH = 58h
	AL = subfunction
	    00h get mappable physical address array
		ES:DI -> buffer to be filled with array (see #2828)
	    01h get number of entries in m.p.a. array
Return: CX = number of entries in array
	AH = status (00h,80h,81h,84h,8Fh) (see #2826)
Note:	the returned array for subfunction 00h is filled in physical segment
	  address order

Format of EMS mappable physical address entry:
Offset	Size	Description	(Table 2828)
 00h	WORD	physical page segment
 02h	WORD	physical page number
--------m-675857-----------------------------
INT 67 U - NETROOM??? - ???
	AX = 5857h
	BX = function??? (0057h,0059h,0159h seen)
	???
Return: ???
Note:	BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
	  be analogous to AX=5801h; BX=0057h appears to indicate whether
	  AX=580xh or AX=5857h/BX=0x59h should be used
SeeAlso: AX=5BF0h
--------m-6759-------------------------------
INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
	AH = 59h
	AL = subfunction
	    00h get hardware configuration array
		ES:DI -> buffer to be filled with array (see #2829)
	    01h get unallocated raw page count
		Return: BX = unallocated raw pages
			DX = total raw pages
Return: AH = status (see also AH=58h"EMS 4.0")
	    A4h access denied by operating system
Note:	subfunction 00h is for use by operating systems only, and can be
	  enabled or disabled at any time by the operating system

Format of EMS hardware configuration array:
Offset	Size	Description	(Table 2829)
 00h	WORD	size of raw EMM pages in paragraphs
 02h	WORD	number of alternate register sets
 04h	WORD	size of mapping-context save area in bytes
 06h	WORD	number of register sets assignable to DMA
 08h	WORD	DMA operation type
		0000h DMA with alternate register sets
		0001h only one DMA register set
--------m-675A-------------------------------
INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
	AH = 5Ah
	AL = subfunction
	    00h allocate standard pages
	    01h allocate raw pages
	BX = number of pages to allocate
Return: DX = handle
	AH = status (00h,80h,81h,84h,85h,87h,88h,8Fh) (see #2822)
--------m-675B-------------------------------
INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
	AH = 5Bh
	AL = subfunction
	    00h get alternate map register set
		Return: BL = current active alternate map register set number
			ES:DI -> map register context save area if BL=00h
	    01h set alternate map register set
		BL = new alternate map register set number
		ES:DI -> map register context save area if BL=0
	    02h get alternate map save array size
		Return: DX = array size in bytes
	    03h allocate alternate map register set
		Return: BL = number of map register set; 00h = not supported
	    04h deallocate alternate map register set
		BL = number of alternate map register set
Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see #2830)
Note:	this function is for use by operating systems only, and can be
	  enabled or disabled at any time by the operating system

(Table 2830)
Values for EMS function status:
 00h	successful
 80h	internal error
 81h	hardware malfunction
 84h	undefined function requested
 8Fh	undefined subfunction
 9Ah	specified alternate map register or DMA register set not supported
 9Bh	all alternate map register or DMA register sets currently allocated
 9Ch	alternate map register or DMA register sets not supported
 9Dh	undefined or unallocated alternate map register/DMA register set
 9Eh	dedicated DMA channels not supported
 9Fh	specified dedicated DMA channel not supported
 A3h	source array corrupted
 A4h	operating system denied access
--------m-675B-------------------------------
INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
	AH = 5Bh
	AL = subfunction
	    05h allocate DMA register set
		Return: BL = DMA register set number, 00h if not supported
	    06h enable DMA on alternate map register set
	       BL = DMA register set number
	       DL = DMA channel number
	    07h disable DMA on alternate map register set
	       BL = DMA register set number
	    08h deallocate DMA register set
	       BL = DMA register set number
Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see #2830)
Note:	this function is for use by operating systems only, and can be
	  enabled or disabled at any time by the operating system
--------m-675BE0-----------------------------
INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
	AX = 5BE0h
	ES:BX -> memory for which to get linear address
Return: AH = 00h
	CX:DX = linear address of physical memory corresponding to ES:BX
Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
	  MICEMM is a memory manager for some Micronics motherboards
Note:	this has been superceded by AX=DE06h, which should be used instead
SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
--------m-675BE1-----------------------------
INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
	AX = 5BE1h
Return: AH = 00h
	CX = code and data size in bytes
	DX:BX = physical address of RM386 code
	DI:SI = total size of RM386 area including handle tables
	BP = number of additional pages (high DOS, etc.)
SeeAlso: AX=5BE0h,AX=5BE2h
--------m-675BE2-----------------------------
INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
	AX = 5BE2h
Return: DS:SI -> V86-mode table (see #2831)
	ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
SeeAlso: AX=5BE0h,AX=5BE1h

Format of RM386 V86-mode table:
Offset	Size	Description	(Table 2831)
 00h	DWORD	original INT 13 vector
 04h	DWORD	original INT 15 vector
 08h	DWORD	original INT 19 vector
 0Ch	DWORD	original INT 21 vector
 10h	DWORD	original INT 4B vector
 14h	DWORD	original INT 67 vector
--------m-675BF0-----------------------------
INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
	AX = 5BF0h
Return: AH = 00h if MICEMM or RM386 present
	    BX = code segment of driver
Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
	  manager included in Helix Software's Netroom
SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
--------m-675BF1-----------------------------
INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
	AX = 5BF1h
	ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
Return: AH = 00h
	ES:BX buffer filled (see #2832)
Note:	each byte in the buffer specifies the type of a 4K page of memory
SeeAlso: AX=5BE0h,AX=5BF0h

(Table 2832)
Values for MICEMM/RM386 memory type:
 00h	unused (MICEMM), RAM/available (RM386)
 02h	DOS extension (XMS UMB)
 04h	shadowed ROM
 08h	mappable EMS
 10h	page frame
 20h	ROM
 40h	reserved (video memory, etc)
 80h	RAM (MICEMM), Windows UMB (RM386)
--------m-675BF2-----------------------------
INT 67 - RM386 - GET RM386 INTERNAL DATA
	AX = 5BF2h
	CX = size of buffer
	DS:SI -> buffer for internal data
	(documentation says ES:BX -> buffer, SI = offset within RM386)
Return: buffer filled
Note:	the data returned by this function is release-specific
SeeAlso: AX=5BF0h
--------m-675BF3-----------------------------
INT 67 - RM386 - RETURN TO REAL MODE
	AX = 5BF3h
Return: nothing
Note:	use AX=5DE0h instead of this functin
SeeAlso: AX=5BF0h,AX=5DE0h
--------m-675BF4-----------------------------
INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
	AX = 5BF4h
Return: AH = 00h
	BX = global flags 1 (see #2833)
	CX = global flags 2 (see #2834)
	DX = global flags 3 (see #2835)
	SI = global flags 4 (see #2836)
SeeAlso: AX=5BF0h

Bitfields for RM386 global flags 1:
Bit(s)	Description	(Table 2833)
 0-3	reserved
 4	V86 mode
 5	reserved
 6	80386 or higher CPU
 7,8	reserved
 9	A20 enabled at startup
 10	"HIGH_IO"
 11	ROM
 12	large frame
 13,14	reserved
 15	PS/2-style A20 control

Bitfields for RM386 global flags 2:
Bit(s)	Description	(Table 2834)
 0	HMA in use
 1	XMS present
 2	using XMS driver memory
 3	HIGH (NEAT only)
 4-7	reserved
 8	NOBKTRAP
 9	NORESET
 10	ALTMAP
 11	NOFRAME
 12-15	reserved

Bitfields for RM386 global flags 3:
Bit(s)	Description	(Table 2835)
 0	NOTEST
 1	NOEBDA
 2	Windows3 support
 3	system board mouse
 4	DISKBUF
 5	EBDALOW
 6	A20 global enable flag
 7	A20 flag
 8	EBDA moved to stub
 9	VXD file was found
 10	reserved
 11	NOBOOTMAP
 12	AUTO
 13	PS/2 machine
 14	Compaq ROM merge active
 15	NOHMA set

Bitfields for RM386 global flags 4:
Bit(s)	Description	(Table 2836)
 0	"NOV8259" don't virtualize interrupt controller
 1	NOSCSI
 2	NOSCAN
 3	NOTR
 4	ALTBOOT
 5	NOCOMPQ
 6	KB2TRAP
 7	DESHADOW
 8	Video 7 VGA detected
 9	reserved
 10	NOVGA
 11	NOPS2
 12	DEBUG
 13	NOVKB
 14,15	reserved
--------m-675BF5-----------------------------
INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
	AX = 5BF5h
Return: AH = status
	    00h successful
		BX = current number of allocated EMS handles
	    84h function not available
SeeAlso: AX=5BF0h
--------m-675C-------------------------------
INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
	AH = 5Ch
Return: AH = status (see #2837)
Note:	when MS-DOS v6.xx EMM386 is loaded and the keyboard driver supports
	  INT 15/AH=4Fh (keyboard intercept) calls, the system may hang
	  instead of booting if this function is called just prior to a jump
	  to F000h:FFF0h

(Table 2837)
Values for EMS function status:
 00h	successful
 80h	internal error
 81h	hardware malfunction
 84h	undefined function requested
--------m-675D-------------------------------
INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
	AH = 5Dh
	AL = subfunction
	    00h enable OS Function Set
	    01h disable OS Function Set
	    02h return access key (resets memory manager, returns access key at
		next invocation)
	BX,CX = access key returned by first invocation
Return: BX,CX = access key, returned only on first invocation of function
	AH = status (see also AH=5Ch)
	    8Fh undefined subfunction
	    A4h operating system denied access
--------m-675D03-----------------------------
INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
	AX = 5D03h
	???
Return: ???
Program: MD386 is a subset EMS memory manager by Nanosoft specifically designed
	  for use with the MultiDOS Plus multitasker
SeeAlso: AX=5D04h,AX=5E00h
--------m-675D04-----------------------------
INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
	AX = 5D04h
	BX = alternate register set number
	ES:DI -> 1024-byte buffer for map structure
Return: AH = status (see #2822)
	buffer filled if AH=00h
Note:	used for debugging purposes
SeeAlso: AX=5D05h
--------m-675D05-----------------------------
INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
	AX = 5D05h
	BX = handle number
	ES:DI -> 1024-byte buffer for handle table
Return: AH = status (see #2822)
	buffer filled if AH=00h
Note:	used for debugging purposes
SeeAlso: AX=5D04h
--------m-675DE0-----------------------------
INT 67 - RM386 - DISABLE RM386
	AX = 5DE0h
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DE1h
--------m-675DE1-----------------------------
INT 67 - RM386 - ENABLE RM386
	AX = 5DE1h
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DE0h
--------m-675DE2-----------------------------
INT 67 - RM386 - GET PAGE TABLE
	AX = 5DE2h
	ES:DI -> 1088-byte buffer for page table
Return: ES:DI buffer filled
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DE3h
--------m-675DE3-----------------------------
INT 67 - RM386 - SET PAGE TABLE
	AX = 5DE3h
	ES:DI -> 1088-byte buffer containing page table
Notes:	only the access bits of the page table are used, the remainder is
	  ignored
	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DE2h
--------m-675DE4-----------------------------
INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
	AX = 5DE4h
	BL = page number
	BH = access (00h read-only, 01h read-write)
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
--------m-675DE5-----------------------------
INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
	AX = 5DE5h
	EBX = physical page number
	DX = page number in first megabyte to be remapped (linear-addr SHR 12)
Return: AH = status
	    00h successful
	    8Bh invalid destination page (not in first megabyte)
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DE6h
--------m-675DE6-----------------------------
INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
	AX = 5DE6h
	BX = logical page number in 4K pages from beginning of memory for EMS
	      handle
	CX = segment in first megabyte to be remapped
	DX = previously-allocated EMS handle
Return: AH = status
	    00h successful
	    83h invalid handle
	    8Ah invalid logical page (out of handle's range)
	    8Bh invalid destination page (not in first megabyte)
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DE5h
--------m-675DE7-----------------------------
INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
	AX = 5DE7h
	BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
	CX = number of pages to set
	DX = first page number to set (in first megabyte)
Return: AH = status
	    00h successful
	    8Bh invalid destination page (not in first megabyte)
	    A5h invalid page bits
	    A6h invalid page count (overflows first megabyte)
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
--------m-675DE8-----------------------------
INT 67 - RM386 - GET PARTIAL PAGE TABLE
	AX = 5DE8h
	BX = starting page number in first megabyte+HMA (0000h-010Fh)
	CX = number of page table entries to get
	ES:DI -> buffer for DWORD page table entries
Return: AH = status (00h successful, 8Bh invalid page)
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DE9h
--------m-675DE9-----------------------------
INT 67 - RM386 - SET PARTIAL PAGE TABLE
	AX = 5DE9h
	BX = starting page number in first megabyte+HMA (0000h-010Fh)
	CX = number of page table entries to get
	DS:SI -> buffer of DWORD page table entries
Return: AH = status (00h successful, 8Bh invalid destination page)
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DE8h
--------m-675DEA-----------------------------
INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
	AX = 5DEAh
	BX = function
	    00h globally disable V86-mode trapping
	    01h globally enable V86-mode trapping
		CL = interrupt to use for trapping
	    02h get I/O trapping state
Return: AH = status
	    00h successful
		BX = current trapping state (function 02h)
		    0000h disabled, 0001h enabled
		CX = interrupt used as trap interrupt (functions 00h and 02h)
Notes:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
	when I/O trapping is enabled and I/O port access occurs, RM386
	  simulates an INT instruction for the specified interrupt; the
	  interrupt handler is responsible for decoding the trapped instruction
	  and performing the appropriate action.  INT 2C/AX=002Dh provides a
	  similar but more-easily used interface.
SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
--------m-675DEB-----------------------------
INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
	AX = 5DEBh
	BX = function
	    00h disable V86-mode trapping for specified port
	    01h enable V86-mode trapping for specified port
	    02h get V86-mode trapping state for specified port
	DX = port for which to enable/disable/query trapping
Return: AH = status
	    00h successful
		BX = current trapping state (00h off, 01h on) (function 02)
	    A7h invalid port ID
	    A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
Notes:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DEAh
--------m-675DFD-----------------------------
INT 67 U - RM386 v6.00 - ???
	AX = 5DFDh
	???
Return: ???
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DFEh
--------m-675DFE-----------------------------
INT 67 U - RM386 v6.00 - ???
	AX = 5DFEh
	???
Return: ???
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DFDh
--------m-675DFF-----------------------------
INT 67 U - RM386 v6.00 - ???
	AX = 5DFFh
	???
Return: ???
Note:	RM386 traps this function on the initial transition to protected
	  mode caused by the INT instruction, which means it can not be
	  overridden simply by hooking the interrupt
SeeAlso: AX=5DFDh,AX=5DFEh
--------m-675E00-----------------------------
INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
	AX = 5E00h
	DH = breakpoint number (0-3)
	DL = breakpoint attributes (used to set DR7)
	CX:BX = linear address of breakpoint
SeeAlso: AX=5D03h,AX=5E01h
--------m-675E01-----------------------------
INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
	AX = 5E01h
	BL = register number (0-3,7)
Return: CX:BX = value of specified DRx register
SeeAlso: AX=5E00h
--------m-675E02-----------------------------
INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
	AX = 5E02h
	CX:BX -> exception handler
Note:	the specified exception handler is called with a simulated interrupt
	  whenever a debug exception occurs which was caused by a hardware
	  breakpoint set with the debug registers
SeeAlso: AX=5E04h,AX=5E05h
--------m-675E03-----------------------------
INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
	AX = 5E03h
	BL = register map set number
	BH = new state (00h read-only, else read-write)
	CX = linear page number (linear address SHR 12)
Note:	setting write protection in map set 0 will cause the setting to become
	  the default for newly-allocated map sets
--------m-675E04-----------------------------
INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
	AX = 5E04h
Return: BL = debug exception (low byte of DR6 register)
SeeAlso: AX=5E02h,AX=5E05h
--------m-675E05-----------------------------
INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
	AX = 5E05h
Note:	may be required when using AX=5E02h for handling instruction
	  breakpoints
SeeAlso: AX=5E02h,AX=5E04h
--------m-6760-------------------------------
INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
	AH = 60h
	ES:DI -> buffer
Return: AH = status (see also AH=40h)
	AL = number of entries
	buffer at ES:DI filled
--------m-6761-------------------------------
INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
	AH = 61h
	???
Return: ???
Note:	can be used by accelerator card manufacturer to flush RAM cache,
	  ensuring that the cache accurately reflects what the processor would
	  see without the cache.
--------m-676100-----------------------------
INT 67 - EEMS - STB GENERIC ACCELERATOR CARD SUPPORT - INSTALLATION CHECK???
	AX = 6100h
Return: AH = status (00h if installed???)
Note:	STB's RAPIDMAP.SYS EMS driver calls this function and AX=6101h if
	  the signature "GACXXX" is found at offset 0Ah in the INT 67 handler's
	  segment (i.e. a device driver named GACXXX?? has hooked INT 67)
SeeAlso: AX=6101h,INT 02/SI=0714h
--------m-676101-----------------------------
INT 67 - EEMS - STB GENERIC ACCELERATOR CARD SUPPORT - GET ??? ENTRY POINT
	AX = 6101h
Return: AH = status
	---if AH=00h---
	ES:BX -> ??? entry point
SeeAlso: AX=6100h
--------m-6768-------------------------------
INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
	AH = 68h
	ES:DI -> buffer
Return: AH = status (see also AH=40h)
	AL = number of entries
	buffer at ES:DI filled
Note:	equivalent to LIM 4.0 function 58h
--------m-6769-------------------------------
INT 67 - EEMS - MAP PAGE INTO FRAME
	AH = 69h
	AL = frame number
	BX = page number
	DX = handle
Return: AH = status (see also AH=40h)
Note:	similar to EMS function 44h
SeeAlso: AH=44h,AH=50h,AH=6Ah
--------m-676A-------------------------------
INT 67 - EEMS - PAGE MAPPING
	AH = 6Ah
	AL = subfunction
	    00h save partial page map
		CH = first page frame
		CL = number of frames
		ES:DI -> buffer which is to be filled
	    01h restore partial page map
		CH = first page frame
		CL = number of frames
		DI:SI -> previously saved page map
	    02h save and restore partial page map
		CH = first page frame
		CL = number of frames
		ES:DI = buffer for current page map
		DI:SI = new page map
	    03h get size of save array
		CH = first page frame
		CL = number of frames
		Return: AL = size of array in bytes
	    04h switch to standard map register setting
	    05h switch to alternate map register setting
	    06h deallocate pages mapped to frames in conventional memory
		CH = first page frame
		CL = number of frames
Return: AH = status (see #2822)
Note:	similar to EMS function 4Eh, except that a subrange of pages can be
	  specified
SeeAlso: AH=69h
--------m-676B-------------------------------
INT 67 - DESQview 2.42-2.53 - BUG
	AH = 6Bh
Note:	the EMM.DVR portion of DESQview branches to a random location on this
	  function due to a fencepost error
--------m-67DD-------------------------------
INT 67 - Quadtel QMAPS - API
	AH = DDh
	AL = function
	???
Return: ???
Notes:	details are not yet available
	Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
	  supports this API
SeeAlso: AH=3Fh,AX=FFA5h
--------E-67DE00-----------------------------
INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
	AX = DE00h
Return: AH = status
	    00h VCPI is present
		BH = major version number
		BL = minor version number
	    nonzero  VCPI not present
BUG:	MS Windows 3.00 is reported to "object violently" to this call.
SeeAlso: INT 2F/AX=1687h
--------E-67DE01-----------------------------
INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
	AX = DE01h
	ES:DI -> 4K page table buffer
	DS:SI -> three descriptor table entries in GDT
		first becomes code segment descriptor, other two for use by
		  main control program
Return: AH = 00h successful
	    DI -> first unused page table entry in buffer
	    EBX -> protected mode entry point in code segment (see #2838)
	AH = nonzero  failed
Note:	protected mode entry point may be called with AX=DE00h-DE05h and
	  AX=DE0Ch (in each case, all other registers as appropriate for
	  the function)
SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh

(Table 2838)
Call QEMM v6.03 protected mode entry point additionally with:
	AX = DF00h ???
		???
		Return: ???
	AX = DF01h ???
		???
		Return: ???
--------E-67DE02-----------------------------
INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
	AX = DE02h
Return: AH = 00h  successful
	    EDX = physical address of highest 4K memory page
	AH nonzero: failed
SeeAlso: AH=3Fh
--------E-67DE03-----------------------------
INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
	AX = DE03h
Return: AH = 00h  successful
	    EDX = number of free 4K pages
	AH nonzero: failed
Notes:	returns total number of pages available to ALL tasks in system
	also available in protected mode by calling the protected-mode VCPI
	  entry point (see AX=DE01h,#2838)
SeeAlso: AX=DE04h
--------E-67DE04-----------------------------
INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
	AX = DE04h
Return: AH = 00h successful
	    EDX = physical address of allocated page
	AH nonzero: failed
Notes:	the client program is responsible for freeing all memory allocated
	  with this call before terminating
	also available in protected mode by calling the protected-mode VCPI
	  entry point (see AX=DE01h,#2838)
SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
--------E-67DE05-----------------------------
INT 67 - Virtual Control Program Interface - FREE 4K PAGE
	AX = DE05h
	EDX = physical address of 4K page
Return: AH = status
	    00h successful
	    nonzero failed
Note:	also available in protected mode by calling the protected-mode VCPI
	  entry point (see AX=DE01h,#2838)
SeeAlso: AH=3Fh,AX=DE04h
--------E-67DE06-----------------------------
INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
	AX = DE06h
	CX = page number (linear address shifted right 12 bits)
Return: AH = status
	    00h successful
		EDX = physical address of page
	    nonzero invalid page number (AH = 8Bh recommended)
SeeAlso: AX=5BE0h
--------E-67DE07-----------------------------
INT 67 - Virtual Control Program Interface - READ CR0
	AX = DE07h
Return: AH = 00h
	EBX = value of Control Register 0
SeeAlso: AH=3Fh,AX=DE07h
--------E-67DE08-----------------------------
INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
	AX = DE08h
	ES:DI -> array of 8 DWORDs
Return: AH = 00h
	buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
SeeAlso: AH=3Fh,AX=DE09h
--------E-67DE09-----------------------------
INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
	AX = DE09h
	ES:DI -> array of 8 DWORDs holding new values of debug registers
Return: AH = 00h
Note:	values for DR4 and DR5 ignored
SeeAlso: AH=3Fh,AX=DE08h
--------E-67DE0A-----------------------------
INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
	AX = DE0Ah
Return: AH = 00h successful
	    BX = first vector used by master 8259 (IRQ0)
	    CX = first vector used by slave 8259 (IRQ8)
	AH nonzero: failed
Note:	CX is undefined in systems without a slave 8259
SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
--------E-67DE0B-----------------------------
INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
	AX = DE0Bh
	BX = first vector used by master 8259
	CX = first vector used by slave 8259
	interrupts disabled
Return: AH = 00h successful
	AH nonzero: failed
Notes:	This call merely informs the server that the client has changed the
	  interrupt mappings.  The client may not change the mappings if they
	  have already been changed by the server or another client, and is
	  responsible for restoring the original mappings before terminating.
SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
--------E-67DE0C-----------------------------
INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
	AX = DE0Ch
	ESI = linear address in first megabyte of values for system
	      registers (see #2839)
	interrupts disabled
Return: interrupts disabled
	GDTR, IDTR, LDTR, TR loaded
	SS:ESP must have at least 16 bytes space, and the entry point is
	      required to set up a new stack before enabling interrupts
	EAX, ESI, DS, ES, FS, GS destroyed
Note:	in protected mode, calling the protected-mode VCPI entry point with
	  AX = DE0Ch
	  DS = segment selector mapping entire linear address space obtained
		  via AX=DE01h
	  SS:ESP in first megabyte of linear memory
	  STACK:QWORD  return address from FAR call to 32-bit segment
		DWORD  EIP
		DWORD  CS
		DWORD  reserved for EFLAGS
		DWORD  ESP
		DWORD  SS
		DWORD  ES
		DWORD  DS
		DWORD  FS
		DWORD  GS
	  and interrupts disabled, will switch to virtual86 mode with
	    interrupts disabled, all segment registers loaded, and EAX
	    destroyed.
SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h

Format of system register values for switch to protected mode:
Offset	Size	Description	(Table 2839)
 00h	DWORD	value for CR3
 04h	DWORD	linear address in first megabyte of value for GDTR
 08h	DWORD	linear address in first megabyte of value for IDTR
 0Ch	WORD	value for LDTR
 0Eh	WORD	value for TR
 10h	PWORD	CS:EIP of protected mode entry-point
--------m-67DE0F-----------------------------
INT 67 - Netroom3 - ???
	AX = DE0Fh
	???
Return: ???
Note:	called by Netroom's DPMI.EXE
--------m-67EF-------------------------------
INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
	AH = EFh
	AL = function (00h-12h,80h-8Fh)
	other register as appropriate for XMS function
Return: varies by function (see INT 2F/AX=4310h)
Note:	these functions appear to be equivalent to the XMS functions with the
	  same numbers
SeeAlso: AX=5DFFh"RM386",INT 2F/AX=4310h
--------m-67FFA5-----------------------------
INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
	AX = FFA5h
Return: AX = 845Ah/84A5h if loaded
	    BX:CX -> API entry point (see #2840)
Notes:	this call is available even if EMM386 is not providing EMS
	the returned AX is 845Ah inside of MSWindows, 84A5h under bare DOS
	if no other program has hooked INT 67, an alternate installation
	  check is to test for the string
	  "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
	  handler's segment; the word immediately preceding this string
	  contains the offset of the API entry point
SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"

(Table 2840)
Call EMM386.EXE API entry point with:
	AH = 00h get memory manager's status
	    Return: AH = status
			bit 0: not active (OFF)
			bit 1: in "Auto" mode
	AH = 01h set memory manager's state
	    AL = new state (00h ON, 01h OFF, 02h AUTO)
	AH = 02h Weitek coprocessor support
	    AL = subfunction
		00h get Weitek support state
		    Return: AL = status
				bit 0: Weitek coprocessor is present
				bit 1: Weitek support is enabled
		01h turn on Weitek support
		02h turn off Weitek support
     --- v4.20-4.41 only ---
	AH = 03h Windows support???
	    AL = subfunction (00h, 01h)
	AH = 04h print copyright notice to standard output
		 (using INT 21/AH=09h)
	AH = 05h print available report
		 (the one shown when running EMM386 from the DOS prompt)
SeeAlso: #0821 at INT 21/AX=4402h/SF=02h,#1904 at INT 2F/AX=12FFh/BX=0106h
--------m-67FFA5BX4345-----------------------
INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
	AX = FFA5h
	BX = 4345h ("CE")
	DX = subfunction
	    0000h unshadow video ROM???
	    0001h shadow video ROM???
	    0002h map pages
		CX = number of pages (00h=one)
		ESI = linear address of first page to map into address space
		EDI = linear starting address at which pages are to be visible
	    0003h get ???
		Return: DX = ??? (0-2)
	    0004h BUG: crashes system due to fencepost error
Return: AH = 84h
	AL = status (84h = error, FFh = success)
Note:	if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
	  Microsoft's EMM386 (see AX=FFA5h"EMM386")
SeeAlso: AX=FFA5h"EMM386",#0821 at INT 21/AX=4402h/SF=02h,#2840
--------I-68---------------------------------
INT 68 - Sangoma CCPOP 3270 resident module
SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
--------N-68---------------------------------
INT 68 - Novell NetWare LU6.2
Note:	the installation check consists of testing for the signature string
	  "APPC/PC" nine bytes before the interrupt handler
SeeAlso: AH=01h/SF=1B00h,AH=FAh
--------h-68---------------------------------
INT 68 C - HP Vectra AT - IRQ16 - 8041 SERVICE REQUEST
SeeAlso: INT 08"IRQ0",INT 69"HP Vectra",INT 6F"HP Vectra"
--------N-6801--SF1B00-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DISPLAY
	AH = 01h subfn 1B00h
	DS:DX -> control block (see #2841)
Return: control block updated
SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2B00h,INT 68"Novell"

Format of APPC/PC "DISPLAY" control block:
Offset	Size	Description	(Table 2841)
 00h 12 BYTEs	reserved
 0Ch	WORD	1B00h (verb "DISPLAY")
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) return code (see #2842)
 18h	WORD	00h
 1Ah  8 BYTEs	(big-endian) logical unit ID
 22h  8 BYTEs	(big-endian) partner logical unit name
 2Ah  8 BYTEs	(big-endian) mode name
 32h	BYTE	logical unit session limit
 33h	BYTE	partner logical unit session limit
 34h	BYTE	node maximum negotiable session limit
 35h	BYTE	current session limit
 36h	BYTE	minimum negotiated winner limit
 37h	BYTE	maximum negotiated loser limit
 38h	BYTE	active session count
 39h	BYTE	active CONWINNER session count
 3Ah	BYTE	active CONLOSER session count
 3Bh	BYTE	session termination count
 3Ch	BYTE	bit 7: SESSION_TERMINATION_TARGET_DRAIN
		bit 6: SESSION_TERMINATION_SOURCE_DRAIN

(Table 2842)
Values for APPC/PC return code:
 0000h	successful
 0001h	BAD_TP_ID
 0002h	BAD_CONV_ID
 0003h	bad logical unit ID
 0008h	no physical unit attached
 0110h	bad state
 01B1h	BAD_PART_LUNAME
 01B2h	bad mode name
 0201h	physical unit already active
 0211h	logical unit already active
 0212h	BAD_PART_SESS
 0213h	BAD_RU_SIZES
 0214h	BAD_MODE_SESS
 0216h	BAD_PACING_CNT
 0219h	EXTREME_RUS
 021Ah	SNASVCMG_1
 0223h	SSCP_CONNECTED_LU
 0230h	invalid change
 0243h	too many TPs
 0272h	adapter close failure
 0281h	GET_ALLOC_BAD_TYPE
 0282h	unsuccessful
 0283h	DLC failure
 0284h	unrecognized DLC
 0286h	duplicate DLC
 0301h	SSCP_PU_SESSION_NOT_ACTIVE
 0302h	data exceeds RU size
 0401h	invalid direction
 0402h	invalid type
 0403h	segment overlap
 0404h	invalid first character
 0405h	table error
 0406h	conversion error
 F0010000h	APPC disabled
 F0020000h	APPC busy
 F0030000h	APPC abended
 F0040000h	incomplete
--------N-6801--SF2000-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH PHYSICAL UNIT
	AH = 01h subfn 2000h
	DS:DX -> control block (see #2843)
Return: control block updated
SeeAlso: AH=01h/SF=2100h,AH=01h/SF=2B00h

Format of APPC/PC "Attach Physical Unit" control block:
Offset	Size	Description	(Table 2843)
 00h 12 BYTEs	reserved
 0Ch	WORD	2000h (verb "Attach Physical Unit")
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) return code (see #2842)
 18h	WORD	00h
 1Ah	BYTE	version
 1Bh	BYTE	release
 1Ch  8 BYTEs	(big-endian) net name
 24h  8 BYTEs	(big-endian) physical unit name
 2Ch  8 BYTEs	00h
 34h	DWORD	pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
		(see also AH=01h/SF=2100h)
 38h	DWORD	00h
 3Ch	BYTE	00h RETURN_CONTROL: COMPLETE
		01h RETURN_CONTROL: INCOMPLETE
--------N-6801--SF2100-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH LOGICAL UNIT
	AH = 01h subfn 2100h
	DS:DX -> control block (see #2844)
Return: control block updated
SeeAlso: #2847,#2848,#2850,AH=01h/SF=2000h,AH=01h/SF=2200h,AH=01h/SF=2B00h

Format of APPC/PC "Attach Logical Unit" control block:
Offset	Size	Description	(Table 2844)
 00h 12 BYTEs	reserved
 0Ch	WORD	2100h (verb "Attach Logical Unit")
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) return code (see #2842)
 18h	WORD	70  offset to partner logical unit record
 1Ah  8 BYTEs	(big-endian) logical unit name
 22h  8 BYTEs	(big-endian) logical unit ID
 2Ah	BYTE	logical unit local address
 2Bh	BYTE	logical unit session limit
 2Ch	DWORD	pointer to CREATE_TP_EXIT routine,
		FFFFFFFFh = reject incoming ALLOCATEs
		00000000h = queue ALLOCATEs
 30h	DWORD	00h
 34h	DWORD	pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
 38h	DWORD	00h
 3Ch	BYTE	maximum TPs
 3Dh	BYTE	queue depth
 3Eh	DWORD	pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
 42h	DWORD	00h
 46h	WORD	total length of partner records
 48h	var	array of partner logical unit records (see #2845)
SeeAlso: #2847,#2848,#2850

Format of APPC/PC partner logical unit record:
Offset	Size	Description	(Table 2845)
 00h	WORD	length of this partner logical unit record
 02h	WORD	42  offset to mode records
 04h  8 BYTEs	(big-endian) partner logical unit name
 0Ch	BYTE	partner logical unit security capabilities
		bit 7: already verified
		bit 6: conversation level security
		bit 5: session level security
 0Dh	BYTE	partner logical unit session limit
 0Eh	WORD	partner logical unit maximum MC_SEND_LL
 10h  8 BYTEs	(big-endian) partner logical unit DLC name
 18h	BYTE	partner logical unit adapter number
 19h 17 BYTEs	(counted string) partner logical unit adapter address
 2Ah	WORD	total length of mode records
 2Ch 16N BYTEs	array of mode records (see #2846)

Format of mode record:
Offset	Size	Description	(Table 2846)
 00h	WORD	16  length of this mode record
 02h  8 BYTEs	(big-endian) mode name
 0Ah	WORD	RU_SIZE high bound
 0Ch	WORD	RU_SIZE low bound
 0Eh	BYTE	mode maximum negotiable session limit
 0Fh	BYTE	pacing size for receive

Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
pointers are called by pushing the DWORD pointer to the verb on the stack and
then performing a FAR call.

Format of ACCESS_LU_LU_PW verb:
Offset	Size	Description	(Table 2847)
 00h 12 BYTEs	reserved
 0Ch	WORD	1900h (verb "ACCESS_LU_LU_PW")
 0Eh  8 BYTEs	(big-endian) logical unit ID
 16h  8 BYTEs	(big-endian) logical unit name
 1Eh  8 BYTEs	(big-endian) partner logical unit name
 26h 17 BYTEs	(counted string) partner fully qualified logical unit name
 37h	BYTE	password available (0=no, 1=yes)
 38h  8 BYTEs	password
SeeAlso: #2844,#2848,#2850

Format of CREATE_TP verb:
Offset	Size	Description	(Table 2848)
 00h 12 BYTEs	reserved
 0Ch	WORD	2300h (verb "CREATE_TP")
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) sense code (see #2849)
 18h  8 BYTEs	(big-endian) TP ID
 20h  8 BYTEs	(big-endian) logical unit ID
 28h	DWORD	(big-endian) conversation ID
 2Ch	BYTE	0 basic conversation, 1 mapped conversation
 2Dh	BYTE	0 no sync level, 1 confirm
 2Eh	BYTE	reserved
 2Fh 65 BYTEs	(counted string) transaction program name
 70h  6 BYTEs	00h
 76h	WORD	length of ERROR_LOG_DATA to return
 78h	DWORD	pointer to ERROR_LOG_DATA buffer
 7Ch  8 BYTEs	(big-endian) partner logical unit name
 84h 18 BYTEs	(counted string) partner fully qualified logical unit name
 96h  8 BYTEs	(big-endian) mode name
 9Eh 12 BYTEs	00h
 AAh 11 BYTEs	(counted string) password
 B5h 11 BYTEs	(counted string) user ID
 C0h	BYTE	0 verification should be performed
		1 already verified
SeeAlso: #2847,#2850

(Table 2849)
Values for APPC/PC sense code:
 00000000h	Ok
 080F6051h	SECURITY_NOT_VALID
 084B6031h	TP_NOT_AVAIL_RETRY
 084C0000h	TP_NOT_AVAIL_NO_RETRY
 10086021h	TP_NAME_NOT_RECOGNIZED
 10086034h	CONVERSATION_TYPE_MISMATCH
 10086041h	SYNC_LEVEL_NOT_SUPPORTED

Format of SYSLOG verb:
Offset	Size	Description	(Table 2850)
 00h 12 BYTEs	reserved
 0Ch	WORD	2600h (verb "SYSLOG")
 0Eh 10 BYTEs	00h
 18h	WORD	(big-endian) type
 1Ah	DWORD	(big-endian) subtype
 1Eh	DWORD	pointer to ADDITIONAL_INFO
 22h	DWORD	(big-endian) conversation ID
 26h  8 BYTEs	(big-endian) TP ID
 2Eh  8 BYTEs	(big-endian) physical unit or logical unit name
 36h	WORD	length of data
 38h	DWORD	pointer to data
 3Ch	BYTE	00h
SeeAlso: #2847,#2848
--------N-6801--SF2200-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH LOGICAL UNIT
	AH = 01h subfn 2200h
	DS:DX -> control block (see #2851)
Return: control block updated
SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2700h

Format of APPC/PC "Detach Logical Unit" control block:
Offset	Size	Description	(Table 2851)
 00h 12 BYTEs	reserved
 0Ch	WORD	2200h (verb "Detach Logical Unit")
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) return code (see #2842)
 18h  8 BYTEs	(big-endian) logical unit ID
 20h	BYTE	00h
--------N-6801--SF2700-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH PHYSICAL UNIT
	AH = 01h subfn 2700h
	DS:DX -> control block (see #2852)
Return: control block updated
SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2200h

Format of APPC/PC "Detach Physical Unit" control block:
Offset	Size	Description	(Table 2852)
 00h 12 BYTEs	reserved
 0Ch	WORD	2700h (verb "Detach Physical Unit")
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) return code (see #2842)
 18h	BYTE	00h  type: hard
		01h  type: soft
--------N-6801--SF2B00-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ACTIVATE DLC
	AH = 01h subfn 2B00h
	DS:DX -> control block (see #2853)
Return: control block updated
SeeAlso: AH=01h/SF=1B00h,AH=01h/SF=2000h

Format of APPC/PC "Activate DLC" control block:
Offset	Size	Description	(Table 2853)
 00h 12 BYTEs	reserved
 0Ch	WORD	2B00h (verb "Activate DLC")
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) return code (see #2842)
 18h  8 BYTEs	(big-endian) DLC name
 20h	BYTE	adapter number
--------N-6802--SF0100-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - ALLOCATE
	AH = 02h subfn 0100h
	DS:DX -> control block (see #2854)
Return: control block updated
SeeAlso: AH=02h/SF=0500h

Format of APPC/PC "Allocate" control block:
Offset	Size	Description	(Table 2854)
 00h 12 BYTEs	reserved
 0Ch	WORD	0100h (verb "Allocate" or "MC_Allocate")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	BYTE	(MC_Allocate only) conversation type
		0 basic conversation
		1 mapped conversation
 27h	BYTE	SYNC_LEVEL (00h none, 01h confirm)
 28h	WORD	0000h
 2Ah	BYTE	RETURN_CONTROL
		00h when session allocated
		01h immediate
		02h when session free
 2Bh  8 BYTEs	00h
 33h  8 BYTEs	(big-endian) partner logical unit name
 3Bh  8 BYTEs	(big-endian) mode name
 43h 65 BYTEs	(counted string) TP name
 84h	BYTE	security (00h none, 01h same, 02h pgm)
 85h 11 BYTEs	00h
 90h 11 BYTEs	(counted string) password
 9Bh 11 BYTEs	(counted string) user ID
 A6h	WORD	PIP_DATA length
 A8h	DWORD	pointer to PIP_DATA

(Table 2855)
Values for APPC/PC primary return code:
 0000h	successful
 0001h	parameter check
 0002h	state check
 0003h	allocation error
 0005h	deallocate abended
 0006h	deallocate abended program
 0007h	deallocate abended SVC
 0008h	deallocate abended timer
 0009h	deallocate normal return
 000Ah	data posting blocked
 000Bh	posting not active
 000Ch	PROG_ERROR_NO_TRUNC
 000Dh	PROG_ERROR_TRUNC
 000Eh	PROG_ERROR_PURGING
 000Fh	CONV_FAILURE_RETRY
 0010h	CONV_FAILURE_NO_RETRY
 0011h	SVC_ERROR_NO_TRUNC
 0012h	SVC_ERROR_TRUNC
 0013h	SVC_ERROR_PURGING
 0014h	unsuccessful
 0018h	CNOS partner logical unit reject
 0019h	conversation type mixed
 F001h	APPC disabled
 F002h	APPC busy
 F003h	APPC abended
 F004h	incomplete

(Table 2856)
Values for APPC/PC error code:
 0001h	bad TP ID
 0002h	bad conversation ID
 0004h	allocation error, no retry
 0005h	allocation error, retry
 0006h	data area crosses segment boundary
 0010h	bad TPN length
 0011h	bad CONV length
 0012h	bad SYNC level
 0013h	bad security selection
 0014h	bad return control
 0015h	SEC_TOKENS too big
 0016h	PIP_LEN incorrect
 0017h	no use of SNASVCMG
 0018h	unknown partner mode
 0031h	confirm: SYNC_NONE
 0032h	confirm: bad state
 0033h	confirm: NOT_LL_BDY
 0041h	confirmed: bad state
 0051h	deallocate: bad type
 0052h	deallocate: flush bad state
 0053h	deallocate: confirm bad state
 0055h	deallocate: NOT_LL_BDY
 0057h	deallocate: log LL_WRONG
 0061h	flush: not send state
 0091h	post on receipt: invalid length
 0092h	post on receipt: not in receive state
 0093h	post on receipt: bad fill
 00A1h	prepare to receive:invalid type
 00A2h	prepare to receive: unfinished LL
 00A3h	prepare to receive: not in send state
 00B1h	receive and wait: bad state
 00B2h	receive and wait: NOT_LL_BDY
 00B5h	receive and wait: bad fill
 00C1h	receive immediate: not in receive state
 00C4h	receive immediate: bad fill
 00E1h	request to send: not in receive state
 00F1h	send data: bad LL
 00F2h	send data: not in send state
 0102h	send error: log LL wrong
 0103h	send error: bad type
 0121h	test: invalid type
 0122h	test: not in receive state
--------N-6802--SF0300-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRM
	AH = 02h subfn 0300h
	DS:DX -> control block (see #2857)
Return: control block updated
SeeAlso: AH=02h/SF=0400h

Format of APPC/PC "Confirm" control block:
Offset	Size	Description	(Table 2857)
 00h 12 BYTEs	reserved
 0Ch	WORD	0300h (verb "Confirm" or "MC_Confirm")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	BYTE	request to send received (0=no, 1=yes)
--------N-6802--SF0400-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRMED
	AH = 02h subfn 0400h
	DS:DX -> control block (see #2858)
Return: control block updated
SeeAlso: AH=02h/SF=0300h

Format of APPC/PC "Confirmed" control block:
Offset	Size	Description	(Table 2858)
 00h 12 BYTEs	reserved
 0Ch	WORD	0400h (verb "Confirmed" or "MC_Confirmed")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
--------N-6802--SF0500-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - DEALLOCATE
	AH = 02h subfn 0500h
	DS:DX -> control block (see #2859)
Return: control block updated
SeeAlso: AH=02h/SF=0100h,AH=02h/SF=0300h

Format of APPC/PC "Deallocate" control block:
Offset	Size	Description	(Table 2859)
 00h 12 BYTEs	reserved
 0Ch	WORD	0500h (verb "Deallocate" or "MC_Deallocate")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	BYTE	00h
 27h	BYTE	type
		00h SYNC_LEVEL
		01h FLUSH
		02h ABEND_PROC
		03h ABEND_SVC
		04h ABEND_TIMER
		05h ABEND
 28h	WORD	(MC_Deallocate only) length of error log data
 2Ah	DWORD	(MC_Deallocate only) pointer to error log data
--------N-6802--SF0600-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - FLUSH
	AH = 02h subfn 0600h
	DS:DX -> control block (see #2860)
Return: control block updated
SeeAlso: AH=02h/SF=0300h

Format of APPC/PC "Flush" control block:
Offset	Size	Description	(Table 2860)
 00h 12 BYTEs	reserved
 0Ch	WORD	0600h (verb "Flush" or "MC_Flush")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
--------N-6802--SF0700-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - GET ATTRIBUTES
	AH = 02h subfn 0700h
	DS:DX -> control block (see #2861)
Return: control block updated
SeeAlso: AH=02h/SF=0300h

Format of APPC/PC "Get_Attributes" control block:
Offset	Size	Description	(Table 2861)
 00h 12 BYTEs	reserved
 0Ch	WORD	0700h (verb "Get_Attributes" or "MC_Get_Attributes")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h  8 BYTEs	(big-endian) logical unit ID
 2Eh	BYTE	00h
 2Fh	BYTE	SYNC_LEVEL (0=none, 1=confirm)
 30h  8 BYTEs	(big-endian) mode name
 38h  8 BYTEs	(big-endian) own net name
 40h  8 BYTEs	(big-endian) own logical unit name
 48h  8 BYTEs	(big-endian) partner logical unit name
 50h 18 BYTEs	(counted string) partner's fully qualified logical unit name
 62h	BYTE	00h
 63h 11 BYTEs	(counted string) user ID
--------N-6802--SF0800-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - GET CONVERSATION TYPE
	AH = 02h subfn 0800h
	DS:DX -> control block (see #2862)
Return: control block updated
SeeAlso: AH=02h/SF=0300h

Format of APPC/PC "Get_Type" control block:
Offset	Size	Description	(Table 2862)
 00h 12 BYTEs	reserved
 0Ch	WORD	0800h (verb "Get_Type")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	BYTE	(ret) type (0=basic conversation, 1=mapped conversation)
--------N-6802--SF0900-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - POST ON RECEIPT
	AH = 02h subfn 0900h
	DS:DX -> control block (see #2863)
Return: control block updated
SeeAlso: AH=02h/SF=0A00h

Format of APPC/PC "Post_on_Receipt" control block:
Offset	Size	Description	(Table 2863)
 00h 12 BYTEs	reserved
 0Ch	WORD	0900h (verb "Post_on_Receipt")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	WORD	maximum length
 28h	BYTE	fill (0=buffer, 1=LL)
--------N-6802--SF0A00-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - PREPARE TO RECEIVE
	AH = 02h subfn 0A00h
	DS:DX -> control block (see #2864)
Return: control block updated
SeeAlso: AH=02h/SF=0900h,AH=02h/SF=0B00h

Format of APPC/PC "Prepare_to_Receive" control block:
Offset	Size	Description	(Table 2864)
 00h 12 BYTEs	reserved
 0Ch	WORD	0A00h (verb "Prepare_to_Receive" or "MC_Prepare_to_Receive")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	BYTE	type (0=SYNC_LEVEL, 1=FLUSH)
 27h	BYTE	locks (0=short, 1=long)
--------N-6802--SF0B00-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE AND WAIT
	AH = 02h subfn 0B00h
	DS:DX -> control block (see #2865)
Return: control block updated
SeeAlso: AH=02h/SF=0C00h,AH=02h/SF=0F00h

Format of APPC/PC "Receive_and_Wait" control block:
Offset	Size	Description	(Table 2865)
 00h 12 BYTEs	reserved
 0Ch	WORD	0B00h (verb "Receive_and_Wait" or "MC_Receive_and_Wait")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	BYTE	type of information received (see #2866)
 27h	BYTE	(MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
 28h	BYTE	Request_to_Send_Received (0=no, 1=yes)
 29h	WORD	maximum length
 2Bh	WORD	data length
 2Dh	DWORD	pointer to data

(Table 2866)
Values for type of information received:
 00h	data
 01h	data complete
 02h	data incomplete
 03h	confirm
 04h	confirm send
 05h	confirm deallocate
 06h	send
--------N-6802--SF0C00-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE IMMEDIATE
	AH = 02h subfn 0C00h
	DS:DX -> control block (see #2867)
Return: control block updated
SeeAlso: AH=02h/SF=0B00h,AH=02h/SF=0F00h

Format of APPC/PC "Receive_Immediate" control block:
Offset	Size	Description	(Table 2867)
 00h 12 BYTEs	reserved
 0Ch	WORD	0C00h (verb "Receive_Immediate" or "MC_Receive_Immediate")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	BYTE	type of information received (see #2866)
 27h	BYTE	(MC_Receive_Immediate only) fill (0=buffer, 1=LL)
 28h	BYTE	Request_to_Send_Received (0=no, 1=yes)
 29h	WORD	maximum length
 2Bh	WORD	data length
 2Dh	DWORD	pointer to data
--------N-6802--SF0E00-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - REQUEST TO SEND
	AH = 02h subfn 0E00h
	DS:DX -> control block (see #2868)
Return: control block updated
SeeAlso: AH=02h/SF=0F00h,AH=02h/SF=1000h

Format of APPC/PC "Request_to_Send" control block:
Offset	Size	Description	(Table 2868)
 00h 12 BYTEs	reserved
 0Ch	WORD	0E00h (verb "Request_to_Send" or "MC_Request_to_Send")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
--------N-6802--SF0F00-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - SEND DATA
	AH = 02h subfn 0F00h
	DS:DX -> control block (see #2869)
Return: control block updated
SeeAlso: AH=02h/SF=0E00h,AH=02h/SF=1000h

Format of APPC/PC "Send_Data" control block:
Offset	Size	Description	(Table 2869)
 00h 12 BYTEs	reserved
 0Ch	WORD	0F00h (verb "Send_Data" or "MC_Send_Data")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	BYTE	request to send received (0=no, 1=yes)
 27h	BYTE	00h
 28h	WORD	data length
 2Ah	DWORD	pointer to data
--------N-6802--SF1000-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - SEND ERROR
	AH = 02h subfn 1000h
	DS:DX -> control block (see #2870)
Return: control block updated
SeeAlso: AH=02h/SF=0F00h

Format of APPC/PC "Send_Error" control block:
Offset	Size	Description	(Table 2870)
 00h 12 BYTEs	reserved
 0Ch	WORD	1000h (verb "Send_Error" or "MC_Send_Error")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	BYTE	request to send received (0=no, 1=yes)
 27h	BYTE	type (0=program, 1=SVC)
 28h	DWORD	00h
 2Ch	WORD	(MC_Send_Error only) LOG_DATA length
 2Eh	DWORD	(MC_Send_Error only) pointer to LOG_DATA
--------N-6802--SF1200-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - TEST
	AH = 02h subfn 1200h
	DS:DX -> control block (see #2871)
Return: control block updated
SeeAlso: AH=02h/SF=1300h

Format of APPC/PC "Test" control block:
Offset	Size	Description	(Table 2871)
 00h 12 BYTEs	reserved
 0Ch	WORD	1200h (verb "Test" or "MC_Test")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	BYTE	(MC_Test only) test (0=posted, 1=request_to_send received)
Note:	error code has different interpretations for:
	0 posted data
	1 posted not data (primary return code = 0)
	1 bad TP_ID (primary return code = 1)
--------N-6802--SF1300-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - WAIT
	AH = 02h subfn 1300h
	DS:DX -> control block (see #2872)
Return: control block updated
SeeAlso: AH=02h/SF=1200h

Format of APPC/PC "Wait" control block:
Offset	Size	Description	(Table 2872)
 00h 12 BYTEs	reserved
 0Ch	WORD	1300h (verb "Wait")
 0Eh	BYTE	1 if MC_ (mapped conversation) form of verb
		0 if basic verb
 0Fh  5 BYTEs	reserved (0)
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) error code (see #2856,#2871)
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	(big-endian) conversation ID
 26h	BYTE	number of conversations to wait on
		Note: error codes have interpretations as for AH=02h/SF=1200h
--------N-6803--SF2400-----------------------
INT 68 - APPC/PC - TP STARTED
	AH = 03h subfn 2400h
	DS:DX -> control block (see #2873)
Return: control block updated

Format of APPC/PC "TP Started" control block:
Offset	Size	Description	(Table 2873)
 00h 12 BYTEs	reserved
 0Ch	WORD	2400h (verb "TP Started")
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) return code (see #2842)
 18h	WORD	00h
 1Ah  8 BYTEs	(big-endian) logical unit ID
 22h  8 BYTEs	(big-endian) TP ID
--------N-6803--SF2800-----------------------
INT 68 - APPC/PC - GET ALLOCATE
	AH = 03h subfn 2800h
	DS:DX -> control block (see #2874)
Return: control block updated

Format of APPC/PC "Get ALLOCATE" control block:
Offset	Size	Description	(Table 2874)
 00h 12 BYTEs	reserved
 0Ch	WORD	2800h (verb "Get ALLOCATE")
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) return code (see #2842)
 18h	WORD	00h
 1Ah  8 BYTEs	(big-endian) logical unit ID
 22h	BYTE	type (00h dequeue, 01h test)
 23h	DWORD	pointer to CREATE_TP record
--------N-6803--SF2A00-----------------------
INT 68 - APPC/PC - CHANGE LOGICAL UNIT
	AH = 03h subfn 2A00h
	DS:DX -> control block (see #2875)
Return: control block updated

Format of APPC/PC "Change Logical Unit" control block:
Offset	Size	Description	(Table 2875)
 00h 12 BYTEs	reserved
 0Ch	WORD	2A00h (verb "Change Logical Unit")
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) return code (see #2842)
 18h	WORD	00h
 1Ah  8 BYTEs	(big-endian) logical unit ID
 22h	DWORD	pointer to CREATE_TP_EXIT routine
		00000000h queue ALLOCATEs
		FFFFFFFFh reject incoming ALLOCATEs
 26h	DWORD	00000000h
 2Ah	DWORD	pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
 2Eh	DWORD	00000000h
 32h	BYTE	maximum TPs
 33h	BYTE	00h stop QUEUE_ALLOCATEs
		01h resume QUEUE_ALLOCATEs
 34h	DWORD	pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
 38h	DWORD	00000000h
--------N-6804-------------------------------
INT 68 - APPC/PC - TRANSACTION PROCESSING
	AH = 04h
	DS:DX -> control block (see #2876)
Return: control block updated

Format of APPC/PC control block:
Offset	Size	Description	(Table 2876)
 00h 12 BYTEs	reserved
 0Ch	WORD	verb (action)
		2500h TP_ENDED
		2900h TP_VALID
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) return code (see #2842)
 18h	WORD	00h
 1Ah  8 BYTEs	(big-endian) TP_ID
 22h	DWORD	-> CREATE_TP record (only if verb = 2900h)
--------N-6805-------------------------------
INT 68 - APPC/PC - TRANSFER MESSAGE DATA
	AH = 05h
	DS:DX -> control block (see #2877)
Return: control block updated

Format of APPC/PC "Transfer Message Data" control block:
Offset	Size	Description	(Table 2877)
 00h 12 BYTEs	reserved
 0Ch	WORD	1C00h (verb "Transfer Message Data")
 0Eh	BYTE	data type
		00h user defined
		01h NMVT
		02h alert subvectors
		03h PDSTATS subvectors
 0Fh  5 BYTEs	00h
 14h	DWORD	(big-endian) return code (see #2842)
 18h 12 BYTEs	00h
 24h	BYTE	flags (see #2878)
 25h	BYTE	00h
 26h	WORD	length of data
 28h  N BYTEs	data

Bitfields for APPC/PC message transfer flags:
Bit(s)	Description	(Table 2878)
 0	don't add correlation subvector
 1	don't add product set ID subvector
 2	don't do SYSLOG
 3	don't send SSCP_PU_SESSION
SeeAlso: #2877
--------N-6806-------------------------------
INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
	AH = 06h
	DS:DX -> control block (see #2879)
Return: control block updated

Format of APPC/PC "Change Number of Sessions" control block:
Offset	Size	Description	(Table 2879)
 00h 12 BYTEs	reserved
 0Ch	WORD	1500h (verb "Change Number of Sessions")
 0Eh  6 BYTEs	00h
 14h	WORD	(big-endian) primary return code (see #2855)
 16h	DWORD	(big-endian) secondary return code (see #2842,#2880)
 1Ah  8 BYTEs	(big-endian) logical unit ID
 22h  8 BYTEs	blanks
 2Ah  8 BYTEs	(big-endian) partner logical unit name
 32h  8 BYTEs	(big-endian) mode name
 3Ah	BYTE	bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
		bit 6: set negotiable values
 3Bh	BYTE	partner logical unit mode session limit
 3Ch	BYTE	minimum CONWINNERS_SOURCE
 3Dh	BYTE	maximum CONWINNERS_TARGET
 3Eh	BYTE	automatic activation
 3Fh	BYTE	00h
 40h	BYTE	flags
		bit 7: drain target
		bit 6: drain source
		bit 5: target responsible, not source

(Table 2880)
Values for secondary return code (see also AH=01h/SF=1B00h):
 0000h	accepted
 0001h	negotiated
 0003h	bad logical unit ID
 0004h	allocation failure, no retry
 0005h	allocation failure, retry
 0151h	can't raise limits
 0153h	all modes must reset
 0154h	bad SNASVCMG limits
 0155h	minimum greater than total
 0156h	mode closed (primary return code = 1)
	CNOS mode closed (primary return code = 18h)
 0157h	bad mode name (primary return code = 1)
	CNOS bad mode name (primary return code = 18h)
 0159h	reset SNA drains
 015Ah	single not SRC response
 015Bh	bad partner logical unit
 015Ch	exceeds maximum allowed
 015Dh	change SRC drains
 015Eh	logical unit detached
 015Fh	CNOS command race reject
--------N-6807-------------------------------
INT 68 - APPC/PC - PASSTHROUGH
	AH = 07h
	DS:DX -> control block (format depends on application subsystem)
Return: control block updated
SeeAlso: AH=FFh
----------684300-----------------------------
INT 68 U - ??? - INSTALLATION CHECK???
	AX = 4300h
Return: AX = F386h if ???
	???
Note:	called by Novell DOS 7.0 EMM386.EXE
SeeAlso: AX=4400h,INT 41/AX=004Fh
----------684400-----------------------------
INT 68 U - ???
	AX = 4400h
	BX = ???
	CX = ???
	DX = ???
	DS:SI = real-mode address of protected-mode GDT
	ES:DI = real-mode address of protected-mode IDT
Return: ???
Note:	called by Novell DOS 7.0 EMM386.EXE if AX=4300h returns AX=F386h
SeeAlso: AX=4300h
--------W-6847-------------------------------
INT 68 - MS Windows debugging kernel - OUTPUT STRING
	AH = 47h
	ES:SI -> string
Notes:	output a string (to inform a debugger of some events)
	KERNEL outputs "Windows Kernel Entry\r\n" on startup
SeeAlso: INT 41/AX=0012h
--------N-68FA-------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE APPC
	AH = FAh
	AL bit 0 = new state (0 enable, 1 disable)
SeeAlso: AH=FDh,INT 68"Novell"
--------N-68FB-------------------------------
INT 68 - APPC/PC - CONVERT
	AH = FBh
	DS:DX -> control block (see #2881)
Return: control block updated

Format of APPC/PC "CONVERT" control block:
Offset	Size	Description	(Table 2881)
 00h 12 BYTEs	reserved
 0Ch	WORD	1A00h (verb "CONVERT")
 0Eh  6 BYTEs	00h
 14h	DWORD	(big-endian) return code
 18h	BYTE	conversion
		00h ASCII to EBCDIC
		01h EBCDIC to ASCII
 19h	BYTE	character set
		00h AE
		01h A
		02h G
 1Ah	WORD	length of string to convert
 1Ch	DWORD	pointer to source
 20h	DWORD	pointer to target
--------N-68FC-------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
	AH = FCh
	AL = new state
	    00h disable tracing
	    01h enable tracing
		DX = number of bytes to keep (0=all)
SeeAlso: AH=FDh,AH=FEh
--------N-68FD-------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
	AH = FDh
	AL = new tracing state (00h disabled, 01h enabled)
SeeAlso: AH=FAh,AH=FCh,AH=FEh
--------N-68FE-------------------------------
INT 68 - APPC/PC - SET TRACE DESTINATION
	AH = FEh
	AL = trace destinations (see #2882)
	DS:DX -> trace stats record if AL bit 0 set (see #2883)
SeeAlso: AH=FCh,AH=FDh

Bitfields for trace destinations:
Bit(s)	Description	(Table 2882)
 0	storage (DS:DX -> trace stats record)
 1	display
 2	file (trace written to file OUTPUT.PC)
 3	printer

Format of APPC/PC Trace Statistics Record:
Offset	Size	Description	(Table 2883)
 00h	DWORD	pointer to storage trace buffer
 04h	WORD	max number of 80-byte records in trace
 06h	WORD	(high-order byte first!) current record number (must init to 0)
 08h	DWORD	(high-order byte first!) number of records written (init to 0)
 0Ch	DWORD	reserved
Note:	do not move record while trace is active
--------N-68FF-------------------------------
INT 68 - APPC/PC - SET PASSTHROUGH
	AH = FFh
	DS:DX -> passthrough exit routine
SeeAlso: AH=07h,INT 68"Novell"
--------b-69---------------------------------
INT 69 - Zenith AT BIOS - ???
Note:	called by INT 09 handler
--------h-69---------------------------------
INT 69 C - HP Vectra AT - IRQ17 - KEYBOARD OUTPUT-BUFFER-FULL SERVICE ROUTINE
SeeAlso: INT 09"IRQ1",INT 68"HP Vectra",INT 6A"HP Vectra"
--------N-690100-----------------------------
INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
	AX = 0100h
Return: AL = FFh if present
SeeAlso: AX=010Fh
--------N-690101-----------------------------
INT 69 - DECnet DOS CTERM - SEND BYTE
	AX = 0101h
	BL = character
	DX = session handle
Return: AH >= 80h on error
SeeAlso: AX=0102h
--------N-690102-----------------------------
INT 69 - DECnet DOS CTERM - READ BYTE
	AX = 0102h
	DX = session handle
Return: AH >= 80h on error
	AH < 80h if successful
	    AL = character
SeeAlso: AX=0101h
--------N-690103-----------------------------
INT 69 - DECnet DOS CTERM - STATUS
	AX = 0103h
	DX = session handle
Return: AH status flags (see #2884)
	AL = reason code if DECnet error (see #2885)
SeeAlso: AX=0104h

Bitfields for DECnet DOS CTERM status flags:
Bit(s)	Description	(Table 2884)
 7	session has been aborted
 6	DECnet error
 1	trace data available
 0	receive data available

(Table 2885)
Values for reason code:
 00h	normal disconnect
 01h	unknown message from host
 02h	protocol violation from host
 03h	could not process the initiate message
 04h	error receiving message from host
 05h	error sending message to host
 06h	error checking for message from host
 07h	remote system does not support CTERM
 08h	remote system does not support correct protocol version
 09h	did not receive BIND message from host
 0Ah	could not send BIND message to host
 0Bh	no more sessions available
 0Ch	session does not exist
 0Dh	not enough memory to complete operation
 0Eh	connection has broken
Index:	error codes;DECnet DOS CTERM|DECnet DOS CTERM;error codes
--------N-690104-----------------------------
INT 69 - DECnet DOS CTERM - DECnet STATUS
	AX = 0104h
	DX = session handle
Return: AX = reason code (see #2885)
Note:	use this call when AX=0103h returns a DECnet error
SeeAlso: AX=0103h
--------N-690105-----------------------------
INT 69 - DECnet DOS CTERM - OPEN SESSION
	AX = 0105h
	DS:BX -> ASCIZ node name
	ES:DX -> buffer for session control block (see #2901 at INT 6A/AH=D0h)
Return: AX <= 0 on error
	AX > 0 session handle
SeeAlso: AX=0103h,AX=0106h,AX=010Ah
--------N-690106-----------------------------
INT 69 - DECnet DOS CTERM - CLOSE SESSION
	AX = 0106h
	DX = session handle
Return: AH = status
	    00h good close
	    other error code (see #2885)
SeeAlso: AX=0103h,AX=0105h
--------N-69010A-----------------------------
INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
	AX = 010Ah
Return: AX = length of session control block in bytes
SeeAlso: AX=0105h
--------N-69010B-----------------------------
INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
	AX = 010Bh
	DX = session handle
Return: AX > 0	DECnet socket for the session
	AX = 0	no match for handle
--------N-69010F-----------------------------
INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
	AX = 010Fh
Return: AH = status
	    00h successful uninstall
	    other error code (see #2885)
Note:	CTERM must have been the last TSR loaded in order to deinstall it
SeeAlso: AX=0100h
Index:	uninstall;DECnet DOS CTERM
--------N-690A-------------------------------
INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
	AH = 0Ah
	AL = function number (see #2886)
	ES:BX -> Datalink Communication Block (see #2888)
Return: AX = status (see #2887)
SeeAlso: INT 6D"DECnet"

(Table 2886)
Values for DECnet DOS Data Link Layer function:
 00h	initialize
 01h	open portal
 02h	close portal
 03h	enable multicast address
 04h	disable multicast address
 05h	transmit
 06h	request transmit buffer
 07h	deallocate transmit buffer
 08h	read channel status
 09h	read datalink portal list
 0Ah	read information about a datalink portal
 0Bh	read and/or clear counters
 0Ch	request to boot from a network server
 0Dh	enable Ethernet channel
 0Eh	disable Ethernet channel
 0Fh	start MOP/send a System ID message
 10h	stop MOP
 11h	get DECPARM
 12h	set DECPARM
 13h	external loopback

(Table 2887)
Values for DECnet DOS Data Link Layer status:
 00h	successful
 01h	hardware failed to initialize
 02h	channel state was not off (must be off to execute that command)
 03h	channel state is off (must be on to execute that command)
 04h	address not set
 05h	hardware missing
 06h	buffer too small
 07h	no more buffers available
 08h	no more resources available
 09h	promiscuous receiver active
 0Ah	non exclusive
 0Bh	unrecognized portal
 0Ch	protocol type in use
 0Dh	not a valid Multicast address
 0Eh	outstanding calls
 0Fh	hardware doesn't support receiving bad frames
 10h	none outstanding
 11h	no events
 12h	broken
 13h	buffer quota exceeded
 14h	already initialized
 15h	loopback failure
Index:	error codes;DECnet DOS|DECnet DOS;error codes

Format of Datalink Communication Block:
Offset	Size	Description	(Table 2888)
 00h	WORD	portal ID
 02h  6 BYTEs	source address
 08h  6 BYTEs	destination address
 0Eh	DWORD	buffer pointer
 12h	WORD	buffer length
 14h	WORD	operation
 16h	BYTE	pad flag (used on open)
		00h no pad
		01h pad
 17h	BYTE	mode flag (used on open)
		00h 802.3
		01h Ethernet
		02h promiscuous
 18h	DWORD	line status change function
 1Ch	DWORD	received data function
 20h	DWORD	transmitted data function
 24h	BYTE	maximum outstanding transmits/receives
 25h  2 BYTEs	protocol type
 27h	WORD	buffers lost
--------N-694001-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
	AX = 4001h
Return: CF clear
	AX = 0000h
	ES:SI -> ???
Range:	INT 60 to INT 7F, selected by configuration
Note:	the signature "SYSV" immediately before the interrupt handler serves
	  as the installation check
SeeAlso: AX=4002h
Index:	installation check;10NET SYSSVC
--------N-694002-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
	AX = 4002h
	???
Return: ???
Range:	INT 60 to INT 7F, selected by configuration
Note:	the signature "SYSV" immediately before the interrupt handler serves
	  as the installation check
--------N-694101-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
	AX = 4101h
Return: CF clear
	ES:SI -> ???
Range:	INT 60 to INT 7F, selected by configuration
SeeAlso: AX=4102h,AX=4103h,AX=4104h
--------N-694102-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
	AX = 4102h
	???
Return: ???
--------N-694103-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
	AX = 4103h
	???
Return: ???
--------N-694104-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
	AX = 4104h
	???
Return: ???
--------N-6942-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
	AH = 42h
	AL = function (01h-14h)
	???
Return: ???
Range:	INT 60 to INT 7F, selected by configuration
--------N-6943-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
	AH = 43h
	AL = function (01h-05h)
	???
Return: ???
--------N-6944-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
	AH = 44h
	AL = function (01h-03h)
	???
Return: ???
Range:	INT 60 to INT 7F, selected by configuration
--------N-6949-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - BUG
	AH = 49h
Note:	due to a fencepost error, this function branches to hyperspace
SeeAlso: AX=4001h,AH=FFh
--------G-696996-----------------------------
INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
	AX = 6996h
	DS:DX -> interrupt handler or 0000h:0000h to disable
Return: AX = 9669h
Program: ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
	  a program to provide hardware interrupt handlers even while being
	  debugged with a debugger that swaps interrupt vectors during
	  debugging.
Note:	the interrupt vector which is to be reflected is set at installation
	  time and cannot be changed
--------N-69FF-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - SIGNAL SYSTEM ERROR
	AH = FFh
Return: never???
Desc:	displays "System Error" message and register dump, then halts system
Range:	INT 60 to INT 7F, selected by configuration
Notes:	the signature "SYSV" immediately before the interrupt handler serves
	  as the installation check
SeeAlso: AX=4001h,AH=49h
--------U-6A---------------------------------
INT 6A - OPTHELP.COM
Program: OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
	  assembler
Range:	INT 60h to INT 7Fh, selected by configuration
--------N-6A---------------------------------
INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM
Note:	the installation check consists of testing for a signature area
	  immediately preceding the interrupt handler (see #2889)
SeeAlso: AH=01h/DH=FFh,INT 6B"DECnet",INT 6D"DECnet"
Index:	installation check;DECnet DOS Local Area Transport

Format of DECnet DOS signature area:
Offset	Size	Description	(Table 2889)
 -5	BYTE	major version number
 -4	BYTE	minor version number
 -3   3 BYTEs	signature (ASCII "LAT")
--------h-6A---------------------------------
INT 6A C - HP Vectra AT - IRQ18 - RESERVED HARDWARE INTERRUPT
SeeAlso: INT 0A"IRQ0",INT 69"HP Vectra",INT 6B"HP Vectra"
--------N-6A0000-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - INSTALLATION CHECK
	AX = 0000h
Return: AX = 4357h ('CW')
Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
Note:	an alternate installation check is to test for the ASCIZ signature
	  "FTC Super-TCP" three bytes past the interrupt handler
SeeAlso: AX=0001h,AX=0002h,AX=000Fh,AX=0010h,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 61"PCTCP",INT 62/AH=00h"ETHDEV"
--------N-6A0001-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
	AX = 0001h
	BH = function number
	    01h ???
		DS:SI -> ??? 24-byte record1 (see #2891)
		ES:DI -> buffer containing ???
	    02h ???
		DS:SI -> ??? 18-byte record2 (see #2892)
		ES:DI -> buffer containing ???
	    04h ???
		BL = subfunction
		    01h
			DS:SI -> ??? 28-byte record3 (see #2893)
			ES:DI -> buffer containing ???
		    02h
			DS:SI -> ??? 28-byte record3 (see #2893)
			ES:DI -> buffer containing ???
		    03h
			DS:SI -> ??? 28-byte record3 (see #2893)
		    else Return: AX = 0005h
	    05h ???
		DS:SI -> ??? 20-byte record4 (see #2894)
		ES:DI -> buffer containing ???
	    06h ???
		BL = subfunction
		    01h
			DS:SI -> ??? 40-byte record5 (see #2895)
		    02h
			DS:SI -> ??? 20-byte record6 (see #2896)
			ES:DI -> ???
		    03h
			DS:SI -> ??? 20-byte record6 (see #2896)
		    04h
			DS:SI -> ??? 46-byte record7 (see #2897)
		    else Return: AX = 0005h
	    11h ???
		DS:SI -> ??? 28-byte record8 (see #2898)
		ES:DI -> ???
Return: AX = function status (see #2890)
SeeAlso: AX=0000h

(Table 2890)
Values for Super-TCP function status:
 0000h	successful
 0005h	unsupported function
 000Ah	out of memory

Format of record1:
Offset	Size	Description	(Table 2891)
 00h  4 BYTEs	???
 04h	WORD	size of ES:DI buffer
 06h 18 BYTEs	???

Format of record2:
Offset	Size	Description	(Table 2892)
 00h  4 BYTEs	???
 04h	WORD	size of ES:DI buffer
 06h 12 BYTEs	???

Format of record3:
Offset	Size	Description	(Table 2893)
 00h  2 BYTEs	???
 02h	WORD	???
 04h	WORD	size of ES:DI buffer
 06h	WORD	???
 08h	WORD	operation number (for function 0401h)
 0Ah	DWORD	-> ???
 0Eh	WORD	(ret) ???
 10h 12 BYTEs	???

Format of record4:
Offset	Size	Description	(Table 2894)
 00h  4 BYTEs	???
 04h	WORD	size of ES:DI buffer
 06h 14 BYTEs	???

Format of record5:
Offset	Size	Description	(Table 2895)
 00h	BYTE	operation??? (00h-07h)
 01h	BYTE	???
 02h	WORD	(ret) ???
 04h	DWORD	-> ???
 08h  4 BYTEs	???
 0Ch	DWORD	-> ??? or 0000h:0000h
 10h 16 BYTEs	???
 20h	DWORD	???
 24h  4 BYTEs	???

Format of record6:
Offset	Size	Description	(Table 2896)
 00h  4 BYTEs	???
 04h	WORD	size of ES:DI buffer
 06h 14 BYTEs	???

Format of record7:
Offset	Size	Description	(Table 2897)
 00h	WORD	???
 02h	WORD	???
 04h	WORD	???
 06h 40 BYTEs	???

Format of record8:
Offset	Size	Description	(Table 2898)
 00h  4 BYTEs	???
 04h	WORD	size of ES:DI buffer
 06h  6 BYTEs	???
 0Ch	WORD	(ret) ???
 0Eh	WORD	operation??? (01h-03h)
 10h 12 BYTEs	???
--------N-6A0002-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
	AX = 0002h
	BX = ??? (zero/nonzero)
	CX = ??? identifier (see AX=0004h)
	DS:SI -> 40-byte buffer for ??? or 0000h:0000h
	ES:DI -> buffer for ??? or 0000h:0000h
Return: AX = 0000h (successful) ???
	BL = ???
	BH = ???
	CX = ???
	DX = ???
--------N-6A0003-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - GET ??? DATA AREA
	AX = 0003h
Return: CX:DX -> data area (see #2899)

Format of Super-TCP data area:
Offset	Size	Description	(Table 2899)
 00h  2 BYTEs	???
 02h	DWORD	original INT 6A vector
 06h  2 BYTEs	???
 08h 96 BYTEs	array of 16 6-byte ???
 68h	WORD	number of elements of above array in use
 6Ah	WORD	???
	???
--------N-6A0004-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ALLOCATE ???
	AX = 0004h
	CX = size in ???
Return: AX = 0000h (successful)
	CX = DX = ???
SeeAlso: AX=0005h,AX=000Fh
--------N-6A0005-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ???
	AX = 0005h
	CX = ??? identifier (from AX=0004h)
Return: AX = status (0000h successful, FFFFh failed)
SeeAlso: AX=0004h,AX=000Fh
--------N-6A000F-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ALL ???
	AX = 000Fh
Return: AX = 0000h (successful)
SeeAlso: AX=0000h,AX=0004h,AX=0005h
--------N-6A0010-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - UNINSTALL
	AX = 0010h
Return: AX = status
	    0000h successful
	    0002h can't uninstall, interrupt vector hooked by another program
Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
Note:	if AX is not one of the values listed here on entry, Super-TCP
	  returns AX=FFFEh
SeeAlso: AX=0000h
--------N-6A01--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
	AH = 01h
	DH = FFh
	AL = character
	DL = handle
Return: AH >= 80h on error
SeeAlso: AH=02h
--------N-6A02--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
	AH = 02h
	DH = FFh
	DL = handle
Return: AH < 80h if successful
	    AL = character
	AH >= 80h on error
SeeAlso: AH=01h
--------N-6A03--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
	AH = 03h
	DH = FFh
	DL = handle
Return: AH = status flags (see #2900)

Bitfields for DECnet DOS LAT status flags:
Bit(s)	Description	(Table 2900)
 5	transmit buffer empty
 3	session in start state
 2	session not active
 1	unable to queue transmit data
 0	receive data available
--------N-6AD0--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
	AH = D0h
	DH = FFh
	AL = password flag
	    FFh no password
	    0Fh password at ES:DI
	ES:BX -> LAT session control block (see #2901)
	ES:DI -> 16-byte blank-padded password (optional)
Return: AH = 00h success
	    DL = handle
SeeAlso: AX=D000h

Format of LAT Session Control Block:
Offset	Size	Description	(Table 2901)
 00h 18 BYTEs	service name
 12h 18 BYTEs	node name (future use)
 24h 18 BYTEs	port name (future use)
 36h	DWORD	-> session stopped post routine
 3Ah	DWORD	-> service table overflow post routine
 3Eh	DWORD	-> transmit post routine
 42h	DWORD	-> receive post routine
 46h	WORD	session status
		04h circuit failure
		08h stop slot received
---LAT v???---
 48h	WORD	slot state (LAT driver use)
 4Ah	WORD	local credits (LAT driver use)
 4Ch	DWORD	-> VCB (LAT driver use)
 50h	WORD	backward slot (LAT driver use)
 52h	WORD	forward slot (LAT driver use)
 54h	WORD	remote slot ID (LAT driver use)
 56h	WORD	local slot ID (LAT driver use)
 58h	WORD	slot byte count (LAT driver use)
 5Ah	BYTE	remote credits (LAT driver use)
 5Bh 255 BYTEs	transmitted data slot
15Ah	BYTE	number of receive data slots (4 recommended)
15Bh	BYTE	number of occupied slots
15Ch	BYTE	index of next receive slot to use
15Dh	BYTE	index of current receive slot
15Eh	WORD	pointer to first received character
160h  N WORDs	pointers to receive slots (buffers); each is 259 bytes
     259N BYTEs	buffers
Note:	set post routines to 0000h:0000h if polled operation will be used
---LAT v4.1.17---
 48h	WORD	session state (LAT driver use)
 4Ah	BYTE	local credits (LAT driver use)
 4Bh	DWORD	-> VCB (LAT driver use)
 4Fh	WORD	backward slot (LAT driver use)
 51h	WORD	forward slot (LAT driver use)
 53h	BYTE	remote slot ID (LAT driver use)
 54h	BYTE	local slot ID (LAT driver use)
 55h	BYTE	slot byte count (LAT driver use)
 56h	BYTE	remote credits (LAT driver use)
 57h 255 BYTEs	transmitted data slot
156h	BYTE	number of receive data slots (4 recommended)
157h	BYTE	number of occupied slots
158h	BYTE	index of next receive slot to use
159h	BYTE	index of current receive slot
15Ah	WORD	pointer to first received character
15Ch  N WORDs	pointers to receive slots (buffers); each is 259 bytes
     259N BYTEs	buffers
Note:	set post routines to 0000h:0000h if polled operation will be used
--------N-6AD000DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
	AX = D000h
	DH = FFh
	DL = handle
Return: AX = status (see #2902)
SeeAlso: AH=D0h

(Table 2902)
Values for DECnet DOS LAT function status:
 0000h	successful
 0001h	no such session
 0002h	session not running, try again later
--------N-6AD100DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
	AX = D100h
	DH = FFh
	DL = handle
Return: AX = 0000h if successful
	AH bit 7 set if unable to send break
--------N-6AD300DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
	AX = D300h
	DH = FFh
SeeAlso: AX=D400h
--------N-6AD400DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
	AX = D400h
	DH = FFh
	CX = buffer size
	ES:BX -> buffer for LAT counters
Return: AX = status
	    0000h counters copied into buffer
	    FFFFh buffer too small
SeeAlso: AX=D300h
--------N-6AD500DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
	AX = D500h
	DH = FFh
	ES:BX -> 17-byte buffer for name
Return: AH = 00h if successful
	   ES:BX buffer filled
	AX = FFFFh if end of table or no name available
Notes:	use this function to get the names of the hosts on the network
	successive calls are necessary to get all names
SeeAlso: AX=D600h
--------N-6AD600DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
	AX = D600h
	DH = FFh
Return: AX = number of service table entries
	BX = status
	    0000h service table has not overflowed
	    FFFFh service table has overflowed
SeeAlso: AX=D500h
--------N-6B---------------------------------
INT 6B - DECnet DOS - PORT DRIVER
Note:	the installation check consists of testing for a signature area
	  (see #2903) immediately preceding the interrupt handler
SeeAlso: INT 6A"DECnet",INT 6C"DECnet"
Index:	installation check;DECnet DOS Port Driver

Format of DECnet DOS signature area:
Offset	Size	Description	(Table 2903)
 -5	BYTE	major version number
 -4	BYTE	minor version number
 -3   3 BYTEs	signature (ASCII "PDV")
--------v-6B---------------------------------
INT 6B - VIRUS - "Saddam" - ORIGINAL INT 21h VECTOR
SeeAlso: INT 21/AX=FFFFh,INT 61"VIRUS",INT 70"VIRUS"
--------h-6B---------------------------------
INT 6B C - HP Vectra AT - IRQ19 - RESERVED HARDWARE INTERRUPT
SeeAlso: INT 0B"IRQ0",INT 6A"HP Vectra",INT 6C"HP Vectra"
--------S-6B0000-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
	AX = 0000h
	CX = length
	ES:BX -> buffer
Return: CX = number of bytes written
Program: NASI is Novell's NetWare Asynchronous Services Interface (purchased
	  from Network Products Corp, who call it NCSI) which runs on
	  workstations; NACS is the NetWare Asynchronous Communications
	  Services module which runs on servers
Notes:	the installation check consists of testing for the signature string
	  "NCSI" three bytes past the interrupt handler; see also AH=02h.
	  As of version 3.0, Novell's NASI can be distinguished from NPC's
	  NCSI by the presence of an 'A' immediately following the signature
	this function is also supported by TelAPI, NPC NCSI, and Connection
	  Manager CLIENT.EXE; for TelAPI, nonzero values in AL specify a
	  connection ID
	Connection Manager returns CF set/AL=FFh if called while an INT 6B
	  call is already in progress
SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h,INT 14/AH=E3h
--------S-6B0100-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
	AX = 0100h
	CX = length of buffer
	ES:BX -> buffer
Return: CX = number of bytes read
Note:	also supported by TelAPI and NPC NCSI; for TelAPI, nonzero values in
	  AL specify a connection ID
SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AH=E2h,INT 14/AX=FF02h
--------S-6B02-------------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
	AH = 02h
	AL nonzero
Return: AL = 00h if present and OK
Note:	this function is also supported by TelAPI and NPC NCSI
SeeAlso: AX=0700h
--------S-6B0600-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
	AX = 0600h
	CX = command
	    02h send break
	    04h disconnect
	    06h hold
Return: CF clear if successful
	    AL = 00h
	CF set on error
	    AX < 0
Note:	this function is also supported by TelAPI and NPC NCSI
--------S-6B0700-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
	AX = 0700h
Return: CH <> 00h if connection active
Notes:	this function is also supported by TelAPI and NPC NCSI
	Novell TelAPI returns CX=FF01h and CF clear
SeeAlso: AH=02h,AH=10h
--------N-6B08-------------------------------
INT 6B - TelAPI - CHECK FOR BREAK SIGNAL
	AH = 08h
	AL = circuit number
Return: CF clear if no breaks
	    AL = 00h
	    CX = 0000h
	CF set if one or more breaks received
Note:	this function also clears ??? flag
SeeAlso: INT 14/AX=FF00h
--------S-6B10-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
	AH = 10h
	AL = connection ID (Novell TELAPI.EXE)
	CX = ???
Return: CF clear if successful
	    CL = ???
	    CH = ???
	CF set on error
	???
Notes:	this function is also supported by TelAPI
	when shelled out to an external protocol from Novell NASI, the circuit
	  whose status indicates that it is connected is the currently active
	  circuit
SeeAlso: AX=0700h,AH=12h,AH=1Fh
--------S-6B11--DX0001-----------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
	AH = 11h
	DX = 0001h
	AL = 00h
	ES:BX -> service name string (8 characters, blank-padded)
Return: CF clear if successful
	    AL = virtual circuit number allocated (01h for Novell TELAPI.EXE)
	    CL = ??? (01h for Novell TELAPI.EXE)
	    CH = ??? (01h for Novell TELAPI.EXE)
	CF set on error
	    ???
Note:	this function is also supported by TelAPI
SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
--------S-6B12-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
	AH = 12h
	AL = virtual circuit number
	CL = ???
	ES:BX -> ???
Return: ???
Note:	this function is also supported by TelAPI
SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
--------S-6B13-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
	AH = 13h
	AL = virtual circuit number
	CL = direction (00h get, nonzero set)
	ES:BX -> buffer for/containing service name
Return: ???
Note:	this function is also supported by TelAPI
SeeAlso: AH=14h,AH=15h
--------S-6B14-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
	AH = 14h
	AL = virtual circuit number
	ES:BX -> buffer for/containing service address
Return: ???
Note:	this function is also supported by TelAPI, which only supports
	  retrieving the address
SeeAlso: AH=13h,AH=15h,AH=21h
--------S-6B15-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
	AH = 15h
	AL = virtual circuit number
	CL = direction (00h get, nonzero set)
	ES:BX -> buffer for/containing virtual circuit config (see #2904)
Return: ES:BX buffer filled
Note:	this function is also supported by TelAPI
SeeAlso: AH=13h"NCSI",AH=14h"NCSI"

Format of virtual circuit configuration:
Offset	Size	Description	(Table 2904)
 00h	WORD	buffer length
 02h	WORD	port ID
 04h	WORD	receive rate
 06h	WORD	receive word length
 08h	WORD	receive stop bits
 0Ah	WORD	receive parity
 0Ch	WORD	transmit rate
 0Eh	WORD	transmit word length
 10h	WORD	transmit stop bits
 12h	WORD	transmit parity
 14h	WORD	DTR
 16h	WORD	RTS
--------S-6B16-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
	AH = 16h
	AL = virtual circuit number
	CL = ??? switch (00h, ???)
Return: CF clear if successful
	    AL = virtual circuit number
	CF set on error
	    ???
Note:	this function is also supported by TelAPI, which always returns CF
	  clear and AL=00h
SeeAlso: AH=11h,AH=12h,AH=17h
--------S-6B17-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
	AH = 17h
	AL = virtual circuit number
Return: CF clear if successful
	CF set on error
	???
Note:	this function is also supported by TelAPI, which always returns CF
	  clear and AL=00h
SeeAlso: AH=11h,AH=16h
--------S-6B18-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
	AH = 18h
	AL = virtual circuit number
	CX = number of characters to send
	ES:BX -> buffer containing characters to be sent
Return: CF clear if successful
	CF set on error
	???
Note:	this function is also supported by TelAPI, which always returns CF
	  clear and AL=30h
SeeAlso: AX=0000h,AH=12h,AH=19h
--------S-6B19-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
	AH = 19h
	AL = virtual circuit number
	CX = number of characters to read
	ES:BX -> buffer for received characters
Return: CX = 0000h if failed
	CX = nonzero (possibly number of characters received) if successful
Note:	this function is also supported by TelAPI
SeeAlso: AX=0100h,AH=12h,AH=18h
--------S-6B1A-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
	AH = 1Ah
	???
Return: ???
SeeAlso: AH=12h,AH=1Bh
--------S-6B1B-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
	AH = 1Bh
	???
Return: ???
SeeAlso: AH=12h,AH=1Ah
--------S-6B1C-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - CLEAR RECEIVE BUFFER
	AH = 1Ch
	AL = circuit number
Return: nothing
SeeAlso: AH=1Dh"NCSI",AH=1Eh"NCSI"
--------S-6B1D-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
	AH = 1Dh
	???
Return: ???
SeeAlso: AH=1Ch,AH=1Eh
--------S-6B1E-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
	AH = 1Eh
	???
Return: ???
SeeAlso: AH=1Ch,AH=1Dh
--------S-6B1F-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
	AH = 1Fh
	???
Return: ???
SeeAlso: AH=10h,AH=12h
--------S-6B20-------------------------------
INT 6B - Connection Manager CLIENT.EXE - ???
	AH = 20h
	???
Return: ???
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
	  serial ports over an IPX or NetBIOS-based network
Note:	CLIENT.EXE returns CF set/AL=F9h if AH is not 00h to 21h on entry
--------S-6B21-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
	AH = 21h
	AL = virtual circuit number
	CL = ??? (00h or 01h)
	ES:BX -> buffer for service name structure (see #2905)
Return: CF clear if successful
	    ES:BX buffer filled
	CF set on error
Notes:	a program should call this function after allocating a virtual circuit
	  and check that the general name matches the requested service
	prior to version 3.0, Novell's NASI returned the first available port;
	  v3.0+ returns the first port found--check the returned status to
	  determine whether the port is available
SeeAlso: AH=14h"NCSI"

Format of NCSI service name structure:
Offset	Size	Description	(Table 2905)
 00h	WORD	buffer length
 02h  8 BYTEs	service name
 0Ah  8 BYTEs	general name
 12h  8 BYTEs	specific name
 1Ah  4 BYTEs	???
---Novell NASI v3.0+ ---
 1Eh	BYTE	port number
 1Fh	BYTE	port status
		00h idle (available)
		01h allocated (available)
		02h connected
		03h on hold
----------6B6B-------------------------------
INT 6B - Tandy SCHOOLMATE PLUS - API
	AH = 6Bh
	AL = E0h to FFh
Note:	details not yet available
----------6C---------------------------------
INT 6C - system resume vector (CONVERTIBLE)
----------6C---------------------------------
INT 6C - DOS 3.2 Realtime Clock update
--------N-6C---------------------------------
INT 6C - DECnet DOS network scheduler
Notes:	the installation check consists of testing for a signature area
	  immediately preceding the interrupt handler (see #2906)
	also supported by DEC Pathworks for DOS
SeeAlso: INT 6B"DECnet",INT 6D"DECnet",INT 6E"DECnet"
Index:	installation check;DECnet DOS scheduler

Format of DECnet DOS signature area:
Offset	Size	Description	(Table 2906)
 -5	BYTE	major version number
 -4	BYTE	minor version number
 -3   3 BYTEs	signature (ASCII "SCH")
--------h-6C---------------------------------
INT 6C C - HP Vectra AT - IRQ20 - HP-HIL CONTROLLER INTERRUPT
SeeAlso: INT 0C"IRQ0",INT 6B"HP Vectra",INT 6D"HP Vectra"
--------V-6D---------------------------------
INT 6D - VIDEO - many VGA - VIDEO BIOS ENTRY POINT
Desc:	points at the original INT 10 entry point set up by the VGA BIOS
Notes:	used by IBM, ATI VGA Wonder, Paradise, Video7, and NCR, and many others
	the Diamond Stealth64 BIOS uses this vector to store the INT 42 vector
	   of the inactive video (see INT 10/AH=12h/BL=35h)
SeeAlso: INT 10
--------V-6D---------------------------------
INT 6D - Trident SVGA - VIDEO BIOS HANDLER
Note:	the BIOS INT 10 handler on various Trident VGA cards consists merely
	  of a call to INT 6D followed by an IRET.
--------N-6D---------------------------------
INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM
	AH = function
	???
Return: ???
Note:	the installation check consists of testing for a signature area
	  immediately preceding the interrupt handler (see #2907)
SeeAlso: INT 69/AH=0Ah,INT 6C"DECnet",INT 6E"DECnet"
Index:	installation check;DECnet DOS Data Link Layer

Format of DECnet DOS signature area:
Offset	Size	Description	(Table 2907)
 -5	BYTE	major version number
 -4	BYTE	minor version number
 -3   3 BYTEs	signature (ASCII "DLL")
--------h-6D---------------------------------
INT 6D C - HP Vectra AT - IRQ21 - RESERVED HARDWARE INTERRUPT
SeeAlso: INT 0D"IRQ0",INT 6C"HP Vectra",INT 6E"HP Vectra"
--------N-6E---------------------------------
INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
Notes:	this is the main DECnet DOS access, and is described in Digital manual
	  AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
	there is a signature/data area immediately prior to the interrupt
	  handler which may be used as an installation check (see #2908)
Index:	installation check;DECnet DOS

Format of DECnet DOS signature area:
Offset	Size	Description	(Table 2908)
 -5	BYTE	major version number
 -4	BYTE	minor version number
 -3   3 BYTEs	signature (ASCII "DNP")
--------h-6E---------------------------------
INT 6E C - HP Vectra AT - IRQ22 - RESERVED HARDWARE INTERRUPT
SeeAlso: INT 0E"IRQ0",INT 6D"HP Vectra",INT 6F/AH=00h"HP Vectra"
--------!---Section--------------------------
