Table des matières

MSDOS - Interrupt List 61h-FDh

INT 61 - reserved for user interrupt

INT 61 - Atari Portfolio - EXTENDED BIOS

provides subfunctions such as turning off the machine, accessing internal variables, and mapping memory cards

SeeAlso: INT 60“Atari”

INT 61 - HP 95LX System Manager - LOAD DS

SeeAlso: INT 0F“HP 95LX”,INT 60“HP 95LX”

INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP

SeeAlso: INT 61“JPI”

INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA

Note: this vector stores the second four bytes of the parameter table for

  hard disk 0

SeeAlso: INT 60“Adaptec”,INT 62“Adaptec”,INT 63“Adaptec” ———-61——————————— INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE

BX:DX -> control block

SeeAlso: INT 67“Sangoma” ———-61——————————— INT 61 - VIRUS - “SEMTEX”/“Screen Trasher” - INT 21h SUBSTITUTE Note: the virus copies the original INT 21h vector into INT 61h SeeAlso: INT 21h,INT 60“VIRUS”,INT 6B“VIRUS” ———-61——————————— INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface

AH = system call number (see separate entries below)

Return: CF clear if successful

CF set on error
    AL = basic error
        04h invalid handle???
	12h invalid subfunction
	18h invalid system call
	1Bh kernel busy, try again later
    AH = suberror number

Notes: the installation check consists of testing for the signature “TCPTSR”

  three bytes beyond the start of the interrupt handler
INT 61 is the default; PC/TCP v2.05 may be configured to use any
  interrupt from 20h through E0h

BUG: the SLIP kernel for v2.05 bounds-checks the wrong register, so values

  greater than 54h in AH may crash the system.  Other kernels may have
  this bug as well.

SeeAlso: INT 61/AH=00h“PC/TCP”,INT 61/AH=2Ah,INT 61/AH=54h ———-6100——————————- INT 61 U - PC/TCP kernel v2.05 - GET DEBUG INFORMATION

AH = 00h
DS:SI -> 216-byte buffer for network debugging information (see below)

Return: CF clear

AX = 0000h
buffer filled

SeeAlso: INT 61“PC/TCP”,INT 61/AH=2Ah“PC/TCP”

Format of network debugging information: Offset Size Description 00h DWORD number of interrupts 04h DWORD receive buffer low-water mark 08h DWORD transmit buffer low-water mark 0Ch DWORD number of packets received 10h DWORD number of packets transmitted 14h DWORD total receive errors 18h DWORD total transmit errors 1Ch 4 BYTEs ??? 20h DWORD receive resets 24h DWORD transmit resets 28h DWORD number of “runts” received 2Ch DWORD number of alignment errors on received packets 30h DWORD number of CRC errors on received packets 34h DWORD number of parity errors on received packets 38h DWORD number of receive overflow errors 3Ch DWORD number of oversized packets received 40h DWORD number of packets lost due to lack of buffers 44h DWORD receive timeouts 48h 32 BYTEs ??? 68h DWORD number of transmit collisions 6Ch DWORD number of transmit timeouts 70h DWORD number of transmit underflows 74h DWORD number of lost “crs” on transmit 78h DWORD number of times heartbeat failed on transmit 7Ch 24 BYTEs ??? 94h WORD free packet buffers 96h WORD total packet buffers 98h WORD minimum number of packet buffers free since kernel started 9Ah 24 BYTEs ??? B2h DWORD pointer to TCP connection list??? B6h DWORD pointer to IP routing table??? BAh 30 BYTEs ??? ———-610000—————————– INT 61 - OPTIMA 1024 VGA-Sync - ZOOM DISPLAY

AX = 0000h
BX = zoom factor (0-7)

Notes: zooms the display based on the given zoom factor

INT 61h is the default interrupt; the actual interrupt number can be
  obtained by calling INT 16/AH=FFh

SeeAlso: INT 16/AH=FFh“OPTIMA”,INT 61/AX=0001h“OPTIMA”,INT 61/AX=0002h“OPTIMA” SeeAlso: INT 61/AX=0005h“OPTIMA” ———-610001—————————– INT 61 - Banyan VINES - “Sosock” - OPEN COMMUNICATIONS SOCKET

AX = 0001h
DS:DX -> communications control block (function 0001h)

Return: AX = status

    0000h  successful
    0001h  service not installed
    0002h  invalid service ID
    0098h  resource already in use
    009Eh  address family does not exist
    009Fh  socket type does not exist
    00A0h  protocol does not exist
    00A1h  no more sockets available
    00A2h  no more buffer space available

Note: BANYAN can use any interrupt from 60h through 66h. The Banyan

  interrupt handler is identified by the string "BANV" in the four
  bytes immediately preceding the interrupt handler

Format of control block: Offset Size Description 00h WORD 0001h 02h WORD pointer to argument block 04h WORD error return code 06h 4 BYTEs reserved

Format of argument block: Offset Size Description 00h WORD pointer to 2-byte buffer for socket identifier 02h WORD address family

	0003h Banyan

04h WORD socket type

	in address family 0003h
	    0001h IPC socket
	    0002h SPP socket

06h WORD protocol number

	FFFFh default

08h WORD pointer to 16-byte buffer for socket address 0Ah WORD local port number

	0000h if service should assign transient port number
	0001h to 01FFh well-known port number (assigned by Banyan)

Format of IPC port: Offset Size Description 00h WORD address family (always 0003h for Banyan ports) 04h 4 BYTEs network number (server's serial number) 06h WORD subnet number (0001h = server, 8000h-FFFEh = PC) 08h WORD port ID (0001h-01FFh for “well-known” ports) 0Ah BYTE hop count 0Bh 5 BYTEs filler ———-610001—————————– INT 61 - Banyan VINES - “Sosend” - INITIATE OUTPUT EVENT

AX = 0001h
DS:DX -> communications control block (function 0002h)

Return: AX = status

    0000h  successful
    0001h  service not installed
    0002h  invalid service ID
    0003h-000Ah reserved for BANV interface errors
    0097h  invalid socket identifier
    009Bh  destination node unreachable
    009Ch  message overflow
    009Dh  destination socket nonexistent
    00A2h  no more buffer space
    00A3h  timeout
    00B1h  resource disconnect

Note: BANYAN can use any interrupt from 60h through 66h. The Banyan

  interrupt handler is identified by the string "BANV" in the four
  bytes immediately preceding the interrupt handler

Format of control block: Offset Size Description 00h WORD 0002h 02h WORD pointer to argument block (see below) 04h WORD error return code

	0000h successful
	0097h invalid socket ID
	00A2h no more buffer space
	00A3h timeout event
	00A5h resource not available
	00A6h internal communication failure
	00B1h resource disconnect

06h 4 BYTEs reserved

Format of argument block: Offset Size Description 00h WORD routine metric 02h WORD error return code 04h WORD socket identifier 06h WORD pointer to send buffer 08h WORD length of send buffer 0Ah WORD flags

	bit 0: async request
	    1: reliable message
	    3: end of user message received
	    4: vectored request (if set, send buffer contains buffer
		descriptors)
	    5: connection-specific receive
	    6: change to connection-specific receive mode

0Ch 16 BYTEs socket address (see below) 1Ch WORD timeout value in multiples of 200ms 1Eh WORD connection identifier 20h WORD type of request

	0001h send message
	0002h establish a virtual connection
	0003h terminate a virtual connection

Format of buffer descriptor: Offset Size Description 00h WORD data segment 02h WORD buffer pointer 04h WORD buffer length 06h WORD character count

Format of socket address for unreliable datagrams: Offset Size Description 00h WORD 0003h address family 02h DWORD FFFFFFFFh network number 06h WORD FFFFh subnet number 08h WORD local port number 0Ah BYTE 00h-0Fh hop count 0Bh 5 BYTEs 0000h filler ———-610001—————————– INT 61 - Banyan VINES - “Sorec” - RECEIVE INPUT EVENT NOTIFICATION

AX = 0001h
DS:DX -> communications control block (function 0003h)

Return: AX = status

    0000h  successful
    0001h  service not installed
    0002h  invalid service ID
    0003h-000Ah reserved for BANV interface errors
    0097h  invalid socket identifier
    00A2h  no more buffer space
    00A3h  timeout

Note: BANYAN can use any interrupt from 60h through 66h. The Banyan

  interrupt handler is identified by the string "BANV" in the four
  bytes immediately preceding the interrupt handler

Format of control block: Offset Size Description 00h WORD 0003h 02h WORD pointer to argument block (see below) 04h WORD error return code

	0000h successful
	0097h invalid socket ID
	00A2h no more buffer space
	00A3h timeout event
	00A5h resource not available
	00A6h internal communication failure
	00B1h resource disconnect

06h 4 BYTEs reserved

Format of argument block: Offset Size Description 00h WORD character count 02h WORD error return code 04h WORD socket identifier 06h WORD pointer to receive buffer 08h WORD length of receive buffer 0Ah WORD flags

	bit 0: async request
	    2: flush receive buffer on overflow
	    3: end of user message received
	    4: vectored request (if set, receive buffer contains buffer
		descriptors)
	    5: connection-specific receive
	    6: change to connection-specific receive mode

0Ch 16 BYTEs socket address 1Ch WORD timeout value in multiples of 200ms 1Eh WORD connection identifier 20h WORD type of response

	0001h message received
	0002h virtual connection established
	0003h virtual connection terminated

Format of buffer descriptor: Offset Size Description 00h WORD data segment 02h WORD buffer pointer 04h WORD buffer length 06h WORD character count ———-610001—————————– INT 61 - Banyan VINES - “Soclose” - CLOSE A SOCKET

AX = 0001h
DS:DX -> communications control block (function 0004h)

Return: AX = status

    0000h  successful
    0001h  service not installed
    0002h  invalid service ID
    0003h-000Ah reserved for BANV interface errors
    0097h  invalid socket identifier

Note: BANYAN can use any interrupt from 60h through 66h. The Banyan

  interrupt handler is identified by the string "BANV" in the four
  bytes immediately preceding the interrupt handler

Format of control block: Offset Size Description 00h WORD 0004h 02h WORD pointer to argument block (see below) 04h WORD error return code 06h 4 BYTEs reserved

Format of argument block: Offset Size Description 00h WORD socket identifier ———-610001—————————– INT 61 - Banyan VINES - “Sowait” - WAIT FOR ASYNCHRONOUS EVENT COMPLETION

AX = 0001h
DS:DX -> communications control block (function 0005h)

Return: AX = status

    0000h  successful
    0001h  service not installed
    0002h  invalid service ID
    0003h-000Ah reserved for BANV interface errors
    00A2h  no more buffer space available
    00A3h  timeout event

Notes: BANYAN can use any interrupt from 60h through 66h. The Banyan

  interrupt handler is identified by the string "BANV" in the four
  bytes immediately preceding the interrupt handler
returns results for all asynchronous operations invoked from the
  data segment used for this call

Format of control block: Offset Size Description 00h WORD 0005h 02h WORD pointer to argument block (see below) 04h WORD error return code 06h 4 BYTEs reserved

Format of argument block: Offset Size Description 00h WORD pointer to WORD event pointer 02h WORD timeout in multiples of 200ms, FFFFh = infinite ———-610001—————————– INT 61 - Banyan VINES - “Sosession” - REGISTER APPLICATION WITH COMM SERVICE

AX = 0001h
DS:DX -> communications control block (function 0008h)

Return: AX = status

    0000h  successful
    00A2h  no more buffer space available

Note: BANYAN can use any interrupt from 60h through 66h (default 61h). The

  Banyan interrupt handler is identified by the string "BANV" in the
  four bytes immediately preceding the interrupt handler

Format of control block: Offset Size Description 00h WORD 0008h 02h WORD process type

	0001h transient process
	0002h resident process

04h WORD error return code 06h 4 BYTEs reserved ———-610001—————————– INT 61 - Banyan VINES - “Soint” - SET USER COMPLETION FUNCTION

AX = 0001h
DS:DX -> communications control block (function 000Bh)

Return: AX = status

    0000h  successful
    0001h  service not installed
    0002h  invalid service ID
    0003h-000Ah reserved for BANV interface errors
    00A2h  no more buffer space available

Notes: BANYAN can use any interrupt from 60h through 66h. The Banyan

  interrupt handler is identified by the string "BANV" in the four
  bytes immediately preceding the interrupt handler
FAR user function is invoked with SS,DS, and ES set to segment of
  control block, and with the stack containing
	DWORD	return address
	WORD	argument pointer (sosend or sorec argument block)
	WORD	error return code
		0000h argument pointer is valid
		00A3h timeout

Format of control block: Offset Size Description 00h WORD 000Bh 02h WORD pointer to argument block (see below) 04h WORD error return code 06h 2 BYTEs reserved 08h WORD user CS register

Format of argument block: Offset Size Description 00h WORD pointer to user interrupt function 02h WORD pointer to user stack 04h WORD initial timeout value in multiples of 200ms, FFFFh = infinite ———-610001—————————– INT 61 - OPTIMA 1024 VGA-Sync - CENTER ZOOM WINDOW

AX = 0001h
BX = X coordinate to center
CX = Y coordinate to center

Notes: Positions the zoom window such that the specified window-relative

  coordinates appear as close as possible to the center of the
  display.  Useful for scrolling and panning.
INT 61h is the default interrupt; the actual interrupt number can be
  obtained by calling INT 16/AH=FFh

SeeAlso: INT 16/AH=FFh“OPTIMA”,INT 61/AX=0000h“OPTIMA”,INT 61/AX=0002h“OPTIMA” SeeAlso: INT 61/AX=0005h“OPTIMA” ———-610002—————————– INT 61 - Banyan VINES - 3270 INTERFACE

AX = 0002h
BH = function
    00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
    02h "pi2bsc" (3270/BSC only)
    03h	"pi2get"    get information stored in 3270 resident driver
    04h "pi2put"    store information in 3270 resident driver
    05h "pi2gcur"   get current screen position
    07h "pi2sdat"   send data keystroke
    08h "pi2scom"   send command keystroke
    0Ah "pi2field"  get field info for arbitrary screen positions
    0Fh "pi2stat"   get logical unit/device status
    12h "pi2nlus"   determine logical unit/device assignment
    13h "pi2gate"   specifies comm port address to gateway service
    14h "pi2attach" attach a logical unit/device
    15h "pi2sdev"   save logical unit/device info in resident driver
		    (not supported in >3.0)
    16h "pi2gdev"   get device information (not supported in >3.0)
    17h "pi2luinfo" get info about specific logical unit/device
    18h "pi2gerr"   get finer error detail
    19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
    1Ah "pi2shut"   release memory-resident module
    1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
    1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
DS:CX -> argument block (except BH=00h,1Ah)

Return: AX = status

    0000h successful
    000Bh invalid parameter or data does not fit data area
    000Ch another code path currently active in resident driver
    000Dh operation currently not allowed
    0032h encountered connection disconnect error
    0033h encountered "sosend" completion error
    0034h encountered "sosend" communication error
    0035h attach request refused.  extended error info via "pi2gerr":
		01h resource unavailable
		02h invalid type
		03h version mismatch
		04h invalid logical unit number
		05h error during ARL processing
		06h no access for user
    0071h encountered "sosock" error
    0072h encountered unrecognizable error
    0073h encountered "sowait" error (extended info via "pi2gerr")
    0074h encountered invalid type-of-request on "sowait"
    0075h encountered "sorec" error (extended info via "pi2gerr")
    0076h encountered "sorec" completion error (ext info via "pi2gerr")
    0077h encountered connection request
    0078h encountered unrecognizable data
    0079h encountered unknown connection ID (ext info via "pi2gerr")

Notes: Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on

  which is loaded first.  The other interface will use AX=000Ah
Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  or 3270/BSC resident driver, which must be reloaded by the user

Format of argument block for BH=03h,04h: Offset Size Description 00h WORD size of data area (max 256) 02h N BYTEs data area

Format of argument block for BH=05h: Offset Size Description 00h WORD logical unit/device number 02h WORD pointer to WORD buffer for cursor index 04h WORD pointer to BYTE buffer for current field attribute

Format of argument block for BH=07h: Offset Size Description 00h WORD logical unit/device number 02h WORD ASCII data byte 04h WORD pointer to WORD count of characters which will need updating

Format of argument block for BH=08h: Offset Size Description 00h WORD logical unit/device number 02h WORD keystroke

	0000h Enter
	0001h Clear
	0002h PA1
	0003h PA2
	0004h PA3
	0005h PF1
	...
	001Ch PF24
	001Dh CSELECT (cursor select)
	001Eh Insert
	001Fh Delete
	0020h EOField
	0021h EINPUT (erase input)
	0022h Reset
	0023h Attention
	0024h SysReq
	0025h Duplicate
	0026h Fieldmark
	0027h Home
	0028h NextLine
	0029h Tab
	002Ah BackTab
	002Bh cursor up
	002Ch cursor down
	002Dh cursor right
	002Eh cursor left
	002Fh double cursor right
	0030h double cursor left
	0031h PRINT
	0032h CANCEL
	0033h Backspace

Format of argument block for BH=0Ah: Offset Size Description 00h WORD logical unit/device number 02h WORD screen index 04h WORD pointer to WORD buffer for field length 06h WORD pointer to WORD buffer for offset in screen of field start

Format of argument block for BH=0Fh: Offset Size Description 00h WORD logical unit/device number 02h WORD clear mask (clear these bits of status after returning status) 04h WORD pointer to WORD buffer for status

	bit 10: status modified
	bit  9: buffer modified
	bit  8: set cursor
	bit  5: sound alarm
	bits 0,1: size of print line for printer logical units
		00 unformatted line
		01 40-character line
		10 64-character line
		11 80-character line

Format of argument block for BH=12h: Offset Size Description 00h WORD pointer to WORD buffer for number of logical units or devices 02h WORD pointer to WORD buffer for version number 04h WORD pointer to 64-byte buffer for logical unit/device list

Format of argument block for BH=13h: Offset Size Description 00h 16 BYTEs communications port address (see AX=0001h#“Sosock”)

Format of argument block for BH=14h: Offset Size Description 00h WORD logical unit/device number

	0000h attach any free device of the specified type

02h WORD logical unit/device type

	(3270/SNA) 01h, 02h, or 03h
	(3270/BSC) 02h display
	(3270/BSC) 03h printer

04h WORD pointer to WORD buffer for attached logical unit/device number

Format of argument block for BH=16h: Offset Size Description 00h WORD pointer to 18-byte buffer for device block (see below)

	first WORD must be set to desired logical unit/device number

Format of argument block for BH=17h: Offset Size Description 00h WORD logical unit/device number 02h WORD pointer to information block in caller's DS (see below)

Format of argument block for BH=18h: Offset Size Description 00h WORD pointer to WORD buffer for major error code 02h WORD pointer to WORD buffer for minor error code

Format of argument block for BH=19h: Offset Size Description 00h WORD logical unit/device number

Format of argument block for BH=1Ch,1Dh: Offset Size Description 00h WORD pointer to profile block in caller's DS (see below)

Format of device block, argument block for BH=15h: Offset Size Description 00h WORD logical unit/device number 02h WORD logical unit/device type 04h WORD display model number 06h WORD numeric checking 08h WORD status line 0Ah BYTE unprotected normal field attribute 0Bh BYTE unprotected intensified field attribute 0Ch BYTE protected normal field attribute 0Dh BYTE protected intensified field attribute 0Eh WORD reserved 10h WORD printer port number

Format of information block: Offset Size Description 00h WORD device model number 02h DWORD screen buffer pointer 06h DWORD status line pointer (see below) 0Ah DWORD reserved

Format of status line: Offset Size Description 00h BYTE comm line status

	00h inactive
	01h active

01h BYTE activation level

	01h physical unit activated
	02h logical unit also activated
	03h session is bound

02h BYTE data traffic state

	00h inactive
	01h active

03h BYTE screen ownership

	00h SLU->PLU sessoin owns screen
	01h SLU->SSCP session owns screen

04h BYTE keyboard status

	00h UNLOCK - ready to accept data
	01h TIME - aid was struck
	02h SYSTEM - received response no restore
	03h FUNCTION - unavailable keyboard function
	04h INPUT - not currently used
	05h ENDFIELD - field filled in insert mode
	06h PROTECTED - attempt to enter in protected field
	07h NUMERIC - attempt to enter in numeric field
	08h PROGRAM - error in outbound data stream

05h BYTE insert mode

	01h if in insert mode

06h BYTE numeric

	01h if current screen buffer is numeric only

07h BYTE printer status

	00h printer not assigned
	01h printer is inactive
	02h printer error
	03h currently printing
	04h printer is busy
	05h printer is very busy

08h BYTE printer assignment 09h BYTE maximum size of network name 0Ah N BYTEs ASCIZ network name

BYTE	maximum size of message window
    M BYTEs	null-terminated message window
BYTE	code set
	00h EBCDIC
	01h ASCII
    M BYTEs	extended attributes
	01h extended attributes are in effect (stored at screen+1920)
		each extended attribute specifies
		bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
		bits 2-4: 000=default,001=blue,010=red,011=pink,
			  100=green,101=turquoise,110=yellow,111=white
BYTE	extended color
	01h other than base color is in effect

Format of profile block: Offset Size Description 00h 64 BYTEs gateway service name 40h 16 BYTEs gateway comm port address 50h WORD primary logical unit number 52h WORD secondary logical unit type 54h WORD secondary logical unit number 56h WORD printer assignment 58h 50 BYTEs keyboard definitions filename ———-610002—————————– INT 61 - OPTIMA 1024 VGA-Sync - END ZOOM

AX = 0002h

Note: switches off zoom and returns window to its original state

INT 61h is the default interrupt; the actual interrupt number can be
  obtained by calling INT 16/AH=FFh

SeeAlso: INT 16/AH=FFh“OPTIMA”,INT 61/AX=0000h“OPTIMA” ———-610003—————————– INT 61 - Banyan VINES - ASYNCHRONOUS TERMINAL EMULATION

AX = 0003h
DS:BX -> argument block with function number (see below)

Return: AX = status

    0000h successful
    000Bh invalid session ID
    000Ch session not active
    000Dh invalid request type
    000Eh invalid parameters
    000Fh out of heap space
    0010h timeout on send
    0011h Banyan communications error
    0012h session not waiting for host
    0013h session is active
    0014h duplicate suspend session request
    0015h no session suspended
    0016h ring data buffer full
    0017h printer error encountered
    0018h Banyan communications error
    0019h unable to make connection
    001Ah no ring buffer specified at startup
    001Bh service is down
    001Ch invalid service name
    001Dh service is closed
    001Eh invalid connection name
    001Fh max session limit reached for service
    0020h access rights list for connection/dialout does not include
		this user
    0021h service not responding
    0022h missing telephone number

Format of argument block: Offset Size Description 00h BYTE session ID (00h) 01h BYTE asynchronous interface request number

	00h initialize user buffer pointer information area
	01h send to host
	02h "control monitor"
	03h "flow control data": freeze/unfreeze display, ring buffer
	04h end active session
	05h set session parameter
	06h get session parameter
	07h set tab settings
	08h get tab settings
	09h refresh emulation screen
	0Ah suspend session temporarily
	0Bh restore previously suspended session
	0Ch set state of scroll lock checking
	0Dh exit emulation
	0Eh interrupt on character from host
	0Fh start a session
	10h start/stop printing of data received from host
	11h get file transfer parameters
	12h get connection information
	13h start/stop tracing data traffic in session
	14h interrupt on message from host
	15h reset error

—request=00h— 02h WORD pointer to info area in caller's current DS

	Offset	Size	Description
	 00h	WORD	flags
			0000h don't read interface's data buffer
			0001h read data buffer
	 02h	DWORD	pointer to ring buffer
	 06h	WORD	length of ring buffer
	 08h	WORD	ring buffer offset to last byte read by caller
	 0Ah	DWORD	pointer to WORD containing offset of last byte
			  in ring buffer filled
	 0Eh	DWORD	pointer to screen buffer
	 12h	DWORD	pointer to field containing cursor position
	 16h	DWORD	pointer to terminal status area (see below)

—request=01h— 02h BYTE type

	00h ASCII byte
	01h ASCII string
	02h terminal function code
	03h up arrow
	04h down arrow
	05h left arrow
	06h right arrow
	07h break

03h N BYTEs type-specific info

	Offset	Size	Description
	---ASCII byte---
	 03h	BYTE	byte to send to host
	---ASCII string---
	 03h	WORD	length of string
	 05h	WORD	pointer to string
	---terminal function code (VT52/VT100)---
	 03h	BYTE	function code
			00h keypad 0
			01h keypad 1
			...
			09h keypad 9
			0Ah keypad -
			0Bh keypad ,
			0Ch keypad .
			0Dh keypad ENTER
			0Eh PF1
			0Fh PF2
			10h PF3
			11h PF4
	---terminal function code (IBM3101)---
	 03h	BYTE	function code
			00h PF1
			...
			07h PF8
			08h Home

—request=02h— 02h BYTE display flag

	00h don't display data received from host
	01h display data

—request=03h— 02h BYTE flow control flag

	00h allow characters to be put into display or ring buffer
	01h don't place any more characters into display or ring buffer

—request=05h,06h— 02h BYTE parameter number

	00h line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
		05h=300,06h=600,07h=1200,08h=2400,09h=4800, 0Ah=9600)
	01h parity (00h=none, 01h=odd, 02h=even)
	02h duplex (00h=full, 01h=half)
	03h character size (00h=7 bits, 01h=8 bits)
	04h stop bits (00h=1, 01h=2)
	05h XON/XOFF flow control (00h=no, 01h=yes)
	07h intercharacter delay in tenths of a second
	08h interline delay in tenths of a second
	09h auto linefeed (00h=no, 01h=yes)
	0Ah filter control characters (00h=no, 01h=yes)
	0Bh terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
	0Ch auto wrap (00h=no, 01h=yes)
	0Dh cursor shape (00h=underscore, 01h=block)
	0Eh character set (00h=UK, 01h=US ASCII)
	0Fh printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)

03h BYTE parameter value (returned for 06h) —request=07h,08h— 02h WORD pointer to 80-byte buffer in caller's current DS

	  each byte = 00h if no tab, 01h if tab at that position

—request=0Ah— 02h WORD size of session information to be saved 04h WORD pointer to buffer in caller's DS —request=0Bh— 02h WORD size of buffer into which session info is restored 04h WORD pointer to buffer in caller's DS —request=0Ch— 02h BYTE check_scroll_lock flag

	00h off
	01h on (display of host data stopped while ScrollLock on)

—request=0Eh,14h— 02h DWORD pointer to routine to be called (0000h:0000h = don't call) 06h DWORD stack pointer to use when call is made —request=0Fh— 02h WORD pointer to information area in caller's current DS

	Offset	Size	Description
	 00h	WORD	length of service name
	 02h	WORD	pointer to service name in caller's DS
	 04h	BYTE	type of connection
			(00h=connection name, 01h=dialout)
	 05h	WORD	length of connection name/telephone number
	 07h	WORD	pointer to connection name/telephone number

—request=10h— 02h WORD print capture flag (00h=off, 01h=on) —request=11h— 02h WORD pointer to info area in caller's current DS

	Offset	Size	Description
	 00h	BYTE	protocol flag (00h none, 01h Kermit)
	 01h	BYTE	direction flag (00h send, 01h receive)
	 02h	BYTE	length of null-terminated PC filename
	 03h	DWORD	pointer to null-terminated PC filename
	 07h	BYTE	length of null-terminated host filename
	 08h	DWORD	pointer to null-terminated host filename

—request=12h— 02h WORD pointer to info area in caller's current DS (see below)

	Offset	Size	Description
	 00h	WORD	length of service name (returned)
	 02h	WORD	pointer to 64-byte buffer for service name
	 04h	BYTE	type of connection
			00h connection name
			01h dialout
	 05h	WORD	length of connection name/telephone number
	 07h	WORD	pointer to 64-byte buffer for name/telno
	 09h	BYTE	server line number being used (returned)

—request=13h— 02h BYTE trace flag (00h=off, 01h=on)

Format of terminal status area: Offset Size Description 00h BYTE status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting 01h BYTE terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101) 02h BYTE current keypad mode (VT100,VT52 only)

	4Eh ("N") numeric mode
	41h ("A") application mode

03h 4 BYTEs current state of LEDs (VT100 only)

	00h off
	01h on

07h WORD line error count 09h WORD primary error code

	0000h no error
	0001h unable to make connection
	0002h communications error, restart session
	0003h async terminal emulation service unavailable
	0004h lost carrier
	0005h all matching lines busy
	0006h no lines defined for connection name
	0007h no dial lines available on server
	0008h no matching dial lines available
	0009h out of heap space
	000Ah service error encountered
	000Bh timed out waiting to connect
	000Ch communications error
	000Dh communications error
	000Eh host wants file transferred to/from PC
	000Fh host software changed session parameter
	0010h host software changed tap settings
	0011h host software changed LED indicator
	0012h host software changed display background (secondary error
		code 00h for white on black, 01h for black on white)
	0013h host software changed display option (secondary error
		code 00h for off, 01h for on)
	0014h communications error
	0015h communications error
	0016h unable to make connection
	0017h unable to make connection

0Bh WORD secondary error code ———-610003—————————– INT 61 - OPTIMA 1024 VGA-Sync - REPORT ZOOM FACTOR

AX = 0003h

Return: AX = zoom factor Note: returns the current zoom factor

INT 61h is the default interrupt; the actual interrupt number can be
  obtained by calling INT 16/AH=FFh

SeeAlso: INT 16/AH=FFh“OPTIMA”,INT 61/AX=0000h“OPTIMA”,INT 61/AX=0005h“OPTIMA” ———-610004—————————– INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER

AX = 0004h
DS:DX -> request block (function 0008h)

Return: AX = status

    0000h server ID returned in request block
    000Fh invalid drive
    0015h drive not ready

Format of request block: Offset Size Description 00h WORD 0008h 02h WORD drive number (0=default, 1=A, …) 04h 6 BYTEs buffer for server ID ———-610004—————————– INT 61 - OPTIMA 1024 VGA-Sync - ENTER SPECIFY MODE

AX = 0004h

Note: Specify Mode is enabled by hot key (seeAlso below), and allows

panning and zooming via the numeric keypad.
INT 61h is the default interrupt; the actual interrupt number can be
  obtained by calling INT 16/AH=FFh
The Zoom interrupt no. can be obtained with function INT 16h,AH=0FFh

SeeAlso: INT 16/AH=FFh“OPTIMA”,INT 61/AX=0000h“OPTIMA”,INT 61/AX=0007h“OPTIMA” ———-610005—————————– INT 61 - Banyan VINES - PRINTER CONTROL

AX = 0005h
DS:DX -> request block

Return: AX = status

    0000h successful
    0001h network software not installed or incompatible

SeeAlso: INT 2F/AX=D702h

Format of request block: Offset Size Description 00h WORD function

	0201h "endspool" all data for a print job has been sent
	0205h "getactive" get currently active printer port

02h WORD number of active port (1-3) 04h WORD ??? (0 for func 0201h, 3 for func 0205h) 06h WORD 0000h ———-610005—————————– INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW

AX = 0005h
BX:CX -> buffer for window parameters (see below)

Note: INT 61h is the default interrupt; the actual interrupt number can be

  obtained by calling INT 16/AH=FFh

SeeAlso: INT 16/AH=FFh“OPTIMA”,INT 61/AX=0000h“OPTIMA”,INT 61/AX=0003h“OPTIMA” SeeAlso: INT 61/AX=0006h“OPTIMA”

Format of window parameters: Offset Size Description 00h WORD X start of zoom window 02h WORD Y start of zoom window 04h WORD X end of zoom window 06h WORD Y end of zoom window 08h WORD current zoom factor 0Ah WORD zoom offset start X 0Ch WORD zoom offset start Y ———-610006—————————– INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM WINDOW

AX = 0006h
BX:CX -> zoom window description (see below)

Notes: width of zoom window must be a multiple of the pixel replication

  factor
INT 61h is the default interrupt; the actual interrupt number can be
  obtained by calling INT 16/AH=FFh

SeeAlso: INT 16/AH=FFh“OPTIMA”,INT 61/AX=0000h“OPTIMA”,INT 61/AX=0001h“OPTIMA” SeeAlso: INT 61/AX=0005h“OPTIMA”,INT 61/AX=0008h“OPTIMA”

Format of zoom window description: Offset Size Description 00h WORD X start of zoom window 02h WORD Y start of zoom window 04h WORD X end of zoom window 06h WORD Y end of zoom window ———-610007—————————– INT 61 - OPTIMA 1024 VGA-Sync - QUERY APPLICATION KEY

AX = 0007h

Return: AX = 0000h/0001h Notes: In specify mode, the END key has been reserved for applications.

Returns the current toggle state of that key. E.g. in the
  OPTIMA AutoCAD driver, 0 means, AutoCAD calls subfunction 0001h
  every time the cross cursor moves.
INT 61h is the default interrupt; the actual interrupt number can be
  obtained by calling INT 16/AH=FFh

SeeAlso: INT 16/AH=FFh“OPTIMA”,INT 61/AX=0000h“OPTIMA”,INT 61/AX=0001h“OPTIMA” SeeAlso: INT 61/AX=0004h“OPTIMA”,INT 7A“AutoCAD” ———-610007BX0002———————– INT 61 - Banyan VINES - GET PORTS FOR A SERVICE

AX = 0007h
BX = 0002h
DS:DX -> StreetTalk service name
DS:DI -> port record block (see below)

Return: AX = status

    0000h successful
    0001h PC network software not installed or incompatible
    03E9h incorrect name syntax
    03EAh organization name too long
    03EBh group name too long
    03ECh item name too long
    03EDh StreetTalk name too long
    03F3h organization not found
    03F4h group not found
    03F5h StreetTalk name not found
    03F8h not a StreetTalk name
    040Dh appropriate StreetTalk name unavailable

Format of port record block: Offset Size Description 00h WORD number of 17-byte elements 02h 17 BYTEs element (byte 00h = input port type, bytes 01h-10h = port)

	(see AX=0001h#"Sosock" for port format)

———-610007BX0004———————– INT 61 - Banyan VINES - SET PORTS FOR A SERVICE

AX = 0007h
BX = 0004h
DS:DX -> StreetTalk name of service
DS:DI -> port record block (see below)

Return: AX = status

    0000h successful
    0001h PC network software not installed or incompatible
    03E9h incorrect name syntax
    03EAh organization name too long
    03EBh group name too long
    03ECh item name too long
    03EDh StreetTalk name too long
    03F3h organization not found
    03F4h group not found
    03F5h StreetTalk name not found
    03F8h not a StreetTalk name
    0409h modify access denied
    040Dh appropriate StreetTalk name unavailable

Format of port record block: Offset Size Description 00h WORD number of 17-byte elements 02h 17 BYTEs element: byte 00h = input port type, 01h-10h = port

	(see AX=0001h#"Sosock" for port format)

———-610007BX0005———————– INT 61 - Banyan VINES - GET USER NAME

AX = 0007h
BX = 0005h
DS:DX -> 64-byte buffer for user's StreetTalk name

Return: AX = status

    0000h successful
    0001h network software not installed or incompatible

Note: if no user logged in, first byte of returned name will be 00h ———-610007BX0006———————– INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING

AX = 0007h
BX = 0006h
SI = error code (>100)
DS:DX -> 80-byte buffer for error text

Return: AX = status

    0000h successful
    0001h network software not installed or incompatible	    

———-610007BX0007———————– INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM

AX = 0007h
BX = 0007h
DS:DX -> NiceName block (see below)

Return: AX = status

    0000h successful
    0001h PC network software not installed or incompatible
    03E9h incorrect name syntax
    03EAh organization name too long
    03EBh group name too long
    03ECh item name too long
    03EDh StreetTalk name too long
    03F3h organization not found
    03F4h group not found
    03F5h StreetTalk name not found
    03F8h not a StreetTalk name
    040Dh appropriate StreetTalk name unavailable

SeeAlso: AX=0007h/BX=0008h

Format of NiceName block: Offset Size Description 00h WORD type of name

	0064h organization
	00C8h group
	012Ch item

02h WORD pointer to ASCIZ input name 04h WORD pointer to 64-byte buffer for output name ———-610007BX0008———————– INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES

AX = 0007h
BX = 0008h
DS:DX -> enumerate block (see below)

Return: AX = status

    0000h successful
    0411h all matching names have been returned
    0412h some groups unavailable, all available matches returned

Note: each program using this call should continue until a nonzero status

  is returned; otherwise, some resources will not be freed for several
  hours

SeeAlso: AX=0007h/BX=0007h

Format of enumerate block: Offset Size Description 00h WORD return code 02h WORD pointer to pattern string 04h WORD enumerate type

	0064h organization
	00C8h group
	012Ch item

06h WORD enumerate class

	0000h unspecified (return all matching items)
	0001h user names
	0002h service names
	0003h list names
	0004h nicknames

08h WORD pointer to category criteria block (see below) or 0 0Ah WORD pointer to array of 64-byte returned names 0Ch WORD number of names returned 0Eh 6 BYTEs reserved for subsequent enumerated calls (set to zeros on first

	  call)

Format of category criteria block: Offset Size Description 00h WORD exclude flag

	0000h return only items with the specified categories
	0001h return all items except those with the given categories

02h WORD number of categories 04h WORD category 1 value 06h WORD category 2 value

	...

Values for common service categories: 0002h file service 0003h print service 0004h mail service 0005h StreetTalk 0006h time service 0008h semaphore service 0009h 3270/SNA service 000Ah asynchronous terminal emulation service 000Ch NETBIOS service 000Dh PC-based service ———-610008—————————– INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM OFFSET

AX = 0008h
BX = X start of zoom offset
CX = Y start of zoom offset

Notes: specifies the first byte of video memory to appear in the zoom window

INT 61h is the default interrupt; the actual interrupt number can be
  obtained by calling INT 16/AH=FFh

SeeAlso: INT 16/AH=FFh“OPTIMA”,INT 61/AX=0000h“OPTIMA”,INT 61/AX=0006h“OPTIMA” ———-610008BX0002———————– INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY

AX = 0008h
BX = 0002h
CX = flags
    bit 0: message will remain on screen until user presses ^X
    bit 1: ring bell after displaying message
    bit 2: blink
DS:DX -> ASCIZ string to display (only first 80 chars used)

Return: AX = status

    0000h successful
    000Bh message display function currently busy
    000Ch message queue full

Note: queues up to three messages to be displayed on the bottom line ———-610008BX0003———————– INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC

AX = 0008h
BX = 0003h
DS:DX -> request block

Return: AX = status

    0000h successful
    0001h network software not installed or incompatible

Notes: message handler should not call BIOS or DOS functions, and should

  either call next handler or simply return
to stop intercepting messages, set prev and next request blocks to
  point at each other

Format of request block: Offset Size Description 00h DWORD pointer to user-written message handler 04h DWORD pointer to next request block (filled in by VINES) 08h DWORD pointer to previous request block (filled in by VINES) 0Ch DWORD pointer to message storage area (filled by VINES) (see below)

Format of message storage area: Offset Size Description 00h 16 BYTEs IPC port of message sender (see AX=0001h#“Sosock”) 10h BYTE message flags 11h WORD reserved 13h BYTE length of message 14h 80 BYTEs message text ———-61000A—————————– INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE

AX = 000Ah

Notes: either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on

  which is loaded second.  The first interface loaded will use AX=0002h

SeeAlso: INT 61/AX=0002h ———-6101——————————- INT 61 - Banyan VINES - CHECK SERVICE

AH = 01h
AL = service ID
    01h communications
    02h primary 3270 emulation
    03h async terminal emulation
    04h file deflection
    07h StreetTalk
    08h environment
    0Ah secondary 3270 emulation
    0Bh semaphore service
    0Ch 3270 emulation active status
    0Dh 3270 keyboard interrupt simulator

Return: AX = status

    0000h installed
    0001h not installed
    0002h invalid ID

———-6102——————————- INT 61 - Banyan VINES - GET REVISION NUMBER

AH = 02h
DS:DX -> 2-byte buffer for result

Return: AX = 0000h installed

    DS:DX buffer contains revision number as
	10000d * major_ver + 100d * minor_ver + patch_revision

———-6105——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 05h
BX = connection handle???

Return: CF clear if successful

    DX:AX = ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

Notes: the installation check consists of testing for the signature “TCPTSR”

  three bytes beyond the start of the interrupt handler
INT 61 is the default; PC/TCP v2.05 may be configured to use any
  interrupt from 20h through E0h

SeeAlso: INT 61“PC/TCP”,INT 61/AH=00h“PC/TCP”,INT 61/AH=06h ———-6106——————————- INT 61 U - PC/TCP kernel v2.05 - GET INTERFACE STATISTICS

AH = 06h
BX = connection handle???
DS:SI -> 38-byte buffer (see below)

Return: CF clear if successful

    buffer filled
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61“PC/TCP”,INT 61/AH=00h“PC/TCP”,INT 61/AH=05h

Format of buffer: Offset Size Description 00h WORD ??? 02h WORD ??? 04h WORD ??? 06h DWORD IP address of interface, high byte first 0Ah DWORD subnet mask 0Eh WORD ??? (apparently always 0001h) 10h DWORD total packets received 14h DWORD total packets sent 18h DWORD receive errors 1Ch DWORD send errors 20h WORD ??? (apparently always 0006h) 22h DWORD pointer to ??? ———-6107——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 07h
BX = connection handle???

Return: CF clear if successful

    AX = ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61“PC/TCP”,INT 61/AH=00h“PC/TCP” ———-6108——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 08h
BX = connection handle???

Return: CF clear if successful

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61“PC/TCP”,INT 61/AH=00h“PC/TCP” ———-6109——————————- INT 61 U - PC/TCP kernel v2.05 - ??? ALL

AH = 09h

Return: CF clear Notes: performs function 08h on every connection handle???

the installation check consists of testing for the signature "TCPTSR"
  three bytes beyond the start of the interrupt handler
INT 61 is the default; PC/TCP v2.05 may be configured to use any
  interrupt from 20h through E0h

SeeAlso: INT 61“PC/TCP”,INT 61/AH=00h“PC/TCP” ———-610C——————————- INT 61 U - PC/TCP kernel v2.05 - GET CONNECTION??? STATISTICS

AH = 0Ch
BX = connection handle???
    FFFCh for kernel ICMP statistics
    FFFDh for kernel UDP statistics
    FFFEh for kernel IP statistics
    FFFFh for kernel TCP statistics
DS:DX -> 64-byte buffer

Return: CF clear if successful

    buffer filled
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61“PC/TCP”,INT 61/AH=00h“PC/TCP”

Format of handle statistics: Offset Size Description 00h 4 BYTEs unused 04h DWORD ??? 08h 8 BYTEs unused 10h DWORD ??? 14h DWORD ??? 18h 12 BYTEs unused 24h DWORD ??? 28h 24 BYTEs unused

Format of kernel TCP statistics: Offset Size Description 00h 16 BYTEs unused 10h DWORD bytes sent 14h DWORD bytes received 18h 8 BYTEs unused 20h DWORD packets sent 24h DWORD packets received 28h DWORD bad checksums 2Ch DWORD protocol errors 30h DWORD timeouts 34h DWORD resets 38h DWORD duplicate packets 3Ch DWORD retransmits

Format of kernel IP statistics: Offset Size Description 00h 8 BYTEs unused 08h DWORD ??? errors 0Ch DWORD ??? errors 10h DWORD ??? 14h DWORD ??? errors 18h DWORD security errors 1Ch DWORD ??? errors 20h DWORD packets sent 24h DWORD packets received 28h DWORD bad checksums 2Ch DWORD protocol errors 30h DWORD timeouts 34h DWORD errors 38h DWORD fragments 3Ch

Format of kernel UDP statistics: Offset Size Description 00h 32 BYTEs unused 20h DWORD packets sent 24h DWORD packets received 28h DWORD bad checksums 2Ch DWORD port not listening errors 30h 4 BYTEs unused 34h DWORD truncated receives 38h 8 BYTEs unused

Format of kernel ICMP statistics: Offset Size Description 00h DWORD “TimeEx” sent 04h DWORD “TimeEx” received 08h DWORD “ParamProb” sent 0Ch DWORD “ParamProb” received 10h DWORD redirects received 14h DWORD source quenches received 18h DWORD ??? 1Ch DWORD ??? 20h DWORD packets sent 24h DWORD packets received 28h DWORD bad packets received 2Ch DWORD “DestUn” received 30h DWORD packet send errors 34h DWORD “DestUn” sent 38h DWORD ??? 3Ch DWORD ??? ———-610D——————————- INT 61 U - PC/TCP kernel v2.05 - CHECK IF CONNECTION HANDLE??? VALID

AH = 0Dh
BX = connection handle???

Return: CF clear if valid

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61“PC/TCP”,INT 61/AH=00h“PC/TCP” ———-610E——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 0Eh
BX = ???
DS:DX -> ???
ES:DI -> ???

Return: CF clear

???

Notes: the installation check consists of testing for the signature “TCPTSR”

  three bytes beyond the start of the interrupt handler
INT 61 is the default; PC/TCP v2.05 may be configured to use any
  interrupt from 20h through E0h

SeeAlso: INT 61“PC/TCP”,INT 61/AH=00h“PC/TCP” ———-610F——————————- INT 61 U - PC/TCP kernel v2.05 - GET VERSION

AH = 0Fh

Return: CF clear

    AX = version (AH = major, AL = minor)
    BX = patch level

SeeAlso: INT 61“PC/TCP”,INT 61/AH=00h“PC/TCP” ———-6110——————————- INT 61 U - PC/TCP kernel v2.05 - UNINSTALL

AH = 10h

Return: CF clear if successful

CF set on error???

SeeAlso: INT 61“PC/TCP”,INT 61/AH=00h“PC/TCP” ———-6111——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 11h

Return: CF clear

AX = ???

Note: clears location whose value is returned in AX and decrements another if

  it is not already zero

SeeAlso: INT 61“PC/TCP”,INT 61/AH=12h ———-6112——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 12h

Return: CF clear

AX = ???

Note: sets location whose value is returned in AX to 0001h and performs other

  actions if another location is nonzero; these two locations are the
  same ones used by AH=11h

SeeAlso: INT 61“PC/TCP”,INT 61/AH=11h ———-6113——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 13h
BX = connection handle??? or FFFFh
DX = subfunction
    0000h ??? (returns error 0016h)
    0001h ???
    0002h ???
    0003h ???
    0004h ???
    0005h ???
DS:SI -> result buffer???

Return: CF clear if successful

    AX = connection handle???
CF set on error
    AX = error code (see INT 61"PC/TCP")

Note: invokes AH=22h if BX=FFFFh on entry; also invokes AH=19h in various

  cases

SeeAlso: INT 61“PC/TCP”,INT 61/AH=00h“PC/TCP”,INT 61/AH=23h ———-6114——————————- INT 61 U - PC/TCP kernel v2.05 - NO LONGER SUPPORTED

AH = 14h
BX = connection handle???

Return: CF set

    AX = 0018h (see INT 61"PC/TCP")

Note: displays error message “Illegal system call! Please upgrade your

  PCserver software" to standard output

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6116——————————- INT 61 U - PC/TCP kernel v2.05 - GET ???

AH = 16h
BX = connection handle???
DS:DX -> 9-byte buffer for ???

Return: CF clear if successful

    ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6117——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 17h

Return: CF clear if successful

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6118——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 18h
BX = connection handle???

Return: CF clear if successful

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6119——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 19h
BX = connection handle???

Return: CF clear if successful

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-611A——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 1Ah
BX = connection handle???
CX = ???
DX = ???
DS:SI -> ???

Return: CF clear if successful

    AX = ???
    DX = ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

Notes: the installation check consists of testing for the signature “TCPTSR”

  three bytes beyond the start of the interrupt handler
INT 61 is the default; PC/TCP v2.05 may be configured to use any
  interrupt from 20h through E0h

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-611B——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 1Bh
BX = connection handle???
CX = ???
DX = ???
DS:SI -> ???
ES:DI -> ???

Return: CF clear if successful

    CX = ???
    DX = ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-611C——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 1Ch
BX = connection handle???
CX = ???
DX = ???
DS:SI -> ???
ES:DI -> ???

Return: CF clear if successful

    AX = ???
    DX = ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-611D——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 1Dh
BX = connection handle???
CX = ???
DX = ???
DS:SI -> ???
ES:DI -> 9-byte buffer containing ???

Return: CF clear if successful

    CX = ???
    DX = ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-611E——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 1Eh
BX = connection handle???

Return: CF clear if successful

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-611F——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 1Fh
BX = connection handle???
CX = ???
DS:SI -> ???
ES:DI -> ???

Return: CF clear if successful

    DS:DX -> ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6120——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 20h
BX = connection handle???
CX = ???
DS:DX -> ???
SI = ???
DI = ???

Return: CF clear if successful

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6121——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 21h
BX = connection handle???
CX = ???
DS:DX -> ???
SI = ???
DI = ???

Return: CF clear if successful

    DS:DX -> ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6122——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 22h
BX = connection handle???

Return: CF clear if successful

    AX = ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6123——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 23h
BX = connection handle??? or FFFFh
DX = subfunction???
DS:SI -> ???

Return: CF clear if successful

    AX = ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“,INT 61/AH=13h ———-6124——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 24h
???

Return: ??? SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6125——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 25h
BX = ???
CX = ???
DX = ???
DS:SI -> ???

Return: CF clear if successful

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6126——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 26h
BX = ???
CX = ???
DX = ???
DS:SI -> ???

Return: CF clear if successful

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6127——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 27h
BX = ???
CX = ???
DX = ???
DS:SI -> ???

Return: CF clear if successful

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6128——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 28h
BX = connection handle???
CX = ???

Return: CF clear if successful

    ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6129——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 29h

Return: CF clear if successful

    AX = ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-612A——————————- INT 61 U - PC/TCP kernel v2.05 - GET CONFIGURATION INFORMATION

AH = 2Ah
DS:SI -> 26-byte buffer for configuration information (see below)

Return: CF clear

AX = 0000h
buffer filled

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“

Format of configuration information: Offset Size Description 00h BYTE maximum TCP connections available 01h BYTE maximum UDP connections available 02h BYTE maximum IP connections available 03h BYTE ??? 04h BYTE number of TCP connections currently in use 05h BYTE number of UDP connections currently in use 06h BYTE number of IP connections currently in use 07h BYTE ??? 08h WORD number of local network descriptors active 0Ah WORD number of global network descriptors active 0Ch BYTE ??? 0Dh BYTE ??? 0Eh WORD ??? 10h WORD ??? 12h DWORD ??? 16h DWORD IP broadcast address ———-612B——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 2Bh
BX = connection handle???
CX = ???
DX = ???
DS:SI -> ???
ES:DI -> ???

Return: CF clear if successful

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6130——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 30h
BX = ???
CX = ???
DX = ???

Return: CF clear if successful

CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-61——————————— INT 61 U - PC/TCP kernel v2.05 - NOP for SLIP kernel

AH = function (31h-33h)

———-6150——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 50h
DS:DX -> 127-byte buffer containing ???

Return: CF clear if successful

    DX:AX -> ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6151——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 51h
CX = size of destination buffer
DS:DX -> 127-byte buffer containing ???
ES:DI -> destination buffer or 0000h:0000h

Return: CF clear if successful

    DX:AX -> ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6152——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 52h
CX = size of destination buffer
DS:DX -> 127-byte buffer containing ???
ES:DI -> destination buffer or 0000h:0000h

Return: CF clear if successful

    DX:AX -> ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6153——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 53h
DS:DX -> 127-byte buffer containing ???

Return: CF clear if successful

    DX:AX -> ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-6154——————————- INT 61 U - PC/TCP kernel v2.05 - ???

AH = 54h
CX = size of destination buffer
DS:DX -> 127-byte buffer containing ???
ES:DI -> destination buffer or 0000h:0000h

Return: CF clear if successful

    DX:AX -> ???
CF set on error
    AX = error code (see INT 61"PC/TCP")

BUG: the SLIP kernel for v2.05 bounds-checks the wrong register, so values

  greater than 54h in AH may crash the system.  Other kernels may have
  this bug as well.

SeeAlso: INT 61”PC/TCP“,INT 61/AH=00h”PC/TCP“ ———-62——————————— INT 62 - reserved for user interrupt ———-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“ ———-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“ ———-620000—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETMODE” - GET CURRENT VIDEO MODE NUMBER

AX = 0000h
ES:BX -> ???

Return: AX = current video mode number Notes: FGDRIVER is the external video driver for the shareware

  Fastgraph/Light by Ted Gruber Software
the installation check consists of testing for the signature "FG" ten
  bytes beyond the start of the interrupt handler

SeeAlso: AX=0001h,AX=0006h ———-620001—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETMODE” - SELECT VIDEO MODE AND INITIALIZE

AX = 0001h
BX = new video mode or FFFFh for current mode
ES:DX -> ???

Notes: video modes are the same as the BIOS video modes except for

	0Bh Hercules graphics 720x348
	0Ch Hercules graphics 320x200
	15h VGA graphics 320x400x256
	16h VGA graphics 320x240x256
	17h VGA graphics 320x480x256
this call resets the active video page to page 0000h, the clipping
  region to the entire screen, text rows to 25, etc.

SeeAlso: AX=0000h,AX=0002h,INT 10/AH=00h ———-620002—————————– INT 62 u - FGDRIVER v1.10 - “FG_TESTMODE” - CHECK IF VIDEO MODE AVAILABLE

AX = 0002h
BX = desired video mode (00h-17h)
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

SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0005h ———-620003—————————– INT 62 u - FGDRIVER v1.10 - “FG_BESTMODE” - GET BEST VIDEO MODE GIVEN RESOLUTN

AX = 0003h
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 SeeAlso: AX=0002h,AX=0004h ———-620004—————————– INT 62 u - FGDRIVER v1.10 - “FG_AUTOMODE” - GET VIDEO MODE WITH MOST FEATURES

AX = 0004h

Return: AX = proposed video mode number Note: FGDRIVER is the external video driver for the shareware

  Fastgraph/Light by Ted Gruber Software

SeeAlso: AX=0002h,AX=0003h,AX=0005h ———-620005—————————– INT 62 u - FGDRIVER v1.10 - “FG_EGACHECK” - GET INFO ABOUT ACTIVE EGA DISPLAY

AX = 0005h

Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA

	without an Enhanced Color Display

SeeAlso: AX=0002h,AX=0003h ———-620006—————————– INT 62 u - FGDRIVER v1.10 - “FG_RESET” - ERASE SCREEN AND RESTORE SCREEN ATTR

AX = 0006h

Notes: this call is ignored in graphics modes

the screen attributes are only restored if ANSI.SYS is loaded

SeeAlso: AX=0000h ———-620007—————————– INT 62 u - FGDRIVER v1.10 - “FG_CURSOR” - SPECIFY WHETHER TEXT CURSR IS VISIBLE

AX = 0007h
BX = new state (0000h invisible, 0001h visible)

Note: this call is ignored in text modes ———-620008—————————– INT 62 - FGDRIVER v1.10 - UNUSED

AX = 0008h to 0009h

Return: AX = 0000h ———-62000A—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETMAXX” - GET MAXIMUM COLUMN IN SCREEN SPACE

AX = 000Ah

Return: AX = maximum X coordinate in screen space

	(or character space if in text mode)

SeeAlso: AX=000Bh,AX=0045h ———-62000B—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETMAXY” - GET MAXIMUM ROW IN SCREEN SPACE

AX = 000Bh

Return: AX = maximum Y coordinate in screen space

	(or character space if in text mode)

SeeAlso: AX=000Ah,AX=0045h ———-62000C—————————– INT 62 u - FGDRIVER v1.10 - “FG_XALPHA” - CONVERT SCREEN COLUMN TO CHAR COLUMN

AX = 000Ch
BX = screen space column

Return: AX = character space column containing specified coordinate SeeAlso: AX=000Dh,AX=000Eh ———-62000D—————————– INT 62 u - FGDRIVER v1.10 - “FG_YALPHA” - CONVERT SCREEN ROW TO CHARACTER ROW

AX = 000Dh
BX = screen space row

Return: AX = character space row containing specified coordinate SeeAlso: AX=000Ch,AX=000Fh ———-62000E—————————– INT 62 u - FGDRIVER v1.10 - “FG_XCONVERT” - CONVERT CHAR COLUMN TO SCREEN COL

AX = 000Eh
BX = character space column

Return: AX = screen space column of leftmost pixel in specified character col SeeAlso: AX=000Ch,AX=000Fh ———-62000F—————————– INT 62 u - FGDRIVER v1.10 - “FG_YCONVERT” - CONVERT CHARACTER ROW TO SCREEN ROW

AX = 000Fh
BX = character space row

Return: AX = screen space row of topmost pixel in specified character row SeeAlso: AX=000Dh,AX=000Eh ———-620010—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETLINES” - GET TEXT ROWS FOR CURR VIDEO MODE

AX = 0010h

Return: AX = number of text rows on screen in current video mode SeeAlso: AX=0011h ———-620011—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETLINES” - SET TEXT ROWS ON SCREEN

AX = 0011h
BX = new screen size (25, 43, 50)

SeeAlso: AX=0010h ———-620012—————————– INT 62 - FGDRIVER v1.10 - UNUSED

AX = 0012h to 0013h

Return: AX = 0000h ———-620014—————————– INT 62 u - FGDRIVER v1.10 - “FG_DEFCOLOR” - ASSIGN COLOR VALUE TO COLOR INDEX

AX = 0014h
BX = color index (0000h-00FFh)
CX = new color value (0 to maximum color value for current video mode)

Note: this call is ignored in text modes and 256-color graphics modes SeeAlso: AX=0015h,AX=0016h,AX=001Dh ———-620015—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETCOLOR” - GET CURRENT TEXT ATTRIBUTE

AX = 0015h

Return: AX = current text attribute or color index (graphics modes) Note: FGDRIVER is the external video driver for the shareware

  Fastgraph/Light by Ted Gruber Software

SeeAlso: AX=0019h,AX=001Ah ———-620016—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETINDEX” - GET COLOR VALUE FOR COLOR INDEX

AX = 0016h
BX = color index (0000h to 00FFh)

Return: AX = color value for specified color index Note: this call returns the value passed to it in text and 256-color

  graphics modes

SeeAlso: AX=0014h,AX=001Ch ———-620017—————————– INT 62 u - FGDRIVER v1.10 - “FG_PALETTE” - SET PALETTE / SET VIDEO DAC REGISTER

AX = 0017h

—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: ignored in text modes and Hercules graphics modes

few EGA/VGA adapters correctly set the foreground color in CGA mode 6

SeeAlso: AX=0018h,AX=001Dh ———-620018—————————– INT 62 u - FGDRIVER v1.10 - “FG_PALETTES” - SET ALL PALETTE REGISTERS

AX = 0018h
ES:BX -> array of 16 WORDs containing values for palette registers
	(or first 16 DAC registers in 256-color modes)

Note: ignored in text modes, CGA and Hercules graphics modes SeeAlso: AX=0017h ———-620019—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETATTR” - SET TEXT-MODE CHARACTER ATTRIBUTE

AX = 0019h
BX = foreground
CX = background
DX = blink (0000h nonblinking, 0001h blink)

Note: this call is ignored in graphics modes SeeAlso: AX=0015h,AX=001Ah,AX=0037h ———-62001A—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETCOLOR” - SET CURRENT COLOR

AX = 001Ah
BX = new color index (or text attribute in text modes)

SeeAlso: AX=0015h,AX=0019h ———-62001B—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETRGB” - SET VIDEO DAC REGISTER CONTENTS

AX = 001Bh
BX = palette or DAC register number
CX = red color component
DX = green component
SI = blue component

Notes: 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=001Ch,AX=00A5h ———-62001C—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETRGB” - GET VIDEO DAC REGISTER CONTENTS

AX = 001Ch
ES:BX -> variable pointer record (see below)
CX = DAC register number

Return: variables updated Note: this call is ignored in text modes and CGA/EGA video modes (since

  they do not use DAC registers)

SeeAlso: AX=001Bh,AX=001Dh,AX=00A4h

Format of variable pointer record: Offset Size Description 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 ———-62001D—————————– INT 62 u - FGDRIVER v1.10 - “FG_MAPRGB” - MAP COLOR COMPONENTS INTO PALETTE VAL

AX = 001Dh
BX = red component
CX = green component
DX = blue component

Return: AX = mode-specific palette value corresponding to specified components Note: only meaningful in 16-color graphics modes SeeAlso: AX=0015h,AX=0017h ———-62001E—————————– INT 62 u - FGDRIVER v1.10 - “FG_ERASE” - CLEAR THE ACTIVE VIDEO PAGE

AX = 001Eh

Note: sets each pixel to 0 in graphics modes, each character cell to a blank

  with a gray foreground attribute in text modes

———-62001F—————————– INT 62 u - FGDRIVER v1.10 - “FG_POINT” - DISPLAY A PIXEL

AX = 001Fh
BX = column
CX = row

Note: this call is ignored in text modes SeeAlso: AX=0020h ———-620020—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETPIXEL” - GET COLOR OF SPECIFIED PIXEL

AX = 0020h
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

SeeAlso: AX=001Fh ———-620021—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETXPOS” - GET GRAPHICS CURSOR COLUMN

AX = 0021h

Return: AX = screen space X coordinate of graphics cursor position SeeAlso: AX=0022h,AX=0023h,AX=0024h ———-620022—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETXPOS” - GET GRAPHICS CURSOR ROW

AX = 0022h

Return: AX = screen space Y coordinate of graphics cursor position SeeAlso: AX=0021h,AX=0023h,AX=0024h ———-620023—————————– INT 62 u - FGDRIVER v1.10 - “FG_MOVE” - SET GRAPHICS CURSOR POSITION

AX = 0023h
BX = new column
CX = new row

Note: this call is ignored in text modes SeeAlso: AX=0021h,AX=0022h,AX=0024h ———-620024—————————– INT 62 u - FGDRIVER v1.10 - “FG_MOVEREL” - ADJUST GRAPHICS CURSOR POSITION

AX = 0024h
BX = column offset
CX = row offset

Note: this call is ignored in text modes SeeAlso: AX=0021h,AX=0022h,AX=0023h ———-620025—————————– INT 62 u - FGDRIVER v1.10 - “FG_DRAW” - DRAW SOLID LINE TO ABSOLUTE POSITION

AX = 0025h
BX = endpoint column
CX = endpoint row

Notes: this call is ignored in text modes

the starting point is the current graphics cursor position; the cursor
  position is updated

SeeAlso: AX=0026h,AX=0027h ———-620026—————————– INT 62 u - FGDRIVER v1.10 - “FG_DRAWREL” - DRAW SOLID LINE TO RELATIVE POSITION

AX = 0026h
BX = endpoint column offset
CX = endpoint row offset

Notes: this call is ignored in text modes

the starting point is the current graphics cursor position; the cursor
  position is updated

SeeAlso: AX=0025h,AX=0028h ———-620027—————————– INT 62 u - FGDRIVER v1.10 - “FG_DASH” - DRAW DASHED LINE TO ABSOLUTE POSITION

AX = 0027h
BX = endpoint column
CX = endpoint row
DX = dash pattern (set bits cause drawn pixels)

Notes: this call is ignored in text modes

the starting point is the current graphics cursor position; the cursor
  position is updated

SeeAlso: AX=0025h,AX=0028h ———-620028—————————– INT 62 u - FGDRIVER v1.10 - “FG_DASHREL” - DRAW DASHED LINE TO RELATVE POSITION

AX = 0028h
BX = endpoint column offset
CX = endpoint row offset
DX = dash pattern (set bits cause drawn pixels)

Notes: this call is ignored in text modes

the starting point is the current graphics cursor position; the cursor
  position is updated

SeeAlso: AX=0026h,AX=0027h ———-620029—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETCLIP” - SET CLIPPING REGION

AX = 0029h
BX = left edge of clipping region
CX = right edge of clipping region
DX = top edge of clipping region
SI = bottom edge of clipping region

SeeAlso: AX=004Ah,AX=004Ch,AX=0052h,AX=0054h ———-62002A—————————– INT 62 u - FGDRIVER v1.10 - “FG_RECT” - DRAW UNFILLED RECTANGLE IN SCREEN SPACE

AX = 002Ah
BX = left edge column
CX = right edge column
DX = top edge row
SI = bottom edge row

SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=00A2h ———-62002B—————————– INT 62 u - FGDRIVER v1.10 - “FG_CLPRECT” - DRAW FILLED RECTANGLE IN SCREEN SPCE

AX = 002Bh
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

Note: this call is ignored in text modes SeeAlso: AX=002Ah,AX=002Ch,AX=00A2h ———-62002C—————————– INT 62 u - FGDRIVER v1.10 - “FG_DRECT” - DRAW DITHERED RECTANGLE IN SCRN SPACE

AX = 002Ch
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)

Note: this call is ignored in text modes SeeAlso: AX=002Bh,AX=00A2h ———-62002D—————————– INT 62 u - FGDRIVER v1.10 - “FG_ELLIPSE” - DRAW UNFILLED ELLIPSE IN SCRN SPACE

AX = 002Dh
BX = horizontal semi-axis length in screen space units
CX = vertical semi-axis length in screen space units

Notes: this call is ignored in text modes

the ellipse is centered at the current graphics cursor position

SeeAlso: AX=002Ah,AX=002Eh,AX=00A2h ———-62002E—————————– INT 62 u - FGDRIVER v1.10 - “FG_POLYGON” - DRAW AN UNFILLED POLYGON

AX = 002Eh
CX = number of vertices in polygon
ES:BX -> variable pointer record (see below)

SeeAlso: AX=002Dh,AX=0030h,AX=00A2h

Format of variable pointer record: Offset Size Description 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 ———-62002F—————————– INT 62 u - FGDRIVER v1.10 - “FG_PAINT” - FLOOD CLOSED REGION WITH COLOR

AX = 002Fh
BX = column
CX = row

Notes: fills an arbitrary closed region around the specified point with the

  current color; the screen edges are not considered region boundaries
ignored in text modes

———-620030—————————– INT 62 u - FGDRIVER v1.10 - “FG_CIRCLE” - DRAW UNFILLED CIRCLE

AX = 0030h
BX = radius in horizontal screen space units (> 0)

Notes: the circle is drawn in screen space, centered at the current graphics

  cursor position
this call is ignored in text modes

SeeAlso: AX=00A2h ———-620031—————————– INT 62 - FGDRIVER v1.10 - UNUSED

AX = 0031h

Return: AX = 0000h ———-620032—————————– INT 62 u - FGDRIVER v1.10 - “FG_TEXT” - DISPLAY STRING OF CHARACTERS

AX = 0032h
CX = length of string
ES:BX -> string

Notes: the string is displayed staring 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=001Ah,AX=0033h,AX=0035h,AX=0036h ———-620033—————————– INT 62 u - FGDRIVER v1.10 - “FG_LOCATE” - SET TEXT-MODE CURSOR POSITION

AX = 0033h
BX = row
CX = column

Note: 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=0034h ———-620034—————————– INT 62 u - FGDRIVER v1.10 - “FG_WHERE” - GET CURRENT CURSOR POSITION

AX = 0034h
ES:BX -> variable pointers (see below)

Return: indicated variables filled with cursor row and column for active

  display

Note: FGDRIVER is the external video driver for the shareware

  Fastgraph/Light by Ted Gruber Software

SeeAlso: AX=0033h

Format of variable pointers: Offset Size Description 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 ———-620035—————————– INT 62 u - FGDRIVER v1.10 - “FG_CHGATTR” - APPLY CURRENT TEXT ATTRIB TO CHARS

AX = 0035h
BX = number of characters to recolor

Notes: 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=0036h ———-620036—————————– INT 62 u - FGDRIVER v1.10 - “FG_CHGTEXT” - DISPLAY STRING AT CURSOR POSITION

AX = 0036h
CX = length of string
ES:BX -> string to be displayed

Return: text cursor updated Note: this call is ignored in graphics modes SeeAlso: AX=0032h,AX=0035h ———-620037—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETATTR” - GET CHARACTER ATTRIB FOR POSITION

AX = 0037h
BX = row
CX = column

Return: AX = character attribute at specified location on active video page Note: this call is ignored in graphics modes SeeAlso: AX=0019h,AX=0038h ———-620038—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETCHAR” - GET CHARACTER FOR SCREEN POSITION

AX = 0038h
BX = row
CX = column

Return: AX = character at specified location on active video page Note: this call is ignored in graphics modes SeeAlso: AX=0037h ———-620039—————————– INT 62 - FGDRIVER v1.10 - UNUSED

AX = 0039h to 003Bh

Return: AX = 0000h ———-62003C—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETPAGE” - GET ACTIVE VIDEO PAGE NUMBER

AX = 003Ch

Return: AX = active video page (0000h-003Fh) SeeAlso: AX=003Dh,AX=003Eh,AX=0040h ———-62003D—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETPAGE” - SET ACTIVE VIDEO PAGE

AX = 003Dh
BX = new video page (0000h to 003Fh)

Note: the specified page must be a physical or virtual page SeeAlso: AX=0001h,AX=003Ch,AX=003Fh,AX=0041h ———-62003E—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETVPAGE” - GET VISIBLE VIDEO PAGE NUMBER

AX = 003Eh

Return: AX = visible video page (0000h-003Fh) SeeAlso: AX=003Ch,AX=003Fh,AX=0040h ———-62003F—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETVPAGE” - SET VISIBLE VIDEO PAGE

AX = 003Fh
BX = new video page (0000h to 003Fh)

Note: the specified page must be a physical or virtual page SeeAlso: AX=0001h,AX=003Dh,AX=003Eh,AX=0041h ———-620040—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETHPAGE” - GET CURRENT HIDDEN VIDEO PAGE NUM

AX = 0040h

Return: AX = current hidden video page number (0000h-003Fh) SeeAlso: AX=003Ch,AX=003Eh,AX=0041h ———-620041—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETHPAGE” - SET HIDDEN VIDEO PAGE

AX = 0041h
BX = new hidden page (0000h to 003Fh)

Note: specified page must be a physical page or a virtual page SeeAlso: AX=003Dh,AX=003Fh,AX=0040h ———-620042—————————– INT 62 u - FGDRIVER v1.10 - “FG_ALLOCATE” - CREATE VIRTUAL VIDEO PAGE

AX = 0042h
BX = page number (0000h-003Fh)

Return: AX = status

    0000h successful
    0001h specified page is a physical or logical page
    0007h virtual page created, but memory control blocks corrupted
    0008h not enough memory

Notes: FGDRIVER is the external video driver for the shareware

  Fastgraph/Light by Ted Gruber Software
the amount of memory required by the virtual video page depends on the
  current video mode

SeeAlso: AX=0043h,AX=009Dh,AX=009Fh ———-620043—————————– INT 62 u - FGDRIVER v1.10 - “FG_FREEPAGE” - FREE VIRTUAL OR LOGICAL VIDEO PAGE

AX = 0043h
BX = page number (0000h-003Fh)

Return: AX = status

    0000h successful
    0001h specified page is a physical page
    0007h virtual page released, but memory control blocks corrupted
    0009h attempt to free a page which was never created

SeeAlso: AX=0042h,AX=009Dh,AX=009Eh,AX=009Fh ———-620044—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETADDR” - GET SEGMENT OF ACTIVE VIDEO PAGE

AX = 0044h

Return: AX = segment of active video page ———-620045—————————– INT 62 u - FGDRIVER v1.10 - “FG_RESIZE” - SET GRAPHICS MODE VIDEO PAGE SIZE

AX = 0045h
BX = new page width in pixels
CX = new page height in pixels

Notes: the visible page must be set to 0000h before making this call

mouse, joysticks, expanded memory, and extended memory must be
  reinitialized after this call

SeeAlso: AX=000Ah,AX=000Bh,AX=0075h,AX=007Ah,AX=00A0h,AX=00A1h ———-620046—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETMAP” - STORE IMAGE AS MODE-INDEPENDNT BITMAP

AX = 0046h
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

Note: this call is ignored in text modes SeeAlso: AX=0047h,AX=0048h ———-620047—————————– INT 62 u - FGDRIVER v1.10 - “FG_DRAWMAP” - DISPLAY MODE-INDEPENDENT BIT MAP

AX = 0047h
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

SeeAlso: AX=0046h,AX=004Ah,AX=004Dh,AX=0052h ———-620048—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETIMAGE” - STORE IMAGE AS BITMAP

AX = 0048h
ES:BX -> buffer for video mode-specific bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows

SeeAlso: AX=0046h,AX=0049h,AX=0062h ———-620049—————————– INT 62 u - FGDRIVER v1.10 - “FG_DRWIMAGE” - DISPLAY BITMAPPED IMAGE

AX = 0049h
ES:BX -> video mode-specific bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows

Note: the image will be drawn with its lower left corner at the current

  cursor position (either text or graphics)	

SeeAlso: AX=0048h,AX=004Ah,AX=0062h ———-62004A—————————– INT 62 u - FGDRIVER v1.10 - “FG_CLPIMAGE” - DISPLAY CLIPPED IMAGE (BITMAP)

AX = 004Ah
ES:BX -> mode-specific bitmap
CX = width of bit map in bytes
DX = height of bit map in pixel rows

Notes: 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=0029h,AX=0047h,AX=0049h,AX=004Ch,AX=0052h ———-62004B—————————– INT 62 u - FGDRIVER v1.10 - “FG_REVIMAGE” - DISPLAY REVERSED IMAGE (BITMAP)

AX = 004Bh
ES:BX -> mode-specific bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows

Notes: this call is ignored in text modes

the image is drawn with its lower left corner at the current graphics
  cursor position

SeeAlso: AX=004Ah,AX=004Ch ———-62004C—————————– INT 62 u - FGDRIVER v1.10 - “FG_FLPIMAGE” - DISPLAY INV CLIPPED IMAGE (BITMAP)

AX = 004Ch
ES:BX -> mode-specific bitmap
CX = width of bit map in bytes
DX = height of bit map in pixel rows

Notes: 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=0029h,AX=004Ah ———-62004D—————————– INT 62 u - FGDRIVER v1.10 - “FG_DISPLAY” - DISPLAY IMAGE (STD PIXEL RUN FORMAT)

AX = 004Dh
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: this call is ignored in text modes

the image is displayed with its lower left corner at the current
  graphics cursor position

SeeAlso: AX=0047h,AX=004Eh,AX=004Fh,AX=0050h,AX=0060h ———-62004E—————————– INT 62 u - FGDRIVER v1.10 - “FG_DISPLAY” - DISPLAY IMAGE (PACKED PIXEL RUN FMT)

AX = 004Eh
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: this call is ignored in text modes

the image is displayed with its lower left corner at the current
  graphics cursor position

SeeAlso: AX=004Dh,AX=004Fh,AX=0050h,AX=0060h ———-62004F—————————– INT 62 u - FGDRIVER v1.10 - “FG_DISPFILE” - DISPLAY STORED IMAGE

AX = 004Fh
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: this call is ignored in text modes

the image is displayed with its lower left corner at the current
  graphics cursor position

SeeAlso: AX=004Dh,AX=004Eh,AX=0050h,AX=0060h ———-620050—————————– INT 62 u - FGDRIVER v1.10 - “FG_PATTERN” - SPECIFY DISPLAY PATTERN FOR COLOR

AX = 0050h
BX = index of pattern to define
CX = number of predefined display pattern

Notes: 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=004Dh,AX=004Eh,AX=004Fh ———-620051—————————– INT 62 u - FGDRIVER v1.10 - “FG_DRAWMASK” - DISPLAY IMAGE (MASKING MAP)

AX = 0051h
ES:BX -> array containing image stores as a masking map (see below)
CX = number of pixel runs in masking map
DX = width of masking map in pixels

Notes: 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=0052h

Format of masking map: Offset Size Description 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 … ———-620052—————————– INT 62 u - FGDRIVER v1.10 - “FG_CLIPMASK” - DISPLAY CLIPPED IMAGE (MASKING MAP)

AX = 0052h
ES:BX -> array containing image stored as a masking map (see AX=0051h)
CX = number of pixel runs in masking map
DX = width of masking map in pixels

Notes: 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=0029h,AX=004Ah,AX=0051h,AX=0053h,AX=0054h ———-620053—————————– INT 62 u - FGDRIVER v1.10 - “FG_REVMASK” - DISPLAY REVERSED IMAGE (MASKING MAP)

AX = 0053h
ES:BX -> array containing image stored as a masking map (see AX=0051h)
CX = number of pixel runs in masking map
DX = width of masking map in pixels

Notes: 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=0052h,AX=0054h ———-620054—————————– INT 62 u - FGDRIVER v1.10 - “FG_FLIPMASK” - DISPLAY INV CLIPPED IMAGE (MASKMAP)

AX = 0054h
ES:BX -> array containing image stored as a masking map (see AX=0051h)
CX = number of pixel runs in masking map
DX = width of masking map in pixels

Notes: 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=0029h,AX=0052h,AX=0053h ———-620055—————————– INT 62 - FGDRIVER v1.10 - UNUSED

AX = 0055h to 0059h

Return: AX = 0000h ———-62005A—————————– INT 62 u - FGDRIVER v1.10 - “FG_SAVE” - COPY REGION FROM VISIBLE TO HIDDEN PAGE

AX = 005Ah
BX = left edge column
CX = right edge column
DX = top edge row
SI = bottom edge row

Note: left and right edges are adjusted to byte boundaries if necessary SeeAlso: AX=005Bh ———-62005B—————————– INT 62 u - FGDRIVER v1.10 - “FG_RESTORE” - COPY REGION FROM HIDDEN TO VIS PAGE

AX = 005Bh
BX = left edge column
CX = right edge column
DX = top edge row
SI = bottom edge row

Note: left and right edges are adjusted to byte boundaries if necessary SeeAlso: AX=005Ah,AX=0064h ———-62005C—————————– INT 62 u - FGDRIVER v1.10 - “FG_TRANSFER” - COPY REGION

AX = 005Ch
CX = source video page
DX = destination video page
ES:BX -> copy record (see below)

Note: source and destination regions must not overlap if on the same page SeeAlso: AX=005Dh,AX=005Fh

Format of copy record: Offset Size Description 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 ———-62005D—————————– INT 62 u - FGDRIVER v1.10 - “FG_TCXFER” - COPY REGION EXCLUDING TRANSPARENT

AX = 005Dh
CX = source video page
DX = destination video page
ES:BX -> copy record (see AX=005Ch)

Notes: pixels which are in any of the colors defined as transparent with

  AX=005Eh are left unchanged in the destination region
source and destination regions must not overlap if on the same page
this call is ignored in text modes

SeeAlso: AX=005Ch,AX=005Eh ———-62005E—————————– INT 62 u - FGDRIVER v1.10 - “FG_TCMASK” - SET TRANSPARENT COLORS

AX = 005Eh
BX = colors to consider transparent (bit 0 = color 0, etc)

Notes: this call is ignored in text modes

the specified colors are considered transparent by AX=005Dh

SeeAlso: AX=005Dh ———-62005F—————————– INT 62 u - FGDRIVER v1.10 - “FG_COPYPAGE” - TRANSFER VIDEO PAGE CONTENTS

AX = 005Fh
BX = source page number (0000h-003Fh)
CX = destination page number (0000h-003Fh)

Note: 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=005Ch,AX=009Dh,AX=009Eh,AX=009Fh ———-620060—————————– INT 62 u - FGDRIVER v1.10 - “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: 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=004Dh,AX=004Eh,AX=004Fh,AX=0061h ———-620061—————————– INT 62 u - FGDRIVER v1.10 - “FG_MAKEPCX” - CREATE PCX FILE FROM SCREEN WINDOW

AX = 0061h
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 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=0060h ———-620062—————————– INT 62 u - FGDRIVER v1.10 - “FG_IMAGESIZ” - DETERMINE IMAGE STORAGE REQUIREMENT

AX = 0062h
BX = image width in pixels
CX = image height in pixels

Return: DX:AX = size in bytes of mode-specific bitmap for current video mode SeeAlso: AX=0048h ———-620063—————————– INT 62 - FGDRIVER v1.10 - UNUSED

AX = 0063h

Return: AX = 0000h ———-620064—————————– INT 62 u - FGDRIVER v1.10 - “FG_FADEIN” - FADE IN HIDDEN PAGE

AX = 0064h
BX = delay (0000h = fastest possible fade-in)

Notes: 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=005Bh,AX=0065h ———-620065—————————– INT 62 u - FGDRIVER v1.10 - “FG_FADEOUT” - FADE OUT TO CURRENT COLOR

AX = 0065h
BX = delay (0000h = fastest possible fade-out)

Notes: this call is ignored in text modes

the current visible page is filled with pixels of the current color in
  small random sections to give a fade-out effect

SeeAlso: AX=0064h ———-620066—————————– INT 62 u - FGDRIVER v1.10 - “FG_PAN” - SET SCREEN ORIGIN

AX = 0066h
BX = new column for screen origin
CX = new row for screen origin

SeeAlso: AX=0067h ———-620067—————————– INT 62 u - FGDRIVER v1.10 - “FG_SCROLL” - VERTICALLY SCROLL SCREEN REGION

AX = 0067h
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: 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=0066h ———-620068—————————– INT 62 - FGDRIVER v1.10 - UNUSED

AX = 0068h to 006Ch

Return: AX = 0000h ———-62006D—————————– INT 62 u - FGDRIVER v1.10 - “FG_WAITKEY” - FLUSH KEYBOARD BUFFER AND AWAIT KEY

AX = 006Dh

Return: after next key pressed SeeAlso: AX=006Eh,AX=006Fh,AX=0096h ———-62006E—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETKEY” - GET NEXT KEYSTROKE

AX = 006Eh
ES:BX -> variable pointer record (see below)

Return: (after next keystroke if no typeahead) variables updated SeeAlso: AX=006Dh,AX=006Fh,AX=0070h

Format of variable pointer record: Offset Size Description 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 ———-62006F—————————– INT 62 u - FGDRIVER v1.10 - “FG_INTKEY” - GET KEYSTROKE, NO WAIT

AX = 006Fh
ES:BX -> variable pointer record (see below)

Return: variables updated Note: if the keyboard buffer is empty, both the ASCII and extended keycodes

  are set to 00h

SeeAlso: AX=006Dh,AX=006Eh,AX=0070h,AX=0079h

Format of variable pointer record: Offset Size Description 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 ———-620070—————————– INT 62 u - FGDRIVER v1.10 - “FG_CAPSLOCK” - GET STATE OF CAPSLOCK KEY

AX = 0070h

Return: AX = CapsLock state (0000h off, 0001h on) SeeAlso: AX=006Eh,AX=006Fh,AX=0071h,AX=0072h,AX=0074h ———-620071—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETCAPS” - SET STATE OF CAPSLOCK KEY

AX = 0071h
BX = new state (0000h off, 0001h on)

SeeAlso: AX=0070h,AX=0073h ———-620072—————————– INT 62 u - FGDRIVER v1.10 - “FG_NUMLOCK” - GET STATE OF NUMLOCK KEY

AX = 0072h

Return: AX = NumLock state (0000h off, 0001h on) SeeAlso: AX=0070h,AX=0074h ———-620073—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETNUM” - SET STATE OF NUMLOCK KEY

AX = 0073h
BX = new state (0000h off, 0001h on)

SeeAlso: AX=0071h,AX=0072h ———-620074—————————– INT 62 u - FGDRIVER v1.10 - “FG_SCRLOCK” - GET STATE OF SCROLL LOCK KEY

AX = 0074h

Return: AX = ScrollLock state (0000h off, 0001h on) SeeAlso: AX=0070h,AX=0072h ———-620075—————————– INT 62 u - FGDRIVER v1.10 - “FG_INITJOY” - INITIALIZE JOYSTICK USE

AX = 0075h
BX = joystick number (0001h or 0002h)

Return: AX = status

    0000h successful
    FFFFh joystick not connected or no game port

Note: Fastgraph assumes that the requested joystick is centered at the time

  this function is called

SeeAlso: AX=0076h,AX=0077h,AX=0078h,AX=0079h ———-620076—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETXJOY” - GET HORIZONTAL POSITION OF JOYSTICK

AX = 0076h
BX = joystick number (0001h or 0002h)

Return: AX = horizontal position of joystick

    FFFFh if joystick uninitialized or not present

Notes: the actual coordinates are processor- and joystick-dependent

you must call AX=0075h before this function

SeeAlso: AX=0075h,AX=0077h,AX=0078h ———-620077—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETYJOY” - GET VERTICAL POSITION OF JOYSTICK

AX = 0077h
BX = joystick number (0001h or 0002h)

Return: AX = vertical position of joystick

    FFFFh if joystick uninitialized or not present

Notes: the actual coordinates are processor- and joystick-dependent

you must call AX=0075h before this function

SeeAlso: AX=0075h,AX=0076h,AX=0078h ———-620078—————————– INT 62 u - FGDRIVER v1.10 - “FG_BUTTON” - GET JOYSTICK BUTTON STATE

AX = 0078h
BX = joystick number (0001h or 0002h)

Return: AX = button states

    bit 0: top button pressed
    bit 1: bottom button pressed

SeeAlso: AX=0075h,AX=0076h,AX=0077h,AX=0079h ———-620079—————————– INT 62 u - FGDRIVER v1.10 - “FG_INTJOY” - GET KEYCODES CORRESP TO JOYSTICK POS

AX = 0079h
CX = joystick number (0001h or 0002h)
ES:BX -> variable pointer record (see below)

Notes: if the indicated joystick has not been initialized with AX=0075h, 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=006Fh,AX=0075h,AX=0078h

Format of variable pointer record: Offset Size Description 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 ———-62007A—————————– INT 62 u - FGDRIVER v1.10 - “FG_MOUSEINI” - INITIALIZE MOUSE SUPPORT

AX = 007Ah

Return: AX = status

    0002h two-button mouse
    0003h three-button mouse
    FFFFh initialization failed

Note: after this call, the mouse cursor is invisible SeeAlso: AX=007Bh,AX=007Ch,AX=007Eh,AX=0080h,INT 33/AX=0000h ———-62007B—————————– INT 62 u - FGDRIVER v1.10 - “FG_MOUSEVIS” - SET MOUSE CURSOR VISIBILITY

AX = 007Bh
BX = new state (0000h invisible, 0001h visible)

SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0001h,INT 33/AX=0002h ———-62007C—————————– INT 62 u - FGDRIVER v1.10 - “FG_MOUSEBUT” - GET MOUSE BUTTON PRESS/RELEASE CNTS

AX = 007Ch
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 below)

Return: variables updated Note: returns the count of presses or releases since the last call to this

  function; if the count is zero, row and col will also be zero

SeeAlso: AX=007Ah,INT 33/AX=0005h,INT 33/AX=0006h

Format of variable pointer record: Offset Size Description 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 ———-62007D—————————– INT 62 u - FGDRIVER v1.10 - “FG_MOUSEPOS” - GET CURRENT MOUSE POSITION

AX = 007Dh
ES:BX -> variable pointer record (see below)

SeeAlso: AX=007Ah,AX=0081h

Format of variable pointer record: Offset Size Description 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 ———-62007E—————————– INT 62 u - FGDRIVER v1.10 - “FG_MOUSECUR” - SPECIFY TEXT-MODE MOUSE CURSOR

AX = 007Eh
BX = screen mask
CX = cursor mask

Note: this call is ignored in graphics modes SeeAlso: AX=007Ah,AX=007Fh,INT 33/AX=000Ah ———-62007F—————————– INT 62 u - FGDRIVER v1.10 - “FG_MOUSEPTR” - SPECIFY GRAPH-MODE MOUSE CURSOR

AX = 007Fh
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

Note: this call is ignored in text modes SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0009h ———-620080—————————– INT 62 u - FGDRIVER v1.10 - “FG_MOUSELIM” - SPECIFY MOUSE CURSOR LIMITS

AX = 0080h
BX = left-most position allowed for mouse cursor
CX = right-most position allowed
DX = top-most position allowed
SI = bottom-most position allowed

SeeAlso: AX=007Ah,AX=0081h,INT 33/AX=0007h,INT 33/AX=0008h ———-620081—————————– INT 62 u - FGDRIVER v1.10 - “FG_MOUSEMOV” - SET MOUSE CURSOR POSITION

AX = 0081h
BX = new column
CX = new row

Note: will not move the mouse cursor outside the bounding box specified with

  AX=0080h

SeeAlso: AX=007Ah,AX=007Dh,AX=0080h,INT 33/AX=0004h ———-620082—————————– INT 62 u - FGDRIVER v1.10 - “FG_MOUSESPD” - SET MOUSE CURSOR SPEED

AX = 0082h
BX = horizontal mickeys per eight pixels of movement (default 16)
CX = vertical mickeys per eight pixels of movement (default 16)

SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah ———-620083—————————– INT 62 - FGDRIVER v1.10 - UNUSED

AX = 0083h to 0087h

Return: AX = 0000h ———-620088—————————– INT 62 u - FGDRIVER v1.10 - “FG_SOUND” - MAKE SOUND FOR SPECIFIED DURATION

AX = 0088h
BX = frequency in Hertz (18-32767)
CX = duration in clock ticks (0000h or negative for continuous sound)

Note: ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in

  progress

SeeAlso: AX=0089h,AX=008Ah,AX=008Eh,AX=0090h ———-620089—————————– INT 62 u - FGDRIVER v1.10 - “FG_SOUNDS” - PLAY SOUNDS IN BACKGROUND

AX = 0089h
CX = number of times to cycle through sound list
ES:BX -> sounds array (see below)

Note: ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in

  progress

SeeAlso: AX=0088h,AX=008Eh,AX=008Fh

Format of sounds array element: Offset Size Description 00h WORD frequency of sound in Hertz (0000h ends array) 02h WORD duration of sound in clock ticks ———-62008A—————————– INT 62 u - FGDRIVER v1.10 - “FG_VOICE” - START SOUND

AX = 008Ah
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)

Notes: FGDRIVER is the external video driver for the shareware

  Fastgraph/Light by Ted Gruber Software
only available on PCjr and Tandy 1000

SeeAlso: AX=0088h,AX=008Bh,AX=008Ch ———-62008B—————————– INT 62 u - FGDRIVER v1.10 - “FG_VOICES” - PLAY SOUNDS IN BACKGROUND

AX = 008Bh
ES:BX -> tone array (see below)
CX = number of times to repeat tone array

Notes: FGDRIVER is the external video driver for the shareware

  Fastgraph/Light by Ted Gruber Software
only available on PCjr and Tandy 1000

SeeAlso: AX=008Ah,AX=008Dh,AX=008Eh,AX=008Fh,AX=0091h

Format of tone array element: Offset Size Description 00h WORD channel number (0000h terminates array) 02h WORD frequency 04h WORD volume 06h WORD duration in 1/72.8 seconds ———-62008C—————————– INT 62 u - FGDRIVER v1.10 - “FG_MUSIC” - PLAY SERIES OF NOTES

AX = 008Ch
ES:BX -> '$'-terminated music string in BASIC PLAY format

Return: after music completed Note: ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in

  progress

SeeAlso: AX=008Ah,AX=008Dh ———-62008D—————————– INT 62 u - FGDRIVER v1.10 - “FG_MUSICB” - PLAY SERIES OF NOTES IN BACKGROUND

AX = 008Dh
CX = number of repetitions (negative = continuous play)
ES:BX -> '$'-terminated music string in BASIC PLAY format

Note: ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in

  progress

SeeAlso: AX=008Bh,AX=008Ch,AX=008Eh,AX=008Fh,AX=0091h ———-62008E—————————– INT 62 u - FGDRIVER v1.10 - “FG_HUSH” - STOP ASYNCHRONOUS SOUND IMMEDIATELY

AX = 008Eh

Note: immediately stops any sounds started with “FG_MUSICB”, “FG_SOUNDS”,

  or AX=008Bh; ignored if no asynchronous sound is playing

SeeAlso: AX=0088h,AX=008Bh,AX=008Fh,AX=0090h,AX=0091h ———-62008F—————————– INT 62 u - FGDRIVER v1.10 - “FG_HUSHNEXT” - STOP ASYNCHRONOUS SOUND

AX = 008Fh

Note: stops any sounds started with “FG_MUSICB”, “FG_SOUNDS”, or AX=008Bh

  after the current repetition completes; ignored unless asynchronous
  sound is continuous

SeeAlso: AX=008Bh,AX=008Eh,AX=0090h ———-620090—————————– INT 62 u - FGDRIVER v1.10 - “FG_QUIET” - STOP CONTINUOUS SYNCHRONOUS SOUND

AX = 0090h

Note: this call has no effect if there is no continuous sound playing SeeAlso: AX=008Eh,AX=008Fh,AX=0091h ———-620091—————————– INT 62 u - FGDRIVER v1.10 - “FG_PLAYING” - DETERMINE WHETHER ASYNC SOUND ACTIVE

AX = 0091h

Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing) SeeAlso: AX=008Bh,AX=008Dh,AX=0090h ———-620092—————————– INT 62 u - FGDRIVER v1.10 - “FG_RESUME” - RESTART ASYNCHRONOUS SOUND

AX = 0092h

SeeAlso: AX=008Eh,AX=008Fh,AX=0090h ———-620093—————————– INT 62 u - FGDRIVER v1.10 - “FG_SUSPEND” - TEMPORARILY STOP ASYNCHRONOUS SOUND

AX = 0093h

Notes: this call has no effect if there is no asynchronous sound in progress

the program must not exit while sound is suspended

SeeAlso: AX=0092h ———-620094—————————– INT 62 - FGDRIVER v1.10 - UNUSED

AX = 0094h to 0095h

Return: AX = 0000h ———-620096—————————– INT 62 u - FGDRIVER v1.10 - “FG_WAITFOR” - DELAY FOR SPECIFIED DURATION

AX = 0096h
BX = duration in clock ticks

Return: after delay elapses SeeAlso: AX=006Dh,AX=0097h ———-620097—————————– INT 62 u - FGDRIVER v1.10 - “FG_STALL” - PAUSE FOR SPECIFIED DURATION

AX = 0097h
BX = duration in processor-dependent delay units (see AX=0098h)

Return: after delay elapses SeeAlso: AX=0096h,AX=0098h ———-620098—————————– INT 62 u - FGDRIVER v1.10 - “FG_MEASURE” - GET DELAY UNITS PER CLOCK TICK

AX = 0098h

Return: AX = delay units per clock tick (processor-dependent) Note: delay units are used by “FG_STALL” (AX=0097h) SeeAlso: AX=0097h ———-620099—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETCLOCK” - GET CLOCK TICKS SINCE MIDNIGHT

AX = 0099h

Return: DX:AX = number of clock ticks since midnight Note: FGDRIVER is the external video driver for the shareware

  Fastgraph/Light by Ted Gruber Software

———-62009A—————————– INT 62 - FGDRIVER v1.10 - UNUSED

AX = 009Ah

Return: AX = 0000h ———-62009B—————————– INT 62 u - FGDRIVER v1.10 - “FG_MEMAVAIL” - QUERY AMOUNT OF FREE MEMORY

AX = 009Bh

Return: DX:AX = number of bytes of conventional memory available SeeAlso: AX=009Dh ———-62009C—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETFUNC” - SET LOGICAL OPERATION FOR VIDEO OPS

AX = 009Ch
BX = operation
    0000h replacement
    0001h AND
    0002h OR
    0003h XOR

Note: only available in native EGA/VGA graphics mode (0Dh to 12h) ———-62009D—————————– INT 62 u - FGDRIVER v1.10 - “FG_ALLOCCMS” - CREATE LOGICAL VIDEO PAGE (CONVMEM)

AX = 009Dh
BX = page number (0001h-003Fh)

Return: AX = status

    0000h successful
    FFFCh insufficient memory
    FFFDh page already created, or exists as physical or virtual page
    FFFEh invalid page number

Note: the only operation which is allowed on logical pages is AX=005Fh SeeAlso: AX=0043h,AX=005Fh,AX=009Bh,AX=009Eh,AX=009Fh ———-62009E—————————– INT 62 u - FGDRIVER v1.10 - “FG_ALLOCEMS” - CREATE LOGICAL VIDEO PAGE (EMS)

AX = 009Eh
BX = page number (0001h-003Fh)

Return: AX = status

    0000h successful
    FFFCh insufficient memory
    FFFDh page already created, or exists as physical or virtual page
    FFFEh invalid page number
    FFFFh memory manager not initialized

Notes: must first call AX=00A0h

the only operation which is allowed on logical pages is AX=005Fh

SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Fh,AX=00A0h ———-62009F—————————– INT 62 u - FGDRIVER v1.10 - “FG_ALLOCXMS” - CREATE LOGICAL VIDEO PAGE (XMS)

AX = 009Fh
BX = page number (0001h-003Fh)

Return: AX = status (see AX=009Eh) Notes: must first call AX=00A1h

the only operation which is allowed on logical pages is AX=005Fh

SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Eh,AX=00A1h ———-6200A0—————————– INT 62 u - FGDRIVER v1.10 - “FG_INITEMS” - INITIALIZE EXPANDED MEMORY USE

AX = 00A0h

Return: AX = status

    0000h successful
    FFFFh expanded memory manager inaccessible or not installed

SeeAlso: AX=009Eh,AX=00A1h ———-6200A1—————————– INT 62 u - FGDRIVER v1.10 - “FG_INITXMS” - INITIALIZE EXTENDED MEMORY USE

AX = 00A1h

Return: AX = status

    0000h successful
    FFFFh extended memory manager inaccessible or not installed

SeeAlso: AX=009Fh,AX=00A0h ———-6200A2—————————– INT 62 u - FGDRIVER v1.10 - “FG_BOX” - DRAW UNFILLED RECTANGLE

AX = 00A2h
BX = left column
CX = right column
DX = top row
SI = bottom row

Notes: FGDRIVER is the external video driver for the shareware

  Fastgraph/Light by Ted Gruber Software
the rectangle is drawn in screen space, respecting the clipping region,
  width edges of the width specified with AX=00A3h (default = 1 is set
  by "FG_SETMODE")
this function has no effect in text modes

SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=0030h,AX=00A3h ———-6200A3—————————– INT 62 u - FGDRIVER v1.10 - “FG_BOXDEPTH” - SET RECTANGLE BORDER WIDTH

AX = 00A3h
BX = width of left and right edges in pixels (> 0)
CX = width of top and bottom edges in pixels (> 0)

SeeAlso: AX=00A2h ———-6200A4—————————– INT 62 u - FGDRIVER v1.10 - “FG_GETDACS” - GET VIDEO DAC CONTENTS

AX = 00A4h
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

Note: the register number wraps back to zero after FFh SeeAlso: AX=001Ch,AX=00A5h ———-6200A5—————————– INT 62 u - FGDRIVER v1.10 - “FG_SETDACS” - SET VIDEO DAC CONTENTS

AX = 00A5h
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 register number wraps back to zero after FFh

this call has no effect in text modes or graphics modes below 11h

SeeAlso: AX=001Bh,AX=00A4h ———-6201——————————- INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE

AH = 01h

Note: Cswitch is a set of multitasking functions by Herb Rose SeeAlso: AH=05h,AH=06h,INT 15/AX=1000h ———-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,AH=04h ———-6203——————————- INT 62 - Cswitch - CHECK SEMAPHORE

AH = 03h
DX = semaphore number (0-63)

Return: AX = FFFFh not owned

     else  owned

SeeAlso: AH=02h,AH=04h ———-6204——————————- INT 62 - Cswitch - TRIGGER SEMAPHORE

AH = 04h
DX = semaphore number (0-63)

Return: AX = FFFFh bad semaphore number

     else  success

SeeAlso: AH=02h,AH=03h ———-6205——————————- INT 62 - Cswitch - SLEEP

AH = 05h
BX = seconds to sleep

SeeAlso: AH=01h,AH=06h,AH=08h”Cswitch“ ———-6206——————————- INT 62 - Cswitch - SUSPEND

AH = 06h

SeeAlso: AH=05h,AH=08h”Cswitch“ ———-6207——————————- INT 62 - Cswitch - SPAWN

AH = 07h
ES:BX -> function address to start executing at
CX = priority (1-10)

Return: AX = 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,AH=10h ———-6208——————————- INT 62 - Cswitch - WAKE UP TASK

AH = 08h
BX = tcb identifier

SeeAlso: AH=05h,AH=06h ———-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“ ———-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 ———-620A——————————- INT 62 - Cswitch - TEST MESSAGE QUEUE

AH = 0Ah
DX = queue number (0-63)

Return: AX = FFFFh bad queue number

   = 0000h nothing on queue
     else  number of bytes in first message in queue

SeeAlso: AH=0Bh,AH=0Ch ———-620B——————————- INT 62 - Cswitch - SEND MESSAGE

AH = 0Bh
CX = number of bytes to write
DS:SI -> buffer
DX = queue number (0-63)

Return: AX = FFFEh triggered by something arriving, redo the call

   = FFFFh bad queue number
   = 0000h no message was on queue
     else  number of bytes in message

SeeAlso: AH=0Ah,AH=0Ch ———-620C——————————- INT 62 - Cswitch - READ MESSAGE

AH = 0Ch
CX = number of bytes to read
DS:SI -> buffer
DX = queue number (0-63)

Return: AX = FFFFh bad queue number

     else  number of bytes transferred

SeeAlso: AH=0Ah,AH=0Bh ———-620D——————————- INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT

AH = 0Dh

SeeAlso: AH=0Eh ———-620E——————————- INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT

AH = 0Eh

SeeAlso: AH=0Dh ———-620F——————————- INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK

AH = 0Fh
ES:BX -> command line
CX = priority (1-10)
DX = background flag
   = != 0000h  allows loading to EMS

Return: AX = 0000h task loader queue is full

   = 0001h  no error

SeeAlso: AH=07h,AH=10h,AH=13h ———-6210——————————- INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM

AH = 10h

SeeAlso: AH=07h,AH=0Fh ———-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 ———-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 ———-6213——————————- INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK

AH = 13h

Return: AX = 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 ———-6247——————————- INT 62 - PC Tools 7 COMMUTE - ???

AH = 47h
AL = subfunction (00h-31h)
???
CF set

Return: ??? ———-6248——————————- INT 62 - PC Tools 7 COMMUTE - ???

AH = 48h
AL = ???
???
CF set

Return: ??? ———-6249——————————- INT 62 - PC Tools 7 COMMUTE - ???

AH = 49h
???
CF set

Return: ??? Note: may be the same as AH=4Ch ———-624A——————————- INT 62 - PC Tools 7 COMMUTE - ???

AH = 4Ah
AL = subfunction (00h-46h)
???
CF set

Return: ??? ———-624B–BX1234———————– INT 62 - PC Tools 7 COMMUTE - ???

AH = 4Bh
BX = 1234h
CX = 1234h
ES = ???
CF set

Return: ??? ———-624C——————————- INT 62 - PC Tools 7 COMMUTE - ???

AH = 4Ch
BL = subfunction
    00h ???
    02h ???

Return: CF clear if successful

CF set on error

———-626262—————————– INT 62 - PC Tools 7 COMMUTE - INSTALLATION CHECK

AX = 6262h
CF set

Return: AX = 0000h

BX = segment of resident code's PSP

———-63——————————— INT 63 - reserved for user interrupt ———-63——————————— INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA Notes: 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“ ———-63——————————— INT 63 - Oracle SQL Protected Mode Executive - ??? ———-63——————————— INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40

 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 ———-63——————————— INT 63 - DESQview/X - ??? Notes: parameters are passed by patching!! data field immediately following

  the entry point, as detailed below
the installation check consists of testing for the string "dvxunix"
  (yes, lowercase) at offset 9 from the interrupt handler start

SeeAlso: INT BE”DESQview“

Format of interrupt handler entry: Offset Size Description 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 below) 09h 7 BYTEs signature “dvxunix”

Format of argument/stack block: Offset Size Description 00h WORD signature F0ADh 02h WORD function number (0000h-002Ah or FFFFh) 04h 4 BYTEs ??? 08h WORD PSP segment to use or 0000h for current PSP 0Ah WORD scratch space (JFT size) 0Ch DWORD scratch space (JFT address) 10h ??? ———-64——————————— INT 64 - reserved for user interrupt ———-64——————————— INT 64 - Adaptec controllers - DRIVE 1 DATA Notes: this vector stores the first four bytes of the parameter table for

  hard disk 1
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“ ———-64——————————— INT 64 - Oracle SQL Protected Mode Executive - ??? ———-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“ ———-64——————————— INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE SeeAlso: INT 65”DG10“,INT 66”DG10“ ———-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???

Notes: Extended Batch Language is a batch-file enhancer by Seaware

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

———-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“ ———-65——————————— INT 65 - reserved for user interrupt ———-65——————————— INT 65 - Adaptec controllers - DRIVE 1 DATA Note: 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“ ———-65——————————— INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE SeeAlso: INT 64”DG10“,INT 66”DG10“ ———-65——————————— INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT ———-65——————————— INT 65 - SD.COM v6.2

 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.

———-65——————————— INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information SeeAlso: INT 64”Pdisk“,INT 66”Pdisk“ ———-65——————————— INT 65 - Ad Lib SOUND.COM - INTERFACE

SI = function number (see separate entries for details on several)
   = 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 below)

Format of signature block: Offset Size Description 00h WORD version number 02h 19 BYTEs “SOUND-DRIVER-AD-LIB” 15h BYTE 01h 16h BYTE 01h 17h BYTE 00h ———-65—-SI0000———————– INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)

SI = 0000h

———-65—-SI0003———————– INT 65 - Ad Lib SOUND.COM - SET STATE

SI = 0003h
ES:BX -> WORD state = 0000h disabled 
		    = 0001h enabled

SeeAlso: SI=0004h ———-65—-SI0004———————– INT 65 - Ad Lib SOUND.COM - GET STATE

SI = 0004h

Return: AX = 0000h all done playing sounds

   = else  still playing sounds

SeeAlso: SI=0003h ———-65—-SI0006———————– INT 65 - Ad Lib SOUND.COM - SET MODE

SI = 0006h
ES:BX -> WORD mode = 0000h melodic
		   = 0001h percussive

SeeAlso: SI=0007h ———-65—-SI0007———————– INT 65 - Ad Lib SOUND.COM - GET MODE

SI = 0007h

Return: AX = 0000h melodic

   = 0001h percussive

SeeAlso: SI=0006h ———-65—-SI000C———————– INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE

SI = 000Ch
ES:BX -> WORD voice = 0000h to 0008h

SeeAlso: SI=000Dh ———-65—-SI000D———————– INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE

SI = 000Dh

Return: AX = voice (0000h to 0008h) SeeAlso: SI=000Ch ———-66——————————— INT 66 - reserved for user interrupt ———-66——————————— INT 66 - Adaptec controllers - DRIVE 1 DATA Note: 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“ ———-66——————————— INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE SeeAlso: INT 64”DG10“ ———-66——————————— INT 66 - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ??? Notes: hooked but not used (IRET) by both redirector and server; called from

  server's INT 28 handler
TurboNET is a NetBIOS-based file redirector and server

SeeAlso: INT 2F/AX=8100h ———-66——————————— INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information SeeAlso: INT 64”Pdisk“,INT 67”Pdisk“ ———-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.

———-6601——————————- INT 66 - BitFax Scheduler - SET MODE???

AH = 01h

SeeAlso: AH=02h ———-6602——————————- INT 66 - BitFax Scheduler - SET MODE???

AH = 02h

SeeAlso: AH=01h ———-6603——————————- INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS

AH = 03h
???

Return: ??? SeeAlso: AH=05h ———-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“ ———-6605——————————- INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX

AH = 05h
BX:CX -> command block (see below)
???

Return: ??? SeeAlso: AH=03h

Format of command block: Offset Size Description 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 00h don't send cover page

	01h 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???

???

———-6606——————————- INT 66 - BitFax Scheduler - SET MODE???

AH = 06h

Return: DX = BitSched version??? (same as AH=04h) SeeAlso: AH=04h ———-660688—————————– INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)

AX = 0688h
???

Return: ??? SeeAlso: AX=0689h ———-660689—————————– INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)

AX = 0689h
???

Return: ??? SeeAlso: AX=0688h ———-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 ———-66FFFBBXFFFB———————– INT 66 - MicroHelp Stay-Res Plus - ???

AX = FFFBh
BX = FFFBh
???

Return: ??? SeeAlso: AX=FFFEh,INT 2D”AMIS“ ———-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“ ———-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“ ———-67——————————— INT 67 - Adaptec controllers - DRIVE 1 DATA Note: 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“ ———-67——————————— INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information SeeAlso: INT 64”Pdisk“,INT 66”Pdisk“ ———-67——————————— INT 67 - Sangoma CCPOP 3270 resident module SeeAlso: INT 61”Sangoma“,INT 68”Sangoma“ ———-67——————————— INT 67 - CUCKOO.COM - INSTALLATION CHECK Notes: 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')
CUCKOO is a resident on-screen clock with optional hourly chime or
  cuckoo by an unknown author with revisions by Thomas A. Lundin

———-6700——————————- INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT

AH = 00h
DS:DX -> ASCIZ semaphore name (max 64 bytes)

Return: AL = status

    00h successful
    01h invalid function
    02h semaphore already locked
    03h unable to lock semaphore
    04h semaphore space exhausted
AH = semaphore owner if status=02h

SeeAlso: AH=01h,AH=02h”PC-NET“,INT 7F/AH=00h ———-6701——————————- INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE

AH = 01h
DS:DX -> ASCIZ semaphore name (max 64 bytes)

Return: AL = status (see AH=00h)

AH = semaphore owner if status=02h

SeeAlso: AH=00h,AH=02h”PC-NET“,INT 7F/AH=01h”Alloy“ ———-6702——————————- INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE

AH = 02h
DS:DX -> ASCIZ semaphore name (max 64 bytes)

Return: AL = status (see AH=00h)

AH = semaphore owner if status=02h

SeeAlso: AH=00h,AH=01h”PC-NET“,INT 7F/AH=02h ———-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

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
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: AH=DDh,AX=5BF0h,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h”QEMM“ SeeAlso: INT 21/AX=4402h”386MAX“,INT 2F/AX=D201h/BX=5145h

Call QEMM entry point with:

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
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
AH = 02h get ???
	Return: CF clear
		AX = segment of ??? data structure
		Data Structure
		Offset	Size	Description
		 00h	BYTE	???
		 01h	WORD	???
		 	???
AH = 03h get QEMM version
	Return: CF clear
		AX = BX = version in BCD
	Notes:	the official docs only state that the version is
		  returned in BX
		MICEMM returns AX=0001h, BX unchanged
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
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
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
AH = 07h get mapping context???
	Return: CF clear
		DX = page table number???
AH = 08h ???
	DX = linear page number
	Return: CF clear
AH = 09h get linear page number for page table entry
	CX = page table index
	Return: CF clear
		DX = linear page number
AH = 0Ah set linear page number for page table entry
	CX = page table index
	DX = linear page number
	Return: CF clear
AH = 0Bh map 4K pages???
	BX = number of pages???
	CX = first page number??? (must be 0100h to allocate HMA)
	DX = EMS handle???
	Return: AH = 00h
AH = 0Ch get available memory
	Return: CF clear
		BX = 0001h
		CX = total 4K pages???
		DX = number of 4K pages free
AH = 0Dh ??? (related to callbacks)
	AL = 00h/01h/02h ???
	Return: CF clear
AH = 0Eh set ??? callbacks
	DS:BX -> FAR routine for ???
	ES:DX -> FAR routine for ???
	Return: CF clear
	Note:	DS:BX callback should return BX=???; ES:DX is called
		  with BX=???, and should set the ??? from which the
		  other handler read the value of BX.  BH and BL
		  appear to be separate values.
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
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
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
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
AX = 1003h get machine status word CR0
	Return: CF clear
		EAX = contents of CR0
	SeeAlso: INT 67/AX=DE07h
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
AX = 1005h free 4K page
	EDX = linear address of page to free
	Return: CF clear
	SeeAlso: INT 67/AX=DE05h
AX = 1006h NOP
	Return: CF set
AX = 1007h get maximum physical memory address
	Return: CF clear
		EDX = physical address of highest 4K memory page
	SeeAlso: INT 67/AX=DE02h
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
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
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.
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
AH = 12h get HIRAM chain
	Return: CF clear
		BX = segment of first MCB in high memory
		    0000h if no high memory
AX = 1300h VIDRAMEGA???
	BL = 00h copy ???
	     nonzero copy ??? (reverse)
	Return: CF clear
		AL = 00h if all pages clean
		   = 01h if any page dirty
AX = 1301h check if ???
	DX:DI = start address of range to check ???
	CX = length of range
	Return: CF clear
		CX = ??? (0000h or 1000h)
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
AX = 1303h ??? EMS allocation
	BX = number of pages of EMS to allocate
	???
	Return: CF clear if successful
		CF set on error
		???
AX = 1304h EMS deallocation
	DX = EMS handle
	Return: CF clear
AX = 1305h ???
	CX = ???
	Return: CF clear
	Note:	disables certain interrupts at the two 8259 PICs during
		  execution (see AX=130Ch)
AX = 1306h set DESQview critical section counter address
	ES:BX -> WORD DESQview critical section counter or 0000h:0000h
	Return: CF clear
	Note:	also sets pointer in low-memory part of QEMM to current
		  value of INT 15 if ES:BX not 0000h:0000h
AX = 1307h ???
	???
	Return: CF clear
	Note:	disables certain interrupts at the two 8259 PICs during
		  execution (see AX=130Ch)
AX = 1308h ???
	BL = ??? (zero/nonzero)
	Return: CF clear
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
AX = 130Ah virtualize EGA/VGA I/O ports 03C8h/03C9h???
	CX:DX -> buffer for storing CRTC register contents???
		or 0000h:0000h to disable
	Return: CF clear
AX = 130Bh ???
	BL = ???
	Return: CF clear
		???
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
AX = 130Dh ???
	???
	Return: CF clear
	Note:	disables certain interrupts at the two 8259 PICs during
		  execution (see AX=130Ch)
AX = 130Eh ??? (modifies CRT controller setup)
	???
	Return: CF clear
AX = 130Fh reset ???
	Return: CF clear
AX = 1310h ???
	???
	Return: CF clear
	Note:	disables certain interrupts at the two 8259 PICs during
		  execution (see AX=130Ch)
AX = 1311h set ???
	BL = ???
	Return: CF clear
AX = 1312h (v6.02) NOP???
	Note:	called by DV 2.42, but appears to be a NOP in QEMM 6.02
AX = 1400h ???
	ES:DI -> ??? data structure (at least 24 bytes)
	BL = ???
	Return: AX = ???
	Data structure
	Offset	Size	Description
	 00h  	WORD	???
	 02h	DWORD	far pointer to ???
	 06h	DWORD	far pointer to ??? pointer array (see below)
	 0Ah	DWORD	far pointer to ???
	 0Eh	DWORD	???
	 12h	WORD	segment of ???
	 14h	DWORD	far pointer to ???
	Pointer array
	Offset	Size	Description
	 00h	WORD	number of pointers to follow
	 02h  N DWORDs	far pointers to ???
	Note: QEMM converts the pointers into linear addresses in place
AX = 1401h ???
	Return: CF clear
		???
AX = 1402h ???
	BL = function
	    00h NOP
	    01h ???
	    02h ???
	    other ???
	ES:DI -> ???
	Return: CF clear
		???
	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	???
AX = 1403h add ??? to 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
AX = 1404h NOP
AX = 1405h remove ??? from ??? list
	BX = key???
	Return: CF clear
AX = 1406h ???
	???
	Return: CF clear
		???
AX = 1407h ???
	???
	Return: CF clear
		???
AX = 1408h ???
	???
	Return: CF clear
		???
AX = 1409h ???
	???
	Return: CF clear
		???
AX = 140Ah ???
	BX = ???
	Return: CF clear
		???
AX = 140Bh ???
	BX = ???
	Return: CF clear
		SI = segment of 256-byte buffer???
AH = 15h ???
	ES:BX -> ??? or 0000h:0000h
	Return: CF clear
   ---QEMM v5.00+ ---
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)
AX = 1601h set memory access status
	ES:DI -> 256-byte buffer containing access statuses (see above)
AH = 17h get memory usage statistics
	ES:DI -> 81-byte buffer for memory statistics (see below)
	Return: CF clear
   ---QEMM v5.11+ ---
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)
AH = 19h NOP
	Return: CF set
AH = 1Ah I/O port access
	AL = subfunction
	    00h get byte from I/O port
		Return: BL = port value
	    01h send byte to I/O port
		BL = value to send
	    02h send byte to I/O port, get byte from following port
		BH = value to send
		Return: BL = value read
	    03h 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 = port number
	Return: CF clear
AH = 1Bh MS Windows 3 support
	AL = subfunction
	    00h get ???
		ES:DI -> buffer for ??? data structure
		Return: CF set on error
			CF clear if successful
		Data structure:
		Offset	Size	Description
		 00h	DWORD	pointer to ???
		 04h	BYTE	??? (v6.00 sets to 01h)
		 05h	BYTE	??? (v6.00 sets to 00h or 0Bh)
		SeeAlso: INT 21/AX=4402h"QEMM"
	    01h ???
		Return: CF set on error
			CF clear if successful
	    02h ???
		Return: CF set on error
			CF clear if successful
	    03h MS Windows initializing
	    	CX = segment from which Windows init broadcast made???
		DL = Windows startup flags???
		DI = Windows version number (major in upper byte)
		Return: ???
		SeeAlso: INT 2F/AX=1605h
	    04h MS Windows terminating
		Return: CF clear
	    05h determine whether program is driver???
		DS:DX -> ASCIZ filename
		Return: CF clear
			AL = 01h if string ends in ".DRV"
			   = FFh if string ends in "GDI.EXE"
			   = 00h otherwise
	    06h ???
		CX = length of data pointed at by DS:DX
		DS:DX -> ???
		Return: CF clear
	    07h BUG: QEMM 6.00-6.03 accept this and branch randomly
	    else Return: CF set
AH = 1Ch protected-mode hardware interrupt handlers ???
	AL = subfunction
	    00h restore??? IRQ0-7 handlers
	    01h set??? IRQ0-7 handlers
		ES:DI -> 8 DWORDs containing ???
	    02h restore??? IRQ8-15 handlers
	    03h set??? IRQ8-15 handlers
		ES:DI -> 8 DWORDs containing ???
	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 v6.00+ ---
AH = 1Dh Stealth interrupts
	AL = subfunction
	    00h switch to pre-Stealth interrupt vector table
	    	Note:	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).
	    01h restore user interrupt vector table
		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
	    else
		Return: CF set
AH = 1Eh Stealth information
	AL = subfunction
	    00h get Stealth configuration
		Return: BL = flags
			    bit 0: conventional memory sorted
			    bit 1: conventional memory filled
			    bit 2: ???
			    bit 3: ???
			    bit 4: expanded memory is in use
			    bit 5: ???
			BH = ??? (always 00h for v6.00)
			CL = stealth type (00h none,46h Frame,4Dh Map)
			CH = ??? (zero/nonzero important)
			DX = ??? (always 0000h for v6.00)
			SI = ??? (always 0000h for v6.00)
			DI = ??? (always 0000h for v6.00)
	    01h get number of Stealth'ed ROMs
		Return: CF clear
			BX = number of Stealth'ed ROMs
	    02h get Stealth'ed ROM info
	    	ES:DI -> buffer for Stealth ROM info (see below)
		Return: CF clear
			BX = number of Stealth'ed ROMs
			ES:DI buffer filled
	    else
		Return: CF set
AH = 1Fh page table manipulation
	AL = subfunction
	    00h get page table entry
		CX = page number
		Return: EDX = page table entry
			CF clear
	    01h set page table entry
		CX = page number
		EDX = page table entry
		Return: CF clear
		SeeAlso: function 1008h
	    else
		Return: CF set
AH = 20h asynchronous disk access support???
	AL = subfunction
	    00h get ???
		Return: CF clear
			BL = flags
			    bit 7: ??? (set if Stealth:F or :M active)
			    bit 0: ???
	    01h set ???
		BL = ??? (bit 0 only)
		Return: CF clear
	    else
		Return: CF set
AH = 21h Stealth support
	AL = subfunction
	    00h 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 (DS:SI < C000h:0000h or
					 DS:SI + ECX > 1M)
	    else
		Return: CF set
---QEMM v6.03 only---
AH = 22h DESQview/X support???
	AL = subfunction
	    00h get ???
	    	Return: CF clear
			ES:DI -> ???
	    01h set ???
	    	ES:DI -> ??? or 0000h:0000h
		Return: ???
other
	Return: CF set

Format of QEMM 6.0 memory statistics: Offset Size Description 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 00h WORD starting segment of ROM 02h WORD length of ROM in paragraphs ———-6740——————————- INT 67 - LIM EMS - GET MANAGER STATUS

AH = 40h

Return: AH = status

    00h successful
    80h internal error
    81h hardware malfunction
    84h undefined function requested by application

Note: this call can be used only after establishing that the EMS driver is in

  fact present

SeeAlso: AH=3Fh,AX=FFA5h ———-6741——————————- INT 67 - LIM EMS - GET PAGE FRAME SEGMENT

AH = 41h

Return: AH = 00h function successful

    BX = segment of page frame
AH = error code (see AH=40h)

SeeAlso: AH=58h,AH=68h ———-6742——————————- INT 67 - LIM EMS - GET NUMBER OF PAGES

AH = 42h

Return: AH = 00h function successful

    BX = number of unallocated pages
    DX = total number of pages
AH = error code (see AH=40h)

SeeAlso: INT 2F/AX=2702h ———-6743——————————- INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY

AH = 43h
BX = number of logical pages to allocate

Return: AH = status

    00h function successful
	DX = handle
    80h internal error
    81h hardware malfunction
    84h undefined function requested
    85h no more handles available
    87h more pages requested than physically exist
    88h more pages requested than currently available
    89h zero pages requested

SeeAlso: AH=45h ———-6744——————————- INT 67 - LIM EMS - MAP MEMORY

AH = 44h
AL = physical page number (0-3)
BX = logical page number
DX = handle

Return: AH = status

    00h function successful
    80h internal error
    81h hardware malfunction
    83h invalid handle
    84h undefined function requested
    8Ah invalid logical page number
    8Bh illegal physical-page number

SeeAlso: AH=69h ———-6745——————————- INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY

AH = 45h
DX = EMM handle

Return: AH = status

    00h successful
    80h internal error
    81h hardware malfunction
    83h invalid handle
    84h undefined function requested
    86h error in save or restore of mapping context

SeeAlso: AH=43h ———-6746——————————- INT 67 - LIM EMS - GET EMM VERSION

AH = 46h

Return: AH = status

    00h successful
	AL = EMM version number
    80h internal error
    81h hardware malfunction
    84h undefined function requested

———-6747——————————- INT 67 - LIM EMS - SAVE MAPPING CONTEXT

AH = 47h
DX = handle

Return: AH = status

    00h successful
    80h internal error
    81h hardware malfunction
    83h invalid handle
    84h undefined function requested
    8Ch page-mapping hardware state save area is full
    8Dh save of mapping context failed

SeeAlso: AH=48h ———-6748——————————- INT 67 - LIM EMS - RESTORE MAPPING CONTEXT

AH = 48h
DX = handle

Return: AH = status

    00h successful
    80h internal error
    81h hardware malfunction
    83h invalid handle
    84h undefined function requested
    8Eh restore of mapping context failed

SeeAlso: AH=47h ———-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 ———-674A——————————- INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY

AH = 4Ah

Note: defined in EMS 3.0, but undocumented in EMS 3.2 ———-674B——————————- INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES

AH = 4Bh

Return: AH = status

    00h successful
	BX = number of EMM handles
    80h internal error
    81h hardware malfunction
    83h invalid handle
    84h undefined function requested

———-674C——————————- INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE

AH = 4Ch
DX = EMM handle

Return: AH = status

    00h successful
	BX = number of logical pages
    80h internal error
    81h hardware malfunction
    83h invalid handle
    84h undefined function requested

SeeAlso: AH=4Dh ———-674D——————————- INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES

AH = 4Dh
ES:DI -> array to receive information

Return: AH = status

    00h successful
	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
    80h internal error
    81h hardware malfunction
    84h undefined function requested

SeeAlso: AH=4Ch ———-674E——————————- INT 67 - LIM EMS - GET OR SET PAGE MAP

AH = 4Eh
AL = 00h if getting mapping registers
     01h if setting mapping registers
     02h if getting and setting mapping registers at once
     03h if getting size of page-mapping array
DS:SI -> array holding information (AL=01/02)
ES:DI -> array to receive information (AL=00/02)

Return: AH = status

    00h successful
	AL = bytes in page-mapping array (AL=03h only)
	array pointed to by ES:DI receives mapping info (AL=00h/02h)
    80h internal error
    81h hardware malfunction
    84h undefined function requested
    8Fh undefined subfunction parameter
    A3h contents of source array corrupted (EMS 4.0?)

Note: this function was designed to be used by multitasking operating systems

  and should not ordinarily be used by appplication software.

SeeAlso: AH=4Fh ———-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 successful
    80h internal error
    81h hardware malfunction
    84h undefined function requested
    8Bh one of specified segments is not mappable
    8Fh undefined subfunction parameter
    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 ———-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 below)

Return: AH = status

    00h successful
    80h internal error
    81h hardware malfunction
    83h invalid handle
    84h undefined function requested
    8Ah one or more logical pages are invalid
    8Bh one or more physical pages are invalid
    8Fh invalid subfunction

SeeAlso: AH=40h

Format of mapping array entry: Offset Size Description 00h WORD logical page number or FFFFh to unmap physical page 02h WORD physical page number or segment address ———-6751——————————- INT 67 - LIM EMS 4.0 - REALLOCATE PAGES

AH = 51h
DX = handle
BX = number of pages to be allocated to handle

Return: BX = actual number of pages allocated to handle

AH = 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

———-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 successful
    80h internal error
    81h hardware malfunction
    83h invalid handle
    84h undefined function requested
    8Fh undefined subfunction
    90h undefined attribute type
    91h feature not supported

SeeAlso: AH=53h ———-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 successful
    80h internal error
    81h hardware malfunction
    83h invalid handle
    84h undefined function requested
    8Fh undefined subfunction
    A1h duplicate handle name

SeeAlso: AH=52h ———-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 below)
    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 successful
    80h internal error
    81h hardware malfunction
    84h undefined function requested
    8Fh undefined subfunction
    A0h no such handle name
    A1h a handle found had no name

Format of handle directory entry: Offset Size Description 00h WORD handle 02h 8 BYTEs handle's name ———-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 successful
    80h internal error
    81h hardware failure
    83h invalid handle
    84h undefined function requested
    8Ah invalid logical page number encountered
    8Bh invalid physical page number encountered
    8Fh invalid subfunction

SeeAlso: AH=56h ———-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 (see AH=55h)

SeeAlso: AH=55h ———-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 below)

Return: AH = 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

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

Format of EMS copy data: Offset Size Description 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 ———-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
    01h get number of entries in m.p.a. array

Return: CX = number of entries in array

AH = status
    00h successful
    80h internal error
    81h hardware failure
    84h undefined function requested
    8Fh undefined subfunction

Note: the returned array for subfunction 00h is filled in physical segment

  address order

Format of mappable physical address entry: Offset Size Description 00h WORD physical page segment 02h WORD physical page number ———-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 below)
    01h get unallocated raw page count
	Return: BX = unallocated raw pages
		DX = total raw pages

Return: AH = status

    00h successful
    80h internal error
    81h hardware failure
    84h undefined function requested
    8Fh undefined subfunction
    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 hardware configuration array: Offset Size Description 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

———-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 successful
    80h internal error
    81h hardware failure
    84h undefined function requested
    85h no more handles available
    87h insufficient memory pages in system
    88h insufficient memory pages available
    8Fh undefined subfunction

———-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 successful
    80h internal error
    81h hardware malfunction
    84h undefined function requested
    8Fh undefined subfunction
    9Ah specified alternate map register set not supported
    9Bh all alternate map register sets currently allocated
    9Ch alternate map register sets not supported
    9Dh undefined or unallocated alternate map register set
    A3h source array corrupted
    A4h operating system denied access

Note: this function is for use by operating systems only, and can be

  enabled or disabled at any time by the operating system

———-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 successful
    80h internal error
    81h hardware malfunction
    84h undefined function requested
    8Fh undefined subfunction
    9Ah specified DMA register set not supported
    9Bh all DMA register sets currently allocated
    9Ch alternate DMA sets not supported
    9Dh undefined or unallocated 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

Note: this function is for use by operating systems only, and can be

  enabled or disabled at any time by the operating system

———-675BE0—————————– INT 67 - MICEMM v4D - GET LINEAR ADDRESS OF MEMORY

AX = 5BE0h
ES:BX -> memory for which to get linear address

Return: AH = 00h

DX:CX = linear address of physical memory corresponding to ES:BX

SeeAlso: AX=5BF0h,AX=5BF1h ———-675BF0—————————– INT 67 - MICEMM v4D - INSTALLATION CHECK

AX = 5BF0h

Return: AH = 00h if MICEMM present

    BX = code segment of driver

Note: MICEMM is the Micronics Expanded Memory Manager SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h ———-675BF1—————————– INT 67 - MICEMM v4D - GET MEMORY TYPES

AX = 5BF1h
ES:BX -> 256-byte buffer for memory types

Return: AH = 00h

ES:BX buffer filled

Note: each byte in the buffer specifies the type of a 4K page of memory:

    00h unused
    02h DOS extension
    04h shadowed ROM
    08h mappable EMS
    10h page frame
    20h ROM
    40h reserved (video memory, etc)
    80h RAM

SeeAlso: AX=5BE0h,AX=5BF0h ———-675C——————————- INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT

AH = 5Ch

Return: AH = status

    00h successful
    80h internal error
    81h hardware malfunction
    84h undefined function requested

———-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
    00h successful
    80h internal error
    81h hardware malfunction
    84h undefined function requested
    8Fh undefined subfunction
    A4h operating system denied access

———-6760——————————- INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY

AH = 60h
ES:DI -> buffer

Return: AH = status

AL = number of entries
buffer at ES:DI filled

———-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.

———-6768——————————- INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM

AH = 68h
ES:DI -> buffer

Return: AH = status

AL = number of entries
buffer at ES:DI filled

Note: equivalent to LIM 4.0 function 58h ———-6769——————————- INT 67 - EEMS - MAP PAGE INTO FRAME

AH = 69h
AL = frame number
BX = page number
DX = handle

Return: AH = status Note: similar to EMS function 44h SeeAlso: AH=44h,AH=50h,AH=6Ah ———-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 Note: similar to EMS function 4Eh, except that a subrange of pages can be

  specified

SeeAlso: AH=69h ———-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 ———-67DE00—————————– INT 67 - Virtual Control Program Interface - INSTALLATION CHECK

AX = DE00h

Return: AH = 00h VCPI is present

    BH = major version number
    BL = minor version number
AH nonzero  VCPI not present

———-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
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 67/AH=3Fh

QEMM v6.03 protected mode entry point may also be called with:

AX = DF00h ???
	???
	Return: ???
AX = DF01h ???
	???
	Return: ???

———-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 ———-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

SeeAlso: AX=DE04h ———-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

SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h ———-67DE05—————————– INT 67 - Virtual Control Program Interface - FREE 4K PAGE

AX = DE05h
EDX = physical address of 4K page

Return: AH = 00h successful

AH nonzero: failed

Note: also available in protected mode by calling the protected-mode VCPI

  entry point

SeeAlso: AH=3Fh,AX=DE04h ———-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 = 00h successful

    EDX = physical address of page
AH nonzero: invalid page number (AH = 8Bh recommended)

———-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 ———-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 ———-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 ———-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 ———-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 ———-67DE0C—————————– INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE

AX = DE0Ch
ESI = linear address in first megabyte of values for system registers
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

SeeAlso: AH=3Fh,INT 15/AH=89h

Note: in protected mode, calling the protected-mode VCPI entry point with

  AX = DE0Ch
  DS = segment selector from function 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.

Format of system register values for switch to protected mode: Offset Size Description 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 ———-67FFA5—————————– INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK

AX = FFA5h

Return: AX = 845Ah if loaded

    BX:CX -> API entry point

Notes: this call is available even if EMM386 is not providing EMS

if no other program has hooked INT 67, an alternate installation
  check is to search for the string
  "MICROSOFT EXPANDED MEMORY MANAGER 386" early in the INT 67
  handler's segment, usually at offset 14h

SeeAlso: AH=3Fh

Call 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)

——————————————— Interrupt List, part 7 of 7 This compilation is Copyright © 1989,1990,1991,1992 Ralf Brown ———-68——————————— INT 68 - Sangoma CCPOP 3270 resident module SeeAlso: INT 67”Sangoma“,INT 92”Sangoma“ ———-6801——————————- INT 68 - APPC/PC - NETWORK DEVICE CONTROL

AH = 01h
DS:DX -> control block

Format of control block: Offset Size Description 00h 12 BYTEs reserved 0Ch WORD verb (action) 0Eh 6 BYTEs 00h 14h DWORD (high byte first) return code (see below) —if verb = 1B00h (DISPLAY)— 18h WORD 00h 1Ah 8 BYTEs (high byte first) logical unit ID 22h 8 BYTEs (high byte first) partner logical unit name 2Ah 8 BYTEs (high byte first) 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

—if verb=2000h (Attach Physical Unit)— 18h WORD 00h 1Ah BYTE version 1Bh BYTE release 1Ch 8 BYTEs (high byte first) net name 24h 8 BYTEs (high byte first) physical unit name 2Ch 8 BYTEs 00h 34h DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors 38h DWORD 00h 3Ch BYTE 00h RETURN_CONTROL: COMPLETE

	01h RETURN_CONTROL: INCOMPLETE

—if verb=2100h (Attach Logical Unit)— 18h WORD 70 offset to partner logical unit record 1Ah 8 BYTEs (high byte first) logical unit name 22h 8 BYTEs (high byte first) 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

  for each partner logical unit:
WORD	length of this partner logical unit record
WORD	42  offset to mode records
    8 BYTEs	(high byte first) partner logical unit name
BYTE	partner logical unit security capabilities
	bit 7: already verified
	bit 6: conversation level security
	bit 5: session level security
BYTE	partner logical unit session limit
WORD	partner logical unit maximum MC_SEND_LL
    8 BYTEs	(high byte first) partner logical unit DLC name
BYTE	partner logical unit adapter number
   17 BYTEs	(counted string) partner logical unit adapter address
WORD	total length of mode records
 for each mode:
WORD	16  length of this mode record
    8 BYTEs	(high byte first) mode name
WORD	RU_SIZE high bound
WORD	RU_SIZE low bound
BYTE	mode maximum negotiable session limit
BYTE	pacing size for receive

—if verb=2200h (Detach Logical Unit)— 18h 8 BYTEs (high byte first) logical unit ID 20h BYTE 00h —if verb=2700h (Detach Physical Unit)— 18h BYTE 00h type: hard

	01h  type: soft

—if verb=2B00h (Activate DLC)— 18h 8 BYTEs (high byte first) DLC name 20h BYTE adapter number

Values for 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

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 00h 12 BYTEs reserved 0Ch WORD 1900h 0Eh 8 BYTEs (high byte first) logical unit ID 16h 8 BYTEs (high byte first) logical unit name 1Eh 8 BYTEs (high byte first) 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

Format of CREATE_TP verb: Offset Size Description 00h 12 BYTEs reserved 0Ch WORD 2300h 0Eh 6 BYTEs 00h 14h DWORD (high byte first) 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

18h 8 BYTEs (high byte first) TP ID 20h 8 BYTEs (high byte first) logical unit ID 28h DWORD (high byte first) 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 (high byte first) partner logical unit name 84h 18 BYTEs (counted string) partner fully qualified logical unit name 96h 8 BYTEs (high byte first) 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

Format of SYSLOG verb: Offset Size Description 00h 12 BYTEs reserved 0Ch WORD 2600h 0Eh 10 BYTEs 00h 18h WORD (high byte first) type 1Ah DWORD (high byte first) subtype 1Eh DWORD pointer to ADDITIONAL_INFO 22h DWORD (high byte first) conversation ID 26h 8 BYTEs (high byte first) TP ID 2Eh 8 BYTEs (high byte first) physical unit or logical unit name 36h WORD length of data 38h DWORD pointer to data 3Ch BYTE 00h ———-6802——————————- INT 68 - APPC/PC - CONNECTION CONTROL

AH = 02h
DS:DX -> control block

Format of control block: Offset Size Description 00h 12 BYTEs reserved 0Ch WORD verb (action) 0Eh BYTE 1 if MC_ (mapped conversation) form of verb

	0 if basic verb

0Fh 5 BYTEs reserved (0) 14h WORD (high byte first) primary return code (see below) 16h DWORD (high byte first) error code (see below) 1Ah 8 BYTEs (high byte first) TP_ID 22h DWORD (high byte first) conversation ID —if verb=0100h (Allocate or MC_Allocate)— 26h BYTE (MC_Allocate only) 0 basic conversation

			   1 mapped conversation

27h BYTE 00h SYNC_LEVEL = none

	01h SYNC_LEVEL = confirm

28h WORD 0000h 2Ah BYTE 00h RETURN_CONTROL: when session allocated

	01h RETURN_CONTROL: immediate
	02h RETURN_CONTROL: when session free

2Bh 8 BYTEs 00h 33h 8 BYTEs (high byte first) partner logical unit name 3Bh 8 BYTEs (high byte first) mode name 43h 65 BYTEs (counted string) TP name 84h BYTE 00h security: none

	01h security: same
	02h security: 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 —if verb=0300h (Confirm or MC_Confirm)— 26h BYTE request to send received (0=no, 1=yes) —if verb=0400h (Confirmed or MC_Confirmed), no additional fields— —if verb=0500h (Deallocate or MC_Deallocate)— 26h BYTE 00h 27h BYTE type 0 SYNC_LEVEL

	     1 FLUSH
	     2 ABEND_PROC
	     3 ABEND_SVC
	     4 ABEND_TIMER
	     5 ABEND

28h WORD (MC_Deallocate only) length of error log data 2Ah DWORD (MC_Deallocate only) pointer to error log data —if verb=0600h (Flush or MC_Flush), no additional fields— —if verb=0700h (Get_Attributes or MC_Get_Attributes)— 26h 8 BYTEs (high byte first) logical unit ID 2Eh BYTE 00h 2Fh BYTE SYNC_LEVEL (0=none, 1=confirm) 30h 8 BYTEs (high byte first) mode name 38h 8 BYTEs (high byte first) own net name 40h 8 BYTEs (high byte first) own logical unit name 48h 8 BYTEs (high byte first) 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 —if verb=0800h (Get_Type)— 26h BYTE type (0=basic conversation, 1=mapped conversation) —if verb=0900h (Post_on_Receipt)— 26h WORD maximum length 28h BYTE fill (0=buffer, 1=LL) —if verb=0A00h (Prepare_to_Receive or MC_Prepare_to_Receive)— 26h BYTE type (0=SYNC_LEVEL, 1=FLUSH) 27h BYTE locks (0=short, 1=long) —if verb=0B00h (Receive_and_Wait or MC_Receive_and_Wait)— 26h BYTE what received

	00h data
	01h data complete
	02h data incomplete
	03h confirm
	04h confirm send
	05h confirm deallocate
	06h send

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 —if verb=0C00h (Receive_Immediate or MC_Receive_Immediate)— 26h BYTE what received

	00h data
	01h data complete
	02h data incomplete
	03h confirm
	04h confirm send
	05h confirm deallocate
	06h send

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 —if verb=0E00h (Request_to_Send or MC_Request_to_Send), no other fields— —if verb=0F00h (Send_Data or MC_Send_Data)— 26h BYTE request to send received (0=no, 1=yes) 27h BYTE 00h 28h WORD data length 2Ah DWORD pointer to data —if verb=1000h (Send_Error or MC_Send_Error)— 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 —if verb=1200h (Test or MC_Test)— 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)

—if verb=1300h (Wait)— 26h BYTE number of conversations to wait on

	Note: error codes have interpretations as for 1200h above

Values for 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

Values for 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 ———-6803——————————- INT 68 - APPC/PC

AH = 03h
DS:DX -> control block (see below)

Format of control block: Offset Size Description 00h 12 BYTEs reserved 0Ch WORD verb (action) 0Eh 6 BYTEs 0 14h DWORD (high byte first) return code (see AH=01h) 18h WORD 0 1Ah 8 BYTEs (high byte first) logical unit ID —if verb=2400h (TP Started), control block continues— 22h 8 BYTEs (high byte first) TP ID —if verb=2800h (Get ALLOCATE), control block continues— 22h BYTE type

	00h dequeue
	01h test

23h DWORD pointer to CREATE_TP record —if verb=2A00h (Change Logical Unit). control block continues— 22h DWORD pointer to CREATE_TP_EXIT routine

	FFFFFFFFh reject incoming ALLOCATEs
	00000000h queue 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 ———-6804——————————- INT 68 - APPC/PC

AH = 04h
DS:DX -> control block (see below)

Format of control block: Offset Size Description 00h 12 BYTEs reserved 0Ch WORD verb (action)

	2500h TP_ENDED
	2900h TP_VALID

0Eh 6 BYTEs 0 14h DWORD (high byte first) return code (see AH=01h) 18h WORD 0 1Ah 8 BYTEs (high byte first) TP_ID 22h DWORD → CREATE_TP record (only if verb = 2900h) ———-6805——————————- INT 68 - APPC/PC - TRANSFER MSG DATA

AH = 05h
DS:DX -> control block (see below)

Format of control block: Offset Size Description 00h 12 BYTEs reserved 0Ch WORD 1C00h 0Eh BYTE 00h user defined

	01h NMVT
	02h alert subvectors
	03h PDSTATS subvectors

0Fh 5 BYTEs 0 14h DWORD (high byte first) return code (see AH=01h) 18h 12 BYTEs 0 24h BYTE if bit 0 clear, add correlation subvector

	if bit 1 clear, add product set ID subvector
	if bit 2 clear, do SYSLOG
	if bit 3 clear, send SSCP_PU_SESSION

25h BYTE 0 26h WORD length of data 28h N BYTEs data ———-6806——————————- INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS

AH = 06h
DS:DX -> control block (see below)

Format of control block: Offset Size Description 00h 12 BYTEs reserved 0Ch WORD 1500h 0Eh 6 BYTEs 0 14h WORD (high byte first) primary return code (see AH=02h) 16h DWORD (high byte first) secondary return code (see below, AH=01h) 1Ah 8 BYTEs (high byte first) logical unit ID 22h 8 BYTEs blanks 2Ah 8 BYTEs (high byte first) partner logical unit name 32h 8 BYTEs (high byte first) 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 0 40h BYTE bit 7: drain target

	bit 6: drain source
	bit 5: target responsible, not source

Values for secondary return code (see also AH=01h):

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 (prim return code = 1)
CNOS mode closed (prim return code = 18h)
0157h bad mode name (prim return code = 1)
CNOS bad mode name (prim 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

———-6807——————————- INT 68 - APPC/PC - PASSTHROUGH

AH = 07h
DS:DX -> control block (format depends on application subsystem)

SeeAlso: AH=FFh ———-68FA——————————- INT 68 - APPC/PC - ENABLE/DISABLE APPC

AH = FAh
AL bit 0 = 0 enable
	   1 disable

———-68FB——————————- INT 68 - APPC/PC - CONVERT

AH = FBh
DS:DX -> control block (see below)

Format of control block: Offset Size Description 00h 12 BYTEs reserved 0Ch WORD 1A00h 0Eh 6 BYTEs 0 14h DWORD (high byte first) 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 ———-68FC——————————- INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING

AH = FCh
AL = 00h disable tracing
   = 01h enable tracing
	DX = number of bytes to keep (0=all)

SeeAlso: AH=FDh ———-68FD——————————- INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING

AH = FDh
AL = 00h disable tracing
     01h enable tracing

SeeAlso: AH=FCh,AH=FEh ———-68FE——————————- INT 68 - APPC/PC - SET TRACE DESTINATION

AH = FEh
AL = trace destinations
    bit 0  storage (DS:DX -> trace stats record)
    bit 1  display
    bit 2  file (trace written to file OUTPUT.PC)
    bit 3  printer

SeeAlso: AH=FDh

Format of Trace Statistics Record: Offset Size Description 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 ———-68FF——————————- INT 68 - APPC/PC - SET PASSTHROUGH

AH = FFh
DS:DX -> passthrough exit routine

SeeAlso: AH=07h ———-69——————————— INT 69 - Zenith AT BIOS - ???

 called by INT 09 handler

———-690100—————————– INT 69 - DECnet DOS CTERM - INSTALLATION CHECK

AX = 0100h

Return: AL = FFh if present SeeAlso: AX=010Fh ———-690101—————————– INT 69 - DECnet DOS CTERM - SEND BYTE

AX = 0101h
BL = character
DX = session handle

Return: AH >= 80h on error SeeAlso: AX=0102h ———-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 ———-690103—————————– INT 69 - DECnet DOS CTERM - STATUS

AX = 0103h
DX = session handle

Return: AH status flags

    bit 7 session has been aborted
	6 DECnet error
	1 trace data available
	0 receive data available
AL = reason code if DECnet error
    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

SeeAlso: AX=0104h ———-690104—————————– INT 69 - DECnet DOS CTERM - DECnet STATUS

AX = 0104h
DX = session handle

Return: AX = reason code (see AX=0103h) Note: use this call when AX=0103h returns a DECnet error SeeAlso: AX=0103h ———-690105—————————– INT 69 - DECnet DOS CTERM - OPEN SESSION

AX = 0105h
DS:BX -> ASCIZ node name
ES:DX -> buffer for session control block (see INT 6A/AH=D0h)

Return: AX ⇐ 0 on error

AX > 0 session handle

SeeAlso: AX=0103h,AX=0106h,AX=010Ah ———-690106—————————– INT 69 - DECnet DOS CTERM - CLOSE SESSION

AX = 0106h
DX = session handle

Return: AH = 00h good close

   other error code (see AX=0103h)

SeeAlso: AX=0103h,AX=0105h ———-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 ———-69010B—————————– INT 69 - DECnet DOS CTERM - GET DECnet SOCKET

AX = 010Bh
DX = session handle

Return: AX > 0 DECnet socket for the session

   = 0	no match for handle

———-69010F—————————– INT 69 - DECnet DOS CTERM - DEINSTALL CTERM

AX = 010Fh

Return: AH = 00h succesful uninstall

   other error code

Note: CTERM must have been the last TSR loaded in order to deinstall it SeeAlso: AX=0100h ———-690A——————————- INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER

AH = 0Ah
AL = 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
ES:BX -> Datalink Communication Block

Return: AX = 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

SeeAlso: INT 6D”DECnet“

Format of Datalink Communication Block Offset Type Description 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 ———-696996—————————– INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER

AX = 6996h
DS:DX -> interrupt handler or 0000h:0000h to disable

Return: AX = 9669h Notes: 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.
the interrupt vector which is to be reflected is set at installation
  time and cannot be changed

———-6A——————————— INT 6A - OPTHELP.COM Notes: OPTHELP is an optionally-resident help system for SLR Systems's OPTASM

  assembler
may be configured to use any interrupt from 60h to 7Fh (default 6Ah)

———-6A——————————— INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM Note: the 3 bytes preceding the interrupt handler are “LAT”; this serves as

  the installation check

———-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 ———-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 ———-6A03–DHFF————————- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS

AH = 03h
DH = FFh
DL = handle

Return: AH = status flags

    bit 5 transmit buffer empty
	3 session in start state
	2 session not active
	1 unable to queue transmit data
	0 receive data available

———-6AD0–DHFF————————- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION

AH = D0h
DH = FFh
AL = FFh no password
   = 0Fh password at ES:DI
ES:BX -> LAT session control block (see below)
ES:DI -> 16-byte blank-padded password

Return: AH = 00h success

    DL = handle

SeeAlso: AX=D000h

Format of LAT Session Control Block: Offset Size Description 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

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 Note: set post routines to 0000h:0000h if polled operation will be used ———-6AD000DHFF————————- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION

AX = D000h
DH = FFh
DL = handle

Return: AX = 0000h successful

   = 0001h no such session
   = 0002h session not running, try again later

SeeAlso: AH=D0h ———-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

———-6AD300DHFF————————- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS

AX = D300h
DH = FFh

SeeAlso: AX=D400h ———-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 = 0000h counters copied into buffer

   = FFFFh buffer too small

SeeAlso: AX=D300h ———-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 ———-6AD600DHFF————————- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET

AX = D600h
DH = FFh

Return: AX = number of service table entries

BX = 0000h service table has not overflowed
   = FFFFh service table has overflowed

SeeAlso: AX=D500h ———-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 Note: also supported by NPC NCSI SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h ———-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 NPC NCSI SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AX=FF02h ———-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: also supported by NPC NCSI SeeAlso: AX=0700h ———-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

Note: also supported by NPC NCSI ———-6B0700—————————– INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS

AX = 0700h

Return: CH <> 00h if connection active Note: also supported by NPC NCSI SeeAlso: AH=02h,AH=10h ———-6B10——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS

AH = 10h
???

Return: ??? SeeAlso: AX=0700h,AH=12h,AH=1Fh ———-6B11——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT

AH = 11h
???

Return: ??? SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h ———-6B12——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS

AH = 12h
???

Return: ??? SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh ———-6B13——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME

AH = 13h
???

Return: ??? SeeAlso: AH=14h,AH=15h ———-6B14——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS

AH = 14h
???

Return: ??? SeeAlso: AH=13h,AH=15h,AH=21h ———-6B15——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG

AH = 15h
???

Return: ??? SeeAlso: AH=13h,AH=14h ———-6B16——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT

AH = 16h
???

Return: ??? SeeAlso: AH=11h,AH=12h,AH=17h ———-6B17——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT

AH = 17h
???

Return: ??? SeeAlso: AH=11h,AH=16h ———-6B18——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT

AH = 18h
???

Return: ??? SeeAlso: AX=0000h,AH=12h,AH=19h ———-6B19——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT

AH = 19h
???

Return: ??? SeeAlso: AX=0100h,AH=12h,AH=18h ———-6B1A——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS

AH = 1Ah
???

Return: ??? SeeAlso: AH=12h,AH=1Bh ———-6B1B——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS

AH = 1Bh
???

Return: ??? SeeAlso: AH=12h,AH=1Ah ———-6B1C——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE BUFFER CONTROL

AH = 1Ch
???

Return: ??? SeeAlso: AH=1Dh,AH=1Eh ———-6B1D——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL

AH = 1Dh
???

Return: ??? SeeAlso: AH=1Ch,AH=1Eh ———-6B1E——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST

AH = 1Eh
???

Return: ??? SeeAlso: AH=1Ch,AH=1Dh ———-6B1F——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS

AH = 1Fh
???

Return: ??? SeeAlso: AH=10h,AH=12h ———-6B21——————————- INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE

AH = 21h
???

Return: ??? SeeAlso: AH=14h ———-6B6B——————————- INT 6B - Tandy SCHOOLMATE PLUS - API

AH = 6Bh
AL = E0h to FFh

———-6B——————————— INT 6B - VIRUS - “Saddam” - ??? SeeAlso: INT 21/AX=FFFFh,INT 61”VIRUS“,INT 70”VIRUS“ ———-6C——————————— INT 6C - system resume vector (CONVERTIBLE) ———-6C——————————— INT 6C - DOS 3.2 Realtime Clock update ———-6C——————————— INT 6C - DECnet DOS network scheduler SeeAlso: INT 6D”DECnet“,INT 6E”DECnet“ ———-6D——————————— INT 6D - VGA - internal Note: used by IBM, Paradise, Video7, and NCR ———-6D——————————— INT 6D - ATI VGA Wonder - VIDEO BIOS ENTRY POINT

 points at the original INT 10 entry point set up by the ATI BIOS

SeeAlso: INT 10 ———-6D——————————— INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM

AH = function
???

Return: ??? SeeAlso: INT 69/AH=0Ah,INT 6C”DECnet“,INT 6E”DECnet“ ———-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

Format of signature area: Offset Size Description -5 BYTE major version number -4 BYTE minor version number -3 3 BYTEs signature (ASCII “DNP”) ———-6F—-BP0012———————– INT 6F - HP ES-12 EXTENDED BIOS - READ CMOS MEMORY

BP = 0012h
AH = 22h
BL = address of CMOS byte to read

Return: AH = status

AL = byte read
BP, DS destroyed

SeeAlso: BP=0012h/AH=24h ———-6F—-BP0012———————– INT 6F - HP ES-12 EXTENDED BIOS - WRITE CMOS MEMORY

BP = 0012h
AH = 24h
BL = address of CMOS byte to write
AL = new value

Return: AH = status

BP, DS destroyed

SeeAlso: BP=0012h/AH=22h ———-6F——————————— INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface) ———-6F00——————————- INT 6F - 10-NET - LOGIN

AH = 00h
DS:DX -> login record (see below)

Return: CL = security level

AX = status
    0000h successful
    01FFh time out on response
    02FFh network (hardware) error
    03FFh invalid password
    04FFh local resource not available
    05FFh server resource not available
    06FFh already logged in under different name
    07FFh login security failure (node)
    08FFh not logged in
    09FFh position calc error
    0AFFh receive subfunction not = send subfunction (i.e. read, write)
    0BFFh request function not in range
    0CFFh no more server file handle entries left
    0DFFh no more shared file table entries left
    0EFFh no more user file handle entries left
    0FFFh chat permit not on
    10FFh not a server on request
    11FFh no transporter board error
    12FFh time out on send
    13FFh item not found (spool item not on queue)
    14FFh DOS access incompatible
    15FFh record already locked
    16FFh invalid parameter
    17FFh record lock time out error
    18FFh currently spooling to named device
    19FFh dropped receive message (throttle)
    1AFFh open sharing violation
    1BFFh no more tuf entries left
    1CFFh not file owner on open
    1DFFh read security not passed
    1EFFh write security not passed
    1FFFh group security not passed
    20FFh security file failure
    21FFh activity file failure
    22FFh spool cntrl file failure
    23FFh device not mounted (spooling)
    24FFh spool file has not been terminated
    25FFh device not mounted or is not being shared
    26FFh duplicate node id
    27FFh file not found error
    28FFh no more files
    29FFh unknown internal system error
    2AFFh print queue is full or corrupted
    2BFFh invalid function
    2CFFh invalid handle
    2DFFh too many files opened
    2EFFh path not found
    2FFFh named file is active

/* I've gotten one submission which says FFxxh, and another with xxFFh */ /* I don't know which way around these should be, does somebody else know? */

    FF01h timeout
    FF02h network error
    FF03h invalid password
    FF04h no local buffer
    FF05h superstation not available
    FF06h node already logged in
    FF07h login not valid from this node
    FF08h node ID already in use
    FF16h invalid parameter (bad length, invalid node ID, etc)
    FF17h record locked by another user
    FF18h sent message has been dropped

SeeAlso: AH=01h

Format of login record: Offset Size Description 00h 8 BYTEs user name 08h 8 BYTEs password 10h 12 BYTEs name of SuperStation ———-6F01——————————- INT 6F - 10-NET - LOGOFF

AH = 01h
DS:DX -> superstation ID or nulls (12 bytes)

Return: CX = number of files closed

AX = status (see AH=00h)
    FF08h superstation ID not already logged in

SeeAlso: AH=00h ———-6F02——————————- INT 6F - 10-NET - STATUS OF NODE

AH = 02h
DS:DX -> 512-byte status record (see below)

Return: CF set on error

    AX = error code (see AH=00h)
CF clear if successful

Format of node status record: Offset Size Description 00h 8 BYTEs user name (0 if none) 08h BYTE station type

	   00h workstation
	   01h superstation
	   02h gateway station
	   03h gateway active
	   04h logged into multiple superstations
	   05h reserved

09h 24 BYTEs list of superstations logged into more than one superstation 21h 12 BYTEs node ID 2Dh WORD message count for this station (send for user node, receive for

	superstations)

—for superstations only— 2Fh WORD drives allocated (bit 0=A:, bit 1=B:,…) 31h BYTE user service flag

	bit 7: gate
	    6: print permit on
	    4: SUBMIT is on
	    3: mail waiting for node
	    2: calendar waiting for you
	    1: news waiting for you
	    0: mail waiting for you

32h BYTE printers allocated (bit 0=LPT1,…) 33h BYTE number of unprinted spool files 34h BYTE number of opened files 35h BYTE number of logged on nodes 36h BYTE primary drive (1=A:) 37h BYTE reserved 38h N BYTEs list of logged on node IDs (each 12 bytes, max 37 IDs) 1F4h 3 BYTEs time: sec/min/hrs 1F7h 3 BYTEs date: day/mon/year-1980 ———-6F03——————————- INT 6F - 10-NET - GET ADDRESS OF CONFIGURATION TABLE

AH = 03h
DS:DI -> node ID (optional)

Return: ES:BX → configuration table SeeAlso: AH=13h

Format of configuration table: Offset Size Description -41 WORD local device table address -39 WORD extended network error mapping table address -37 WORD shared device table address -35 WORD mounted device table address -33 BYTE receive buffer counter -32 BYTE collect buffer counter -31 WORD TUF address -29 BYTE enable flag -28 BYTE FCB keep flag -27 WORD reserved —up to here, 10-Net v3.3— -25 WORD count of dropped Send6F -23 WORD buffer start address -21 WORD comm driver base address -19 WORD send/receive retry count -17 BYTE number of 550ms loops before timeout -16 WORD UFH address -14 WORD CDIR address -12 WORD LTAB address -10 WORD SFH address -8 WORD FTAB address -6 WORD RLTAB address -4 WORD SMI address -2 WORD NTAB address 00h WORD address of first CT_DRV 02h BYTE number of DRV entries 03h 8 BYTEs login name 0Bh 12 BYTEs node ID (blank-padded) 17h 6 BYTEs node address 1Dh BYTE flag 1Eh BYTE CT_CFLG (chat permit)

	bit 1: sound bell
	bit 0: CHAT permit

1Fh BYTE CT_PSFLG

	bit 5: PRINT permit
	bit 4: KB initiated
	bit 3: CHAT called FOXPTRM
	bit 2: SUBMIT active
	bit 1: SUBMIT received
	bit 0: SUBMIT permit

20h BYTE in 10Net flag 21h WORD receive message count 23h WORD send message count 25h WORD retry count 27h WORD failed count 29h WORD driver errors 2Bh WORD dropped responses/CHATs 2Dh 9 BYTEs LIST ID/NTAB address (3 entries–LPT1-3) 36h 6 BYTEs AUX ID/NTAB address (2 entries–COM1-2) 3Ch BYTE active CB channel 3Dh BYTE received 6F messages on queue 3Eh 9 BYTEs activity counters for channels 1-9 —beyond here, 10-Net v3.3— 47h BYTE bit 0 = RS232 gate

	    1 = Send6F gate (user set)

48h DWORD pointer into gate (user set) 4Ch DWORD pointer into 10Net send 50h N WORDs addresses of timer blocks ———-6F04——————————- INT 6F - 10-NET - SEND

AH = 04h
DS:BX -> record
	12 BYTEs receiving node's ID
		if first byte has high-order bit set, message is
		   directed to the CT_RGATE vector at the receiver
		if second byte is 00h, first byte is taken as a CB
		   channel number and delivered to all nodes on same
		   channel
	   WORD	 length of data at DX
DS:DX -> data (max 1024 bytes)

Return: CF set on error

    AX = error code (see AH=00h)
CF clear if successful

SeeAlso: AH=05h ———-6F05——————————- INT 6F - 10-NET - RECEIVE

AH = 05h
CX = number of seconds before timeout
DS:DX -> receive buffer (see below)

Return: CF set on error

    AX = error code (see AH=00h)
CF clear if successful
    AH = FEh if dequeued message is a CB message

SeeAlso: AH=04h

Format of receive buffer: Offset Size Description 00h 12 BYTEs sending node's ID 0Ch WORD length of message 0Eh N BYTEs message (maximum 1024 bytes) ———-6F07——————————- INT 6F - 10-NET - LOCK HANDLE

AH = 07h
BX = file handle
CX:DX = starting offset in file
SI = record length

Return: CF set on error

    AX = error code (see also AH=00h)
	0002h file not found
CF clear if successful

SeeAlso: AH=08h,INT 21/AH=5Ch ———-6F08——————————- INT 6F - 10-NET - UNLOCK HANDLE

AH = 08h
BX = file handle
AL = mode
    00h unlock all
    01h unlock record at CX:DX

Return: CF set on error

    AX = error code (see also AH=00h)
	0002h file not found
CF clear if successful

SeeAlso: AH=07h,INT 21/AH=5Ch ———-6F09——————————- INT 6F - 10-NET - SUBMIT

AH = 09h
DS:BX -> submit record (see below)

Format of submit record: Offset Size Description 00h 12 BYTEs destination node ID (must be logged in) 0Ch WORD length+2 of following 'command line' text 0Eh N BYTEs command line text (⇐100 bytes), system adds CR ———-6F0A——————————- INT 6F - 10-NET - CHAT

AH = 0Ah
DS:BX -> control parameters (see below)
DS:DX -> chat message (see below)

Format of control parameters: Offset Size Description 00h 8 BYTEs sender ID, defaults to node's userID if nulls 08h 8 BYTEs destination user ID, 'EVERYONE' may be used 10h 12 BYTEs destination node ID

Format of chat message: Offset Size Description 00h WORD length+2 of following text 02h N BYTEs text, max 101 bytes ———-6F0B——————————- INT 6F - 10-NET - LOCK SEMAPHORE, RETURN IMMEDIATELY

AH = 0Bh
AL = drive number or 0
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name

Return: AL = status

    00h successful
    01h semaphore currently locked
    02h server not responding
    03h invalid semaphore name
    04h semaphore list is full
    05h invalid drive ID
    06h invalid Ethernet address
    07h not logged in
    08h write to network failed
    09h semaphore already logged in this CPU

Note: same as INT 60/AH=12h SeeAlso: AH=0Ch,INT 60/AH=12h ———-6F0C——————————- INT 6F - 10-NET - UNLOCK SEMAPHORE

AH = 0Ch
AL = drive number or 0
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name

Return: AL = status (see also AH=0Bh)

    01h semaphore not locked

Note: same as INT 60/AH=13h SeeAlso: AH=0Bh,INT 60/AH=13h ———-6F0D——————————- INT 6F - 10-NET - WHO

AH = 0Dh
AL = type code
    01h return superstations only
    02h return non-superstations only
    otherwise return all
CX = length of data
DS:DX -> array of records to be filled (see below)

Return: CL = number of records returned (responding stations)

Format of station record: Offset Size Description 00h 12 BYTEs node ID 0Ch BYTE flags

	bit 1 = workstation
	    2 = superstation
	    3 = xgate
	    4 = active gate

—if AL = 01h— 0Dh BYTE version number

WORD	level number of 10Net software in responding node

—if AL = 02h— 0Dh 8 BYTEs user ID 15h BYTE version number 16h WORD level number ———-6F0E——————————- INT 6F - 10-NET - SPOOL/PRINT

AH = 0Eh
DS:DX -> spool/print record (see below)

Return: CF set on error

    AX = error code (see also AH=00h)
	FF17h device not mounted
	FF18h already spooling to named device
CF clear if successful

Format of Spool/Print record: Offset Size Description 00h WORD operation code

	   00h initiate spool
	   01h abort print
	   02h close spool
	   03h delete spool
	   04h print
	   05h get report info
	   06h set chat template
	   07h queue
	   08h return queue
	   09h queue non-spooled file for printing

02h 11 BYTEs file name in FCB format —if operation code = 00h or 06h— 0Dh BYTE notification

	bit 7: queue to top
	bit 6: do ID page
	bit 5: no form feed
	bit 4: reserved
	bit 3: explicity queuing only
	bit 2: notify at print completion
	bit 1: notify server operator/reply
	bit 0: notify at print start

0Eh BYTE days to keep (FFh=forever) 0Fh BYTE bits 0,1: device (1=LPT1)

	bits 4-7: remote drive to store spool file (1=A,...)

10h WORD length of following data area 12h N BYTEs up to 64 bytes of description —if operation code = 03h— 0Dh 8 BYTEs user ID to associate with filename —if operation code = 04h— 0Dh WORD block number 0Fh 8 BYTEs user ID to associate with filename —if operation code = 05h— 0Dh BYTE RRN to start retrieve 0Eh BYTE bits 0,1: local print device (LPTx)

	bit 3: if set, return entries for all users

0Fh WORD length of following area 11h N BYTEs up to 1500 bytes to receive $SCNTL records returned —if operation code = 07h— 0Dh BYTE queue number 0Eh BYTE bits 0,1: local print device (LPTx) 0Fh WORD number of bytes of test print to be done 11h BYTE code: 01h print device

	      02h test print count
	      03h prn

—if operation code = 08h— 0Dh BYTE queue location or $SCNTL location to start access

		returns next item for access:
			00h-7Fh queued items
			80h-FEh non-queued, non-printed items
			FFh	no more items

0Eh WORD unused 10h WORD length of following area 12h N BYTEs up to 64 bytes to receive $SCNTL records —if operation code = 09h— 0Dh 3 BYTEs unused 10h N BYTEs path to non-spooled file to be queued for printing

Format of $SCNTL record: Offset Size Description 00h 8 BYTEs user ID 08h 11 BYTEs filename in FCB format 13h 6 BYTEs node ID 19h 3 BYTEs creation date 1Ch BYTE flags

	bit 7: queue to top
	    6: do ID page
	    5: no form feed at end
	    4: reserved
	    3: explicit queueing only
	    2: notify at completion
	    1: notify server operator/reply
	    0: notify at start

1Dh BYTE retention time in days 1Eh BYTE printing device (LPTx) 1Fh 3 BYTEs date last printed (0 = never) 22h BYTE device containing spoolfile 23h WORD bytes to print for test print 25h WORD block number to start print 27h BYTE reserved ———-6F10——————————- INT 6F - 10-NET - ATTACH/DETACH PRINTER

AH = 10h
AL = subfunction
    00h initiate spooling if LPT1 is mounted
    01h terminate spooling if LPT1 is mounted

SeeAlso: INT 21/AX=5D08h ———-6F11——————————- INT 6F - 10-NET - LOCK FCB

AH = 11h
AL = mode
    01h sequential
    02h random
    03h random block
	CX = number of records
DS:DX -> FCB (see INT 21/AH=0Fh)

Return: CF set on error

    AX = error code (see also AH=00h)
	0002h file not found
CF clear if successful

SeeAlso: AH=12h ———-6F12——————————- INT 6F - 10-NET - UNLOCK FCB

AH = 12h
AL = mode
    00h sequential
    01h random
    02h random block
	CX = number of records
DS:DX -> FCB (see INT 21/AH=0Fh)

Return: CF set on error

    AX = error code (see also AH=00h)
	0002h file not found
CF clear if successful

SeeAlso: AH=11h ———-6F13——————————- INT 6F - 10-NET v3.3 - GET REMOTE CONFIGURATION TABLE ADDRESS

AH = 13h
DS:DX -> node ID, 12 bytes blank-padded

Return: CF set on error

    AX = error code (see AH=00h)
CF clear if successful
    ES:BX = configuration table address on given machine

SeeAlso: AH=03h ———-6F14——————————- INT 6F - 10-NET v3.3 - GET REMOTE MEMORY

AH = 14h
BX:SI = address of remote memory
CX = length (<=1024 bytes)
DS:DX -> node ID, 12 bytes blank-padded
DS:DI -> area to receive remote memory image

Return: CF set on error

    AX = error code (see AH=00h)
CF clear if successful
    CX = amount of memory copied to DS:SI

———-6F1501—————————– INT 6F - 10-NET v3.3 - GET SHARED DEVICE ENTRY

AX = 1501h
BX = zero-based index
DS:SI -> node ID, 12 bytes blank-padded
ES:DI -> 85-byte buffer for shared device table entry (see below)

Return: CF set on error

    AX = error code (see AH=00h)
CF clear if successful
    ES:DI buffer contains shared device table entry of BXth device:

SeeAlso: AX=1502h,AX=1503h

Format of shared device table entry: Offset Size Description 00h 8 BYTEs device 08h 8 BYTEs alias 10h 64 BYTEs path 50h 8 BYTEs password 58h BYTE access 59h 4 BYTEs mask ———-6F1502—————————– INT 6F - 10-NET v3.3 - SET SHARED DEVICE ENTRY

AX = 1502h
DS:SI -> node ID, 12 bytes blank-padded
ES:DI -> valid shared device table entry

Return: CF set on error

    AX = error code (see AH=00h)
CF clear if successful

SeeAlso: AX=1501h,AX=1503h ———-6F1503—————————– INT 6F - 10-NET v3.3 - DELETE SHARED DEVICE ENTRY

AX = 1503h
BX = zero-based index
DS:SI -> node ID, 12 bytes blank-padded

Return: CF set on error

    AX = error code (see AH=00h)
CF clear if successful

SeeAlso: AX=1501h,AX=1502h ———-6F17——————————- INT 6F - 10-NET v3.3 - MOUNT

AH = 17h
AL = local drive number (0=A:)
BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
DS:DX -> node ID, 12 bytes blank-padded

Return: CF set on error

    AX = error code (see AH=00h)
CF clear if successful

SeeAlso: AH=18h ———-6F18——————————- INT 6F - 10-NET v3.3 - UNMOUNT

AH = 18h
AL = local drive number (0=A:)
BL = type
    00h	    disk
    01h-03h LPTn
    04h,05h COMx

Return: CF set on error

    AX = error code (see AH=00h)
CF clear if successful

SeeAlso: AH=17h ———-70——————————— INT 70 - IRQ8 - CMOS REAL-TIME CLOCK Notes: this interrupt is called when the real-time clock chip generates an

  alarm or periodic interrupt, among others.  The periodic interrupt
  occurs 1024 times per second, although many BIOSes turn it off in
  the INT 70h handler unless in an event wait (see INT 15/AH=83h or
  INT 15/AH=86h).
may be masked by setting bit 0 on I/O port A1h

SeeAlso: INT 08,INT 0F”HP 95LX“,INT 15/AH=01h”Amstrad“,INT 15/AH=83h SeeAlso: INT 15/AH=86h,INT 1A/AH=02h,INT 58”DESQview“ ———-70——————————— INT 70 - VIRUS “Stupid” - ??? SeeAlso: INT 6B”VIRUS“,INT E0”VIRUS“ ———-71——————————— INT 71 - IRQ9 - REDIRECTED TO INT 0A BY BIOS Notes: may be masked by setting bit 1 on I/O port A1h

the default BIOS handler invokes INT 0A for compatibility, since the
  pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
  AT expansion bus.
under DESQview, only the INT 15h vector and BASIC segment address (the
  word at 0000h:0510h) may be assumed to be valid for the handler's
  process

SeeAlso: INT 0A,INT 59 ———-72——————————— INT 72 - IRQ10 - RESERVED Note: may be masked by setting bit 2 on I/O port A1h SeeAlso: INT 5A ———-73——————————— INT 73 - IRQ11 - RESERVED Note: may be masked by setting bit 3 on I/O port A1h SeeAlso: INT 5B ———-74——————————— INT 74 - IRQ12 - POINTING DEVICE (PS) Notes: may be masked by setting bit 4 on I/O port A1h

under DESQview, only the INT 15h vector and BASIC segment address (the
  word at 0000h:0510h) may be assumed to be valid for the handler's
  process

SeeAlso: INT 33,INT 5C ———-75——————————— INT 75 - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)

 redirected to INT 02 by the BIOS, for compatibility with the PC

Notes: may be masked by setting bit 5 on I/O port A1h

not all clones wire the coprocessor to generate this IRQ; some systems
  generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
  (see INT 10"COPROCESSOR")
under DESQview, only the INT 15h vector and BASIC segment address (the
  word at 0000h:0510h) may be assumed to be valid for the handler's
  process

SeeAlso: INT 10”COPROCESSOR“,INT 5D ———-76——————————— INT 76 - IRQ14 - HARD DISK CONTROLLER (AT and later) Note: may be masked by setting bit 6 on I/O port A1h SeeAlso: INT 0E”IRQ6“,INT 5E ———-77——————————— INT 77 - IRQ15 - RESERVED (AT,PS) Note: may be masked by setting bit 7 on I/O port A1h SeeAlso: INT 5F ———-77——————————— INT 77 - IRQ15 - POWER CONSERVATION (Compaq SLT/286) Note: may be masked by setting bit 7 on I/O port A1h SeeAlso: INT 15/AX=4600h,INT 5F ———-78——————————— INT 78 - UofSalford DBOS DOS extender - API

BYTE following INT instruction contains function code
    03h switch to protected mode
    1Eh set real-mode memory size (specify how much real-mode memory
    	  to leave free when running FTN77 programs)
    22h uninstall
???

Return: ??? Note: DBOS supports functions 00h through 50h ———-78——————————— INT 78 - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ0 Note: this vector is overwritten when GO32 starts but is not restored SeeAlso: INT 08,INT 10/AH=FFh”GO32“,INT 79”GO32“ ———-78——————————— INT 78 - AutoCAD 10 ADI for Plotters

AX = function
    0001h initialize comm port and reset plotter
    	BX = ??? (comm port?)
    0002h close plotter
    0003h move (pen up)
    	BX = new X position
	CX = new Y position
    0004h move (pen down)
    	BX = new X position
	CX = new Y position
    0005h select pen
    	BX = pen number
    0006h select drawing speed
    	BX = drawing speed N
    0007h select line style
    	BX = line style N
    0008h return pen to pen carrier??? (called before change-pen cmd)

Return: ??? SeeAlso: INT 7A”AutoCAD“,INT 7B”AutoCAD“ ———-78——————————— INT 78 - ADP-60 IDE controller - ORIGINAL INT 13 SeeAlso: INT 79”ADP-60“ ———-7800——————————- INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT

AH = 00h
DX = interface board I/O port

Return: CF set on error

    AL = error code
	00h illegal command given to SCSI code
	01h invalid I/O port specified (must be from 100H to 3F8H, and
	    must be on an 8-port boundary)
	02h invalid DMA channel specified (must be from 1 to 3)
	03h invalid SCSI board number specified (must be from 0 to 7)
	04h error from data register test during self-test
	05h SCSI input signals not all 0 when SCSI RST activated
	06h SCSI input signals not all 0 before selecting a SCSI device
	07h BSY signal is active; SCSI bus is busy
	08h SCSI board not selected, BSY signal did not come on in
	    response to raising SEL
	09h time-out waiting for status state, signifying end of DMA
	    transfer

Note: if this routine is not called, the port is the driver's default

  (usually 0280h or 0300h)
an installation check is performed by TARGA.DEV upon initialization
  by checking for the string "SCSI" at offset 03h into the interrupt
  handler

SeeAlso: AH=01h,AH=02h ———-7801——————————- INT 78 - TARGA.DEV - GET I/O PORT

AH = 01h

Return: DX = current interface board I/O port SeeAlso: AH=00h,AH=03h”TARGA“ ———-7802——————————- INT 78 - TARGA.DEV - SET DMA CHANNEL

AH = 02h
AL = interface board DMA channel

Return: CF set on error

AL = error code (see AH=00h)

Note: if this routine is not called, the DMA channel is the driver's default

  (usually 3)

SeeAlso: AH=00h,AH=03h”TARGA“ ———-7803——————————- INT 78 - TARGA.DEV - GET DMA CHANNEL

AH = 03h

Return: AL = current interface board DMA channel SeeAlso: AH=01h,AH=02h ———-7804——————————- INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER

AH = 04h
AL = SCSI device number

Return: CF set on error

AL = error code (see AH=00h)

Note: if this routine is not called, the device number used is the driver's

  default (usually 0)

SeeAlso: AH=02h,AH=05h ———-7805——————————- INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER

AH = 05h

Return: AL = current SCSI device number SeeAlso: AH=03h”TARGA“,AH=04h ———-7806——————————- INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE

AH = 06h
AL = 00h clear early return mode
   = 01h set early return mode

Note: if early return mode is set then SCSI will return with no errors

  when the last DMA transfer is started in a call with AH=13h or AH=14h
if this routine is not called, early return mode is cleared

SeeAlso: AH=13h,AH=14h,AH=15h ———-7808——————————- INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST

AH = 08h

Return: CF set on error

AL = error code (see AH=00h)

Note: the SCSI bus is also reset SeeAlso: AH=09h ———-7809——————————- INT 78 - TARGA.DEV - RESET SCSI BUS

AH = 09h

Return: AL = error code if carry set (see AH=00h) SeeAlso: AH=08h ———-7810——————————- INT 78 - TARGA.DEV - SEND SCSI COMMAND

AH = 10h
DS:SI -> command bytes

Return: AH = SCSI status byte

CF clear if successful
    AL = SCSI message byte
CF set on error
    AL = error code (see AH=00h)

SeeAlso: AH=11h,INT 21/AX=4403h”ST-01“

Format of SCSI Command: Offset Size Description 00h BYTE length of command 01h ??? command bytes ———-7811——————————- INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)

AH = 11h
DS:SI -> command bytes
ES:BX -> data storage area
CX = number of data bytes to transfer

Return: AH = SCSI status byte

CF clear if successful
    AL = SCSI message byte
CF set on error
    AL = error code (see AH=00h)

Note: this command receives data internally one byte at a time SeeAlso: AH=10h,AH=13h

Format of SCSI Command: Offset Size Description 00h BYTE length of command 01h ??? command bytes ———-7812——————————- INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)

AH = 12h
DS:SI -> command bytes
ES:BX -> data storage area
CX = number of data bytes to transfer

Return: AH = SCSI status byte

CF clear if successful
    AL = SCSI message byte
CF set on error
    AL = error code (see AH=00h)

Note: this command sends data internally one byte at a time SeeAlso: AH=14h

Format of SCSI Command: Offset Size Description 00h BYTE length of command 01h ??? command bytes ———-7813——————————- INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)

AH = 13h
DS:SI -> command bytes
ES:BX -> data storage area
DX:CX = number of data bytes to transfer

Return: AH = SCSI status byte (if early return mode is clear)

CF clear if successful
    AL = SCSI message byte (if early return mode is clear)
CF set on error
    AL = error code (see AH=00h)

Note: this command receives data using DMA SeeAlso: AH=11h,AH=12h

Format of SCSI Command: Offset Size Description 00h BYTE length of command 01h ??? command bytes ———-7814——————————- INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)

AH = 14h
DS:SI -> command bytes
ES:BX -> data storage area
DX:CX = number of data bytes to transfer

Return: AH = SCSI status byte (if early return mode is clear)

CF clear if successful
    AL = SCSI message byte (if early return mode is clear)
CF set on error
    AL = error code (see AH=00h)

Note: this command sends data using DMA SeeAlso: AH=12h,AH=13h

Format of SCSI Command: Offset Size Description 00h BYTE length of command 01h ??? command bytes ———-7815——————————- INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)

AH = 15h

Return: AH = SCSI status byte

CF clear if successful
    AL = SCSI message byte
CF set on error
    AL = error code (see AH=00h)

Note: if AH=06h was previously called to set the early return mode, this

  function finishes a command AH=13h or AH=14h which returned before
  the last DMA transfer was finished

SeeAlso: AH=06h,AH=13h,AH=14h ———-79——————————— INT 79 - AVATAR.SYS - FAST GET KEYSTROKE Return: CF set if no keystroke available

    AX = FFFFh
CF clear if key pressed
    AX = keystroke

Notes: if a keystroke is available, it is removed from the keyboard buffer

  before being returned
AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
  AVATAR command codes just as ANSI.SYS interprets ANSI commands

SeeAlso: INT 29 ———-79——————————— INT 79 - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ1 Note: this vector is overwritten when GO32 starts but is not restored SeeAlso: INT 09,INT 78”GO32“,INT 7A”GO32“ ———-79——————————— INT 79 U - ADP-60 IDE adapter - ??? SeeAlso: INT 78”ADP-60“ ———-790001—————————– INT 79 U - AutoCAD Device Interface - DIGITIZER - INITIALIZE

AX = 0001h

Return: AX = 0001h ??? self-test result???

BX = 0001h

SeeAlso: AX=0002h,AX=0003h,INT 7A”AutoCAD“ ———-790002—————————– INT 79 U - AutoCAD Device Interface - DIGITIZER - CLOSE

AX = 0002h

SeeAlso: AX=0001h,AX=0003h ———-790003—————————– INT 79 U - AutoCAD Device Interface - DIGITIZER - GET DIGITIZER STATUS

AX = 0003h

Return: AX = button state

    0002h no button pressed
    	BX = X coordinate
	CX = Y coordinate
    0003h Pick button (0,A,B,C,D) pressed
    	BX = X coordinate
	CX = Y coordinate
    0005h other button (1-9) pressed
    	BX = number of button - 1
	CX = X coordinate
	DX = Y coordinate

Note: these return values are valid for the Houston Instruments HiPad Plus

  9236 digitizer with a 16-button cursor

SeeAlso: AX=0001h,AX=0002h ———-7A——————————— INT 7A U - Topware Network Operating System - ???

AL = ???
???

Return: ??? SeeAlso: INT 21/AH=FFh”Topware“,INT 2F/AX=FF00h ———-7A——————————— INT 7A - AutoCAD Device Interface

???

SeeAlso: INT 61/AX=0007h”OPTIMA“,INT 78”AutoCAD“,INT 79/AX=0001h SeeAlso: INT 7B”AutoCAD“ ———-7A——————————— INT 7A - X.PC Packet software interface

      ES:BX -> parameter block

SeeAlso: INT 60/AX=01FFh ———-7A——————————— INT 7A - Novell NetWare - LOW-LEVEL API - Notes Note: this interrupt is used for IPX/SPX access in NetWare versions through

  2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
  entry point even though INT 7A still exists.  For both INT 7A and
  the FAR entry point, BX contains the function number; IPX is
  sometimes called internally with BX bit 15 set.

SeeAlso: INT 2F/AX=7A00h,INT 64”Novell“,INT 7A/BX=0000h ———-7A——————————— INT 7A - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ2 Note: this vector is overwritten when GO32 starts but is not restored SeeAlso: INT 0A,INT 79”GO32“,INT 7B”GO32“ ———-7A—-BX0000———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - OPEN SOCKET

BX = 0000h
AL = mode
    00h open until close or terminate
    FFh open until close
DX = socket number (high byte in DL)
    0000h dynamic allocation
    else  socket to open

Return: AL = return code

    00h success
	DX = socket number
    FEh socket table full
    FFh socket already open

SeeAlso: BX=0001h ———-7A—-BX0001———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - CLOSE SOCKET

BX = 0001h
DX = socket (high byte in DL)

SeeAlso: BX=0000h ———-7A—-BX0002———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET LOCAL TARGET

BX = 0002h
ES:SI -> target internetwork address
ES:DI -> 6-byte buffer for local target

Return: AL = return code

    00h success
       CX = expected one-way transfer time (clock ticks)
       ES:DI -> local target
    FAh unsuccessful

Note: The internetwork address consists of a 4-byte network address followed

  by a 6-byte node address.  The local target is only a 6-byte node
  address.  If the target is in the same network, the local target is
  just the node address of target; otherwise, the local target is the
  node address of the bridge that leads to the target.

SeeAlso: BX=0009h ———-7A—-BX0003———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - SEND PACKET

BX = 0003h
ES:SI -> Event Control Block (see below)

SeeAlso: BX=0004h,BX=000Fh

Format of Event Control Block: Offset Size Description 00h DWORD Link 04h DWORD → Event Service Routine (00000000h if none) 08h BYTE in use flag 09h BYTE completion code 0Ah WORD socket (high byte first [big-endian]) 0Ch 4 BYTES IPX workspace 10h 12 BYTES driver workspace 1Ch 6 BYTES immediate local node address 22h WORD fragment count 26h var fragment descriptors

	Offset	Size	Description
	 00h	DWORD	-> fragment data
	 04h	WORD	size of fragment in bytes.

Notes: ESR is a far procedure that is called when the ECB has been handled.

  On call, the in use flag is zero if the ECB has been handled,
  non-zero otherwise. If the flag is zero, the completion code holds
  the result of the event:
    00h success
    F9h event should not be cancelled
    FCh cancelled
    FDh malformed packet
    FEh packet undeliverable
    FFh physical error
the first fragment should start with an IPX header
all fragments are concatenated and sent in one piece
node address FF FF FF FF FF FF broadcasts to all nodes

Event Service Routine called with:

AL = caller's identity (00h = AES, FFh = IPX)
ES:SI -> event control block
interrupts disabled

Format of IPX header: Offset Size Description 00h WORD checksum (high byte first [big-endian]) 02h WORD length in bytes (high byte first) of total packet 04h BYTE transport control 05h BYTE packet type

	00h unknown packet type
	01h routing information packet
	02h echo packet
	03h error packet
	04h packet exchange packet (always use this one)
	05h SPX packet
	11h (used internally)

06h 10 BYTES destination internetwork address 10h WORD destination socket (high byte first) 12h 10 BYTES source internetwork address 1Ch WORD source socket ———-7A—-BX0004———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR PACKET

BX = 0004h
ES:SI -> Event Control Block (see BX=0003h)

SeeAlso: BX=0003h ———-7A—-BX0005———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - SCHEDULE IPX EVENT

BX = 0005h
AX = delay time
ES:SI -> Event Control Block (see BX=0003h)

SeeAlso: BX=0006h,BX=0007h,BX=0008h ———-7A—-BX0006———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - CANCEL EVENT

BX = 0006h
ES:SI -> Event Control Block (see BX=0003h)

Return: AL = return code

    00h success
    F9h event in use
    FFh unsuccessful, event not in use

SeeAlso: BX=0005h ———-7A—-BX0007———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - SCHEDULE SPECIAL EVENT

BX = 0007h
AX = delay time
ES:SI -> Event Control Block (see BX=0003h)

SeeAlso: BX=0006h ———-7A—-BX0008———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET INTERVAL MARKER

BX = 0008h

Return: AX = interval marker in clock ticks SeeAlso: BX=0005h ———-7A—-BX0009———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET INTERNETWORK ADDRESS

BX = 0009h
ES:SI -> 10-byte buffer

Return: ES:SI → own internetwork address SeeAlso: BX=0002h,BX=000Bh ———-7A—-BX000A———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - RELINQUISH CONTROL

BX = 000Ah

Note: this call permits the IPX driver to do some work SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h ———-7A—-BX000B———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - DISCONNECT FROM TARGET

BX = 000Bh
ES:SI -> internetwork address

Note: only use in point-to-point networks SeeAlso: BX=0002h,BX=0009h ———-7A—-BX000C———————– INT 7A U - Novell NetWare Low-Level API (IPX) Driver - INTERNAL

BX = 000Ch
???

Return: ??? ———-7A—-BX000D———————– INT 7A U - Novell NetWare Low-Level API (IPX) Driver - INTERNAL

BX = 000Dh
???

Return: ??? ———-7A—-BX000E———————– INT 7A U - Novell NetWare Low-Level API (IPX) Driver - INTERNAL

BX = 000Eh
???

Return: ??? ———-7A—-BX000F———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL - SEND PACKET

BX = 000Fh
ES:SI -> Event Control Block (see BX=0003h)

Note: similar to function 0003h, but apparently does not allow multiple

  fragments

SeeAlso: BX=0003h ———-7A—-BX0010———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - SPX INSTALLATION CHECK

BX = 0010h
AL = 00h

Return: AL = FFh if SPX loaded SeeAlso: BX=0015h ———-7A—-BX0011———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - ESTABLISH SPX CONNECTION

BX = 0011h
AL = retry count
AH = watchdog flag
ES:SI -> Event Control Block (see BX=0003h)

Return: DX = assigned connection number Notes: there should always be at least two SPX ECB's listening to a socket, so

  that NetWare can perform its internal packet exchanges
The first fragment should start with a SPX header.  Fill in all
  destination addresses.

SeeAlso: BX=0000h,BX=0012h,BX=0013h,BX=0014h

Format of SPX header: Offset Size Description 00h WORD checksum (high byte first [big-endian]) 02h WORD length in bytes of total packet (high byte first) 04h BYTE transport control 05h BYTE packet type 06h 10 BYTEs destination internet address 10h WORD destination socket (high byte first) 12h 10 BYTEs source internet address 1Ch WORD source socket (high byte first) 1Eh BYTE connection control 1Fh BYTE datastreamtype 20h WORD source connection ID 22h WORD destination connection ID 24h WORD sequence number 26h WORD acknowledge number 28h WORD allocation number ———-7A—-BX0012———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR SPX CONNECTION

BX = 0012h
AL = retry count
AH = watchdog flag
ES:SI -> Event Control Block (see BX=0003h)

Notes: there should always be at least two SPX ECB's listening to a socket, so

  that NetWare can perform its internal packet exchanges

SeeAlso: BX=0011h,BX=0013h,BX=0014h ———-7A—-BX0013———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - TERMINATE SPX CONNECTION

BX = 0013h
DX = connection ID to terminate
ES:SI -> Event Control Block (see BX=0003h)

SeeAlso: BX=0011h,BX=0012h,BX=0014h ———-7A—-BX0014———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - ABORT SPX CONNECTION

BX = 0014h
DX = connection ID to terminate

Note: this function does not tell the other side that the connection has been

  terminated

SeeAlso: BX=0011h,BX=0013h ———-7A—-BX0015———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET SPX STATUS

BX = 0015h
DX = connection ID
ES:SI -> status buffer (see below)

Return: AL = return code

    00h connection still valid
	ES:SI -> status buffer filled

SeeAlso: BX=0010h

Format of status buffer: Offset Size Description 00h BYTE status 01h BYTE flag 02h WORD source connection (high byte first [big-endian]) 04h WORD destination connection (high byte first) 06h WORD sequence number (high byte first) 08h WORD acknowledge number (high byte first) 0Ah WORD allocation number (high byte first) 0Ch WORD remote acknowledge number (high byte first) 0Eh WORD remote allocation number (high byte first) 10h WORD connection socket (high byte first) 12h 6 BYTEs immediate node address 18h 10 BYTEs destination internet address 22h WORD retransmit count (high byte first) 24h WORD estimated roundtrip delay 26h WORD retransmitted packets 28h WORD suppressed packets ———-7A—-BX0016———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - SEND SPX PACKET

BX = 0016h
DX = connection ID
ES:SI -> Event Control Block (see BX=0003h)

Note: CX may need to be 0001h ??? SeeAlso: BX=0011h,BX=0017h ———-7A—-BX0017———————– INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR SPX PACKET

BX = 0017h
DX = connection ID
ES:SI -> Event Control Block (see BX=0003h)

Note: CX may need to be 0001h ??? SeeAlso: BX=0011h,BX=0016h ———-7A—-BX0018———————– INT 7A U - Novell NetWare Low-Level API (IPX) Driver - INTERNAL

BX = 0018h
???

Return: ??? ———-7A—-BX0019———————– INT 7A U - Novell NetWare Low-Level API (IPX) Driver - INTERNAL

BX = 0019h
???

Return: ??? ———-7A—-BX001A———————– INT 7A U - Novell NetWare Low-Level API (IPX) Driver - INTERNAL

BX = 001Ah
???

Return: ??? ———-7A—-BX001B———————– INT 7A U - Novell NetWare Low-Level API (IPX) Driver - INTERNAL

BX = 001Bh
???

Return: ??? ———-7A04——————————- INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE

AH = 04h
???

Return: ??? SeeAlso: AH=06h ———-7A06——————————- INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE

AH = 06h
???

Return: ??? SeeAlso: AH=04h ———-7A09–BX8020———————– INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES

AH = 09h
BX = 8020h (synchronous request)
CX = 0000h
DX = ID of session manager (SESSMGR)
AL = service
    01h get session ID
    02h get session info
    04h dettach from session
    05h attach to session
    06h get list of windows available
    07h get environment of window
    08h get 'PIF' (program information file) info
    0Ah get base window ID
    0Bh get cursor info
ES:DI -> control block

Return: ??? ———-7A09–BX8020———————– INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES

AH = 09h
BX = 8020h (synchronous request)
CX = 0000h
DX = ID of keyboard manager
AL = service
    01h connect to keyboard
    02h disconnect from keyboard
    03h read from keyboard
    04h send keystroke to session
    05h disable input
    06h enable input
    07h update status code
ES:DI -> control block

Return: ??? ———-7A09–BX8020———————– INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES

AH = 09h
BX = 8020h (synchronous request)
CX = 00FFh
DX = ID of window service controller (WSCTRL)
AL = service
    01h connect to WS control
    02h disconnect from WS control
    03h add a window
    04h change window's position on screen
    05h change window's size
    06h change window's color
    07h change window's position in the presentation space
    08h hide/unhide toggle
    09h enlarge/reduce toggle
    0Ah change screen background color
    0Bh get window's position on screen
    0Ch get window's size
    0Dh get window's color
    0Eh get window's position in the presentation space
    0Fh determine whether hidden
    10h determine whether enlarged
    11h get background color
    12h get window names
    13h delete all windows from profile
    14h pick active window
    15h redraw screen
    16h redraw window
    17h delete a window from profile
    18h get active window
    19h get active screen
    1Ah get window data
    1Bh change window data
    1Ch select active screen
ES:DI -> control block

Return: ??? ———-7A09–BX8020———————– INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES

AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of PCPSM
AL = service
    01h define presentation space
    02h delete presentation space
    03h display presentation space
    04h position cursor in presentation space
    05h change default presentation space
ES:DI -> control block

Return: ??? ———-7A09–BX8020———————– INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION

AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of 3270EML
AL = service
    01h connect
    02h disconnect
ES:DI -> control block

Return: ??? ———-7A09–BX8020———————– INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA

AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of OIAM
AL = service
    01h read Operator Information Area
    02h read OIA subset
ES:DI -> control block

Return: ??? Note: the OIA is the 25th line on the Host session ———-7A09–BX8020———————– INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA

AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of XLATE
AL = service
    01h translate from host characters to ASCII and vice versa
	(determined by control block byte 11)
ES:DI -> control block

Return: ??? ———-7A09–BX8020———————– INT 7A - IBM 3270 Workstation Program API - COPY SERVICE

AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of copy service
AL = service
    01h copy string from one presentation space to another
    02h copy block from one presentation space to another
    03h connect to PC session for copy
    04h disconnect PC session from copy
ES:DI -> control block

Return: ??? ———-7A09–BX8020———————– INT 7A - IBM 3270 Workstation Program API - Multi-DOS

AH = 09h
BX = 8020h
CX = 00FFh
ES:DI -> control block
DX = ID of INDJQRY  
	get environment size
   = ID of INDJASY
	request DOS functions from workstation
   = ID of MEMORY
	AL = function
	    01h allocate memory
	    02h deallocate memory
	    03h modify allocated size

Return: ??? ———-7A09——————————- INT 7A - IBM 3270 Workstation Program API - HOST SERVICES

AH = 09h
BX = request type (4000h async, 8028h synchronous)
CX = 0000h
DX = ID of MFIC
AL = service
   01h connect to host
   02h disconnect from host
   03h read DFT structured data from host
   04h write DFT structured data to host
   05h create a host buffer
ES:DI -> control block

———-7A13——————————- INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE

AH = 13h
???

Return: ??? ———-7A7A——————————- INT 7A - Canon IX-30F Image Scanner SI3.SYS - INTERFACE

AH = 7Ah
???

Return: AX = 0000h success

     000Eh undefined function code

Note: this interface is normally on INT 7A but can be changed via device

  driver command line arguments

———-7A81——————————- INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME

AH = 81h
ES:DI -> 8-char blank-padded gate name
	"SESSMGR ", "KEYBOARD", "WSCTRL	 ", "MFIC    ", "PCPSM	 ",
	"3270EML ", "COPY    ", "XLATE	 ", "OIAM    ", "MEMORY	 ",
	"INDJQRY ", or "INDJASY "

Return: DX = gate ID ———-7A83——————————- INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS

AH = 83h
???

Return: ??? ———-7AFDCB—————————– INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK

AX = FDCBh

Return: DX:AX → PCS/3270 signature block if loaded (see below)

Format of signature block: Offset Size Description 04h WORD PCS/3270 signature (5741h) 06h WORD version (0501h = PCS/3270 v1.0) ———-7AFE01—————————– INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION

AX = FE01h
???

Return: ??? SeeAlso: AX=FE02h ———-7AFE02—————————– INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION

AX = FE02h
???

Return: ??? SeeAlso: AX=FE01h ———-7AFF01—————————– INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION

AX = FF01h
ES:DI -> API function handler routine

Return: CX = 1200h SeeAlso: AX=FF02h,AX=FF03h ———-7AFF02—————————– INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION

AX = FF02h

Return: CX = 1200h SeeAlso: AX=FF01h ———-7AFF03—————————– INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION

AX = FF03h
ES:DI -> send/receive function handler routine

Return: CX = 1200h SeeAlso: AX=FF01h ———-7AFF04—————————– INT 7A U - IBM PC3270 EMUL PROG v3 - INTERNAL ???

AX = FF04h
ES:DI -> ???

Return: CX = 1200h ———-7B——————————— INT 7B - Btrieve API (single user)

DS:DX -> 38-byte parameter record (see below)

Return: return code field set Note: Btrieve sets low byte of vector to 33h; this serves as the installation

  check

SeeAlso: INT 21/AX=3000h”Btrieve“,INT 2F/AX=AB01h,INT 7F/AX=0200h

Format of Btrieve parameter record: Offset Size Description 00h DWORD pointer to data buffer 04h WORD data buffer length 06h DWORD pointer to 90-byte record containing positioning info

	(should be same for all calls for same file)

0Ah DWORD pointer to 38-byte FCB info buffer

	(should be same for all calls for same file)

0Eh WORD function code (see below) 10h DWORD pointer to file name/key buffer 14h BYTE key length 15h BYTE key number 16h DWORD pointer to status code (see below) 1Ah WORD interface code (version specific) 6176h version 5.10

Values for function code: 00h open 01h close 02h insert 03h update 04h delete 05h get_equal 06h get_next 07h get_prev 08h get_greater 09h get_gr_eql 0Ah get_less 0Bh get_less_eq 0Ch get_first 0Dh get_last 0Eh create 0Fh stat 10h extend 11h set_dir: set directory information 12h get_dir: get directory information 13h begin_trans 14h end_trans 15h abort_trans 16h get_pos: get record position number 17h get_direct: get data by sending record position 18h step_next 19h stop 1Ah version 1Bh unlock 1Ch reset 1Dh set owner 1Eh clear owner 1Fh create supplemental index 20h drop supplemental index 21h step first 22h step last 23h step previous 24h get next extended: get multiple records using a filter 25h get previous extended: get multiple records using a filter 26h step next extended: get multiple records using a filter 27h step previous extended: get multiple records using a filter 28h insert extended: insert one or more records 31h ??? add 50 (32h) to any “get” operation to just return the key data add 100 (64h) for a single-record wait lock (automatically released on next

	get)

add 200 (C8h) for a single-record nowait lock (nowait lock returns error 54h

	or 55h if record already locked)

add 300 (12Ch) for a multiple-record wait lock (not released until unlock

	called)

add 400 (190h) for a multiple-record nowait lock (nowait lock returns error

	54h or 55h if record already locked)

Values for status code: 00h successful 01h invalid operation 02h I/O error 03h file not open 04h key value not found 05h duplicate key value 06h invalid key number 07h different key number 08h invalid positioning 09h end of file 0Ah modifiable key value error 0Bh invalid file name 0Ch file not found 0Dh extended file error 0Eh pre-image open error 0Fh pre-image I/O error 10h expansion error 11h close error 12h disk full 13h unrecoverable error 14h record manager inactive 15h key buffer too short 16h data buffer length overrun 17h position block length 18h page size error 19h create I/O error 1Ah number of keys 1Bh invalid key position 1Ch invalid record length 1Dh invalid key length 1Eh not a Btrieve file 1Fh file already extended 20h extended I/O error 22h invalid extension name 23h directory error 24h transaction error 25h transaction is active 26h transaction control file I/O error 27h end/abort transaction error 28h transaction max files 29h operation not allowed 2Ah incomplete accelerated access 2Bh invalid record address 2Ch null key path 2Dh inconsistent key flags 2Eh access to file denied 2Fh maximum open files 30h invalid alternate sequence definition 31h key type error 32h owner already set 33h invalid owner 34h error writing cache 35h invalid interface 36h variable page error 37h autoincrement error 38h incomplete index 39h expanded memory error 3Ah compression buffer too short 3Bh file already exists 3Ch reject count reached 3Dh work space too small 3Eh incorrect descriptor 3Fh invalid extended insert 40h filter limit reached 41h incorrect field offset 4Ah automatic transaction abort 4Eh deadlock detected 50h conflict 51h lock error 52h lost position 53h read outside transaction 54h record in use 55h file in use 56h file table full 57h handle table full 58h incompatible open mode 5Ah redirected device table full 5Bh server error 5Ch transaction table full 5Dh incompatible lock type 5Eh permission error 5Fh session no longer valid 60h communications environment error 61h data message too small 62h internal transaction error ———-7B——————————— INT 7B - Eicon Access API (3270/5250 gateways) ———-7B——————————— INT 7B U - AutoCAD ADI INTERFACE

AX = function
    0000h output blank line
    other ???

Return: ??? Note: called by AutoCAD to perform its output SeeAlso: INT 78”AutoCAD“,INT 7A”AutoCAD“ ———-7B——————————— INT 7B - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ3 Note: this vector is overwritten when GO32 starts but is not restored SeeAlso: INT 0B,INT 10/AH=FFh”GO32“,INT 7A”GO32“,INT 7C”GO32“ ———-7C——————————— INT 7C U - IBM REXX88PC command language

???

———-7C——————————— INT 7C - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ4 Note: this vector is overwritten when GO32 starts but is not restored SeeAlso: INT 0C,INT 7B”GO32“,INT 7D”GO32“ ———-7D——————————— INT 7D - [proposed] - ALTERNATE MULTIPLEX INTERRUPT Note: this interface proposal has been moved to INT 2D; there are no known

  implementations on INT 7D

SeeAlso: INT 2D, INT 2F ———-7D——————————— INT 7D U - YTERM 1.4 - CLOCK SUPPORT SeeAlso: INT 7E”YTERM“ ———-7D——————————— INT 7D - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ5 Note: this vector is overwritten when GO32 starts but is not restored SeeAlso: INT 0D,INT 7C”GO32“,INT 7E”GO32“ ———-7E——————————— INT 7E - RESERVED FOR DIP, Ltd. ROM LIBRARY ———-7E——————————— INT 7E U - YTERM 1.4 - ??? SeeAlso: INT 7D”YTERM“,INT 7F”YTERM“ ———-7E——————————— INT 7E - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ6 Note: this vector is overwritten when GO32 starts but is not restored SeeAlso: INT 0E,INT 7D”GO32“,INT 7F”GO32“ ———-7F——————————— INT 7F - IBM XGA - ??? ———-7F——————————— INT 7F - Halo88 - API

BX = function
	64h arc
	65h bar
	66h box
	67h circle
	68h clr
	69h default hatch style
	6Ah default line style
	6Bh delhcur
	6Ch delln / deltcur
	6Dh ellipse
	6Eh fill
	6Fh flood
	70h flood2
	71h init graphics
	72h init hcur
	73h init marker
	74h init tcur
	75h inqarc
	76h inqbknd
	77h inqclr
	78h inqerr
	79h inqgcur
	7Ah inqhcur
	7Bh inqmarker
	7Dh inqtcur
	7Eh inqtext
	7Fh lnabs
	80h lnrel
	81h markerabs
	82h markerrel
	83h moveabs
	84h movehcurabs
	85h movehcurrel
	86h moverel
	87h movetcurabs
	88h movetcurrel
	89h movefrom
	8Ah moveto
	8Bh pie
	8Ch polylnabs
	8Dh polylnrel
	8Eh ptabs
	8Fh ptrel
	91h setasp
	92h set color
	93h set font
	94h set hatch style
	95h set line style
	97h settext
	98h set text color
	99h btext
	9Ah setseg
	9Bh display
	9Ch setscreen
	9Eh close graphics
	9Fh ftinit
	A0h ftlocate
	A1h ftext
	A5h set viewport
	A6h set window
	A7h set world
	AAh ftcolor
	ACh initlp
	ADh inqasp
	AEh inqdev
	AFh inqdisplay
	B0h inqft
	B1h inqftcolor
	B2h inqinterlace
	B3h inqlpa
	B4h inqlpg
	B5h inqmode
	B6h inqscreen
	B7h inqversion
	B8h roam
	B9h scroll
	BAh setieee
	BBh set interlace
	BCh shift
	BDh start graphics
	BEh vpan
	CBh gwrite
	CCh gread
	CDh setxor
	CEh rbox
	CFh rcir
	D0h rlnabs
	D1h rlnrel
	D2h delbox
	D3h delcir
	D5h setseg2
	DCh worldoff
	DDh mapwtod
	DEh mapdtow
	DFh mapwton
	E0h mapntow
	E1h mapdton
	E2h mapntod
	E3h inqworld
	E4h inqviewport
	E5h set line width
	E6h lnjoint
	E7h set locator
	E8h read locator
	E9h setdev
	EBh setstext
	ECh setstclr
	EDh setstang
	EEh stext
	EFh inqstext
	F0h setdegree
	F1h inqstsize
	F2h polyfabs
	F3h polyfrel
	F4h inqdrange
	F5h inqstang
	F6h orglocator
	F7h inqlocator
	F8h inqarea
	F9h setipal
	FAh setborder
	FBh inqcrange
	FEh setclip
	FFh fcir
       100h setcrange
       101h setdrange
       102h setlattr
       103h polycabs
       104h polycrel
       108h memcom
       109h memexp
       10Ah memmov
       10Eh movefx
       10Fh movetx
       110h inqrgb
       111h save image
       112h restore image
       113h setapal
       114h setxpal
       118h inqtsize
       12Eh gprint
       130h setprn
       131h setpattr
       133h setbattr
       135h pexpand
       136h ptnorm
       137h pfnorm
       13Bh inqprn
       13Ch lopen
       13Dh lclose
       13Eh lappend
       13Fh lrecord
       140h lswitch
       142h inqfun
       15Dh lsetup
       15Eh lrest
       15Fh lsave
additional parameters on stack

Return: ??? Notes: Halo88 is a suite of graphics routines

according to Stuart Kemp, the code appears to make no provisions for
   chaining

———-7F——————————— INT 7F - CONVERGENT TECHNOLOGIES ClusterShare CTOS ACCESS VECTOR

AL = request ID
    01h "Request"/"RequestDirect"
	ES:BX -> pRq
	DX ignored
    04h "Wait"
	ES:BX -> ppMsgRet
	DX = exchange
    05h "AllocExch"
	ES:BX -> pExchRet
    06h "DeAllocExch"
	DX = exchange
    07h "Check"
	ES:BX -> ppMsgRet
	DX = exchange
CX = 4354h ('CT')

Return: AX = status

    0000h successful

———-7F——————————— INT 7F - Telebit ACS SERIAL I/O

ES:SI-> parameter block

Return: CF set on error

CF clear on success

Notes: the signature “PDGATEWRKSTNIF” appears just prior to the interrupt

  handler; this serves as the installation check

Format of Telebit ACS parameter block: Offset Size Description 00h BYTE command

	    3Ch status
	    3Dh connect
	    3Eh disconnect
	    3Fh read
	    40h data/command write
	    41h clear receive buffer
	    42h get configuration
	    43h get receiver status
	    44h raw write
	    45h search servers
	    46h set transmit buffer size

01h BYTE gateway number 02h BYTE reserved 03h BYTE port 04h 17 BYTES auxiliary buffer 15h BYTE session 16h WORD count of bytes passed to API 18h DWORD buffer pointer passed to/from API 1Ch WORD count of bytes passed from API 1Eh BYTE return code (see below)

Values for return code: 00h - success 01h - invalid session 05h - servername invalid 06h - netware fileserver bindery is locked 07h communication server not active 08h general failure in netware fileserver 09h not logged into a fileserver 10h connection table full 11h no response from communication server 12h connection attempt terminated abnormally 13h connection refused - no sessions available 14h gw_no/port already in use 15h invalid connection response 16h port invalid 17h incorrect version in server response 18h gw_no/port combination not configured 19h initialization has not been completed 20h no more sockets are available 21h no active poolname 23h FATAL internal interface error 24h registration of host workstation failed - name is already in used 25h registration of host workstation failed - workstation name table full 26h registration of host workstation failed - only one session may be

registered for dial-in

FFh telebit acs api is busy - retry later ———-7F——————————— INT 7F - Non-dedicated NetWare 2.x File Server - ENTER CONSOLE MODE Notes: the installation check consists of checking for the signature “Lynn”

  in the four bytes preceding the interrupt handler; if present, the
  current program is running as a DOS task on a non-dedicated NetWare
  2.x file server.
Before placing the server into "console" mode, it is recommended that
  NetWare broadcast messages be disabled with INT 21/AX=DE00h.

SeeAlso: INT 21/AX=DE00h ———-7F——————————— INT 7F U - YTERM - ??? SeeAlso: INT 7E”YTERM“ ———-7F——————————— INT 7F - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ7 Note: this vector is overwritten when GO32 starts but is not restored SeeAlso: INT 0F,INT 7E”GO32“ ———-7F——————————— INT 7F - Canon IXHND2 Scanner Interface ———-7F——————————— INT 7F - Alloy 386/MultiWare (MW386), Novell-Type Network Executive (NTNX) Notes: the words at C800h:0000h and C800h:0002h will both be 584Eh if the

  MW386 multitasking system is present (i.e. signature "NXNX")
NTNX allows its API to be placed on a different interrupt than 7Fh at
  load time.  To determine the actual vector used, open the device
  "SPOOLER" with INT 21/AX=3D02h, place it in RAW mode with
  INT 21/AX=4400h and INT 21/AX=4401h, then read one byte which will
  be the actual interrupt number being used; the other interrupts may
  be found with INT 7F/AH=09h/CL=03h

———-7F——————————— INT 7F - Alloy NetWare Support Kit (ANSK) v2.2+ - INSTALLATION CHECK Note: a program may determine that it is running on an ANSK Slave by checking

  the five bytes at F000h:0000h for the ASCIZ signature "ANSK"; this
  address is RAM, and should not be written.  However, the above check
  will not work on Slaves with <1MB RAM or those using the SLIM.SYS
  device driver

———-7F00——————————- INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK AND WAIT

AH = 00h
DS:DX -> ASCIZ semaphore name (max 64 bytes)

Return: AL = status

    00h successful
    01h invalid function
    02h semaphore already locked
    03h unable to lock semaphore
    04h semaphore space exhausted
    05h host/target PC did not respond (NTNX)
AH = semaphore owner if status=02h

SeeAlso: AH=01h,AH=02h,AH=41h,INT 67/AH=00h ———-7F01——————————- INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK

AH = 01h
DS:DX -> ASCIZ semaphore name (max 64 bytes)

Return: AL = status (see AH=00h)

AH = semaphore owner if status=02h

SeeAlso: AH=00h,AH=02h,AH=41h ———-7F0104BX0000———————– INT 7F - HLLAPI (IBM 3270 High-Level Language API)/LLAPI (Rabbit Low Level API)

AX = 0104h (HLLAPI gate ID)
BX = 0000h
DS:SI -> parameter control block (see below)

Return: parameter control block updated

Format of parameter control block: Offset Size Description 00h 3 BYTEs signature = 'PCB' 03h BYTE function number (see below) 04h WORD segment of control string 06h WORD offset of control string 08h WORD length of control string, unless explicit end-of-str char set 0Ah BYTE unused (IBM)

	ControlString[0] (Rabbit)

0Bh WORD return code 0Dh WORD maximum length of control string (IBM)

	unused (Rabbit)

Values for HLLAPI function number: 00h Query system (Attachmate implementation only) 01h Connect presentation space 02h Disconnect presentation space 03h Send string of keystrokes as if typed from keyboard 04h Wait ~60s, returns status of presentation space 05h Copy current presentation space into a user-defined buffer 06h Search presentation space for first occurrence of a specified string 07h Query cursor location in current presentation space 08h Copy part or all of current presentation space into user buffer 09h Set session parameters; parameters vary by vendor 0Ah Get info on sessions currently connected 0Bh Lock current presentation space 0Ch Unlock previously locked presentation space 0Dh Return copy of operator info area (OIA) of current presentation space 0Eh get attribute byte for given position in the current presentation space 0Fh copy string of characters to the current presentation space 10h workstation control functions 11h storage manager functions, intended primarily for BASIC applications

(not implemented by Rabbit)

12h set delay period in half-second intervals 14h get info on level of workstation support used 15h reset session parameters to default values 16h get detailed info on the current session 17h start host notification to application on presentation sp or OIA update 18h check host update when host notification enabled 19h stop host notification 1Eh search field within current presentation space for string 1Fh get first positionof a selected field in the current presentation space 20h get length of specified field 21h copy string into a specified field 22h copy specified field into a user-defined buffer 23h create alternate presentation space (IBM only), don't use with BASIC 24h switch to alternate presentation space (IBM only), not with BASIC 25h display cursor in specified area (IBM only), don't use with BASIC 26h display alternate presentation space (IBM only), don't use with BASIC 27h delete alternate presentation space (IBM only), don't use with BASIC 32h start intercepting keystrokes to allow filtering 33h get keystrokes after turning on interception 34h notify operator when keystroke rejected by filter subroutine 35h stop intercepting keystrokes 5Ah send file 5Bh receive file 5Ch run a program (not implemented by Rabbit) 5Dh execute DOS command (not implemented by Rabbit) 63h change presentation space position to PC display row/col or vice versa FFh Get info on DCA implementation

Values for LLAPI function number: 80h initialize LLAPI (internal call) 83h set Session ID (one-character ID) 84h read Session ID (one-character ID) 85h lock 327x keyboard 86h unlock 327x keyboard 87h wait for Clear to Send 88h type ASCII character 89h type 327x key 8Ah read keyboard lock state 8Fh force screen update 90h view session 91h relinquish (suspend foreground until background becomes idle) 92h poke screen character 93h poke translated character 94h peek screen character 95h peek translated character 96h set cursor position 97h send scan code (Rabbit only) 98h synchronize (returns after keystroke queue empty) 99h type PC key (Rabbit only)

Session Parameters for function 09h: ASCII ??? (Rabbit only) ATTRIB return attributes in hex NOATTRIB return attributes as blanks CONPHYS make physical connection CONLOG only make logical connection EAB copy extended attribute bytes along with data NOEAB copy data only ESC=n set escape character to “n” (default '@') EOT=n set end of string character (default 00h) FPAUSE full-duration pause FTNOWAIT return immediately from functions 5Ah and 5Bh (Rabbit only) FTWAIT wait for file transfer to complete (Rabbit only) IPAUSE interruptible pause RABESC ??? (Rabbit only) NORABESC ??? (Rabbit only) SCANCODE ??? (Rabbit only) STRLEN use explicit string lengths STREOT use terminated strings SRCHALL search entire presentation space SRCHFROM search from specified offset SRCHFRWD search forward from position 1 SRCHBKWD search backward from last position in presentation space TIMEOUT=n ??? (Rabbit only) TWAIT wait specified time for keyboard ready LWAIT wait until keyboard ready NWAIT no wait TRON enable tracing TROFF disable tracing AUTORESET send reset before sending keys with function 03h NORESET don't send reset QUIET don't display messages sent with INT 21/AH=09h NOQUIET allow messages to be displayed TIMEOUT=n set timeout in 30-second intervals, 0 = wait until ^Break XLATE translate extended attribute bytes NOXLATE don't translate NEWRET use HLLAPI v3.0 return code conventions OLDRET use HLLAPI v2.0 return code conventions ———-7F0105—————————– INT 7F - HDILOAD.EXE - 8514/A VIDEO CONTROLLER INTERFACE

AX = 0105h get 8514/A entry points

Return: CF set on error

CF clear if successful
    CX:DX -> array of FAR pointers to entry points

Note: most functions are invoked by pushing the DWORD parameter block pointer

  and then performing a FAR call via the appropriate vector of the
  entry point array

Function numbers: (do FAR call via entry_points+4*function) 08h HOPEN 10h HINT 13h HLDPAL 15h HBBW 17h HBBR 18h HBBCHN 1Dh HQMODE 22h HCLOSE 30h HINIT 31h HSYNC 39h HSPAL 3Ah HRPAL ———-7F02——————————- INT 7F - Alloy NTNX, MW386 - RELEASE SEMAPHORE

AH = 02h
DS:DX -> ASCIZ semaphore name (max 64 bytes)

Return: AL = status

    00h successful
    01h invalid function
    02h semaphore locked by other user
	AH = semaphore owner
    03h unable to unlock semaphore
    05h target PC did not respond

SeeAlso: AH=00h,AH=01h,AH=42h ———-7F0200—————————– INT 7F - Btrieve Multi-User - GIVE UP TIME???

AX = 0200h

SeeAlso: INT 21/AX=3000h”Btrieve“,INT 2F/AX=AB01h,INT 2F/AX=AB02h SeeAlso: INT 7B”Btrieve“ ———-7F03——————————- INT 7F - Alloy ANSK, NTNX, MW386 - GET USER NUMBER

AH = 03h

Return: AL = user number

AH = machine number (MW386)

Note: this function call is the recommended method for a CPU-bound process to

  prevent its priority from being lowered

SeeAlso: AH=04h,AH=05h,AH=A1h ———-7F04——————————- INT 7F - Alloy NTNX, MW386 - GET NUMBER OF USERS

AH = 04h

Return: AL = total number of users on currrent machine (MW386)

AL = number of slaves on system (NTNX)

SeeAlso: AH=03h ———-7F05——————————- INT 7F - Alloy NTNX (Host) - LOCK/UNLOCK SYSTEM, SPOOLER CONTROL

AH = 05h
AL = function
    00h lock system (disable slave services)
    01h unlock system
    02h enable spooler
    03h disable spooler
    04h enable slave timer update
    05h disable slave timer update
    06h enable form feeds
    07h disable form feeds

SeeAlso: INT 17/AH=A4h ———-7F05——————————- INT 7F - Alloy NTNX (Slave), MW386 - GET USER PARAMETERS

AH = 05h
DX:DI -> buffer for user information record (see below)

Notes: MW386 provides this function for backward compatibility only, and sets

  many of the fields to zero because they are meaningless under MW386
this function has no effect when called by the host (user 0)

SeeAlso: AH=03h

Format of user information record: Offset Size Description 00h WORD segment of video RAM 02h WORD segment of secondary copy of video RAM 04h WORD offset of screen update flag (see INT 10/AH=8Bh)

	flag nonzero if update needed

06h WORD video NMI enable port

	(not used by MW386, set to 0000h)

08h WORD video NMI disable port

	(not used by MW386, set to 0000h)

0Ah BYTE processor type

	00h 8088
	01h V20
	02h 8086
	03h V30
	06h 80386

0Bh WORD multitasking flag (00h = single tasking, 01h = multitasking)

	(not used by MW386, set to 0000h)

0Dh WORD offset of terminal driver

	(not used by MW386, set to 0000h)

0Fh BYTE port for console I/O

	(not used by MW386, set to 0000h)

10h WORD offset of processor communication busy flag

	bit 7 set when slave communicating with host

12h WORD pointer to FAR NX system call

	(not used by MW386, set to 0000h)

14h WORD offset of 16-byte user configuration record (see AH=38h) 16h WORD offset of command/status word 18h WORD offset of screen valid flag (see INT 10/AH=93h)

	nonzero if screen must be repainted

1Ah WORD offset of screen repaint flag 1Ch WORD pointer to NEAR NX system call

	(not used by MW386, set to 0000h)

1Eh WORD offset for intercept flags

	(not used by MW386, set to 0000h)
	intercept flag = FFh if MSDOS intercepts should be disabled

20h WORD offset of terminal lock flag (see INT 10/AH=92h)

	lock flag = FFh if backgrnd screen updates should be suspended

22h 26 BYTEs reserved ———-7F06——————————- INT 7F - Alloy NTNX (Host) - GET SHARED DRIVE INFO

AH = 06h
AL = drive number (1=A:, 2=B:, etc)
ES:DI -> drive info record (see below)

Return: AX = status

    0000h successful
	ES:DI buffer filled
    0001h not shared drive

Format of drive info record: Offset Size Description 00h WORD segment of drive IO-REQUEST structure (MSDOS DPB) 02h WORD segment of allocation map (owner table)

	one byte per FAT entry, containing user ID owning that entry

04h WORD segment of master FAT for drive (copy of FAT on disk) 06h WORD pointer to configuration file 08h WORD total number of clusters 0Ah WORD bytes per sector 0Ch WORD sectors per cluster 0Eh BYTE FAT type (0Ch = 12-bit, 10h = 16-bit) ———-7F06——————————- INT 7F - Alloy NTNX (Slave) - ALLOCATE FREE CLUSTER ON SHARED DRIVE

AH = 06h
DL = drive number (1=A:,2=B:,etc)
CX = number of clusters to allocate

Return: AH = status

    00h successful
	CX = number of clusters still free
    10h invalid shared drive request
	CL = first and second shared drives
    11h invalid cluster count (must be 01h-FFh)

———-7F07——————————- INT 7F - Alloy NTNX, MW386 - GET LIST OF SHARED DRIVES

AH = 07h

Return: ES:DI → shared drive list (see below) Note: MW386 considers all fixed disks to be shared drives; only C and D will

  be returned as shared

Format of shared drive list: Offset Size Description 00h BYTE string length 01h BYTE number of shared drives 02h N BYTEs one byte per shared drive ———-7F08——————————- INT 7F - Alloy NTNX (Host) - GET INTERRUPT VECTORS

AH = 08h
CL = function
    00h get original interrupt vector
    01h get Network Executive interrrupt
AL = interrupt number
DX:SI -> DWORD to hold interrupt vector

Return: AL = status

    00h successful
    01h interrupt vector not used by network executive
    02h invalid subfunction

Note: the network executive uses interrupts 02h,08h,09h,0Fh,10h,13h,16h-19h,

  1Ch,20h,28h,2Ah,2Fh,5Bh,67h,7Fh,ECh, and F0h-FFh

SeeAlso: AH=09h/CL=03h,INT 21/AH=35h ———-7F08–CL02————————- INT 7F - Alloy NTNX - SET MESSAGE DISPLAY TIMEOUT

AH = 08h
CL = 02h
DX = timeout in seconds

Return: AL = status

    00h successful
    02h invalid subfunction

———-7F09——————————- INT 7F - MultiLink Advanced - SET TASK PRIORITY

AH = 09h
AL = priority (0-7)

Note: the installation check consists of ensuring that the interrupt vector

  is not pointing at segment 0000h, then checking whether the byte
  at offset 0000h in the interrupt handler's segment is E9h

———-7F09——————————- INT 7F - Alloy NTNX - ENABLE/DISABLE MUD FILE CHECKING

AH = 09h
CL = function
    00h enable checking of RTNX.MUD file
    01h disable RTNX.MUD checking

———-7F09–CL02————————- INT 7F - Alloy NTNX - SWITCH HOST TO DEDICATED MODE

AH = 09h
CL = 02h

Note: in dedicated mode, the host will only poll for I/O requests from the

  slave processors, and not provide workstation services

———-7F09–CL03————————- INT 7F - Alloy NTNX,MW386 - GET ALTERNATE INTERRUPT

AH = 09h
CL = 03h
AL = default interrupt number (67h,7Fh,etc)

Return: CL = actual interrupt which handles specified interrupt's calls SeeAlso: AH=08h ———-7F0A–CL00————————- INT 7F - Alloy NTNX - GET SYSTEM FLAGS

AH = 0Ah
CL = 00h
ES:DI -> buffer for system flags (see below)

Return: ES:DI buffer filled Notes: on a slave, only the NX_Busy flag is returned

all three flags are at fixed positions, so this function only needs to
  be called once
an interrupt handler should only perform DOS or device accesses when
  all three flags are 00h

Format of system flags: Offset Size Description 00h DWORD pointer to NX_Busy flag (nonzero when communicating with users) 04h DWORD pointer to device driver busy flag 08h DWORD pointer to InTimer flag ———-7F0B–CL02————————- INT 7F - Alloy NTNX (Host) - SET/RESET GRAPHICS DOS ON SLAVE

AH = 0Bh
CL = 02h
AL = slave ID number
CH = DOS to activate
    00h graphics DOS
    01h character DOS

Return: AL = status

    00h successful
    01h nothing done, proper DOS type already loaded

———-7F10–CL00————————- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - OPEN CHANNEL

AH = 10h
CL = 00h
AL = channel number
DX:DI -> channel buffer

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction
    0Dh unable to open

Note: may not be invoked from within a hardware interrupt handler SeeAlso: AH=10h/CL=01h,AH=10h/CL=04h,AH=14h/CL=02h ———-7F10–CL01————————- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE CHANNEL

AH = 10h
CL = 01h
AL = channel number

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction
    0Ah channel not open

Note: may not be invoked from within a hardware interrupt handler SeeAlso: AH=10h/CL=00h,AH=10h/CL=05h ———-7F10–CL02————————- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK CHANNEL

AH = 10h
CL = 02h
AL = channel number

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction
    0Ah channel not open
    0Ch channel already locked

Note: may not be invoked from within a hardware interrupt handler SeeAlso: AH=10h/CL=03h,AH=10h/CL=06h,AH=10h/CL=08h ———-7F10–CL03————————- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK CHANNEL

AH = 10h
CL = 03h
AL = channel number

Return: AL = status (see AH=10h/CL=02h) Notes: should only be used on channels locked with AH=10h/CL=02h, not on those

  locked by receipt of a datagram
may not be invoked from within a hardware interrupt handler

SeeAlso: AH=10h/CL=02h,AH=10h/CL=04h,AH=10h/CL=09h ———-7F10–CL04————————- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - RELEASE BUFFER

AH = 10h
CL = 04h
AL = channel number

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction

Notes: unlocks buffer after received datagram has been processed

may not be invoked from within a hardware interrupt handler

SeeAlso: AH=10h/CL=00h ———-7F10–CL05————————- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE ALL CHANNELS

AH = 10h
CL = 05h

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction

Notes: clears all pending datagrams and clears buffer pointers before closing

  the channels
may not be invoked from within a hardware interrupt handler

SeeAlso: AH=10h/CL=01h ———-7F10–CL06————————- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK ALL OPEN CHANNELS

AH = 10h
CL = 06h

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction

Note: may not be invoked from within a hardware interrupt handler SeeAlso: AH=10h/CL=02h,AH=10h/CL=08h ———-7F10–CL07————————- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK ALL LOCKED IDLE CHANNELS

AH = 10h
CL = 07h

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction

Notes: unlocks all locked channels which have no pending datagrams

may not be invoked from within a hardware interrupt handler

SeeAlso: AH=10h/CL=03h,AH=10h/CL=09h ———-7F10–CL08————————- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK MULTIPLE CHANNELS

AH = 10h
CL = 08h
DX = maximum channel number to lock

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction

Notes: locks channels numbered 00h through the value in DX

may not be invoked from within a hardware interrupt handler

SeeAlso: AH=10h/CL=02h,AH=10h/CL=06h,AH=10h/CL=09h ———-7F10–CL09————————- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK MULTIPLE CHANNELS

AH = 10h
CL = 09h
DX = maximum channel number to unlock

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction

Notes: unlocks channels numbered 00h through the value in DX

may not be invoked from within a hardware interrupt handler

SeeAlso: AH=10h/CL=03h,AH=10h/CL=07h,AH=10h/CL=08h ———-7F11——————————- INT 7F - Alloy NTNX, MW386 - SEND DATAGRAM

AH = 11h
DX:SI -> request block (see below)

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction
    0Ah packet too large (or <2 bytes if NTNX)
    0Bh can't send packet to itself
    0Ch invalid number of destinations
    0Dh destination channel number out of range
    0Eh destination user is busy
    0Fh destination user has locked channel
    10h channel not open
    11h no datagram server on destination (NTNX)

Note: if wildcard channel FFh used, actual channel number will be filled in SeeAlso: AH=12h

Format of request block: Offset Size Description 00h DWORD pointer to packet to send 04h WORD packet size in bytes (1-4096) 06h BYTE number of destinations for packet (max 1Fh) 07h 31 BYTEs destination user IDs (FFh = broadcast to all except sender) 26h 31 BYTEs destination channels (FFh = first available channel) 45h 31 BYTEs return destination statuses ———-7F12——————————- INT 7F - Alloy NTNX, MW386 - ACKNOWLEDGE DATAGRAM

AH = 12h
AL = channel number being acknowledged
DI:DX = 32-bit status to return to sender

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction
    0Ah channel not open
    0Bh no message in channel
    0Ch destination slave busy--retry (NTNX)
    0Dh destination user not active
    0Eh destination slave not active (NTNX)
    0Fh destination disabled datagram service

Note: also unlocks the channel, allowing the next datagram to be received SeeAlso: AH=11h,AH=15h/CL=04h ———-7F13–CL00————————- INT 7F - Alloy NTNX, MW386 - RESET USER DATAGRAMS

AH = 13h
CL = 00h

Note: clears all pending datagrams and removes all channels opened in NTNX

  compatibility mode

———-7F14–CL00————————- INT 7F - Alloy NTNX, MW386 - SET RECEIVE ISR

AH = 14h
CL = 00h
DX:DI -> application FAR receive service routine (see below)

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction

SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h

Service routine called with:

DH = sender ID
DL = channel with datagram
interrupts disabled

Return: AL = response code

    00h leave buffer locked, set channel status, and repeat call later
    01h release channel buffer
    02h change buffer pointer to DX:DI
AH,CX,DX,DI,SI may be destroyed

———-7F14–CL01————————- INT 7F - Alloy NTNX, MW386 - SET ACKNOWLEDGE ISR

AH = 14h
CL = 01h
DX:DI -> application FAR acknowledge service routine (see below)

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction

Note: the service routine will be called as soon as an acknowledgment arrives SeeAlso: AH=12h,AH=14h/CL=00h,AH=14h/CL=04h,AH=15/CL=04h

Service routine called with:

DS:SI -> acknowledge structure (see AH=15h/CL=04h)

Return: AL = response code

    00h application busy, network executive should call again later
    01h acknowledge accepted
AH,DX,SI may be destroyed

———-7F14–CL02————————- INT 7F - Alloy NTNX, MW386 - SET CHANNEL BUFFER POINTER

AH = 14h
CL = 02h
AL = channel number
DX:DI -> receive buffer

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction

Note: may be called from within a receive ISR or when a datagram is pending SeeAlso: AH=10h/CL=00h,AH=14h/CL=00h ———-7F14–CL03————————- INT 7F - Alloy NTNX, MW386 - GET RECEIVE ISR

AH = 14h
CL = 03h

Return: DX:DI → current receive ISR SeeAlso: AH=14h/CL=00h,AH=14h/CL=04h ———-7F14–CL04————————- INT 7F - Alloy NTNX, MW386 - GET ACKNOWLEDGE ISR

AH = 14h
CL = 04h

Return: DX:DI → current acknowledge ISR SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h ———-7F14–CL05————————- INT 7F - Alloy NTNX (Host), MW386 - GET BUSY POINTER

AH = 14h
CL = 05h
DX:DI -> buffer for busy structure (see below)

Return: DX:DI buffer filled

Format of busy structure: Offset Size Description 00h DWORD pointer to busy flag byte 04h WORD fixed port address (FF00h) ———-7F15–CL00————————- INT 7F - Alloy NTNX, MW386 - GET CHANNEL STATUS

AH = 15h
CL = 00h
AL = channel number
DX:DI -> status structure (see below)

Return: AL = status

    00h successful
    01h busy
    02h channel range error (not 00h-3Fh)
    03h invalid subfunction

SeeAlso: AH=15h/CL=01h

Format of status structure: Offset Size Description 00h BYTE channel status

	bit 0: channel open
	    1: channel buffer contains received data
	    7: channel locked

01h BYTE sender ID ———-7F15–CL01————————- INT 7F - Alloy NTNX, MW386 - GET NEXT FULL CHANNEL

AH = 15h
CL = 01h
DX:DI -> full-channel structure

Return: AL = status

    00h successful
    01h busy
    0Ah no datagrams available

Note: MW386 v1.0 returns the lowest channel with a datagram; newer versions

  and NTNX return the oldest datagram

SeeAlso: AH=15h/CL=00h

Format of full-channel structure: Offset Size Description 00h BYTE number of channel with oldest datagram 01h BYTE sender ID ———-7F15–CL02————————- INT 7F - Alloy NTNX, MW386 - GET MAXIMUM NUMBER OF CHANNELS

AH = 15h
CL = 02h

Return: AH = number of channels available (40h for MW386) Note: the application may always assume at least 32 channels available SeeAlso: AH=15h/CL=03h ———-7F15–CL03————————- INT 7F - Alloy NTNX, MW386 - GET MAXIMUM PACKET SIZE

AH = 15h
CL = 03h
DX:DI -> WORD for return value

Return: buffer WORD filled with maximum packet size (4096 for MW386) SeeAlso: AH=15h/CL=02h ———-7F15–CL04————————- INT 7F - Alloy NTNX, MW386 - GET AND CLEAR ACKNOWLEDGE STATUS

AH = 15h
CL = 04h
DX:DI -> status structure (see below)

Return: AL = status

    00h successful
	DX:DI structure filled
    01h busy
    0Ah no acknowledgement has arrived

SeeAlso: AH=12h,AH=14h/CL=01h

Format of status structure: Offset Size Description 00h BYTE sender ID 01h BYTE channel number 02h 4 BYTEs receiver status (see AH=12h) ———-7F16——————————- INT 7F - Alloy NTNX, MW386 - DIRECT MEMORY TRANSFER

AH = 16h
DX:SI -> transfer structure (see below)

Return: AL = status

    00h successful
    0Ah source or destination out of range
    0Bh transfer kernal busy--try again

Notes: this call transfers memory contents directly between users; both source

  and destination user IDs may differ from the caller's ID
no segment wrap is allowed

Format of transfer structure: Offset Size Description 00h WORD bytes to transfer 02h BYTE source ID

	FEh = caller

03h DWORD source address 07h BYTE destination ID

	FFh = all slaves except caller
	FEh = caller

08h DWORD destination address ———-7F21——————————- INT 7F - Alloy NTNX, MW386 - SEND MESSAGE OR COMMAND TO USER(S)

AH = 21h
AL = sender's user ID
DS:DX -> control packet (see below)

Note: messages or commands are ignored if disabled by the destination user SeeAlso: AH=22h

Format of control packet: Offset Size Description 00h BYTE packet type

	00h message
	01h NTNX command
	02h MW386 command

01h BYTE destination user ID or 'A' for all users 02h 62 BYTEs ASCIZ message (packet type 00h)

	BIOS keycodes terminated by NUL byte (type 01h) or word (02h)

Note: a maximum of 16 keycodes will be processed for NTNX and MW386 commands ———-7F22——————————- INT 7F - Alloy NTNX - GET MESSAGE

AH = 22h

Return: pending messages displayed on user's screen SeeAlso: AH=21h ———-7F24——————————- INT 7F - Alloy NTNX, MW386 - ATTACH OR RELEASE DRIVE FOR LOW-LEVEL WRITE ACCESS

AH = 24h
CL = function
    00h attach
    01h release
CH = drive (0=A:,1=B:,etc)

Return: AX = status

    00h successful
    01h invalid request
    02h already attached
    03h not attached
    04h lock table full

Note: only drives on the current machine may be attached ———-7F24——————————- INT 7F - Alloy NTNX - ATTACH/RELEASE HOST PROCESSOR

AH = 24h
CL = function
    02h attach host
    03h release host

Return: AX = status

    00h successful
    01h invalid request
    02h already attached
    03h not attached
    04h lock table full

Note: the host processor may be attached in order to perform I/O via the host ———-7F25–CL00————————- INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE VERSION

AH = 25h
CL = 00h

Return: AH = version suffix letter

CH = major version number
CL = minor version number

SeeAlso: AH=25h/CL=01h ———-7F25–CL01————————- INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE TYPE

AH = 25h
CL = 01h

Return: CL = type

    00h RTNX
    01h ATNX
    02h NTNX
    03h BTNX
    04h MW386
    05h ANSK

SeeAlso: AH=25h/CL=00h ———-7F26–CL00————————- INT 7F - Alloy NTNX, MW386 - GET NTNX FILE MODE

AH = 26h
CL = 00h

Return: AX = file mode bits

    bit 0: directory protection enabled
	1: extended open enabled
	2: flush on every disk write
	3: flush on every disk write in locked interval
	4: flush on reads from simultaneously opened file

Note: MW386 does not support file modes, and always returns AX=001Fh SeeAlso: AH=26h,AH=26h/CL=06h ———-7F26——————————- INT 7F - Alloy NTNX - SET FILE I/O CHECKING LEVEL

AH = 26h
CL = check type to set/reset
    01h directory protection
    02h extended open
    03h flush on every disk write
    04h flush on disk write if any lock set during write
    05h flush on all reads if file written
AL = new state (00h off, 01h on)

SeeAlso: AH=26h/CL=00h,AH=26h/CL=06h ———-7F26–CL06————————- INT 7F - Alloy NTNX - CANCEL FLUSH ON WRITE

AH = 26h
CL = 06h

Note: cancels flags set by AH=26h/CL=03h and AH=26h/CL=04h SeeAlso: AH=26h/CL=00h ———-7F30——————————- INT 7F - Alloy MW386 - GET PORT INFORMATION

AH = 30h
CX = MW386 port number

Return: AL = FFh if port not found

   else	 driver unit number
       BL = port mode
       BH = port type
	   02h remote
       DH = owner's machine ID
       DL = owner's user ID

SeeAlso: INT 17/AH=8Bh ———-7F31——————————- INT 7F - Alloy MW386 v1.x only - CHECK PORT ASSIGNMENT

AH = 31h
???

Return: ??? ———-7F37——————————- INT 7F - Alloy NTNX (Host) - GET SEMAPHORE TABLE

AH = 37h

Return: ES:AX → semaphore table ———-7F37——————————- INT 7F - Alloy ANSK, NTNX (Slave) - DUMP STRING TO TERMINAL

AH = 37h
DS:DX -> ASCIZ string to display

Note: if the string is empty, a terminal update will be forced ———-7F38——————————- INT 7F - Alloy NTNX (Slave), MW386 - SET NEW TERMINAL DRIVER

AH = 38h
AL = new terminal driver number
    FFh dummy driver
    FEh current driver
    FDh load new driver
	DS:SI -> new driver

SeeAlso: AH=39h ———-7F39——————————- INT 7F - Alloy MW386 - SET TERMINAL DRIVER FOR ANOTHER USER

AH = 39h
AL = new terminal driver number
DL = user number (FFh = caller)
DH = machine number if DL <> FFh

Return: CF set if invalid user number

CF clear if successful

Notes: only available to supervisors

the new driver number will not take effect until the user is rebooted

SeeAlso: AH=38h ———-7F3A——————————- INT 7F - Alloy MW386 - GET TERMINAL PARAMETERS

AH = 3Ah
DL = user number (FFh = caller)
DH = machine number

Return: CF clear if successful

    AH = terminal driver number
    AL = baud rate (00h = 38400, 01h = 19200, etc)
    CL = parity (00h none, 01h even, 02h odd)
    CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
CF set if invalid user number

SeeAlso: AH=3Bh ———-7F3B——————————- INT 7F - Alloy MW386 - SET TERMINAL PARAMETERS

AH = 3Bh
AL = baud rate (00h = 38400, 01h = 19200, etc)
CL = parity (00h none, 01h even, 02h odd)
CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
DL = user number (FFh = caller)
DH = machine number for user

Return: CF set if invalid user number Notes: only available to supervisors

the new parameters will take effect immediately if the user's terminal
  has not been started, else AH=3Dh must be called to post the changes

SeeAlso: AH=3Ah,AH=3Dh ———-7F3C——————————- INT 7F - Alloy MW386 - ENABLE/DISABLE AUTOBAUD DETECT

AH = 3Ch
AL = new state
     00h disabled, 01h enabled
DL = user number (FFh = caller)
DH = machine number for user

Return: CF set if invalid user number Note: only available to supervisors SeeAlso: AH=3Dh ———-7F3D——————————- INT 7F - Alloy MW386 - POST TERMINAL CONFIGURATION CHANGES

AH = 3Dh

Note: should be called whenever a program changes the terminal type or its

  parameters

SeeAlso: AH=3Bh ———-7F41——————————- INT 7F - Alloy NTNX - LOCK FILE FOR USER

AH = 41h
AL = user ID
DS:DX -> ASCIZ filename

Return: AL = status

    00h successful
    01h invalid function
    02h already locked
    03h unable to lock
    04h lock table full

Note: requests exclusive read/write access to file SeeAlso: AH=00h,,AH=41h”MW386“,AH=42h”NTNX“ ———-7F41——————————- INT 7F - Alloy MW386 - LOCK SEMAPHORE FOR USER

AH = 41h
AL = user ID
DS:DX -> ASCIZ semaphore name

Return: AL = status

    00h successful
    01h invalid function
    02h semaphore already locked
    03h unable to lock semaphore
    04h semaphore space exhausted

SeeAlso: AH=00h,AH=42h”MW386“ ———-7F42——————————- INT 7F - Alloy NTNX - UNLOCK FILE FOR USER

AH = 42h
AL = user ID
DS:DX -> ASCIZ filename

Return: AL = status

    00h successful
    01h invalid function
    02h already locked
    03h unable to lock
    04h lock table full

SeeAlso: AH=00h,AH=41h”NTNX“,AH=42h”MW386“ ———-7F42——————————- INT 7F - Alloy MW386 - UNLOCK SEMAPHORE FOR USER

AH = 42h
AL = user ID
DS:DX -> ASCIZ semaphore name

Return: AL = status

    00h successful
    01h invalid function
    03h unable to unlock semaphore

SeeAlso: AH=02h,AH=41h”MW386“,AH=42h”NTNX“ ———-7F4E——————————- INT 7F - Alloy MW386 v2+ - SET ERROR MODE

AH = 4Eh
AL = error mode flags
    bit 0: display critical disk errors
	1: display sharing errors
DX = 4E58h ("NX")

Return: AL = status

    00h successful

SeeAlso: AH=4Fh ———-7F4F——————————- INT 7F - Alloy MW386 v2+ - SET FCB MODE

AH = 4Fh
AL = FCB mode
    02h read/write compatibility
    42h read/write shared
DX = 4E58h ("NX")

Return: AL = status

    00h successful

———-7F81——————————- INT 7F - Alloy NTNX - ATTACH DEVICE FOR USER

AH = 81h
AL = user ID
DS:DX -> ASCIZ device name

SeeAlso: AH=82h ———-7F82——————————- INT 7F - Alloy NTNX - RELEASE DEVICE FOR USER

AH = 82h
AL = user ID
DS:DX -> ASCIZ device name

SeeAlso: AH=81h ———-7FA0——————————- INT 7F - Alloy MW386 - GET USER NAME

AH = A0h
DL = user number (FFh = caller)
DH = machine number for user
ES:DI -> 17-byte buffer for ASCIZ user name

Return: CF set if invalid user number SeeAlso: AH=03h,AH=A1h ———-7FA1——————————- INT 7F - Alloy MW386 - GET MACHINE, USER, AND PROCESS NUMBER

AH = A1h

Return: AL = process number

DL = user number
DH = machine number

SeeAlso: AH=03h,AH=A0h,AH=A2h ———-7FA2——————————- INT 7F - Alloy MW386 - GET USER PRIVILEGE LEVEL

AH = A2h
DL = user number (FFh = caller)
DH = machine number for user

Return: CF clear if successful

    AL = privilege level
	00h supervisor
	01h high
	02h medium
	03h low
CF set if invalid user number

SeeAlso: AH=A1h,AH=A3h ———-7FA3——————————- INT 7F - Alloy MW386 - GET USER LOGIN STATE

AH = A3h
DL = user number
DH = machine number for user

Return: CF clear if successful

    AL = login state
	00h never logged in
	01h currently logged out
	03h currently logged in
CF set if invalid user number or user not active

SeeAlso: AH=A2h ———-7FA4——————————- INT 7F - Alloy MW386 - VERIFY USER PASSWORD

AH = A4h
DS:DX -> ASCIZ password (null-padded to 16 bytes)

Return: AL = 00h if accepted

   else	 invalid password

———-7FA5——————————- INT 7F - Alloy MW386 - GET/SET USER STATUS

AH = A5h
AL = function
    00h get status
	Return: BX = user flags
		    bit 5: allow messages
		CL = scan code for task manager hotkey
		CH = scan code for spooler hotkey
		DL = scan code for task swapper hotkey
		DH = modifier key status
    01h set status
	BX = user flags (see above)
	CL = scan code for task manager hotkey
	CH = scan code for spooler hotkey
	DL = scan code for task swapper hotkey
	DH = modifier key status
DI = machine number and user number

Return: CF set if invalid user number Note: must have supervisor privilege to set another user's status ———-7FB0——————————- INT 7F - Alloy NTNX, MW386 - RELEASE ALL SEMAPHORES FOR USER

AH = B0h
AL = user number
DS = code segment

Note: MW386 ignores AL and DS; it releases all semaphores locked using INT 67

  or INT 7F locking functions

SeeAlso: AH=B1h,AH=B2h,AH=B3h,AH=B4h ———-7FB1——————————- INT 7F - Alloy NTNX, MW386 - RELEASE NORMAL SEMAPHORES FOR USER

AH = B1h
AL = (bits 7-5) 000
     (bits 4-0) user ID

Note: MW386 ignores AL; it releases all semaphores locked using INT 67 or

  INT 7F locking functions

SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h ———-7FB2——————————- INT 7F - Alloy NTNX - RELEASE MESSAGES FOR USER

AH = B2h
AL = (bits 7-5) 001
     (bits 4-0) user ID

SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h ———-7FB3——————————- INT 7F - Alloy NTNX - RELEASE FILES FOR USER

AH = B3h
AL = (bits 7-5) 010
     (bits 4-0) user ID

SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B4h ———-7FB4——————————- INT 7F - Alloy NTNX - RELEASE DEVICES FOR USER

AH = B4h
AL = user ID

SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B3h ———-7FC3——————————- INT 7F - Alloy MW386 - WRITE BYTE TO TERMINAL AUX PORT

AH = C3h
AL = byte to write

Return: CF clear if successful

CF set on error

SeeAlso: AH=C6h ———-7FC5——————————- INT 7F - Alloy MW386 - CHANGE CONSOLE MODE

AH = C5h
AL = new console mode
    00h keyboard indirect
    01h keyboard direct
    02h data handshake enforced
    03h no data handshake

Return: CF clear if successful

    AL = prior console mode
CF set on error (caller is not remote user)

Note: modes 2 and 3 may be used for input through the console port; no video

  output should be performed in these modes

———-7FC6——————————- INT 7F - Alloy MW386 - WRITE BYTE TO CONSOLE PORT

AH = C6h
AL = byte to write

Return: CF clear if successful

CF set on error (caller is not remote user)

Note: any terminal driver data translation will be bypassed SeeAlso: AH=C3h,AH=C7h ———-7FC7——————————- INT 7F - Alloy MW386 - READ CONSOLE DATA BYTE

AH = C7h

Return: CF clear if successful

    AL = byte read
CF set on error (no data available or caller is not remote user)

Note: used to read data after placing console in mode 2 or 3 (see AH=C5h) SeeAlso: AH=C5h,AH=C6h,AH=C8h ———-7FC8——————————- INT 7F - Alloy MW386 - READ CONSOLE DATA INTO BUFFER

AH = C8h
AL = maximum bytes to read
ES:DI -> buffer for console data

Return: CF clear if successful

    CX = number of bytes read
CF set on error (caller is not remote user)

SeeAlso: AH=C7h ———-7FCF——————————- INT 7F - Alloy NTNX - REBOOT USER PROCESSOR

AH = CFh
DS:DX -> ASCIZ string containing user number to be reset

SeeAlso: AH=D6h ———-7FD6——————————- INT 7F - Alloy MW386 - RESET NETWORK EXECUTIVE

AH = D6h
DS:DX -> reset packet (see below)

Return: never if succesful Note: all users will be shut down immediately if successful SeeAlso: AH=CFh

Format of reset packet: Offset Size Description 00h DWORD reset code (60606060h) 04h 16 BYTEs ASCIZ supervisor password padded with nulls ———-7FD7——————————- INT 7F - Alloy MW386 - POST EVENT

AH = D7h
AL = user number (if local event)
DX = event number

———-7FD8——————————- INT 7F - Alloy MW386 - FLUSH DISK BUFFERS

AH = D8h

Return: CF set on error Note: forces all disk buffers to be written out immediately SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h,INT 2F/AX=1120h ———-7FDB——————————- INT 7F - Alloy MW386 v2+ - GET MW386 INVOCATION DRIVE

AH = DBh

Return: AL = drive from which MW386 was started (2=C:,3=D:,etc) ———-7FE0——————————- INT 7F - Alloy MW386 - CREATE DOS TASK

AH = E0h
AL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
DS:DX -> ASCIZ task name (max 16 bytes)

Return: CF clear if successful

    AL = task create ID
CF set on error

Note: only foreground DOS tasks can use this function SeeAlso: AH=E1h,AH=E2h,AH=E3h,AH=E6h,AH=E7h ———-7FE1——————————- INT 7F - Alloy MW386 - GET DOS TASK PID FROM CREATE ID

AH = E1h
AL = create ID (from AH=E0h)

Return: AL = DOS process number

CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)

Note: this function should not be called immediately after creating a new

  DOS task, since the new task is being initialized by a concurrent
  process

SeeAlso: AH=E0h,AH=E2h ———-7FE2——————————- INT 7F - Alloy MW386 - SWITCH TO NEW DOS TASK

AH = E2h
AL = DOS process number (from AH=E1h)

Return: CF set on error (invalid process number or caller not foreground task) Notes: specified task becomes the foreground task and current task is placed

  in the background
may only be called by a foreground task

SeeAlso: AH=E0h,AH=E1h ———-7FE3——————————- INT 7F - Alloy MW386 - CHANGE NAME OF DOS TASK

AH = E3h

—v1.x—

AL = user number

—v2+—

BH = user number
BL = task number

DS:DX -> ASCIZ task name

Return: CF set on error (invalid process number) SeeAlso: AH=E0h,AH=E4h,AH=E5h ———-7FE4——————————- INT 7F - Alloy MW386 - GET TASK NAME FROM PROCESS NUMBER

AH = E4h

—v1.x—

AL = user number

—v2+—

BH = user number
BL = task number

ES:DI -> buffer for task name

Return: CF clear if successful

    CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
    DX = task flags
	bit 7: MSDOS process
    ES:DI buffer filled
CF set on error (invalid process number)

SeeAlso: AH=E3h,AH=E5h ———-7FE5——————————- INT 7F - Alloy MW386 - GET PROCESS NUMBER FROM TASK NAME

AH = E5h
DS:DX -> ASCIZ task name
BH = user number

Return: CF clear if successful

    AL = DOS process number
    CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
CF set on error (no match for name)

SeeAlso: AH=E3h,AH=E4h ———-7FE6——————————- INT 7F - Alloy MW386 - GET NUMBER OF AVAILABLE USER TASKS

AH = E6h

Return: AX = number of processes available to current user SeeAlso: AH=E0h ———-7FE7——————————- INT 7F - Alloy MW386 - REMOVE DOS TASK

AH = E7h
AL = DOS process number

Return: CF set on error (invalid process number or first process) Note: can only be called by a foreground task SeeAlso: AH=E0h ———-7FE8——————————- INT 7F - Alloy MW386 - DOS TASK DELAY

AH = E8h
CX = delay time in milliseconds

Note: a delay of 0 may be used to surrender the current time slice SeeAlso: INT 15/AX=1000h,INT 21/AH=EEh”DoubleDOS“,INT 2F/AX=1680h ———-7FF0——————————- INT 7F - Alloy MW386 - RESTRICT DIRECTORY TO GROUP

AH = F0h
AL = group number
DS:DX -> ASCIZ directory name

Return: CF clear if successful

    AX = status
	0002h directory not found
	0003h directory not found
	0005h directory in use, cannot be restricted
	02xxh restricted to group xxh
CF set on error

Note: the restriction on the directory may be removed by calling this

  function with group 0, then using AH=F1h to assign the directory to
  group 0

SeeAlso: AH=F1h,AH=F2h,AH=F3h ———-7FF1——————————- INT 7F - Alloy MW386 - ASSIGN DIRECTORY TO GROUP

AH = F1h
AL = group number
DS:DX -> ASCIZ directory name

Notes: performs permanent assignment to a group; no immediate action is taken

  unless the directory has been restricted with AH=F0h
may be used to restrict a nonexistent directory

SeeAlso: AH=F0h ———-7FF2——————————- INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY

AH = F2h
CX = entry number
ES:DI -> 64-byte buffer

Return: CF clear if successful

    buffer filled with 63-byte directory info and 1-byte group number
CF set on error (invalid entry)

SeeAlso: AH=F0h,AH=F3h ———-7FF3——————————- INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY FOR GROUP

AH = F3h
AL = group number
CX = entry number
ES:DI -> 64-byte buffer

Return: CF clear if successful

    CX = next entry number
    buffer filled with 63-byte directory info and 1-byte group number
CF set on error (no more matching entries)

Note: like AH=F2h, but only returns directories belonging to the specified

  group

SeeAlso: AH=F2h ———-7FF8——————————- INT 7F - Alloy MW386 - ASSIGN USER TO GROUP

AH = F8h
AL = group number
DL = user number
DH = machine number (currently 00h)

Return: CF clear if successful

CF set on error (user already in maximum number of groups)

Note: each user is allowed eight group assignments SeeAlso: AH=F9h,AH=FAh ———-7FF9——————————- INT 7F - Alloy MW386 - REMOVE USER FROM GROUP

AH = F9h
AL = group number
DL = user number
DH = machine number (currently 00h)

Return: CF set if failed SeeAlso: AH=F8h,AH=FAh ———-7FFA——————————- INT 7F - Alloy MW386 - GET USER GROUP LIST

AH = FAh
DL = user number
DH = machine number (currently 00h)
ES:DI -> 16-byte buffer for group list

Return: CX = number of groups

ES:DI buffer filled with group numbers

SeeAlso: AH=F8h,AH=F9h ———-7FFB——————————- INT 7F - Alloy MW386 - ASSIGN GROUP NAME

AH = FBh
CL = group number
ES:DI -> ASCIZ group name (max 17 bytes)

SeeAlso: AH=FCh ———-7FFC——————————- INT 7F - Alloy MW386 - GET GROUP NAME

AH = FCh
CL = group number
ES:DI -> 17-byte buffer for ASCIZ name

Return: ES:DI buffer filled Note: if the group has not been named, ”(unnamed)“ is returned SeeAlso: AH=FBh ———-80——————————— INT 80 - Q-PRO4 - ??? ———-80——————————— INT 80 - reserved for BASIC ———-80—-BX0000———————– INT 80 - SoundBlaster SBFM driver - GET VERSION

BX = 0000h

Return: ??? Note: SBFM installs at a free interrupt in the range 80h through BFh SeeAlso: BX=0008h,INT 2F/AX=FBFBh ———-80—-BX0001———————– INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS

BX = 0001h
DX:AX -> music status byte

SeeAlso: BX=0000h,BX=0002h,BX=0003h ———-80—-BX0002———————– INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE

BX = 0002h
CX = number of instruments
DX:AX -> instrument table

SeeAlso: BX=0000h,BX=0001h,BX=0005h ———-80—-BX0003———————– INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE

BX = 0003h
AX = clock rate divisor (1193180 / desired frequency in Hertz)
    FFFFh to restore to 18.2 Hz

SeeAlso: BX=0000h,BX=0001h,BX=0004h ———-80—-BX0004———————– INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE

BX = 0004h
AX = driver clock rate divisor (1193180 / frequency in Hertz)

Note: default frequency is 96 Hz SeeAlso: BX=0000h,BX=0003h ———-80—-BX0005———————– INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC

BX = 0005h
AX = semi-tone offset

SeeAlso: BX=0000h,BX=0002h,BX=0006h ———-80—-BX0006———————– INT 80 - SoundBlaster SBFM driver - PLAY MUSIC

BX = 0006h
DX:AX -> music block

Return: AX = status

    0000h successful
    0001h music already active

SeeAlso: BX=0000h,BX=0007h,BX=000Ah ———-80—-BX0007———————– INT 80 - SoundBlaster SBFM driver - STOP MUSIC

BX = 0007h

Return: AX = status

    0000h successful
    0001h music not active

SeeAlso: BX=0000h,BX=0006h,BX=0009h ———-80—-BX0008———————– INT 80 - SoundBlaster SBFM driver - RESET DRIVER

BX = 0008h

Return: AX = status

    0000h successful
    0001h music is active

SeeAlso: BX=0000h ———-80—-BX0009———————– INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC

BX = 0009h

Return: AX = status

    0000h successful
    0001h no music active

SeeAlso: BX=0000h,BX=0007h,BX=000Ah ———-80—-BX000A———————– INT 80 - SoundBlaster SBFM driver - RESUME MUSIC

BX = 000Ah

Return: AX = status

    0000h successful
    0001h no music paused

SeeAlso: BX=0000h,BX=0006h,BX=0009h ———-80—-BX000B———————– INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS

BX = 000Bh
DX:AX -> trap routine

SeeAlso: BX=0000h ———-8001——————————- INT 80 - QPC Software PKTINT.COM - INITIALIZE

AH = 01h

Return: AX = 0000h

CX = FFFFh
DX = FFFFh

Notes: this interrupt is the WinQVTNet protected mode interface to Windows 3.0

all buffer pointers are reset back to 0

———-8002——————————- INT 80 - QPC Software PKTINT.COM - GET BUFFER ADDRESSES

AH = 02h
BX = extra bytes to allocate per packet

Return: AX = segment address of 10K buffer (for receives???)

BX = segment address of 2K buffer (for sends???)

SeeAlso: AH=05h ———-8003——————————- INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT

AH = 03h

Return: CX:DX → receive call address Note: the returned address can be used in the packet driver calls since it

  will be a valid address in all DOS boxes

SeeAlso: AH=06h ———-8004——————————- INT 80 - QPC Software PKTINT.COM - ENABLE???

AH = 04h
BX = ???

Return: ??? ———-8005——————————- INT 80 - QPC Software PKTINT.COM - GET RECEIVE STATISTICS

AH = 05h

Return: AX = amount of buffer currently in use

BX = current offset in buffer
CX = number of times receive has been called

SeeAlso: AH=02h ———-8006——————————- INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET

AH = 06h

Return: BX = next packet offset

CX = number of bytes still buffered
DX = size of packet released back into buffer pool

SeeAlso: AH=03h ———-81——————————— INT 81 - reserved for BASIC ———-81——————————— INT 81 - IBM TOKEN RING ADAPTER - ??? ———-82——————————— INT 82 - reserved for BASIC ———-82——————————— INT 82 - IBM TOKEN RING ADAPTER - ???

AH = function
    00h display message???
	DS:BX -> string
???

Return: ??? ———-83——————————— INT 83 - reserved for BASIC ———-84——————————— INT 84 - reserved for BASIC ———-85——————————— INT 85 - reserved for BASIC ———-86——————————— INT 86 - NetBIOS - ORIGINAL INT 18 Note: some implementations of NetBIOS reportedly relocate INT 18 here SeeAlso: INT 18 ———-86——————————— INT 86 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-86——————————— INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS ———-87——————————— INT 87 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-87——————————— INT 87 - APL*PLUS/PC - ???? ———-88——————————— INT 88 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-88—-AL00————————- INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE

AL = 00h
BX = STPTR of the variable to be assigned
ES:SI -> model of type, rank, and shape (see below)

Return: ES:DI → first data byte of object

DX:CX = number of elements in the object

SeeAlso: INT C8”APL“

Format of shape model: Offset Size Description 00h BYTE type

	01h character (2-byte dimension sizes)
	02h integer (2-byte dimension sizes)
	08h floating point (2-byte dimension sizes)
	11h character (4-byte dimension sizes)
	12h integer (4-byte dimension sizes)
	18h floating point (4-byte dimension sizes)

01h BYTE rank 02h WORD/DWORD first dimension of shape N WORD/DWORD second dimension of shape

...

———-88—-AL01————————- INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE

AL = 01h
AH = rank
BX = STPTR of the variable to be assigned
CX = first dimension (if any)
DX = second dimension (if any)

Return: ES:DI → object

CX = number of elements in the object

Note: each dimension must be 32767 or smaller SeeAlso: AL=02h,AL=08h,INT C8”APL“ ———-88—-AL02————————- INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE

AL = 02h
AH = rank
BX = STPTR of the variable to be assigned
CX = first dimension (if any)
DX = second dimension (if any)

Return: ES:DI → object

CX = number of elements in the object

Note: each dimension must be 32767 or smaller SeeAlso: AL=01h,AL=08h,INT C8”APL“ ———-88—-AL08————————- INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE

AL = 08h
AH = rank
BX = STPTR of the variable to be assigned
CX = first dimension (if any)
DX = second dimension (if any)

Return: ES:DI → object

CX = number of elements in the object

Note: each dimension must be 32767 or smaller SeeAlso: AL=01h,AL=02h,INT C8”APL“ ———-88—-ALF5————————- INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL

AL = F5h
BX = STPTR of object

SeeAlso: INT C8”APL“ ———-88—-ALF6————————- INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING

AL = F6h
BX = STPTR of object

SeeAlso: AL=F7h,AL=F8h,INT C8”APL“ ———-88—-ALF7————————- INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING

AL = F7h
BX = STPTR of object

SeeAlso: AL=F6h,AL=F8h,INT C8”APL“ ———-88—-ALF8————————- INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING

AL = F8h
BX = STPTR of object

Return: BX = 0000h eligible

      0001h not eligible

SeeAlso: AL=F6h,AL=F7h,INT C8”APL“ ———-88—-ALF9————————- INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS

AL = F9h
ES:SI -> name
CX = length of name

Return: CF set if name ill-formed or already in use

    BX = STPTR if already in symbol table
CF clear if name is available for use
    BX = 0000h

Note: does not force the name into the workspace SeeAlso: AL=FEh,AL=FFh,INT C8”APL“ ———-88—-ALFC————————- INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION

AL = FCh
BX = amount of memory needed (paragraphs)

Return: CF clear if memory available

CF set if a workspace compaction is required

SeeAlso: AL=FDh,INT C8”APL“ ———-88—-ALFD————————- INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY

AL = FDh

Return: BX = number of paragraphs available in workspace SeeAlso: AL=FCh,INT C8”APL“ ———-88—-ALFE————————- INT 88 - APL*PLUS/PC - CREATE NAME

AL = FEh
ES:SI -> name
CX = length of name

Return: BX = STPTR of name

DX = interpreter's data segment

SeeAlso: AL=F9h,AL=FFh,INT C8”APL“ ———-88—-ALFF————————- INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS

AL = FFh
ES:SI -> name
CX = length of name

Return: CF set if name ill-formed or already in use

    BX = STPTR if already in symbol table
CF clear if name is available for use
    BX = 0000h

Note: forces the name into the workspace and makes it immune from outswapping SeeAlso: AL=F9h,AL=FEh,INT C8”APL“ ———-89——————————— INT 89 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-8A——————————— INT 8A - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-8A——————————— INT 8A - APL*PLUS/PC - PRINT SCREEN Note: same as INT 05 SeeAlso: INT 05,INT 8C”APL“,INT CA”APL“ ———-8B——————————— INT 8B - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-8B——————————— INT 8B - APL*PLUS/PC - BEEP Note: same as printing a ^G via INT 21/AH=02h SeeAlso: INT 21/AH=02h,INT CB”APL“ ———-8C——————————— INT 8C - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-8C——————————— INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY

AX = flag
    0000h do not save display attributes
    0001h save attributes

SeeAlso: INT CC”APL“ ———-8D——————————— INT 8D - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-8E——————————— INT 8E - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-8F——————————— INT 8F - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-90——————————— INT 90 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-90——————————— INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER ———-91——————————— INT 91 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-91——————————— INT 91 - IBM TOKEN RING ADAPTER - ??? ———-92——————————— INT 92 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-92——————————— INT 92 - Sangoma X.25 INTERFACE PROGRAM

BX:DX -> control block

SeeAlso: INT 68”Sangoma“ ———-92E1——————————- INT 92 - Da Vinci eMail Dispatcher INTERFACE

AH = E1h
AL = function
BX = stack count (number of words to push)
CX:DX -> stack data (in word-reversed order ready to push)

Return: AX = status

    0001h success
    FF97h "ERS_NOT_AVAILABLE"
    FF99h "ERS_TOO_MANY_NAMES"
    FF9Ah "ERS_BAD_NAME_PASSWORD"
    FFE3h "ERS_NAME_NOT_FOUND"
    FFF8h "ERS_USE_STRING" (call NetGetError to get error string)
    FFFFh "ERS_NO_SUCH_FILE"

Note: preserves BP, DS, SI, DI; other registers may be destroyed ———-92E100BX000A———————– INT 92 - Da Vinci eMail Dispatcher - “NetInitStart”

AX = E100h
BX = 000Ah
CX:DX -> parameter block (see below)

Return: AX = 0001h success Note: this function is used to initialize the dispatcher SeeAlso: AX=E101h,AX=E103h

Format of parameter block: Offset Size Description 00h WORD segment of ??? 02h WORD offset of ??? 04h WORD high part of long ??? 06h WORD low part of long ??? 08h WORD high part of long ??? 0Ah WORD low part of long ??? 0Ch WORD high part of long ??? 0Eh WORD low part of long ??? 10h WORD high part of long ??? 12h WORD low part of long ??? ———-92E101BX0000———————– INT 92 - Da Vinci eMail Dispatcher - “NetInitCheck”

AX = E101h
BX = 0000h
CX:DX ignored

Return: AX = 0001h success SeeAlso: AX=E100h ———-92E102BX0000———————– INT 92 - Da Vinci eMail Dispatcher - “NetCheckDriver”

AX = E102h
BX = 0000h
CX:DX ignored

Return: AX = 0001h success Note: this function is used to determine if the dispatcher is loaded SeeAlso: AX=E10Bh,AX=E180h ———-92E103BX0000———————– INT 92 - Da Vinci eMail Dispatcher - “NetTerminate”

AX = E103h
BX = 0000h
CX:DX ignored

Return: AX = status (see AH=E1h) SeeAlso: AX=E100h ———-92E104BX0006———————– INT 92 - Da Vinci eMail Dispatcher - “NetWhereIs”

AX = E104h
BX = 0006h
CX:DX -> parameter block (see below)

Return: AX = status (see AH=E1h) Note: this function is used to verify node address for usernames

Format of parameter block: Offset Size Description 00h WORD segment of node address buffer 02h WORD offset of node address buffer 04h WORD segment of uppercase username 06h WORD offset of uppercase username 08h WORD segment of “DVSEMAIL” 0Ah WORD offset of “DVSEMAIL” ———-92E105BX0007———————– INT 92 - Da Vinci eMail Dispatcher - “NetOpen”

AX = E105h
BX = 0007h
CX:DX -> parameter block (see below)

Return: AX = 0000h Error

AX = handle

Note: this function is used to open a submission channel SeeAlso: AX=E10Ah

Format of parameter block: Offset Size Description 00h WORD operation (1 = read, 2 = write) 02h WORD segment of uppercase To: username 04h WORD offset of uppercase To: username 06h WORD segment of “DVSEMAIL” 08h WORD offset of “DVSEMAIL” 0Ah WORD segment of node address 0Ch WORD offset of node address ———-92E106BX0004———————– INT 92 - Da Vinci eMail Dispatcher - “NetRead”

AX = E106h
BX = 0004h
CX:DX -> parameter block

Return: AX = 0001h SeeAlso: AX=E108h ———-92E107BX0002———————– INT 92 - Da Vinci eMail Dispatcher - “NetGetError”

AX = E107h
BX = 0002h
CX:DX -> parameter block

Return: AX = 0001h ———-92E108BX0004———————– INT 92 - Da Vinci eMail Dispatcher - “NetWrite”

AX = E108h
BX = 0004h
CX:DX -> parameter block (see below)

Return: AX = amount written Note: this function is used to write transactions to the dispatcher.

  The command block is written first and then another call is used
  to write the associated data.

SeeAlso: AX=E106h

Format of parameter block: Offset Size Description 00h WORD buffer count 02h WORD segment of command buffer 04h WORD offset of command buffer 06h WORD handle from NetOpen

Format of command buffer: Offset Size Description 00h BYTE command

	21h '!' Protocol commands for remote control
	41h 'A' Authorization protocol element
	42h 'B' Return(back) routing information
	    Associated data is the From: username
	43h 'C' Carbon Copy list
	    Associated data is a comma delimitted list of usernames
	44h 'D' Distribution list
	    Associated data is a comma delimitted list of usernames
	45h 'E' Mail end marker
	    No associated data
	48h 'H' Mail message header
	    Associated data is a message header buffer
	4Dh 'M' Mail message
	    Associated data is the body of the message
	4Fh 'O' Object
	50h 'P' Paperclip attachment
	52h 'R' Routing information
	    Associated data is the To: username
	53h 'S' Subject
	    Associated data is the subject of the message
	54h 'T' Trail of Reply/Forwards

01h BYTE subcommand 02h DWORD length of associated data

Format of message header buffer: Offset Size Description 00h 30 BYTEs subject line 1Eh 24 BYTEs To 36h 24 BYTEs From 4Eh DWORD Time

	BYTE	0
	BYTE	hour
	BYTE	minute
	BYTE	second

52h DWORD Date

	BYTE	0
	BYTE	year
	BYTE	month
	BYTE	day

56h DWORD serial number (0L) 5Ah WORD mail types

	bit 7	blind carbon copy
	bit 6	carbon copy
	bit 5	priority
	bit 4	confidential
	bit 3	certified
	bit 2	bulk
	bits 1-0 class (first, second, third, bulk)

5Ch WORD special types (0) ———-92E109BX0001———————– INT 92 - Da Vinci eMail Dispatcher - “NetErrorFix” (UNUSED)

AX = E109h
BX = 0001h
CX:DX -> ???

Return: AX = FF97h (ERS_NOT_AVAILABLE) ———-92E10ABX0001———————– INT 92 - Da Vinci eMail Dispatcher - “NetClose”

AX = E10Ah
BX = 0001h
CX:DX -> parameter block (see below)

Return: AX = 0001h Note: this function is used to close a dispatcher handle SeeAlso: AX=E105h

Format of parameter block: Offset Size Description 00h WORD handle from NetOpen ———-92E10BBX0004———————– INT 92 - Da Vinci eMail Dispatcher - “NetCheckQueue”

AX = E10Bh
BX = 0004h
CX:DX -> parameter block (see below)

Return: AX = 0001h SeeAlso: AX=E102h,AX=E10Ch

Format of parameter block: Offset Size Description 00h WORD segment of 24 byte username buffer 02h WORD offset of 24 byte username buffer 04h WORD segment of 24 byte protocol buffer 06h WORD offset of 24 byte protocol buffer ———-92E10CBX0002———————– INT 92 - Da Vinci eMail Dispatcher - “NetReadQueue”

AX = E10Ch
BX = 0002h
CX:DX -> parameter block (see below)

Return: AX = 0001h SeeAlso: AX=E10Bh

Format of parameter block: Offset Size Description 00h WORD Segment of 128 byte node address buffer 02h WORD Offset of 128 byte node address buffer ———-92E10DBX0006———————– INT 92 - Da Vinci eMail Dispatcher - “NetSubmitName”

AX = E10Dh
BX = 0006h
CX:DX -> parameter block (see below)

Return: AX = status (see AH=E1h) Note: this function is used to verify username/password SeeAlso: AX=E10Eh

Format of parameter block: Offset Size Description 00h WORD segment of uppercase password string 02h WORD offset of uppercase password string 04h WORD segment of uppercase username string 06h WORD offset of uppercase username string 08h WORD segment of “DVSEMAIL” 0Ah WORD offset of “DVSEMAIL” ———-92E10EBX0004———————– INT 92 - Da Vinci eMail Dispatcher - “NetRemoveName”

AX = E10Eh
BX = 0004h
CX:DX -> parameter block (see below)

Return: AX = 0001h Note: this function is used to remove a username SeeAlso: AX=E10Dh

Format of parameter block: Offset Type Description 00h WORD segment of uppercase username 02h WORD offset of uppercase username 04h WORD segment of “DVSEMAIL” 06h WORD offset of “DVSEMAIL” ———-92E10FBX0000———————– INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY

AX = E10Fh
BX = 0000h
CX:DX ignored

Return: AX = 0001h ———-92E110BX0006———————– INT 92 - Da Vinci eMail Dispatcher - “NetGetAltRoute”

AX = E110h
BX = 0006h
CX:DX -> ???

Return: AX = 0001h SeeAlso: AX=E111h,AX=E113h ———-92E111BX0004———————– INT 92 - Da Vinci eMail Dispatcher - “NetDeleteAltRoutes”

AX = E111h
BX = 0004h
CX:DX -> ???

Return: AX = 0001h SeeAlso: AX=E110h,AX=E113h ———-92E112BX0008———————– INT 92 - Da Vinci eMail Dispatcher - “NetChangePassword”

AX = E112h
BX = 0008h
CX:DX -> ???

Return: AX = 0001h ———-92E113BX0008———————– INT 92 - Da Vinci eMail Dispatcher - “NetSetAltRoute”

AX = E113h
BX = 0008h
CX:DX -> ???

Return: AX = 0001h SeeAlso: AX=E110h,AX=E111h ———-92E175—————————– INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR

AX = E175h

Return: AX = 0012h

BX = PSP

———-92E180—————————– INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK

AX = E180h

Return: AX = 0012h if installed

ES:DX -> '$'-terminated driver information string

SeeAlso: AX=E102h ———-93——————————— INT 93 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-93——————————— INT 93 - IBM TOKEN RING ADAPTER - ??? ———-94——————————— INT 94 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-95——————————— INT 95 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-95——————————— INT 95 - APL*PLUS/PC - DETERMINE R= SPACE Note: use only when the R= option is invoked on entering APL ———-96——————————— INT 96 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-97——————————— INT 97 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-98——————————— INT 98 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-99——————————— INT 99 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-9A——————————— INT 9A - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-9B——————————— INT 9B - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-9C——————————— INT 9C - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-9D——————————— INT 9D - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-9E——————————— INT 9E - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-9F——————————— INT 9F - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-A0——————————— INT A0 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-A0——————————— INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE SeeAlso: INT 59 ———-A1——————————— INT A1 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-A2——————————— INT A2 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-A3——————————— INT A3 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-A4——————————— INT A4 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-A4——————————— INT A4 U - Right Hand Man API

function number in AH

Note: Right-Hand Man is a TSR desk-top utility, and only hooks this interrupt

while popped up

———-A5——————————— INT A5 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-A6——————————— INT A6 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-A7——————————— INT A7 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-A8——————————— INT A8 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-A9——————————— INT A9 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-AA——————————— INT AA - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-AB——————————— INT AB - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-AC——————————— INT AC - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-AD——————————— INT AD - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-AE——————————— INT AE - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-AF——————————— INT AF - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-B0——————————— INT B0 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-B1——————————— INT B1 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-B2——————————— INT B2 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-B3——————————— INT B3 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-B370——————————- INT B3 - ZIPKEY - GET VERSION

AH = 70h

Return: AH = major version

AL = minor version
CL = number of states and territories in current database
DH = year of current database - 1900
DL = month of current database's file date

Return: AX destroyed Notes: if installed, the string “ZIPKEY” is present at offset 75h in the

  interrupt handler's segment, and the byte at 7Bh contains the API
  version number (00h for v1.x, 01h for v2.0)
ZIPKEY is a resident ZIPCODE database by Eric Isaacson

———-B371——————————- INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE

AH = 71h
BX = abbreviation, in either case (first letter in BL)

Return: CF set on error

    AL = FFh
CF clear if successful
    AL = ZIPKEY state code

SeeAlso: AH=72h ———-B372——————————- INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION

AH = 72h
BL = ZIPKEY state code

Return: CF set on error

    AX destroyed
CF clear if successful
    AX = abbreviation, in upper case

SeeAlso: AH=71h,AH=73h ———-B373——————————- INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME

AH = 73h
BL = ZIPKEY state code
ES:DI -> buffer for name

Return: CF set on error

    AX destroyed
CF clear if successful
    ES:DI points one byte beyond end of name

SeeAlso: AH=72h ———-B374——————————- INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS

AH = 74h
DX = zipcode region (0-999)
CH = last two digits of zipcode (0-99)
ES:DI -> buffer

Return: CF set on error

    AX destroyed
CF clear if successful
    ES:DI points one byte beyond end of digit string

———-B375——————————- INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE

AH = 75h
DX = zipcode region (0-999)
CH = last two digits of zipcode (0-99)

Return: CF set on error (zipcode not found)

    AL = suggested state code, FFh if none
CF clear if successful
    AL = ZIPKEY state code
    BX = area code (v2.0+)

SeeAlso: AH=76h,AH=79h ———-B376——————————- INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE

AH = 76h
DX = zipcode region (0-999)
CH = last two digits of zipcode (0-99)
ES:DI -> buffer for name

Return: CF set on error

    AL = suggested state code, FFh if none
    ES:DI buffer filled with suggested city name
CF clear if successful
    AL = ZIPKEY state code
    BX = area code (v2.0+)
    ES:DI points one byte beyond end of name

SeeAlso: AH=75h,AH=78h ———-B377——————————- INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE

AH = 77h
DX = zipcode region (0-999)
CH = last two digits of zipcode (0-99)
BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key

Return: CF set on error

    AX destroyed
CF clear if successful	
    zipcode specification as defined by the BX keystroke is placed in
      keyboard buffer, as if the user had popped up ZIPKEY and exited
      by pressing the key specified by BX

———-B378——————————- INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY

AH = 78h
BL = ZIPKEY state code
DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix

Return: BH = number of matching entries (set to 51 if more than 50)

DX = zipcode region of first match (0-999)
CL = last two digits of first zipcode in the range (0-99)
CH = last two digits of last zipcode in the range (0-99)
AX destroyed

SeeAlso: AH=79h,AH=7Ah ———-B379——————————- INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY

AH = 79h
BL = ZIPKEY state code of first state to search
DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix

Return: AL = ZIPKEY state code of first matching state

BH = number of matching entries (set to 51 if more than 50)
DX = zipcode region of first match (0-999)
CL = last two digits of first zipcode in first range (0-99)
CH = last two digits of last zipcode in first range (0-99)

Note: to find all matching cities, repeat search with BL set to one more than

  the returned AL

SeeAlso: AH=78h,AH=7Ah ———-B37A——————————- INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP

AH = 7Ah
BL = case number (0 to one less than value returned in BH by lookup)

Return: AL = ZIPKEY state code

DX = zipcode region (0-999)
CL = last two digits of first zipcode in the range (0-99)
CH = last two digits of last zipcode in the range (0-99)

SeeAlso: AH=78h,AH=79h ———-B37B——————————- INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT

AH = 7Bh

Return: BL = maximum number of characters for a city name

BH = ZIPKEY state code for last city-name search
    FFh if none
CX:DX = internal code identifying last city search
AX destroyed

SeeAlso: AH=7Ch ———-B37C——————————- INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT

AH = 7Ch
BL = maximum number of characters for a city name
BH = ZIPKEY state code for last city-name search
    FFh if none
CX:DX = internal code returned by AH=7Bh

Return: CF set on error

CF clear if successful
AX destroyed

SeeAlso: AH=7Bh ———-B37D——————————- INT B3 - ZIPKEY - REQUEST POP UP

AH = 7Dh
BL = index number to simulate pressing a hotkey
    FFh for immediate popup with no playback on return

Return: CF set on error

    AL = FDh already busy with another request
       = FEh illegal function
CF clear if successful
    AX destroyed
    window popped up and was closed by the user

———-B37E——————————- INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION

AH = 7Eh
DX = zipcode region (0-999)
ES:DI -> buffer for name

Return: CF set on error

    AL = FFh region does not exist
CF clear if successful
    AL = ZIPKEY state code
    ES:DI points one byte beyond end of name

———-B37F——————————- INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS

AH = 7Fh
BL = function
    00h turn off hotkeys
    01h turn on hotkeys
    02h return hotkey status
    03h toggle hotkey status

Return: AL = hotkey status

    00h off
    01h on

———-B380——————————- INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE

AH = 80h
BX = telephone area code (decimal)

Return: CF clear if successful

    AL = ZIPKEY state code
    DX = first ZIP region for state (03E8h if Canada)
    CX = number of ZIP regions in state
CF set on error
    AL = FFh
    DX = 03E9h

———-B4——————————— INT B4 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-B4——————————— INT B4 - STACKMAN - REQUEST NEW STACK Return: SS:SP → new stack Note: the installation check consists of testing for the string “STACKXXX” at

  offset 0Ah from the interrupt handler

SeeAlso: INT 2F/AX=C9FFh,INT B5”STACKMAN“ ———-B5——————————— INT B5 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-B5——————————— INT B5 - STACKMAN - RESTORE ORIGINAL STACK

SS:SP -> stack returned by INT B4

Return: SS:SP restored to value before INT B4 SeeAlso: INT 2F/AX=C9FFh,INT B4”STACKMAN“ ———-B6——————————— INT B6 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-B7——————————— INT B7 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-B8——————————— INT B8 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-B9——————————— INT B9 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-BA——————————— INT BA - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-BB——————————— INT BB - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-BC——————————— INT BC - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-BD——————————— INT BD - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-BE——————————— INT BE - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-BE——————————— INT BE - DESQview/X - ??? Note: points at an IRET SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63”DESQview“ ———-BF——————————— INT BF - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-C0——————————— INT C0 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-C1——————————— INT C1 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-C2——————————— INT C2 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-C3——————————— INT C3 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-C4——————————— INT C4 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-C5——————————— INT C5 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-C6——————————— INT C6 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-C6——————————— INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86 Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete

  the older interrupts

SeeAlso: INT 86”APL“ ———-C7——————————— INT C7 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-C7——————————— INT C7 - APL*PLUS/PC - ??? Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete

  the older interrupts

SeeAlso: INT 87”APL“ ———-C8——————————— INT C8 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-C8——————————— INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88 Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete

  the older interrupts

SeeAlso: INT 88”APL“ ———-C9——————————— INT C9 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-C9——————————— INT C9 - APL*PLUS/PC - ??? Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete

  the older interrupts

SeeAlso: INT 89”APL“ ———-CA——————————— INT CA - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-CA——————————— INT CA - APL*PLUS/PC - PRINT SCREEN Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete

  the older interrupts

SeeAlso: INT 8A”APL“ ———-CB——————————— INT CB - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-CB——————————— INT CB - APL*PLUS/PC - BEEP Notes: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete

  the older interrupts
same as printing a ^G via INT 21/AH=02h

SeeAlso: INT 8B”APL“ ———-CC——————————— INT CC - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-CC——————————— INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY

AX = flag
    0000h do not save display attributes
    0001h save attributes

Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete

  the older interrupts

SeeAlso: INT 8C”APL“ ———-CD——————————— INT CD - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-CD——————————— INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-CE——————————— INT CE - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-CE——————————— INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-CF——————————— INT CF - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-CF——————————— INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION SeeAlso: INT E0”APL“ ———-D0——————————— INT D0 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-D0——————————— INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES


INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR Notes: NJFRERAM is a resident free-memory display utility by Mike “Nifty

  James" Blaszczak
if NJFRERAM is installed, this vector points at the signature "NJ"

———-D1——————————— INT D1 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-D1——————————— INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-D2——————————— INT D2 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-D2——————————— INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-D3——————————— INT D3 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-D3——————————— INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-D4——————————— INT D4 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-D4——————————— INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-D4——————————— INT D4 - PC-MOS/386 - API ———-D5——————————— INT D5 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-D5——————————— INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-D6——————————— INT D6 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-D6——————————— INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-D7——————————— INT D7 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-D7——————————— INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-D8——————————— INT D8 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-D8——————————— INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-D9——————————— INT D9 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-D9——————————— INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-DA——————————— INT DA - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-DA——————————— INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-DB——————————— INT DB - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-DB——————————— INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-DC——————————— INT DC - PC/370 v4.1- - API SeeAlso: INT 60”PC/370” ———-DC——————————— INT DC - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-DC——————————— INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES ———-DD——————————— INT DD - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-DD——————————— INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER

BX = where to place keystrokes
    FFFFh insert before current buffer contents
    0000h replace current contents
    0001h insert after current contents
CX = number of keystroke events to insert
ES:SI -> data to be placed into buffer (list of WORD key codes)
    4000h + N = normal ASCII keystroke N (N = 00h to FFh)
    4100h + N = extended ASCII keystroke N (N = 03h to 84h)

SeeAlso: INT 16/AH=05h ———-DE——————————— INT DE - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-DE——————————— INT DE - APL*PLUS/PC - ??? Note: appears to be the same as INT 16 ———-DF——————————— INT DF - Victor 9000 - SuperBIOS ———-DF——————————— INT DF - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-DF——————————— INT DF - APL*PLUS/PC - SAME AS INT 10 SeeAlso: INT 10 ———-E0——————————— INT E0 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-E0——————————— INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION SeeAlso: INT CF“APL” ———-E0——————————— INT E0 - VIRUS - “Micro-128” - ??? Note: Micro-128 also overwrites the upper half of the interrupt table SeeAlso: INT 70“VIRUS” ———-E0——————————— INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS

CL = function number
DS,DX = parameters

Return: as appropriate for function Note: several functions are covered in more detail in following entries SeeAlso: INT 21/AX=4459h

Values for function number: 00h terminate calling process (see also INT 21/AH=00h) 02h write character to default console (see also INT 21/AH=02h) 03h read character from default AUX (see also INT 21/AH=03h) 05h write character to default list device (see also INT 21/AH=05h) 06h perform raw I/O on default console (see also INT 21/AH=06h) 07h return default AUX input status 08h return default AUX output status 09h write string to default console (see also INT 21/AH=09h) 0Ah read string from default console (see also INT 21/AH=0Ah) 0Bh return default console input status (see also INT 21/AH=0Bh) 0Ch get BDOS release ID 0Dh reset all disk drives (see also INT 21/AH=0Dh) 0Eh set default drive (see also INT 21/AH=0Eh) 0Fh open file via FCB (see also INT 21/AH=0Fh) 10h close file via FCB (see also INT 21/AH=10h) 11h search for first matching file with FCB (see also INT 21/AH=11h) 12h search for next matching file with FCB (see also INT 21/AH=12h) 13h delete file via FCB (see also INT 21/AH=13h) 14h sequential read via FCB (see also INT 21/AH=14h) 15h sequential write via FCB (see also INT 21/AH=15h) 16h create file via FCB (see also INT 21/AH=16h) 17h rename file via FCB (see also INT 21/AH=17h) 18h get bit map of logged drives 19h get default drive (see also INT 21/AH=19h) 1Ah set DMA address offset 1Bh get default disk allocation vector (see also INT 21/AH=1Bh) 1Ch set default drive to read-only 1Dh get bit map of read-only drives 1Eh set file attributes via FCB 1Fh get address of disk parameter block (see also INT 21/AH=1Fh) 20h get/set default user number 21h read random record via FCB (see also INT 21/AH=21h) 22h write random record via FCB (see also INT 21/AH=22h) 23h compute file size with FCB (see also INT 21/AH=23h) 24h get FCB random record number (see also INT 21/AH=24h) 25h reset specified drives 26h access specified drives 27h free specified drives 28h write random with FCB, zero fill (see also also INT 21/AH=28h) 2Ah lock records in FCB file (see also INT 21/AH=5Ch) 2Bh unlock records in FCB file (see also INT 21/AH=5Ch) 2Ch set BDOS multisector count 2Dh set BDOS error mode 2Eh get free space on disk 2Fh load, initialize, and jump to process 30h flush write-deferred buffers 32h call BIOS character routine 33h set DMA address segment 34h get DMA buffer address 35h CP/M-86 allocate maximum memory 36h allocate maximum memory segment absolute 37h CP/M-86 allocate memory segment (see also INT 21/AH=48h) 38h allocate memory segment absolute 39h CP/M-86 free specified memory segment (see also INT 21/AH=49h) 3Ah CP/M-86 free all memory 3Bh load .CMD file into memory 40h (DR-NET) log on a server 41h (DR-NET) log off a server 42h (DR-NET) send a message 43h (DR-NET) receive a message 44h (DR-NET) get network status 45h (DR-NET) get requestor configuration table 46h (DR-NET) set compatibility attributes 47h (DR-NET) get server configuration table 48h (DR-NET) set network error mode 49h (DR-NET) attach network 4Ah (DR-NET) detach network 4Bh (DR-NET) set default password 4Ch (DR-NET) get-set long timeout 4Dh (DR-NET) get parameter table 50h (DR-NET) get network information 53h get current time (see also INT 21/AH=2Ch) 54h set current time (see also INT 21/AH=2Dh) 55h get binary system date (see also INT 21/AH=2Ah) 56h set system date (see also INT 21/AH=2Bh) 57h allocate system flag 58h deallocate system flag 59h reserve memory in global area 5Ah lock physical drive 5Bh unlock physical drive 5Ch search path for executable file 5Dh load and execute command (see also INT 21/AH=4Bh) 5Eh get/set process exit code 5Fh set country information 60h get country information 63h truncate FCB file (see also INT 21/AH=28h) 64h create/update directory label 65h get directory label 66h get FCB date stamp and password mode 67h write extended FCB 68h set system date and time 69h get system date and time in binary 6Ah establish password for file access 6Bh get OS serial number 6Dh get/set console mode 6Eh get/set string delimiter 6Fh write block to default console 70h write block to default list device 71h execute DOS-compatible function 74h set FCB time and date stamps 80h allocate memory 82h deallocate memory 83h poll I/O device 84h wait on system flag 85h set system flag 86h create message queue 87h open message queue 88h delete message queue 89h read from message queue 8Ah conditionally read from message queue 8Bh write to message queue 8Ch conditionally write to message queue 8Dh delay calling process 8Eh call process dispatcher 8Fh terminate calling process 90h create a process 91h set calling process' priority 92h attach to default console 93h detach from default console 95h assign default console to process 96h interpret and execute commandline 97h resident procedure library 98h parse ASCII string into FCB (see also INT 21/AH=29h) 99h return default console 9Ah get address of system data 9Bh get system time and date 9Ch return calling process' descriptor 9Dh terminate process by name or PD address 9Eh attach to default list device 9Fh detach from default list device A0h select default list device A1h conditionally attach to default list device A2h conditionally attach to default console A3h get OS version number A4h get default list device A5h attach to default AUX A6h detach from default AUX A7h conditionally attach to default AUX A8h set default AUX A9h return default AUX ACh read block from default AUX B0h configure default AUX B1h get/set device control parameters B2h send Break through default AUX B3h allocate physical memory B4h free physical memory B5h map physical memory B6h nondestructive message queue read B7h timed wait on system flag B8h get/set I/O port mapping B9h set list device timeout BAh set AUX timeout value BBh execute XIOS service BDh (DR Multiuser DOS) delay FFh return 80386 to native mode

DR Multiuser DOS Error Return Codes: 00h no error 01h system call not implmented 02h illegal system call number 03h cannot find memory 04h illegal flag number 05h flag overrun 06h flag underrun 07h no unused Queue Descriptors 08h no free queue buffer 09h cannot find queue 0Ah queue in use 0Ch no free Process Descriptors 0Dh no queue access 0Eh empty queue 0Fh full queue 10h CLI queue missing 11h no 8087 in system 12h no unused Memory Descriptors 13h illegal console number 14h no Process Descriptor match 15h no console match 16h no CLI process 17h illegal disk number 18h illegal filename 19h illegal filetype 1Ah character not ready 1Bh illegal Memory Descriptor 1Ch bad return from BDOS load 1Dh bad return from BDOS read 1Eh bad return from BDOS open 1Fh null command 20h not owner of resource 21h no CSEG in load file 22h process Descriptor exists on Thread Root 23h could not terminate process 24h cannot attach to process 25h illegal list device number 26h illegal password 28h external termination occurred 29h fixup error upon load 2Ah flag set ignored 2Bh illegal auxilliary device number ———-E0—-CL03————————- INT E0 - DR Multiuser DOS - “A_READ” - READ CHARACTER FROM AUX DEVICE

CL = 03h

Return: AL = ASCII character Notes: A_READ reads the next 8-bit character from the logical auxilliary

  input device (AUXn:); control is not returned to the calling
  process until a character has been read. 
if another process owns AUX, this call blocks until the device becomes
  available

SeeAlso: INT 21/AH=03h,INT E0/CL=04h,INT E0/CL=07h,INT E0/CL=A5h,INT E0/CL=ACh ———-E0—-CL04————————- INT E0 - DR Multiuser DOS - “A_WRITE” - WRITE CHARACTER TO AUX DEVICE

CL = 04h
DL = ASCII character

Return: nothing Note: if another process owns AUX, this call blocks until the device becomes

  available

SeeAlso: INT 21/AH=04h,INT E0/CL=03h,INT E0/CL=08h,INT E0/CL=A5h,INT E0/CL=ADh ———-E0—-CL07————————- INT E0 - DR Multiuser DOS - “A_STATIN” - GET INPUT STATUS OF AUX DEVICE

CL = 07h

Return: AL = status

    00h not ready
    FFh character available

SeeAlso: INT E0/CL=03h,INT E0/CL=08h ———-E0—-CL08————————- INT E0 - DR Multiuser DOS - “A_STATOUT” - GET OUTPUT STATUS OF AUX DEVICE

CL = 08h

Return: AL = status

    00h not ready
    FFh ready for output

SeeAlso: INT E0/CL=04h,INT E0/CL=07h ———-E0—-CL59————————- INT E0 - ConcCP/M,DR Multiuser DOS - “S_MEMORY” - RESERVE MEMORY IN GLOBAL AREA

CL = 59h
DX = size in bytes

Return: AX = FFFFh if failed

AX = other if successful
    ES:BX -> reserved memory

———-E0—-CL86————————- INT E0 - ConcCP/M,DR Multiuser DOS - “Q_MAKE” - CREATE MESSAGE QUEUE

CL = 86h
DS:DX -> queue descriptor (see below)

Return: AX = status

    0000h success
    FFFFh failure
CX = error code

SeeAlso: INT E0/CL=87h

Format of queue descriptor: Offset Size Description 00h 2 WORDs internal use, initialize to zeros 04h WORD flags 06h 8 BYTEs queue name 0Eh WORD length of message 10h WORD number of messages 12h 4 WORDs internal use, initialize to zeros 1Ah WORD offset in system area of buffer for messages ———-E0—-CL87————————- INT E0 - ConcCP/M,DR Multiuser DOS - “Q_OPEN” - OPEN MESSAGE QUEUE

CL = 87h
DS:DX -> queue parameter block (see below)

Return: AX = status

    0000h success
    FFFFh failure
CX = error code

SeeAlso: INT E0/CL=86h,INT E0/CL=89h

Format of queue parameter block: Offset Size Description 00h WORD internal use, initialize to zero 02h WORD queue ID (set by INT E0/CL=87h) 04h WORD internal use, initialize to zero 06h WORD offset of queue message buffer 08h 8 BYTEs queue name ———-E0—-CL89————————- INT E0 - ConcCP/M,DR Multiuser DOS - “Q_READ” - READ MESSAGE QUEUE

CL = 89h
DS:DX -> queue parameter block (see INT E0/CL=87h)

Return: AX = status

    0000h success
    FFFFh failure
CX = error code

SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh ———-E0—-CL8A————————- INT E0 - ConcCP/M,DR Multiuser DOS - “Q_CREAD” - CONDITIONALLY READ MSG QUEUE

CL = 8Ah
DS:DX -> queue parameter block (see INT E0/CL=87h)

Return: AX = status

    0000h success
    FFFFh failure
CX = error code

SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch ———-E0—-CL8B————————- INT E0 - ConcCP/M,DR Multiuser DOS - “Q_WRITE” - WRITE MESSAGE QUEUE

CL = 8Bh
DS:DX -> queue parameter block (see INT E0/CL=87h)

Return: AX = status

    0000h success
    FFFFh failure
CX = error code

SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch ———-E0—-CL8B————————- INT E0 - ConcCP/M,DR Multiuser DOS - “Q_CWRITE” - CONDITIONALLY WRITE MSG QUEUE

CL = 8Bh
DS:DX -> queue parameter block (see INT E0/CL=87h)

Return: AX = status

    0000h success
    FFFFh failure
CX = error code

SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh ———-E0—-CL8E————————- INT E0 - ConcCP/M,DR Multiuser DOS - “P_DISPATCH” - CALL DISPATCHER

CL = 8Eh
DX = FFFFh (optional) to force dispatch

Return: nothing Note: if DX=FFFFh, a dispatch is forced even if no other process is ready SeeAlso: INT E0/CL=91h ———-E0—-CL91————————- INT E0 - ConcCP/M,DR Multiuser DOS - “P_PRIORITY” - SET PROCESS PRIORITY

CL = 91h
DL = new priority (00h highest to FFh lowest)

Note: sets priority of calling process; transient processes are initialized

  to priority C8h

SeeAlso: INT E0/CL=8Eh ———-E0—-CL93————————- INT E0 - ConcCP/M,DR Multiuser DOS - “C_DETACH” - DETACH FROM DEFAULT CONSOLE

CL = 93h

Return: AX = status

    0000h successfully detached
    FFFFh detach failed

———-E0—-CLA5————————- INT E0 - DR Multiuser DOS - “A_ATTACH” - ATTACH AUX DEVICE

CL = A5h

Desc: attaches the default auxiliary device to the calling process unless

  it is already attached to another process, in which case the call
  blocks until the device becomes available

Note: this call should be used before attempting to read or write from

  the AUX device; however, the I/O calls internally call this function
  to ensure device ownership

SeeAlso: INT E0/CL=03h,INT E0/CL=04h,INT E0/CL=A6h,INT E0/CL=A7h,INT E0/CL=A8h SeeAlso: INT E0/CL=ACh,INT E0/CL=ADh,INT E0/CL=B0h ———-E0—-CLA6————————- INT E0 - DR Multiuser DOS - “A_DETACH” - DETACH FROM AUX DEVICE

CL = A6h

Return: AX = status

    0000h successfully detached
    FFFFh detach failed
CX = error code

SeeAlso: INT E0/CL=A5h,INT E0/CL=A7h ———-E0—-CLA7————————- INT E0 - DR Multiuser DOS - “A_CATTACH” - CONDITIONALLY ATTACH TO AUX DEVICE

CL = A7h

Return: AX = status

    0000h attached
    FFFFh unable to attach

Desc: attaches the default auxiliary device to the calling process if it is

  available

Note: does not block if the device is already in use SeeAlso: INT E0/CL=A5h,INT E0/CL=A6h,INT E0/CL=A8h,INT E0/CL=B0h ———-E0—-CLA8————————- INT E0 - DR Multiuser DOS - “A_SET” - SET DEFAULT AUX DEVICE NUMBER

CL = A8h
DL = auxiliary device number

Return: AX = status

    0000h successful
    FFFFh failed
CX = error code

SeeAlso: INT E0/CL=A5h,INT E0/CL=A9h ———-E0—-CLA9————————- INT E0 - DR Multiuser DOS - “A_GET” - GET DEFAULT AUX DEVICE NUMBER

CL = A9h

Return: AL = current default auxiliary device number SeeAlso: INT E0/CL=A8h ———-E0—-CLAC————————- INT E0 - DR Multiuser DOS - “A_READBLK” - READ STRING FROM AUX DEVICE

CL = ACh
DS:DX -> character control block (CHCB) (see below)

Return: AX = number of characters read Desc: read characters from the default auxiliary (AUXn:) device into a buffer

  until the buffer is full or the device is no longer ready

Notes: if the device is initially not ready, blocks until at least one

  character has been read
if another process owns AUX, this call blocks until the device becomes
  available

SeeAlso: INT E0/CL=03h,INT E0/CL=A5h,INT E0/CL=ADh

Format of character control block (CHCB): Offset Size Description 00h DWORD pointer to character buffer 04h WORD length of character buffer ———-E0—-CLAD————————- INT E0 - DR Multiuser DOS - “A_WRITEBLK” - WRITE STRING TO AUX DEVICE

CL = ADh
DS:DX -> character control block (see INT E0/CL=ACh)

Return: AX = number of characters written Note: does not return until at least one character has been written SeeAlso: INT E0/CL=04h,INT E0/CL=A5h,INT E0/CL=ACh ———-E0—-CLB0————————- INT E0 - DR Multiuser DOS - “A_CONFIG” - GET/SET AUX DEVICE PARAMETERS

CL = B0h
DX:DX -> AUX device parameter block (see below)

Return: AX = status

    0000h successful
    	parameter block updated
    FFFFh failed
    	CX = error code

SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h

Format of AUX device parameter block: Offset Size Description 00h BYTE function (00h get, 01h set) 01h BYTE baud rate (see below) FFh = don't change/unknown 02h BYTE parity 00h none

	01h odd
	02h none
	03h even
	04h stick parity bit
	FFh don't change/unknown

03h BYTE stop bits (00h one, 01h 1.5, 02h two, FFh unknown/don't change) 04h BYTE data bits (05h-08h or FFh unknown/don't change) 05h BYTE handshake (00h none, 01h DTS/DSR, 02h RTS/CTS, 04h XON/XOFF, FFh unknown/don't change) 06h BYTE XON character, FFh unknown/don't change 07h BYTE XOFF character, FFh unknown/don't change

Values for baud rate: 00h = 50 baud 01h = 62.5 baud 02h = 75 baud 03h = 110 baud 04h = 134.5 baud 05h = 150 baud 06h = 200 baud 07h = 300 baud 08h = 600 baud 09h = 1200 baud 0Ah = 1800 baud 0Bh = 2000 baud 0Ch = 2400 baud 0Dh = 3600 baud 0Eh = 4800 baud 0Fh = 7200 baud 10h = 9600 baud 11h = 19200 baud 12h = 38400 baud 13h = 56000 baud 14h = 76800 baud 15h = 115200 baud ———-E0—-CLB1————————- INT E0 - DR Multiuser DOS - “A_CONTROL” - GET/SET AUX CONTROL PARAMETERS

CL = B1h
DS:DX -> AUX device control block (see below)

Return: AX = status

    0000h successful
	control block updated
    FFFFh failed
	CX = error code

SeeAlso: INT E0/CL=B0h,INT E0/CL=B2h

Format of AUX device control block: Offset Size Description 00h BYTE function (00h get, 01h set) 01h BYTE DTR state (00h low, 01h high, FFh unknown/don't change) 02h BYTE RTS state (00h low, 01h high, FFh unknown/don't change) 03h BYTE DSR state (00h low, 01h high, FFh unknown/don't change) 04h BYTE CTS state (00h low, 01h high, FFh unknown/don't change) 05h BYTE DCD state (00h low, 01h high, FFh unknown/don't change) 06h BYTE RI state (00h inactive, 01h active, FFh unknown/don't change) ———-E0—-CLB2————————- INT E0 - DR Multiuser DOS - “A_BREAK” - SEND BREAK TO AUX DEVICE

CL = B2h
DX = duration of break in system ticks (0001h-FFFFh)

Return: AX = status

    0000h successful
    	break signal completed
    FFFFh failed
        CX = error code

Note: if the AUX device is currently owned by another process, this call will

  block until the device becomes available

SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h ———-E0—-CLBD————————- INT E0 - DR Multiuser DOS - “P_DELAY” - DELAY EXECUTION

CL = BDh
DX = delay in system ticks

Return: after the delay elapses Notes: the length of a system tick is installation-dependent (typically

  1/50 or 1/60 second); the length may be determined by reading the
  TICKSPERSEC value from the system data segment
the actual delay before the process is rescheduled to run may be up to
  one tick longer than requested; the delay between rescheduling and
  actual execution cannot be predicted if higher-priority processes
  are awaiting a turn at the CPU

———-E1——————————— INT E1 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-E1——————————— INT E1 - PC Cluster Disk Server Information SeeAlso: INT E2 ———-E2——————————— INT E2 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-E2——————————— INT E2 - PC Cluster Program ———-E3——————————— INT E3 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-E40005—————————– INT E4 - Logitech Modula v2.0 - MonitorEntry

AX = 0005h
BX = priority

SeeAlso: AX=0006h ———-E40006—————————– INT E4 - Logitech Modula v2.0 - MonitorExit

AX = 0006h

SeeAlso: AX=0005h ———-E4——————————— INT E4 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-E5——————————— INT E5 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-E6——————————— INT E6 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-E7——————————— INT E7 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-E8——————————— INT E8 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-E9——————————— INT E9 - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-EA——————————— INT EA - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-EB——————————— INT EB - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-EC——————————— INT EC - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC

BASIC.COM/BASICA.COM do not restore vector on termination

———-EC——————————— INT EC - used by Alloy NTNX ———-EC——————————— INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR

AX = function number (0000h to 0140h)
STACK:	DWORD address to return to
	any arguments required by function

Return: STACK: return address popped, but otherwise unchanged Notes: this is the interface from applications to the runtime system by Exact

  Automatisering B.V. of the Netherlands.  By using this interrupt,
  it can provide DLL-style capabilities under MSDOS.
the interrupt handler removes the return address and flags placed on
  the stack by the INT EC, then jumps to the appropriate function

———-ED——————————— INT ED - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-EE——————————— INT EE - IBM ROM BASIC - used while in interpreter Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM

BASIC.COM/BASICA.COM do not restore vector on termination

———-EF——————————— INT EF - BASIC - ORIGINAL INT 09 VECTOR Note: BASIC.COM/BASICA.COM do not restore vector on termination SeeAlso: INT F0“BASIC” ———-EF—-CX0473———————– INT EF - GEM - INTERFACE

CX = 0473h
DS:DX -> GEM parameter block

———-F0——————————— INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR Note: BASICA.COM does not restore vector on termination SeeAlso: INT EF“BASIC” ———-F1——————————— INT F1 - reserved for user interrupt ———-F1——————————— INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH

DS:BX -> '$'-terminated text string

Note: SPEECH.COM is a resident text-to-speech converter by Douglas Sisco ———-F1——————————— INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM SeeAlso: INT F2“SPEECH” ———-F1——————————— INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS Return: AX:BX → data area Notes: AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1

  and COM2 in software
The installation check consists of testing for the following signature
  immediately preceding the interrupt handler: "JWBtvv" where 't' is
  either "A" for AQUEDUCT or "P" for PIPELINE and "vv" is a two-digit
  version number

———-F2——————————— INT F2 - reserved for user interrupt ———-F2——————————— INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM SeeAlso: INT F1“SPEECH” ———-F2——————————— INT F2 - ICCTSR 1.0 - ImageCapture COLOR Developer's Kit - API

AH = function
    01h power up
    02h power down
    03h set controls
    04h capture image
    05h display image
    06h read file
    07h write file
    08h write array
    09h read pixel
    0Ah write pixel
    0Bh check if VGA present
    0Ch set video mode
    0Dh check for keystroke
    0Eh delay
???

Return: ??? Note: ImageCapture is a product of International Computers SeeAlso: INT F3“ICCTSR” ———-F3——————————— INT F3 - reserved for user interrupt ———-F3——————————— INT F3 - SoundBlaster - POINTER TO ECHO VALUE Note: this is not a vector, but a pointer to a DWORD containing the echo

  value selected with SET-ECHO.EXE

SeeAlso: INT 2F/AX=FBFBh ———-F3——————————— INT F3 - ICCTSR 1.0 - HANDSHAKE ID VECTOR Note: ImageCapture is a product of International Computers SeeAlso: INT F2“ICCTSR” ———-F4——————————— INT F4 - reserved for user interrupt ———-F4——————————— INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK SeeAlso: INT 21/AH=EEh“DoubleDOS”,INT FE“DoubleDOS” ———-F5——————————— INT F5 - reserved for user interrupt ———-F5——————————— INT F5 - DoubleDOS - ??? ———-F6——————————— INT F6 - reserved for user interrupt ———-F6——————————— INT F6 - DoubleDOS - ??? ———-F7——————————— INT F7 - reserved for user interrupt ———-F7——————————— INT F7 - DoubleDOS - ??? ———-F700——————————- INT F7 - FSBBS 2.0 - CONFIGURATION RECORD

AH = 00h
AL = function
    00h get configuration record
	Return: DS:DX -> configuration record
    01h set configuration record
    02h get path for option
	DS:DX -> option name
	Return: DS:DX -> path
    03h determine whether configuration record set
	Return: AX = status
		    0000h set
		    0001h not yet set
    04h get link state
	Return: AX = state
		    0000h unlinked
		    0001h linked

Notes: this information is preliminary and still subject to change

all of the INT F7 calls for FSBBS are used for interprogram
  communication between the BBS kernel and the programs it spawns

SeeAlso: AH=01h ———-F701——————————- INT F7 - FSBBS 2.0 - USER RECORD

AH = 01h
AL = function
    00h get user record for user currently online
	Return: DS:DX -> user record
    01h set user record
	DS:DX -> user record

SeeAlso: AH=00h,AH=02h ———-F702——————————- INT F7 - FSBBS 2.0 - GET ACCOUNT NAME

AH = 02h

Return: DS:DX → 8-character blank-padded account name SeeAlso: AH=01h ———-F703——————————- INT F7 - FSBBS 2.0 - TERMINAL NUMBER

AH = 03h
AL = function
    00h get terminal index number
	Return: DX = index number
    01h set terminal index number
	DX = terminal index

———-F704——————————- INT F7 - FSBBS 2.0 - PASSDATA BUFFER

AH = 04h
AL = function
    00h get PassData buffer contents
	DS:DX -> buffer for PassData contents
    01h set PassData contents
	DS:DX -> buffer containing new PassData
	CH = length of data in buffer

———-F705——————————- INT F7 - FSBBS 2.0 - TIMER FUNCTIONS

AH = 05h
AL = function
    00h get time remaining
	Return: DX = number of minutes remaining
    01h get current time
	Return: DS:DX -> 8-character time string
    02h increment time
	DX = number of additional minutes
    03h decrement time
	DX = number of minutes

SeeAlso: AH=06h ———-F706——————————- INT F7 - FSBBS 2.0 - FUNCTION AVAILABILITY

AH = 06h
AL = function
    00h determine whether function is available
	DX = index of function
    01h set function availability
	DX = index of function
	???

SeeAlso: AH=05h,AH=07h ———-F707——————————- INT F7 - FSBBS 2.0 - DUMP FUNCTIONS

AH = 07h
AL = function
    00h get current dump mode
	Return: DL = mode
    01h set dump mode
	DL = mode

SeeAlso: AH=06h ———-F8——————————— INT F8 - TANDY??? - 100 HZ INTERRUPT SeeAlso: INT FA“USART” ———-F8——————————— INT F8 - DoubleDOS - ??? ———-F9——————————— INT F9 - reserved for user interrupt ———-F9——————————— INT F9 - DoubleDOS - ??? ———-FA——————————— INT FA - TANDY??? - SERIAL PORT USART INTERRUPT SeeAlso: INT F8“100 HZ”,INT FB“USART” ———-FA——————————— INT FA - DoubleDOS - TURN OFF TIMESHARING SeeAlso: INT 21/AH=EAh“DoubleDOS”,INT FB“DoubleDOS” ———-FB——————————— INT FB - TANDY??? - KEYBOARD USART RECEIVE INTERRUPT SeeAlso: INT FA“USART” ———-FB——————————— INT FB - DoubleDOS - TURN ON TIMESHARING SeeAlso: INT 21/AH=EBh“DoubleDOS”,INT FA“DoubleDOS” ———-FC——————————— INT FC - reserved for user interrupt ———-FC——————————— INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS Return: ES = segment of display buffer Note: the display buffer may be moved if multitasking is enabled SeeAlso: INT 21/AH=ECh“DoubleDOS”,INT FB“DoubleDOS” ———-FD——————————— INT FD - reserved for user interrupt ———-FD——————————— INT FD - DoubleDOS - ??? ———-FE——————————— INT FE - AT/XT286/PS50+ - destroyed by return from protected mode SeeAlso: INT FF“XT286” ———-FE——————————— INT FE - DoubleDOS - GIVE UP TIME

AL = number of 55ms time slices to give away

SeeAlso: INT 21/AH=EEh“DoubleDOS”,INT F4“DoubleDOS” ———-FE——————————— INT FE - Turbo Debugger 8086 v2.5+ - OVERLAY MANAGER SeeAlso: INT 3F ———-FF——————————— INT FF - AT/XT286/PS50+ - destroyed by return from protected mode SeeAlso: INT FE“XT286” ———-FF——————————— INT FF - Z100 - WARM BOOT SeeAlso: INT 40“Z100”