Category : Tutorials + Patches
Archive   : INTER43C.ZIP
Filename : INTERRUP.L

 
Output of file : INTERRUP.L contained in archive : INTER43C.ZIP
Interrupt List, part 12 of 12
This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
--------V-7F---------------------------------
INT 7F - Halo88 - API
BX = function number (see #2270)
additional parameters on stack
Return: ???
Program: Halo88 is a suite of graphics routines
Note: according to Stuart Kemp, the code appears to make no provisions for
chaining

(Table 2270)
Values for Halo88 API 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
--------N-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
--------S-7F---------------------------------
INT 7F - Telebit ACS SERIAL I/O
ES:SI-> parameter block (see #2271)
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
Index: installation check;Telebit ACS Serial I/O

Format of Telebit ACS parameter block:
Offset Size Description (Table 2271)
00h BYTE command (see #2272)
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 #2273)

(Table 2272)
Values for Telebit ACS 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

(Table 2273)
Values for Telebit ACS 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 gateway number/port already in use
15h invalid connection response
16h port invalid
17h incorrect version in server response
18h gateway number/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 use
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
--------N-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/AH=DEh/DL=00h.
SeeAlso: INT 21/AH=DEh/DL=04h
Index: installation check;non-dedicated NetWare server
--------S-7F---------------------------------
INT 7F U - YTERM - ???
SeeAlso: INT 7E"YTERM"
--------E-7F---------------------------------
INT 7F - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ7
Notes: this vector is overwritten when GO32 starts but is not restored by
early versions of the DOS extender
the newest versions of GO32 dynamically allocate the vectors used
for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
SeeAlso: INT 0F,INT 7E"GO32"
----------7F---------------------------------
INT 7F - Canon IXHND2 Scanner Interface
--------N-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
--------N-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
--------N-7F00-------------------------------
INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK AND WAIT
AH = 00h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see #2274)
AH = semaphore owner if status=02h
SeeAlso: AH=01h,AH=02h,AH=41h,INT 67/AH=00h

(Table 2274)
Values for Alloy function status:
00h successful
01h invalid function
02h semaphore already locked
03h unable to lock/unlock semaphore
04h semaphore space exhausted
05h host/target PC did not respond (NTNX)
--------N-7F00-------------------------------
INT 7F - G8BPQ - proposed addition - GET NODE/SWITCH VERSION AND DESCRIPTION
AH = 00h
ES:SI -> buffer for "USERS" text string
Return: AH = major version
AL = minor version
CX = length of returned string
Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
John Wiseman which allows a PC to act as a node in an AX.25 network
SeeAlso: AH=01h"G8BPQ",AH=09h"G8BPQ"
--------N-7F01-------------------------------
INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK
AH = 01h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see #2274)
AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=02h,AH=41h
--------V-7F01-------------------------------
INT 7F - TIGA Communications Driver v2.05 - GET ENTRY POINTS
AH = 01h
Return: BX = 1234h if installed
DX:AX -> array of FAR entry points
CH = driver major version
CL = driver minor version
Note: TIGACD 2.05 returns CF set on unrecognized functions in AX
SeeAlso: AX=1234h,AX=4321h
--------N-7F01-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - SET APPLICATION FLAGS AND MASK
AH = 01h
AL = stream number (01h-40h)
CL = new application flags
bit 7: monitored frames available via AH=0Bh"G8BPQ"
DL = new application mask
Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
John Wiseman which allows a PC to act as a node in an AX.25 network
Range: INT 00h to INT FFh, set in configuration file BPQCFG.TXT for v4.03+
(earlier versions were hard-wired for INT 7F)
SeeAlso: AH=00h"G8BPQ",AH=02h"G8BPQ",AH=0Bh"G8BPQ"
--------I-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 #2275)
Return: parameter control block updated
Note: the installation check for the Novell HLLAPI TSR is the signature
string "CXI" (for the company Novell bought) immediately prior to
the interrupt handler
SeeAlso: AX=0105h,AX=ABCDh

Format of HLLAPI parameter control block:
Offset Size Description (Table 2275)
00h 3 BYTEs signature = 'PCB'
03h BYTE function number (see #2276,#2277)
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 (see #2279)
0Dh WORD maximum length of control string (IBM)
unused (Rabbit)

(Table 2276)
Values for HLLAPI function number:
00h OEM function (Query system for Attachmate implementation)
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 (see #2278)
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
28h set cursor
29h start Close Intercept
2Ah query Close Intercept
2Bh stop Close Intercept
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
65h connect to Window Services
66h disconnect from Window Services
67h set/query window coordinates
68h set/query window status
69h change presentation space name
78h connect Structured Fields
79h disconnect Structured Fields
7Ah query size of communications buffer
7Bh allocate communications buffer
7Ch free communications buffer
7Dh get request completion state
7Eh read Structured Fields
7Fh write Structured Fields
FFh Get info on DCA implementation

(Table 2277)
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)

(Table 2278)
Values for HLLAPI Function 09h Session Parameters:
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 interruptable 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

(Table 2279)
Values for Windows HLLAPI return code:
00h successful
01h Presentation Space not connected/requested size unavailable
02h invalid function or parameter error/invalid block ID
03h file transfer complete
04h file transfer complete (segmented)/Presentation Space busy
05h inhibited or keyboard locked
06h data truncated
07h invalid Presentation Space position
08h operation not available
09h system error
0Ah blocking error
0Bh resource not available
0Ch session stopped
14h undefined key combination
15h OIA updated
16h Presentation Space updated
17h both Presentation Space and OIA updated
18h no such field
19h no keystrokes available
1Ah Presentation Space or Operator Information Area changed
1Bh file transfer aborted
1Ch zero-length field
1Eh cursor type invalid
1Fh keystroke overflow
20h another application is already connected
22h message sent to host cancelled
23h transmission from host cancelled
24h lost contact with host
25h function successful
26h function incomplete
27h a DDM session is already connected
28h disconnected, but asynchronous requests still pending
29h buffer already in use
2Ah no matching request found
12Dh invalid function number
12Eh file not found
131h access denied
134h out of memory
136h environment invalid
137h format invalid
270Eh (9998) invalid Presentation Space ID
270Fh (9999) invalid row or column code
---Windows HLLAPI extensions---
F000h asynchronous call already in progress
F001h invalid asynchronous task ID
F002h blocking call cancelled
F003h underlying subsystem not started
F004h unsupported application version
--------V-7F0105-----------------------------
INT 7F - IBM 8514/A Adapter Interface (HDILOAD.EXE)
AX = 0105h
Return: CF set on error
CF clear if successful
CX:DX -> array of FAR pointers to entry points (see #2280)
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, placing the FAR address of the function's
parameter block on the top of the stack
SeeAlso: AX=0104h,AX=0106h,AX=ABCDh

(Table 2280)
Values for HDILOAD function number: (do FAR call via entry_points+4*function)
08h HOPEN Open Adapter (see #2313)
09h HSMX Set Mix (see #2342)
10h HINT Interrupt (see #2308)
13h HLDPAL Load Palette (see #2309)
15h HBBW BitBLT Write Image Data (see #2295)
17h HBBR BitBLT Read Image Data (see #2296)
18h HBBCHN Chained Data Go (see #2294)
19h HBBC BitBLT Copy Data (see #2293)
1Dh HQMODE Get Current Mode (see #2319)
20h HRECT Fill Rectangle (see #2321)
22h HCLOSE Close Adapter and place in quiescent state (see #2301)
30h HINIT Initialize State (see #2307)
31h HSYNC Synchronize Adapter (see #2346)
39h HSPAL Save Palette (see #2343)
3Ah HRPAL Restore Palette (see #2324)
??? HSGQ Set Graphics Quality (see #2333)
??? HSCOORD Set Coordinate Type (see #2330)
??? HESC Escape, Terminate Processing (see #2306)
??? HSBCOL Set Background Color (see #2325)
??? HSBP Set Bit Plane Controls (see #2326)
??? HSCMP Set Color Comparison Register (see #2328)
??? HSCOL Set Color (see #2329)
??? HSHS Set Scissors (clipping rectangle) (see #2334)
??? HXLATE Assign Text Color (see #2347)
??? HQMODES Get Adapter Modes (see #2320)
??? HQDPS Get Drawing Process State Size (see #2318)
??? HQDFPAL Get Default Palette (see #2317)
??? HQCOORD Get Coordinate Type (see #2315)
??? HQCP Get Current Position (see #2316)
??? HSMODE Change Mode (see #2340)
??? HLINE Draw Line at Given Position (see #2310)
??? HCLINE Draw Line at Current Position (see #2300)
??? HRLINE Draw Line Relative from Given Position (see #2322)
??? HCRLINE Draw Line Relative at Current Position (see #2303)
??? HSLT Set Line Type (see #2337)
??? HSLW Set Line Width (see #2339)
??? HSLPC Save Line Pattern Count (see #2336)
??? HRLPC Restore Line Pattern Count (see #2323)
??? HCBBW BitBLT Write Image Data at Current Position (see #2297)
??? HBAR Begin Area (see #2292)
??? HEAR End Area (see #2304)
??? HSPATT Set Pattern (see #2344)
??? HSPATTO Set Pattern Reference Point (see #2345)
??? HEGS Erase Graphics Screen (see #2305)
??? HSCP Set Current Position (see #2331)
??? HMRK Set Marker (see #2312)
??? HCMRK Set Marker at Current Position (see #2302)
??? HSMARK Set Marker Shape (see #2341)
??? HSCS Set Character Set (see #2332)
??? HCHST Write Character String at Given Position (see #2299)
??? HCCHST Write Character String at Current Position (see #2298)
??? HSCELL Set Cell Size for Alphanumeric Text (see #2327)
??? ABLOCKMFI Write Character/Attribute Block MFI (see #2283)
??? ABLOCKCGA Write Character Block CGA (see #2281)
??? AERASE Erase Rectangle (see #2286)
??? ASCROLL Scroll Rectangle (see #2287)
??? ACURSOR Set Alphanumerics Cursor Position (see #2285)
??? ASCUR Set Alphanumeric Cursor Shape (see #2288)
??? ASFONT Set Font (see #2289)
??? AXLATE Assign Alphanumeric Color (see #2291)

Format of ABLOCKCGA parameter block:
Offset Size Description (Table 2281)
00h WORD 000Ah (length of following data)
02h WORD top-left coordinate of character block
04h WORD width of block
06h DWORD -> block of WORDs describing characters (see #2282)
0Ah BYTE length of block in characters
0Bh BYTE highlight attribute
bit 4: transparent background
bit 5: overstrike
bit 6: reverse video
bit 7: underscore
SeeAlso: #2283

Bitfields for one character in ABLOCKCGA character block:
Bit(s) Description (Table 2282)
3-0 foreground attribute
7-4 background attribute
15-8 character code

Format of ABLOCKMFI parameter block:
Offset Size Description (Table 2283)
00h WORD 0009h (length of following data)
02h WORD top-left coordinate of character block
04h WORD width of block
06h DWORD -> block of DWORDs describing characters (see #2284)
0Ah BYTE length of block in characters
SeeAlso: #2281

Bitfields for one character in ABLOCKMFI character block:
Bit(s) Description (Table 2284)
7-0 reserved
9-8 low two bits of font number
12 transparent background
13 overstrike
14 reverse video
15 underscore
19-16 foreground color attribute
23-20 background color attribute
31-24 character code

Format of ACURSOR parameter block:
Offset Size Description (Table 2285)
00h WORD 0002h (length of following data)
02h BYTE column (0-based)
03h BYTE row (0-based)
SeeAlso: #2288

Format of AERASE parameter block:
Offset Size Description (Table 2286)
00h WORD 0005h (length of following data)
02h BYTE left-most column (0-based)
03h BYTE top-most row (0-based)
04h BYTE rectangle's width in character cells
05h BYTE rectangle's height in character cells
06h BYTE background color (bits 7-4)
SeeAlso: #2287

Format of ASCROLL parameter block:
Offset Size Description (Table 2287)
00h WORD 0006h (length of following data)
02h BYTE left-most column (0-based) of source
03h BYTE top-most row (0-based) of source
04h BYTE rectangle's width in character cells
05h BYTE rectangle's height in character cells
06h BYTE left-most column (0-based) of destination
07h BYTE top-most row (0-based) of destination
SeeAlso: #2286

Format of ASCUR parameter block:
Offset Size Description (Table 2288)
00h WORD 0003h (length of following data)
02h BYTE cursor start line (00h = top of cell, FFh = keep current shape)
03h BYTE cursor stop line
04h BYTE cursor attribute
00h normal
01h hidden
02h left-arrow (requires start = 2 and stop = bottom of cell)
03h right-arrow (requires start = 2 and stop = bottom of cell)
Notes: no cursor is shown if the start line is greater than the stop line
the alphanumeric cursor is hidden after each mode change
SeeAlso: #2285,INT 10/AH=01h

Format of ASFONT parameter block:
Offset Size Description (Table 2289)
00h WORD 0005h (length of following data)
02h BYTE font number (0-3)
03h DWORD -> character set definition block (see #2290)

Format of 8514/A character set definition block:
Offset Size Description (Table 2290)
00h BYTE reserved
01h BYTE type of character set
00h bitmapped, 01h&02h reserved, 03h short-stroke font
02h BYTE reserved
03h DWORD reserved
07h BYTE cell width in pixels
08h BYTE cell height in pixels
09h BYTE reserved
0Ah WORD cell size in bytes
0Ch WORD flags
bit 15: reserved (0)
bit 14: color bitmap
bit 13: proportional spacing
0Eh DWORD -> index table
12h DWORD -> character width table
16h BYTE initial code point
17h BYTE final code point
18h DWORD -> character definition table
1Ch WORD reserved
1Eh DWORD -> second character definition table
22h WORD reserved
24h DWORD -> third character definition table

Format of AXLATE parameter block:
Offset Size Description (Table 2291)
00h WORD 0080h (length of following data)
02h 64 BYTEs character foreground translation table
42h 64 BYTEs character background translation table

Format of HBAR parameter block:
Offset Size Description (Table 2292)
00h WORD 0000h (no data following)
SeeAlso: #2304

Format of HBBC parameter block:
Offset Size Description (Table 2293)
00h WORD 0010h (length of following data)
02h WORD data format
0000h across-the-plane copy (color expansion)
0008h through-the-plane copy
04h WORD data rectangle's width
06h WORD data rectangle's height
08h BYTE source bit plane number (across-the-plane copies only)
09h BYTE reserved
0Ah 2 WORDs X,Y coordinates of source's upper-left corner in display memory
0Eh 2 WORDs X,Y coordinates of destination's upper-left corner in
display memory
Note: copies data from one location in video memory to another
SeeAlso: #2294

Format of HBBCHN parameter block:
Offset Size Description (Table 2294)
00h WORD 0006h (length of following data)
02h DWORD -> data buffer in system memory
06h WORD number of bytes to transfer
Note: this function performs the actual data transfer for a bitBLT set up
with HBBR, HBBW, or HCBBW
SeeAlso: #2293,#2295,#2296,#2297

Format of HBBR parameter block:
Offset Size Description (Table 2295)
00h WORD 000Ch or 0014h (length of following data)
02h WORD data format
0000h across-the-plane copy (color expansion)
0008h through-the-plane copy
04h WORD data rectangle's width
06h WORD data rectangle's height
08h BYTE source bit plane number
09h BYTE reserved
0Ah 2 WORDs X,Y coordinates of destination's upper-left corner in
display memory
---optional---
0Eh WORD sub-rectangle left margin in pixels
10h WORD sub-rectangle top margin in pixels
12h WORD sub-rectangle width
14h WORD sub-rectangle height
SeeAlso: #2294,#2295,#2297

Format of HBBW parameter block:
Offset Size Description (Table 2296)
00h WORD 000Ah or 0012h (length of following data)
02h WORD data format
0000h across-the-plane copy (color expansion)
0008h through-the-plane copy
04h WORD data rectangle's width
06h WORD data rectangle's height
08h 2 WORDs X,Y coordinates of destination in display memory
---optional---
0Ch WORD sub-rectangle left margin in pixels
0Eh WORD sub-rectangle top margin in pixels
10h WORD sub-rectangle width
12h WORD sub-rectangle height
SeeAlso: #2294,#2296,#2297

Format of HCBBW parameter block:
Offset Size Description (Table 2297)
00h WORD 0006h or 000Eh (length of following data)
02h WORD data format
0000h across-the-plane copy (color expansion)
0008h through-the-plane copy
04h WORD data rectangle's width
06h WORD data rectangle's height
---optional---
08h WORD sub-rectangle left margin in pixels
0Ah WORD sub-rectangle top margin in pixels
0Ch WORD sub-rectangle width
0Eh WORD sub-rectangle height
SeeAlso: #2294,#2295,#2296

Format of HCCHST parameter block:
Offset Size Description (Table 2298)
00h WORD length of following data
02h N BYTEs ASCII string to display (length given by 'length' field above)
SeeAlso: #2299

Format of HCHST parameter block:
Offset Size Description (Table 2299)
00h WORD length of following data
02h 2 WORDs X,Y of left-bottom corner of string on screen
06h N BYTEs ASCII string to display (length given by 'length' field above)
SeeAlso: #2298

Format of HCLINE parameter block:
Offset Size Description (Table 2300)
00h WORD length of following data (multiple of 4)
02h 2N WORDs X,Y coordinates for each of N points in polyline
Notes: the first line segment is drawn beginning at the current position
on completion, the current position is set to the last point drawn
SeeAlso: #2310,#2322,#2303

Format of HCLOSE parameter block:
Offset Size Description (Table 2301)
00h WORD 0001h (length of following data)
01h BYTE (ret) return code
SeeAlso: #2313

Format of HCMRK parameter block:
Offset Size Description (Table 2302)
00h WORD length of following data
02h 2N WORDs X,Y of N points
Note: draws N+1 marker symbols, the first one at the current position
SeeAlso: #2312

Format of HCRLINE parameter block:
Offset Size Description (Table 2303)
00h WORD length of following data (multiple of 4)
02h 2N WORDs X,Y coordinates relative to the position of the previous point
(current position for first point) for each of N points in
polyline
Notes: the first line segment is drawn beginning at the current position
on completion, the current position is set to the last point drawn
SeeAlso: #2310,#2300,#2322

Format of HEAR parameter block:
Offset Size Description (Table 2304)
00h WORD 0001h (length of following data)
02h BYTE area definition flags
bits 7-6: End Area type
00 complete, perform fill
01 suspend definition
10 complete, but don't fill
SeeAlso: #2292

Format of HEGS parameter block:
Offset Size Description (Table 2305)
00h WORD 0000h (no data following)

Format of HESC parameter block:
Offset Size Description (Table 2306)
00h WORD 0000h (no data following)

Format of HINIT parameter block:
Offset Size Description (Table 2307)
00h WORD 0002h (length of following data)
02h WORD segment of task buffer
SeeAlso: #2346

Format of HINT parameter block:
Offset Size Description (Table 2308)
00h WORD 0004h (length of following data)
02h DWORD interrupt/event identifier
bit 31: vertical blanking

Format of HLDPAL parameter block:
Offset Size Description (Table 2309)
00h WORD 000Ah (length of following data)
02h BYTE palette ID (00h = user, 01h = default)
03h BYTE reserved
04h WORD number of first palette entry
06h WORD number of entries
08h DWORD -> palette entries
SeeAlso: #2343

Format of HLINE parameter block:
Offset Size Description (Table 2310)
00h WORD length of following data (multiple of 4)
02h 2N WORDs X,Y coordinates for each of N points in polyline
Note: on completion, the current position is set to the last point drawn
SeeAlso: #2300,#2322,#2303

(Table 2311)
Values for 8514/A mix:
00h retain previous mix
01h source OR destination
02h source
04h source XOR destination
05h leave as-is
06h max(source,destination)
07h min(source,destination)
08h source+destination (clipped)
09h destination-source (clipped to zero)
0Ah source-destination (clipped to zero)
0Bh average source and destination
10h zero destination
11h source AND destination
12h source AND NOT destination
13h source
14h NOT source AND destination
15h leave as-is
16h source XOR destination
17h source OR destination
18h NOT source AND NOT destination
19h NOT (source XOR destination)
1Ah NOT destination
1Bh source OR NOT destination
1Ch NOT source
1Dh NOT source OR destination
1Eh NOT source OR NOT destination
1Fh set all bits of destination

Format of HMRK parameter block:
Offset Size Description (Table 2312)
00h WORD length of following data (multiple of 4)
02h 2N WORDs X,Y for N points
SeeAlso: #2302

Format of HOPEN parameter block:
Offset Size Description (Table 2313)
00h WORD 0003h (length of following data)
01h BYTE initialization flags
bit 6: don't load default palette
bit 7: clear bitplanes
02h BYTE mode type (see #2314)
03h BYTE (ret) return code
bit 7: no adapter (hardware mismatch)
SeeAlso: #2301

(Table 2314)
Values for 8514/A display mode:
0000h 12x20 characters, 1024x768
0001h 8x14 characters, 640x480
0002h 8x14 characters, 1024x768
0003h 7x15 characters, 1024x768

Format of HQCOORD parameter block:
Offset Size Description (Table 2315)
00h WORD 0004h (length of following data)
02h BYTE (ret) coordinate format
bits 7-4: bytes per coordinate
bits 3-0: fraction bytes in coordinate
03h BYTE (ret) relative coordinate format
bits 7-4: bytes per coordinate
bits 3-0: fraction bytes in coordinate
04h BYTE (ret) number of dimensions (2-4)
05h BYTE (ret) test results
bit 7: coordinate format not supported
bit 6: relative coordinate format not supported
bit 5: specified dimension not supported

Format of HQCP parameter block:
Offset Size Description (Table 2316)
00h WORD 0004h (length of following data)
02h WORD (ret) current X position
04h WORD (ret) current Y position

Format of HQDFPAL parameter block:
Offset Size Description (Table 2317)
00h WORD 0040h (length of following data)
02h 16 DWORDs (ret) color index values
Note: the default palette is set to match the default EGA/VGA 16-color
palettes

Format of HQDPS parameter block:
Offset Size Description (Table 2318)
00h WORD 0006h (length of following data)
02h WORD (ret) size of data buffer in bytes
04h WORD (ret) stack size in bytes
06h WORD (ret) size of palette save buffer in bytes

Format of HQMODE parameter block:
Offset Size Description (Table 2319)
00h WORD 0012h (length of following data)
02h BYTE current video mode (see #2314)
03h WORD driver version
bit 6: 80286/8086 CPU
bit 5: 8 bit planes instead of 4 planes
bits 4-0: hardware release number
05h BYTE adapter type
03h 8514/A
04h XGA
06h BYTE reserved (display type)
07h BYTE character cell width
08h BYTE character cell height
09h BYTE number of bit planes
0Ah WORD screen width (pixels)
0Ch WORD screen height (pixels)
0Eh WORD horizontal resolution (pixels/inch)
10h WORD vertical resolution (pixels/inch)
12h BYTE flag: 00h = monochrome, FFh = color
13h BYTE intensity levels
SeeAlso: #2320

Format of HQMODES parameter block:
Offset Size Description (Table 2320)
00h WORD 0021h (length of following data)
02h BYTE (ret) adapter type
03h 32 BYTEs (ret) available display modes (FFh byte marks end of data)
SeeAlso: #2319

Format of HRECT parameter block:
Offset Size Description (Table 2321)
00h WORD 0008h (legth of following data)
02h 2 WORDs X,Y coordinates of top left corner or rectangle
06h WORD rectangle's width
08h WORD rectangle's height
Note: the rectangle is filled using the current pattern, color, and mix

Format of HRLINE parameter block:
Offset Size Description (Table 2322)
00h WORD length of following data (multiple of 4)
02h 2 WORDs X,Y coordinates of starting point
06h 2N WORDs X,Y coordinates relative to the position of the previous point
for each of N points in polyline
Note: on completion, the current position is set to the last point drawn
SeeAlso: #2310,#2300,#2303

Format of HRLPC parameter block:
Offset Size Description (Table 2323)
00h WORD 0000h (no data following)
Note: used for continuity of lines crossing scissors boundaries
SeeAlso: #2336

Format of HRPAL parameter block:
Offset Size Description (Table 2324)
00h WORD 0300h (length of following data)
02h 768 BYTEs buffer containing previously-saved palette table
SeeAlso: #2343

Format of HSBCOL parameter block:
Offset Size Description (Table 2325)
00h WORD 0004h (length of following data)
02h DWORD color index for new background color
SeeAlso: #2329

Format of HSBP parameter block:
Offset Size Description (Table 2326)
00h WORD 000Ch (length of following data)
02h DWORD bitmask for graphics updates
06h DWORD bitmask for alphanumeric updates
0Ah DWORD display bitmask

Format of HSCELL parameter block:
Offset Size Description (Table 2327)
00h

Format of HSCMP parameter block:
Offset Size Description (Table 2328)
00h WORD 0005h (length of following data)
02h DWORD comparison color
06h BYTE logical operation
00h True
01h pel > testcolor
02h pel == testcolor
03h pel < testcolor
04h False
05h pel >= testcolor
06h pel <> testcolor
07h pel <= testcolor

Format of HSCOL parameter block:
Offset Size Description (Table 2329)
00h WORD 0004h (length of following data)
02h DWORD color index for new foreground color
SeeAlso: #2325

Format of HSCOORD parameter block:
Offset Size Description (Table 2330)
00h WORD 0003h (length of following data)
02h BYTE coordinate format
bits 7-4: bytes per coordinate
bits 3-0: fraction bytes in coordinate
03h BYTE relative coordinates format
bits 7-4: bytes per coordinate
bits 3-0: fraction bytes in coordinate
04h BYTE number of dimensions (2-4)

Format of HSCP parameter block:
Offset Size Description (Table 2331)
00h WORD 0004h (length of following data)
02h 2 WORDs X,Y or coordinate for new current position

Format of HSCS parameter block:
Offset Size Description (Table 2332)
00h WORD 0004h (length of following data)
02h DWORD -> character set definition

Format of HSGQ parameter block:
Offset Size Description (Table 2333)
00h WORD 0002h (length of following data)
02h WORD quality settings (see #2335)

Format of HSHS parameter block:
Offset Size Description (Table 2334)
00h WORD 0008h (length of following data)
02h WORD left edge of clipping rectangle (-2048 to +6143)

04h WORD right edge
06h WORD top edge
08h WORD bottom edget

Bitfields for 8514/A quality settings:
Bit(s) Description (Table 2335)
15 reserved
14 high precision
13 reserved
12-11 pel code
00 not drawn
01 drawn
02 conditional on overpainting/mixes
10 don't close areas to be filed
9-0 reserved

Format of HSLPC parameter block:
Offset Size Description (Table 2336)
00h WORD 0000h (no data following)
Note: used for continuity of lines crossing scissors boundaries
SeeAlso: #2323

Format of HSLT parameter block:
Offset Size Description (Table 2337)
00h WORD 0006h (length of following data)
02h BYTE line type (see #2338)
03h BYTE reserved
04h DWORD -> user line-type definition (if user type)
SeeAlso: #2339

(Table 2338)
Values for 8514/A line type:
00h user line type
01h dotted
02h short dashes
03h dash-dot
04h double dotted
05h dashed
06h dash double dot
07h solid
08h invisible
SeeAlso: #2337

Format of HSLW parameter block:
Offset Size Description (Table 2339)
00h WORD 0001h (length of following data)
02h BYTE width of line in pixels
SeeAlso: #2337

Format of HSMODE parameter block:
Offset Size Description (Table 2340)
00h WORD 0001h (length of following data)
02h BYTE new display mode number (see #2314)

Format of HSMRK paramter block:
Offset Size Description (Table 2341)
00h WORD 000Eh (length of following data)
02h BYTE cell width
03h BYTE cell height
04h BYTE flags
05h BYTE reserved
06h WORD length of marker symbol
08h DWORD -> image definition data
0Ch DWORD -> color definition data
SeeAlso: #2344

Format of HSMX parameter block:
Offset Size Description (Table 2342)
00h WORD 0002h (length of following data)
02h BYTE foreground mix (see #2311)
03h BYTE background mix (see #2311)

Format of HSPAL parameter block:
Offset Size Description (Table 2343)
00h WORD 0300h (length of following data)
02h 768 BYTEs buffer for palette table
SeeAlso: #2309,#2324

Format of HSPATT parameter block:
Offset Size Description (Table 2344)
00h WORD 000Eh (length of following data)
02h BYTE cell width
03h BYTE cell height
04h BYTE flags
05h BYTE reserved
06h WORD length of marker symbol
08h DWORD -> image definition data
0Ch DWORD -> color definition data
SeeAlso: #2341,#2345

Format of HSPATTO parameter block:
Offset Size Description (Table 2345)
00h WORD 0004h (length of following data)
02h 2 WORDs X,Y of pattern reference point (origin)
SeeAlso: #2344

Format of HSYNC parameter block:
Offset Size Description (Table 2346)
00h WORD 0002h (length of following data)
02h WORD segment of task state buffer
SeeAlso: #2307

Format of HXLATE parameter block:
Offset Size Description (Table 2347)
00h WORD 0020h (length of following data)
02h 32 BYTEs color index table
--------V-7F0105-----------------------------
INT 7F - IBM XGA Adapter Interface (XGAAIDOS.SYS)
AX = 0105h
Return: CF set on error
CF clear if successful
CX:DX -> array of FAR pointers to entry points (see #2280)
Note: this API is a superset of the 8514/A Adapter Interface
(see AX=0105h"HDILOAD")
----------7F0106-----------------------------
INT 7F - HDILOAD Mach32 Adapter Interface - UNINSTALL
AX = 0106h
Return: AX = 0105h if successfully unloaded
SeeAlso: AX=0105h
--------N-7F02-------------------------------
INT 7F - Alloy NTNX, MW386 - RELEASE SEMAPHORE
AH = 02h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see #2274)
AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=01h,AH=42h
--------N-7F02-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - SEND FRAME
AH = 02h
AL = stream number (01h-40h)
CX = length of frame
ES:SI -> frame to be sent
SeeAlso: AH=03h"G8BPQ",AH=07h"G8BPQ",AH=0Ah"G8BPQ"
--------f-7F0200-----------------------------
INT 7F - Btrieve Multi-User - GIVE UP TIME???
AX = 0200h
SeeAlso: INT 2F/AX=AB01h,INT 2F/AX=AB02h,INT 7B"Btrieve"
--------N-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
--------N-7F03-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - RECEIVE FRAME
AH = 03h
AL = stream number (01h-40h)
ES:DI -> buffer for frame (must be large enough for a full frame; 350
bytes is usually sufficient)
Return: BX = number of pending frames (0000h if returned frame was last avail)
CX = length of received frame
SeeAlso: AH=02h"G8BPQ",AH=07h"G8BPQ",AH=0Bh"G8BPQ"
--------N-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
--------N-7F04-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - GET STREAM STATUS
AH = 04h
AL = stream number (01h-40h)
Return: CX = state (0000h disconnected, 0001h connected)
DX = delta state (0000h no change, 0001h changed since last check)
SeeAlso: AH=02h"G8BPQ",AH=05h"G8BPQ"
--------N-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
--------N-7F05-------------------------------
INT 7F - Alloy NTNX (Slave), MW386 - GET USER PARAMETERS
AH = 05h
DX:DI -> buffer for user information record (see #2348)
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 Alloy user information record:
Offset Size Description (Table 2348)
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 MS-DOS 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
--------N-7F05-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - ACKNOWLEDGE STREAM STATUS CHANGE
AH = 05h
AL = stream number (01h-40h)
Note: this function must be called in order to receive a report of another
status change
SeeAlso: AH=04h"G8BPQ"
--------N-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 #2349)
Return: AX = status
0000h successful
ES:DI buffer filled
0001h not shared drive

Format of Alloy drive info record:
Offset Size Description (Table 2349)
00h WORD segment of drive IO-REQUEST structure (MS-DOS 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)
--------N-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)
--------N-7F06-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - SESSION CONTROL
AH = 06h
AL = stream number (01h-40h)
CX = subfunction
0000h connect to node
DL bit 0: use BBS callsign instead of Node Call
0001h connect to node
use BBS Call if APPLMASK=1
0002h disconnect
0003h return user to node
SeeAlso: AH=01h"G8BPQ",AH=04h"G8BPQ"
--------N-7F07-------------------------------
INT 7F - Alloy NTNX, MW386 - GET LIST OF SHARED DRIVES
AH = 07h
Return: ES:DI -> shared drive list (see #2350)
Note: MW386 considers all fixed disks to be shared drives; only C and D will
be returned as shared

Format of Alloy shared drive list:
Offset Size Description (Table 2350)
00h BYTE string length
01h BYTE number of shared drives
02h N BYTEs one byte per shared drive
--------N-7F07-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - GET BUFFER COUNTS FOR STREAM
AH = 07h
AL = stream number (01h-40h)
Return: BX = number of pending receive frames
CX = number of unacknowledged sent frames
DX = number of buffers available
SeeAlso: AH=02h"G8BPQ",AH=03h"G8BPQ"
--------N-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
--------N-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
--------N-7F08-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - PORT CONTROL/INFORMATION
AH = 08h
AL = stream number (01h-40h)
Return: ES:DI -> 10-byte buffer containing blank-padded callsign
---v4.05+ ---
AL = radio port to which channel is connected (level 2)
AH = session type (see #2351)
BX = L2 paclen for session
CX = maximum frame size
DX = L4 window size or 0000h if not L4 circuit
Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
John Wiseman which allows a PC to act as a node in an AX.25 network
SeeAlso: AH=01h"G8BPQ",AH=02h"G8BPQ",AH=03h"G8BPQ",AH=0Ah"G8BPQ"

Bitfields for G8BPQ session type:
Bit(s) Description (Table 2351)
0 L2LINK
1 SESSION
2 UPLINK
3 DOWNLIND
5 BPQHOST
--------T-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
Index: installation check;MultiLink Advanced
--------N-7F09-------------------------------
INT 7F - G8BPQ - proposed addition - GET NODE/APPLICATION CALLSIGN AND ALIAS
AH = 09h
AL = application
00h node
01h BBS
02h HOST
03h SYSOP
BL = what to get (00h callsign, 01h application name)
ES:SI -> buffer for callsign/name string
Return: CX = length of returned string
SeeAlso: AH=00h"G8BPQ",AH=01h"G8BPQ",AH=0Ch"G8BPQ"
--------N-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
--------N-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
--------N-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
--------N-7F0A--CL00-------------------------
INT 7F - Alloy NTNX - GET SYSTEM FLAGS
AH = 0Ah
CL = 00h
ES:DI -> buffer for system flags (see #2352)
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 Alloy system flags:
Offset Size Description (Table 2352)
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
--------N-7F0A-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - TRANSMIT RAW (KISS) FRAME
AH = 0Ah
AL = radio port
ES:SI -> buffer containing data to be sent
CX = number of bytes to send
SeeAlso: AH=02h"G8BPQ",AH=08h"G8BPQ",AH=0Bh"G8BPQ"
--------N-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
--------N-7F0B-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - RECEIVE TRACE (RAW DATA) FRAME
AH = 0Bh
ES:DI -> buffer for received data (see #2353)
Return: CX = number of bytes received
Note: the specified buffer must be large enough to receive a full frame
SeeAlso: AH=03h"G8BPQ",AH=08h"G8BPQ",AH=0Ah"G8BPQ"

Format of G8BPQ received data:
Offset Size Description (Table 2353)
00h WORD internal control information
02h BYTE port number (bit 7 set if transmitted frame)
03h WORD frame length including this header
05h var user data
--------N-7F0C-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - UPDATE SWITCH INFORMATION
AH = 0Ch
DX = function
0001h update beacon text
CX = length of data
ES:SI -> data to be sent in beacons
SeeAlso: AH=09h"G8BPQ"
--------N-7F0F-------------------------------
INT 7F - G8BPQ v4.00+ - HOST MODE - GET TIME MARKER
AH = 0Fh
Return: AX = time marker (clock ticks modulo 64K)
Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
John Wiseman which allows a PC to act as a node in an AX.25 network
SeeAlso: AH=01h"G8BPQ",INT 1A/AH=00h
--------N-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-03h,0Dh) (see #2354)
Note: may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=01h,AH=10h/CL=04h,AH=14h/CL=02h

(Table 2354)
Values for Alloy function status:
00h successful
01h busy
02h channel range error (not 00h-3Fh)
03h invalid subfunction
0Ah channel not open
0Ch channel already locked
0Dh unable to open
--------N-7F10--CL01-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE CHANNEL
AH = 10h
CL = 01h
AL = channel number
Return: AL = status (00h-03h,0Ah) (see #2354)
Note: may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=00h,AH=10h/CL=05h
--------N-7F10--CL02-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK CHANNEL
AH = 10h
CL = 02h
AL = channel number
Return: AL = status (00h-03h,0Ah,0Ch) (see #2354)
Note: may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=03h,AH=10h/CL=06h,AH=10h/CL=08h
--------N-7F10--CL03-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK CHANNEL
AH = 10h
CL = 03h
AL = channel number
Return: AL = status (00h-03h,0Ah) (see #2354)
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
--------N-7F10--CL04-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - RELEASE BUFFER
AH = 10h
CL = 04h
AL = channel number
Return: AL = status (00h-03h) (see #2354)
Notes: unlocks buffer after received datagram has been processed
may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=00h
--------N-7F10--CL05-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE ALL CHANNELS
AH = 10h
CL = 05h
Return: AL = status (00h-03h) (see #2354)
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
--------N-7F10--CL06-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK ALL OPEN CHANNELS
AH = 10h
CL = 06h
Return: AL = status (00h-03h) (see #2354)
Note: may not be invoked from within a hardware interrupt handler
SeeAlso: AH=10h/CL=02h,AH=10h/CL=08h
--------N-7F10--CL07-------------------------
INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK ALL LOCKED IDLE CHANNELS
AH = 10h
CL = 07h
Return: AL = status (00h-03h) (see #2354)
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
--------N-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-03h) (see #2354)
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
--------N-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-03h) (see #2354)
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
--------N-7F11-------------------------------
INT 7F - Alloy NTNX, MW386 - SEND DATAGRAM
AH = 11h
DX:SI -> request block (see #2356)
Return: AL = status (see #2355)
Note: if wildcard channel FFh used, actual channel number will be filled in
SeeAlso: AH=12h

(Table 2355)
Values for Alloy function 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)

Format of Alloy request block:
Offset Size Description (Table 2356)
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
--------N-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 (see #2357)
Note: also unlocks the channel, allowing the next datagram to be received
SeeAlso: AH=11h,AH=15h/CL=04h

(Table 2357)
Values for Alloy function 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
--------V-7F1234-----------------------------
INT 7F - TIGA Communications Driver v2.05 - UNINSTALL
AX = 1234h
SeeAlso: AX=4321h
--------N-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
--------N-7F14--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - SET RECEIVE ISR
AH = 14h
CL = 00h
DX:DI -> application FAR receive service routine (see #2358)
Return: AL = status (00h-03h) (see #2357)
SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h

(Table 2358)
Values Alloy receive service routine is 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
--------N-7F14--CL01-------------------------
INT 7F - Alloy NTNX, MW386 - SET ACKNOWLEDGE ISR
AH = 14h
CL = 01h
DX:DI -> application FAR acknowledge service routine (see #2359)
Return: AL = status (00h-03h) (see #2357)
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=15h/CL=04h

(Table 2359)
Values Alloy acknowledge service routine is called with:
DS:SI -> acknowledge structure (see #2363)
Return: AL = response code
00h application busy, network executive should call again later
01h acknowledge accepted
AH,DX,SI may be destroyed
--------N-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-03h) (see #2357)
Note: may be called from within a receive ISR or when a datagram is pending
SeeAlso: AH=10h/CL=00h,AH=14h/CL=00h
--------N-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
--------N-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
--------N-7F14--CL05-------------------------
INT 7F - Alloy NTNX (Host), MW386 - GET BUSY POINTER
AH = 14h
CL = 05h
DX:DI -> buffer for busy structure (see #2360)
Return: DX:DI buffer filled

Format of Alloy busy structure:
Offset Size Description (Table 2360)
00h DWORD pointer to busy flag byte
04h WORD fixed port address (FF00h)
--------N-7F15--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - GET CHANNEL STATUS
AH = 15h
CL = 00h
AL = channel number
DX:DI -> status structure (see #2361)
Return: AL = status (00h-03h) (see #2357)
SeeAlso: AH=15h/CL=01h

Format of Alloy channel status structure:
Offset Size Description (Table 2361)
00h BYTE channel status
bit 0: channel open
bit 1: channel buffer contains received data
bit 7: channel locked
01h BYTE sender ID
--------N-7F15--CL01-------------------------
INT 7F - Alloy NTNX, MW386 - GET NEXT FULL CHANNEL
AH = 15h
CL = 01h
DX:DI -> full-channel structure (see #2362)
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 Alloy full-channel structure:
Offset Size Description (Table 2362)
00h BYTE number of channel with oldest datagram
01h BYTE sender ID
--------N-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
--------N-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
--------N-7F15--CL04-------------------------
INT 7F - Alloy NTNX, MW386 - GET AND CLEAR ACKNOWLEDGE STATUS
AH = 15h
CL = 04h
DX:DI -> status structure (see #2363)
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 Alloy status structure:
Offset Size Description (Table 2363)
00h BYTE sender ID
01h BYTE channel number
02h 4 BYTEs receiver status (see #2357)
--------N-7F16-------------------------------
INT 7F - Alloy NTNX, MW386 - DIRECT MEMORY TRANSFER
AH = 16h
DX:SI -> transfer structure (see #2364)
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 Alloy transfer structure:
Offset Size Description (Table 2364)
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
--------N-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 #2365)
Note: messages or commands are ignored if disabled by the destination user
SeeAlso: AH=22h

Format of Alloy control packet:
Offset Size Description (Table 2365)
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
--------N-7F22-------------------------------
INT 7F - Alloy NTNX - GET MESSAGE
AH = 22h
Return: pending messages displayed on user's screen
SeeAlso: AH=21h
--------N-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 (see #2366)
Note: only drives on the current machine may be attached

(Table 2366)
Values for Alloy function status:
00h successful
01h invalid request
02h already attached
03h not attached
04h lock table full
--------N-7F24-------------------------------
INT 7F - Alloy NTNX - ATTACH/RELEASE HOST PROCESSOR
AH = 24h
CL = function
02h attach host
03h release host
Return: AX = status (see #2366)
Note: the host processor may be attached in order to perform I/O via the host
--------N-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
--------N-7F25--CL01-------------------------
INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE TYPE
AH = 25h
CL = 01h
Return: CL = executive type (see #2367)
SeeAlso: AH=25h/CL=00h

(Table 2367)
Values for Alloy network executive type:
00h RTNX
01h ATNX
02h NTNX
03h BTNX
04h MW386
05h ANSK
----------7F2525-----------------------------
INT 7F - TIGA Communications Driver v2.05 - ???
AX = 2525h
BX = ???
Return: ???
SeeAlso: AX=4321h,AX=5555h
--------N-7F26--CL00-------------------------
INT 7F - Alloy NTNX, MW386 - GET NTNX FILE MODE
AH = 26h
CL = 00h
Return: AX = file mode bits (see #2368)
Note: MW386 does not support file modes, and always returns AX=001Fh
SeeAlso: AH=26h,AH=26h/CL=06h

Bitfields for Alloy file mode bits:
Bit(s) Description (Table 2368)
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
--------N-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
--------N-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
--------N-7F30-------------------------------
INT 7F - Alloy MW386 - GET PORT INFORMATION
AH = 30h
CX = MW386 port number
Return: AL = result
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
--------N-7F31-------------------------------
INT 7F - Alloy MW386 v1.x only - CHECK PORT ASSIGNMENT
AH = 31h
???
Return: ???
--------N-7F37-------------------------------
INT 7F - Alloy NTNX (Host) - GET SEMAPHORE TABLE
AH = 37h
Return: ES:AX -> semaphore table
--------N-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
--------N-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
--------N-7F39-------------------------------
INT 7F - Alloy MW386 - SET TERMINAL DRIVER FOR ANOTHER USER
AH = 39h
AL = new terminal driver number
FFh dummy driver
FEh current driver
FDh load new driver
DS:SI -> new driver
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
--------N-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
--------N-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
--------N-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
--------N-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
--------N-7F41-------------------------------
INT 7F - Alloy NTNX - LOCK FILE FOR USER
AH = 41h
AL = user ID
DS:DX -> ASCIZ filename
Return: AL = status (see #2369)
Note: requests exclusive read/write access to file
SeeAlso: AH=00h,AH=41h"MW386",AH=42h"NTNX"

(Table 2369)
Values for Alloy function status:
00h successful
01h invalid function
02h already locked
03h unable to lock
04h lock table full or semaphore space exhausted
--------N-7F41-------------------------------
INT 7F - Alloy MW386 - LOCK SEMAPHORE FOR USER
AH = 41h
AL = user ID
DS:DX -> ASCIZ semaphore name
Return: AL = status (see #2369)
SeeAlso: AH=00h,AH=42h"MW386"
--------s-7F4150BHC1-------------------------
INT 7F U - Voyetra - AAPISG - API
AX = 4150h ('AP')
BH = C1h
BL = function (00h-13h)
00h initialize (fails except first time called)
???
Return: AX = status???
0000h successful
0001h failed
Program: AAPISG is a driver by Voyetra for the Aztech Sound Galaxy sound board
BUG: the function range check uses JL instead of JB, so it will cause a
crash if BL >= 80h on entry
SeeAlso: AX=4331h,AX=564Dh,AX=5658h
--------N-7F42-------------------------------
INT 7F - Alloy NTNX - UNLOCK FILE FOR USER
AH = 42h
AL = user ID
DS:DX -> ASCIZ filename
Return: AL = status (see #2369)
SeeAlso: AH=00h,AH=41h"NTNX",AH=42h"MW386"
--------N-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"
----------7F4321-----------------------------
INT 7F - TIGA Communications Driver v2.05 - INSTALLATION CHECK
AX = 4321h
Return: AX = 0000h if installed
Note: INT 7F is the default, but may be overridden
SeeAlso: AH=01h"TIGA",AX=1234h,AX=2525h,AX=4321h,AX=5555h
--------s-7F4331BHC1-------------------------
INT 7F U - Voyetra - VAPISG - API
AX = 4331h ('C1')
BH = C1h
BL = function (00h-7Ah)
???
Return: ???
Program: VAPISG is a MIDI driver by Voyetra for the Aztech Sound Galaxy
sound board
SeeAlso: AX=4150h,AX=564Dh,AX=5658h
--------N-7F4E-------------------------------
INT 7F - Alloy MW386 v2+ - SET ERROR MODE
AH = 4Eh
AL = error mode flags
bit 0: display critical disk errors
bit 1: display sharing errors
DX = 4E58h ("NX")
Return: AL = status
00h successful
SeeAlso: AH=4Fh
--------N-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
--------V-7F5555-----------------------------
INT 7F - TIGA Communications Driver v2.05 - ???
AX = 5555h
BX = ???
Return: ???
SeeAlso: AX=4321h
--------s-7F564DBHC1-------------------------
INT 7F U - Voyetra Multimedia Player - VMP.EXE API
AX = 564Dh ('VM')
BH = C1h
BL = function (00h-1Bh)
00h ???
Return: CF clear
AX = 0000h
???
Return: AX = FFFFh if invalid function
???
SeeAlso: AX=4331h,AX=5658h
--------s-7F5658BHC1-------------------------
INT 7F U - Voyetra - VAPISG - API
AX = 5658h ('VX')
BH = C1h
BL = function (00h-1Bh)
???
Return: ???
Program: VAPISG is a MIDI driver by Voyetra for the Aztech Sound Galaxy
sound board
SeeAlso: AX=4331h,AX=564Dh
--------N-7F81-------------------------------
INT 7F - Alloy NTNX - ATTACH DEVICE FOR USER
AH = 81h
AL = user ID
DS:DX -> ASCIZ device name
SeeAlso: AH=82h
--------N-7F82-------------------------------
INT 7F - Alloy NTNX - RELEASE DEVICE FOR USER
AH = 82h
AL = user ID
DS:DX -> ASCIZ device name
SeeAlso: AH=81h
--------N-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
--------N-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
--------N-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
--------N-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
--------N-7FA4-------------------------------
INT 7F - Alloy MW386 - VERIFY USER PASSWORD
AH = A4h
DS:DX -> ASCIZ password (null-padded to 16 bytes)
Return: AL = status
00h accepted
else invalid password
--------N-7FA500-----------------------------
INT 7F - Alloy MW386 - GET USER STATUS
AX = A500h
DI = machine number and user number
Return: CF clear if successful
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
CF set if invalid user number
SeeAlso: AX=A501h
Index: hotkeys;Alloy MW386
--------N-7FA501-----------------------------
INT 7F - Alloy MW386 - SET USER STATUS
AX = A501h
BX = user flags (see AX=A500h)
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
SeeAlso: AX=A500h
Index: hotkeys;Alloy MW386
--------V-7FABCDBX0000-----------------------
INT 7F - IBM 8516 Touch Screen Device Driver - GET API ENTRY
AX = ABCDh
BX = 0000h
Return: AX = total number of functions available
ES:BX -> entry point array (see #2370)
SeeAlso: AX=0104h,AX=0105h

(Table 2370)
Values for 8516 Touch Screen function number:
00h check initialization and reset (see #2371)
14h set user-defined subroutine (see #2372)
Notes: each driver function takes two stack parameters using Pascal calling
conventions: address of parameter block and address of results buffer
all pointers are FAR pointers
on return, AX contains the status of the call:
AX = 0000h successful
0001h invalid input
0002h interface error
0003h unable to perform function

Format of 8516 Touch Screen Function 00h parameter block:
Offset Size Description (Table 2371)
00h WORD 0000h (function number)
Note: this function should be called before any other device driver functions

Format of 8516 Touch Screen Function 00h results buffer:
Offset Size Description (Table 2372)
00h WORD touch screen status
0000h unavailable
0001h uncalibrated
FFFFh available
02h WORD aux mouse status (0000h not present, FFFFh present)
Notes: the following driver parameters will have been reset to zero:
touchdown counter, liftoff counter, position at last touch, position
at last lift, int call mask, select on count, select off count,
pos select on count, pos select off count.
the following driver parameters will have been reset as listed:
mouse emulation mode: left on
thresholds: 46 on screen, 96 push harder, 80 push release
x, y hysteresis: 400
data repeat rate: 40/sec
select mechanism: push-harder - first-touch
coordinate origin: upper left corner
filter frequency: medium
data block mask: all enabled
click lock: on
--------N-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
--------N-7FB1--SF00-------------------------
INT 7F - Alloy NTNX, MW386 - RELEASE NORMAL SEMAPHORES FOR USER
AH = B1h subfn 00h
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
--------N-7FB2--SF01-------------------------
INT 7F - Alloy NTNX - RELEASE MESSAGES FOR USER
AH = B2h subfn 01h
AL = (bits 7-5) 001
(bits 4-0) user ID
SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h
--------N-7FB3--SF02-------------------------
INT 7F - Alloy NTNX - RELEASE FILES FOR USER
AH = B3h subfn 02h
AL = (bits 7-5) 010
(bits 4-0) user ID
SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B4h
--------N-7FB4-------------------------------
INT 7F - Alloy NTNX - RELEASE DEVICES FOR USER
AH = B4h
AL = user ID
SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B3h
--------N-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
--------N-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
--------N-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
--------N-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
--------N-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
--------N-7FCF-------------------------------
INT 7F - Alloy NTNX - REBOOT USER PROCESSOR
AH = CFh
DS:DX -> ASCIZ string containing user number to be reset
SeeAlso: AH=D6h
--------N-7FD6-------------------------------
INT 7F - Alloy MW386 - RESET NETWORK EXECUTIVE
AH = D6h
DS:DX -> reset packet (see #2373)
Return: never if successful
Note: all users will be shut down immediately if successful
SeeAlso: AH=CFh

Format of Alloy MW386 reset packet:
Offset Size Description (Table 2373)
00h DWORD reset code (60606060h)
04h 16 BYTEs ASCIZ supervisor password padded with nulls
--------N-7FD7-------------------------------
INT 7F - Alloy MW386 - POST EVENT
AH = D7h
AL = user number (if local event)
DX = event number
--------N-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
--------N-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)
--------N-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
--------N-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
--------N-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
--------N-7FE3-------------------------------
INT 7F - Alloy MW386 - CHANGE NAME OF DOS TASK
AH = E3h
DS:DX -> ASCIZ task name
---v1.x---
AL = user number
---v2+---
BH = user number
BL = task number
Return: CF clear if successful
CF set on error (invalid process number)
SeeAlso: AH=E0h,AH=E4h,AH=E5h
--------N-7FE4-------------------------------
INT 7F - Alloy MW386 - GET TASK NAME FROM PROCESS NUMBER
AH = E4h
ES:DI -> buffer for task name
---v1.x---
AL = user number
---v2+---
BH = user number
BL = task number
Return: CF clear if successful
CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
DX = task flags
bit 7: MS-DOS process
ES:DI buffer filled
CF set on error (invalid process number)
SeeAlso: AH=E3h,AH=E5h
--------N-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
--------N-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
--------N-7FE7-------------------------------
INT 7F - Alloy MW386 - REMOVE DOS TASK
AH = E7h
AL = DOS process number
Return: CF clear if successful
CF set on error (invalid process number or first process)
Note: can only be called by a foreground task
SeeAlso: AH=E0h
--------N-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 1A/AX=FF01h,INT 21/AH=EEh"DoubleDOS"
SeeAlso: INT 2F/AX=1680h
--------N-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
--------N-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
--------N-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
--------N-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
--------N-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
--------N-7FF9-------------------------------
INT 7F - Alloy MW386 - REMOVE USER FROM GROUP
AH = F9h
AL = group number
DL = user number
DH = machine number (currently 00h)
Return: CF clear if successful
CF set if failed
SeeAlso: AH=F8h,AH=FAh
--------N-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
--------N-7FFB-------------------------------
INT 7F - Alloy MW386 - ASSIGN GROUP NAME
AH = FBh
CL = group number
ES:DI -> ASCIZ group name (max 17 bytes)
SeeAlso: AH=FCh
--------N-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 - ???
--------r-80---------------------------------
INT 80 - reserved for BASIC
Note: this vector and INT 81 through INT ED are modified but not restored by
Direct Access v4.0, and may be left dangling by other programs
written with the same version of compiled BASIC
SeeAlso: INT 81"BASIC",INT 86"BASIC",INT EF"BASIC"
--------s-80----BL00-------------------------
INT 80 - SBSIM - "STARTSND" - START SOUND ON SPECIFIED DRIVER
BL = 00h
BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
Return: AX = initialization result (see #2374)
Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
which provides access to multiple drivers for the SoundBlaster
board through a single interface
Range: INT 80h to INT BFh, selected automatically
Note: the SBSIM installation check consists of testing for the signature
"SBSIM" at offset 103h in the interrupt handler's segment.
SeeAlso: INT 80/BL=01h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=03h"SBSIM"
SeeAlso: INT 80/BX=0000h"SBSIM"

(Table 2374)
Values for SBSIM error code:
01h busy--currently in use
02h bad driver specified
03h invalid function
04h voice process already active
05h couldn't start CT-VOICE
06h couldn't start CTVDSK
07h invalid SBSIM handle
08h buffer not initialized yet
09h bad filename
0Ah bad file handle
0Bh driver not started yet
0Ch XMS driver not installed
0Dh no free SBSIM handles
0Eh bad file type
0Fh couldn't free XMS block
10h invalid source selected
11h get pan position failed
12h set pan position failed
13h set volume failed
14h couldn't start fade/pan
15h couldn't stop fade/pan
16h couldn't pause fade/pan
17h not a fade/pan operation
18h bad mode for fade/pan
19h couldn't start fade/pan
1Ah source not fading/panning
1Bh FM or MIDI already playing
1Ch bad MIDI mapper format
--------s-80----BL01-------------------------
INT 80 - SBSIM - "PLAYSND" - PLAY MUSIC/VOICE ON SELECTED DRIVER
BL = 01h
BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
Return: AX = result (see #2374)
SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
--------s-80----BL02-------------------------
INT 80 - SBSIM - "STOPSND" - STOP MUSIC/VOICE ON SELECTED DRIVER
BL = 02h
BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
Return: nothing
SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
--------s-80----BL03-------------------------
INT 80 - SBSIM - "PAUSESND" - TEMPORARILY PAUSE PLAYBACK ON SELECTED DRIVER
BL = 03h
BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
Return: nothing
SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
SeeAlso: INT 80/BL=05h
--------s-80----BL04-------------------------
INT 80 - SBSIM - "RESUMESND" - RESTART PLAYBACK ON SELECTED DRIVER
BL = 04h
BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
Return: nothing
SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=03h"SBSIM",INT 80/BL=05h"SBSIM"
--------s-80----BL05-------------------------
INT 80 - SBSIM - "GETSNDSTAT" - GET DRIVER'S STATUS
BL = 05h
BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
Return: AX = status
SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
--------s-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"SBFM",INT 2F/AX=FBFBh
--------s-80----BX0000-----------------------
INT 80 - SBSIM - "QUERYVERSION" - GET VERSION
BX = 0000h
Return: AX = version (AH = major, AL = minor)
Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
which provides access to multiple drivers for the SoundBlaster
board through a single interface
Range: INT 80h to INT BFh, selected automatically
Note: the SBSIM installation check consists of testing for the signature
"SBSIM" at offset 103h in the interrupt handler's segment.
SeeAlso: BX=0001h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
Index: installation check;SBSIM|installation check;SoundBlaster
--------s-80----BX0001-----------------------
INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
BX = 0001h
DX:AX -> music status byte
SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0003h"SBFM"
--------s-80----BX0001-----------------------
INT 80 - SBSIM - "QUERYDRIVERS" - CHECK DRIVERS INSTALLED
BX = 0001h
Return: AX = bit flags for loaded drivers (see #2375)
SeeAlso: BX=0000h"SBSIM",BX=0002h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"

Bitfields for SBSIM loaded drivers:
Bit(s) Description (Table 2375)
0 FM
1 double disk-buffered voice driver (DDBV)
2 memory voice driver
3 auxiliary driver (mixer)
4 MIDI
--------s-80----BX0002-----------------------
INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
BX = 0002h
CX = number of instruments
DX:AX -> instrument table
SeeAlso: BX=0000h"SBFM",BX=0001h"SBFM",BX=0005h"SBFM"
--------s-80----BX0002-----------------------
INT 80 - SBSIM - GETADDRESS" - GET SELECTED DRIVER'S ENTRY POINT
BX = 0002h
AX = driver (00h = FM,01h = DDBV,02h = memvoice,03h = mixer,04h = MIDI)
Return: CF clear if successful
DX:AX -> entry point
CF set on error
SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
--------s-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"SBFM",BX=0001h"SBFM",BX=0004h"SBFM"
--------s-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"SBFM",BX=0003h"SBFM"
--------s-80----BX0005-----------------------
INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
BX = 0005h
AX = semi-tone offset
SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0006h"SBFM"
--------s-80----BX0005-----------------------
INT 80 - SBSIM - "GETBUFFERINFO" - GET DRIVER'S BUFFER ADDRESS
BX = 0005h
AX = driver (00h = FM, 01h = DDB Voice, 04h = MIDI)
Return: CF clear if successful
DX:AX -> buffer
CX = buffer size in K
CF set on error
Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
which provides access to multiple drivers for the SoundBlaster
board through a single interface
Range: INT 80h to INT BFh, selected automatically
Note: the SBSIM installation check consists of testing for the signature
"SBSIM" at offset 103h in the interrupt handler's segment.
SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0002h"SBSIM",INT 80/BL=00h"SBSIM"
--------s-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"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF04h
--------s-80----BX0007-----------------------
INT 80 - SoundBlaster SBFM driver - STOP MUSIC
BX = 0007h
Return: AX = status
0000h successful
0001h music not active
SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM",INT 1A/AX=FF05h
--------s-80----BX0008-----------------------
INT 80 - SoundBlaster SBFM driver - RESET DRIVER
BX = 0008h
Return: AX = status
0000h successful
0001h music is active
SeeAlso: BX=0000h"SBFM"
--------s-80----BX0009-----------------------
INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
BX = 0009h
Return: AX = status
0000h successful
0001h no music active
SeeAlso: BX=0000h"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF01h
--------s-80----BX000A-----------------------
INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
BX = 000Ah
Return: AX = status
0000h successful
0001h no music paused
SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM"
--------s-80----BX000B-----------------------
INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
BX = 000Bh
DX:AX -> trap routine
SeeAlso: BX=0000h"SBFM"
--------s-80----BX0400-----------------------
INT 80 - SBSIM - "GETVOLUME" - GET SOURCE'S VOLUME
BX = 0400h
AX = sound source (see #2376)
Return: CF clear if successful
AX = volume
CF set on error
AX = error code (see INT 80/BL=00h)
SeeAlso: BX=0401h"SBSIM"

(Table 2376)
Values for SBSIM sound source:
00h master volume
01h voice
02h FM
03h CD
04h line in
05h microphone
--------s-80----BX0401-----------------------
INT 80 - SBSIM - "SETVOLUME" - SET SOURCE'S VOLUME
BX = 0401h
AX = sound source (see INT 80/BX=0400h)
DX = new volume
Return: AX = result (0000h = success) (see also INT 80/BL=00h)
SeeAlso: BX=0400h"SBSIM"
--------N-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
--------N-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
--------N-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
--------N-8004-------------------------------
INT 80 - QPC Software PKTINT.COM - ENABLE???
AH = 04h
BX = ???
Return: ???
SeeAlso: AH=01h
--------N-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
--------N-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
--------r-81---------------------------------
INT 81 - reserved for BASIC
Note: this vector is modified but not restored by Direct Access v4.0, and
may be left dangling by other programs written with the same version
of compiled BASIC
SeeAlso: INT 80"BASIC",INT 82"BASIC"
--------N-81---------------------------------
INT 81 - IBM TOKEN RING ADAPTER - ???
SeeAlso: INT 82"TOKEN RING",INT 91"TOKEN RING"
--------r-82---------------------------------
INT 82 - reserved for BASIC
SeeAlso: INT 81"BASIC",INT 83"BASIC"
--------N-82---------------------------------
INT 82 - IBM TOKEN RING ADAPTER - ???
AH = function
00h display message???
DS:BX -> string
???
Return: ???
SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
--------r-83---------------------------------
INT 83 - reserved for BASIC
SeeAlso: INT 82"BASIC",INT 84"BASIC"
--------r-84---------------------------------
INT 84 - reserved for BASIC
SeeAlso: INT 83"BASIC",INT 85"BASIC"
--------r-85---------------------------------
INT 85 - reserved for BASIC
Note: INT 80 through INT ED are modified but not restored by Direct Access
v4.0, and may be left dangling by other programs written with the
same version of compiled BASIC
SeeAlso: INT 84"BASIC",INT 86"BASIC"
--------N-86---------------------------------
INT 86 - NetBIOS - ORIGINAL INT 18
Note: some implementations of NetBIOS reportedly relocate INT 18 here
SeeAlso: INT 18
--------r-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
SeeAlso: INT 85"BASIC",INT 87"BASIC"
--------r-86---------------------------------
INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
SeeAlso: INT 21/AH=4Ch,INT 87"APL"
--------r-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
SeeAlso: INT 86"BASIC",INT 88"BASIC"
--------r-87---------------------------------
INT 87 - APL*PLUS/PC - ???
SeeAlso: INT 86"APL",INT 88/AL=00h
--------v-87---------------------------------
INT 87 - VIRUS - "ZeroHunt" - VIRAL CODE (NOT A VECTOR!)
Note: the ZeroHunt virus copies its resident code down to 0000h:021Ch and
following
SeeAlso: INT 8B"VIRUS"
--------r-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
SeeAlso: INT 87"BASIC",INT 89"BASIC"
--------r-88--00-----------------------------
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 #2377)
Return: ES:DI -> first data byte of object
DX:CX = number of elements in the object
SeeAlso: INT C8"APL"

Format of APL*PLUS/PC shape model:
Offset Size Description (Table 2377)
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 (D)WORD first dimension of shape
N (D)WORD second dimension of shape
...
--------r-88--01-----------------------------
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"
--------r-88--02-----------------------------
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"
--------r-88--08-----------------------------
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"
--------r-88--F5-----------------------------
INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
AL = F5h
BX = STPTR of object
SeeAlso: INT C8"APL"
--------r-88--F6-----------------------------
INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
AL = F6h
BX = STPTR of object
SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
--------r-88--F7-----------------------------
INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
AL = F7h
BX = STPTR of object
SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
--------r-88--F8-----------------------------
INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
AL = F8h
BX = STPTR of object
Return: BX = name's outswapping status
0000h eligible
0001h not eligible
SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
--------r-88--F9-----------------------------
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"
--------r-88--FC-----------------------------
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"
--------r-88--FD-----------------------------
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"
--------r-88--FE-----------------------------
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"
--------r-88--FF-----------------------------
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"
--------r-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
SeeAlso: INT 88"BASIC",INT 8A"BASIC"
--------r-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
SeeAlso: INT 89"BASIC",INT 8B"BASIC"
--------r-8A---------------------------------
INT 8A - APL*PLUS/PC - PRINT SCREEN
Note: same as INT 05
SeeAlso: INT 05,INT 8C"APL",INT CA"APL"
--------r-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
SeeAlso: INT 8A"BASIC",INT 8C"BASIC"
--------r-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"
--------v-8B---------------------------------
INT 8B - VIRUS - "ZeroHunt" - INSTALLATION CHECK (NOT A VECTOR!)
Note: if the ZeroHunt virus is resident, this vector will contain either
EE83h:019Bh (ZH-411) or EE83h:019Fh (ZH-415)
SeeAlso: INT 70"VIRUS",INT 87"VIRUS",INT 9C"VIRUS"
--------r-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
--------r-8C---------------------------------
INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
AX = flag
0000h do not save display attributes
0001h save attributes
SeeAlso: INT CC"APL"
--------r-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
--------r-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
--------r-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
--------r-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
--------r-90---------------------------------
INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
--------r-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
--------N-91---------------------------------
INT 91 - IBM TOKEN RING ADAPTER - ???
SeeAlso: INT 81"TOKEN RING",INT 82"TOKEN RING",INT 93"TOKEN RING"
--------r-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
--------N-92---------------------------------
INT 92 - Sangoma X.25 INTERFACE PROGRAM
BX:DX -> control block
SeeAlso: INT 68"Sangoma"
--------e-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 (see #2378)
Note: preserves BP, DS, SI, DI; other registers may be destroyed

(Table 2378)
Values for Da Vinci eMail function 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"
--------e-92E100-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetInitStart"
AX = E100h
BX = size of parameter block in words (000Ah)
CX:DX -> parameter block (see #2379)
Return: AX = 0001h success
Desc: this function is used to initialize the dispatcher
SeeAlso: AX=E101h,AX=E103h

Format of Da Vinci eMail "NetInitStart" parameter block:
Offset Size Description (Table 2379)
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 ???
--------e-92E101BX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck"
AX = E101h
BX = 0000h
CX:DX ignored
Return: AX = 0001h success
SeeAlso: AX=E100h,AX=E180h
--------e-92E102BX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver"
AX = E102h
BX = 0000h
CX:DX ignored
Return: AX = 0001h success
Desc: this function is used to determine if the dispatcher is loaded
SeeAlso: AX=E10Bh,AX=E180h
--------e-92E103BX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetTerminate"
AX = E103h
BX = 0000h
CX:DX ignored
Return: AX = status (see #2378)
SeeAlso: AX=E100h
--------e-92E104-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs"
AX = E104h
BX = size of parameter block in words (0006h)
CX:DX -> parameter block (see #2380)
Return: AX = status (see #2378)
Desc: this function is used to verify node address for usernames
SeeAlso: AX=E180h

Format of Da Vinci eMail "NetWhereIs" parameter block:
Offset Size Description (Table 2380)
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"
--------e-92E105-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetOpen"
AX = E105h
BX = size of parameter block in words (0007h)
CX:DX -> parameter block (see #2381)
Return: AX = 0000h Error
AX = handle
Desc: this function is used to open a submission channel
SeeAlso: AX=E10Ah,AX=E106h,AX=E108h

Format of Da Vinci eMail "NetOpen" parameter block:
Offset Size Description (Table 2381)
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
--------e-92E106BX0004-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetRead"
AX = E106h
BX = 0004h
CX:DX -> parameter block
Return: AX = 0001h
SeeAlso: AX=E108h
--------e-92E107BX0002-----------------------
INT 92 - Da Vinci eMail Dispatcher - "NetGetError"
AX = E107h
BX = 0002h
CX:DX -> parameter block
Return: AX = 0001h
SeeAlso: AX=E109h,AX=E180h
--------e-92E108-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetWrite"
AX = E108h
BX = size of parameter block in words (0004h)
CX:DX -> parameter block (see #2382)
Return: AX = amount written
Desc: 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 Da Vinci eMail "NetWrite" parameter block:
Offset Size Description (Table 2382)
00h WORD buffer count (see #2384)
02h WORD segment of command buffer (see #2383)
04h WORD offset of command buffer
06h WORD handle from NetOpen

Format of Da Vinci eMail command buffer:
Offset Size Description (Table 2383)
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 Da Vinci eMail message header buffer:
Offset Size Description (Table 2384)
00h 30 BYTEs subject line
1Eh 24 BYTEs To
36h 24 BYTEs From
4Eh DWORD Time
BYTE 00h
BYTE hour
BYTE minute
BYTE second
52h DWORD Date
BYTE 00h
BYTE year
BYTE month
BYTE day
56h DWORD serial number (00000000h)
5Ah WORD mail types (see #2385)
5Ch WORD special types (0)

Bitfields for Da Vinci eMail mail types:
Bit(s) Description (Table 2385)
7 blind carbon copy
6 carbon copy
5 priority
4 confidential
3 certified
2 bulk
1-0 class (first, second, third, bulk)
--------e-92E109-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED)
AX = E109h
BX = size of parameter block in words (0001h)
CX:DX -> parameter block (see #2386)
Return: AX = FF97h (ERS_NOT_AVAILABLE)
SeeAlso: AX=E107h,AX=E180h

Format of Da Vinci eMail "NetErrorFix" parameter block:
Offset Size Description (Table 2386)
00h WORD ???
--------e-92E10A-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetClose"
AX = E10Ah
BX = size of parameter block in words (0001h)
CX:DX -> parameter block (see #2387)
Return: AX = 0001h
Desc: this function is used to close a dispatcher handle
SeeAlso: AX=E105h

Format of Da Vinci eMail "NetClose" parameter block:
Offset Size Description (Table 2387)
00h WORD handle from NetOpen
--------e-92E10B-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue"
AX = E10Bh
BX = size of parameter block in words (0004h)
CX:DX -> parameter block (see #2388)
Return: AX = 0001h
SeeAlso: AX=E102h,AX=E10Ch

Format of Da Vinci eMail "NetCheckQueue" parameter block:
Offset Size Description (Table 2388)
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
--------e-92E10C-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue"
AX = E10Ch
BX = size of parameter block in words (0002h)
CX:DX -> parameter block (see #2389)
Return: AX = 0001h
SeeAlso: AX=E10Bh

Format of Da Vinci eMail "NetReadQueue" parameter block:
Offset Size Description (Table 2389)
00h WORD Segment of 128 byte node address buffer
02h WORD Offset of 128 byte node address buffer
--------e-92E10D-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName"
AX = E10Dh
BX = size of parameter block in words (0006h)
CX:DX -> parameter block (see #2390)
Return: AX = status (see #2378)
Desc: this function is used to verify username/password
SeeAlso: AX=E10Eh

Format of Da Vinci eMail "NetSubmitName" parameter block:
Offset Size Description (Table 2390)
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"
--------e-92E10E-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName"
AX = E10Eh
BX = size of parameter block in words (0004h)
CX:DX -> parameter block (see #2391)
Return: AX = 0001h
Desc: this function is used to remove a username
SeeAlso: AX=E10Dh

Format of Da Vinci eMail "NetRemoveName" parameter block:
Offset Type Description (Table 2391)
00h WORD segment of uppercase username
02h WORD offset of uppercase username
04h WORD segment of "DVSEMAIL"
06h WORD offset of "DVSEMAIL"
--------e-92E10FBX0000-----------------------
INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY
AX = E10Fh
BX = 0000h
CX:DX ignored
Return: AX = 0001h
SeeAlso: AX=E180h
--------e-92E110-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute"
AX = E110h
BX = size of parameter block in words (0006h)
CX:DX -> parameter block (see #2392)
Return: AX = 0001h
SeeAlso: AX=E111h,AX=E113h

Format of Da Vinci eMail "NetGetAltRoute" parameter block:
Offset Size Description (Table 2392)
00h 6 WORDs ???
--------e-92E111-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes"
AX = E111h
BX = size of parameter block in words (0004h)
CX:DX -> parameter block (see #2393)
Return: AX = 0001h
SeeAlso: AX=E110h,AX=E113h

Format of Da Vinci eMail "NetDeleteAltRoutes" parameter block:
Offset Size Description (Table 2393)
00h 4 WORDs ???
--------e-92E112-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword"
AX = E112h
BX = size of parameter block in words (0008h)
CX:DX -> parameter block (see #2394)
Return: AX = 0001h
SeeAlso: AX=E180h

Format of Da Vinci eMail "NetChangePassword" parameter block:
Offset Size Description (Table 2394)
00h 8 WORDs ???
--------e-92E113-----------------------------
INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute"
AX = E113h
BX = size of parameter block in words (0008h)
CX:DX -> parameter block (see #2395)
Return: AX = 0001h
SeeAlso: AX=E110h,AX=E111h

Format of Da Vinci eMail "NetSetAltRoute" parameter block:
Offset Size Description (Table 2395)
00h 8 WORDs ???
--------e-92E175-----------------------------
INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR
AX = E175h
Return: AX = 0012h
BX = PSP
SeeAlso: AX=E180h
--------e-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,AX=E105h,AX=E10Fh,AX=E175h
--------r-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
--------N-93---------------------------------
INT 93 - IBM TOKEN RING ADAPTER - ???
SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
--------r-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
--------s-94----SI0000-----------------------
INT 94 u - PCM driver - INITIALIZE SOUND
SI = 0000h
ES:BX -> parameters
Return: ???
Program: PCM.COM is a sound driver for Media Vision's Pro Audio Spectrum
sound boards
Note: the installation check consists of testing for the signature string
"PCMDRIVER" immediately preceding the interrupt handler; the word
preceding the signature gives the PCM driver's version
SeeAlso: SI=0001h,SI=0002h,SI=0003h,SI=0004h,SI=0005h,SI=000Ah
Index: installation check;PCM driver|PCM.COM;installation check
Index: PCM driver;installation check
--------s-94----SI0001-----------------------
INT 94 u - PCM driver - INITIALIZE PCM
SI = 0001h
ES:BX -> parameters
Return: ???
SeeAlso: SI=0000h,SI=0002h,SI=0003h,SI=000Ah
--------s-94----SI0002-----------------------
INT 94 u - PCM driver - INITIALIZE PCM INFO
SI = 0002h
ES:BX -> parameters (see #2396)
Return: ???
SeeAlso: SI=0000h,SI=0001h,SI=0003h,SI=000Ah

Format of PCM driver function 0002h parameters:
Offset Size Description (Table 2396)
00h DWORD rate
04h WORD channel number
06h WORD "comp"
08h WORD "dsize"
--------s-94----SI0003-----------------------
INT 94 u - PCM driver - INITIALIZE DMA BUFFER
SI = 0003h
ES:BX -> parameters (see #2397)
Return: ???
SeeAlso: SI=0000h,SI=000Ah,SI=000Bh

Format of PCM driver function 0003h parameters:
Offset Size Description (Table 2397)
00h DWORD -> DMA buffer
04h WORD size of DMA buffer
06h WORD number of divisions
--------s-94----SI0004-----------------------
INT 94 u - PCM driver - INITIALIZE USER FUNCTION
SI = 0004h
ES:BX -> parameters (see #2398)
Return: ???
SeeAlso: SI=0000h,SI=0001h

Format of PCM driver function 0004h parameters:
Offset Size Description (Table 2398)
00h DWORD -> user function
--------s-94----SI0005-----------------------
INT 94 u - PCM driver - BEGIN AUDIO PLAY
SI = 0005h
Return: ???
SeeAlso: SI=0000h,SI=0006h,SI=0007h,SI=0009h
--------s-94----SI0006-----------------------
INT 94 u - PCM driver - BEGIN AUDIO RECORD
SI = 0006h
Return: ???
SeeAlso: SI=0005h,SI=0007h,SI=0009h
--------s-94----SI0007-----------------------
INT 94 u - PCM driver - PAUSE AUDIO PLAY/RECORD
SI = 0007h
Return: ???
SeeAlso: SI=0005h,SI=0006h,SI=0008h
--------s-94----SI0008-----------------------
INT 94 u - PCM driver - RESUME AUDIO PLAY/RECORD
SI = 0008h
Return: ???
SeeAlso: SI=0007h
--------s-94----SI0009-----------------------
INT 94 u - PCM driver - STOP AUDIO PLAY/RECORD
SI = 0009h
Return: ???
SeeAlso: SI=0005h,SI=0006h,SI=0007h
--------s-94----SI000A-----------------------
INT 94 u - PCM driver - UNHOOK INTERRUPTS AND TURN OFF DMA
SI = 000Ah
Return: ???
SeeAlso: SI=0000h,SI=0001h,SI=0003h
Index: uninstall;PCM driver
--------s-94----SI000B-----------------------
INT 94 u - PCM driver - FIND VALID DMA BUFFER IN HUGE MEMORY BLOCK
SI = 000Bh
ES:BX -> parameters (see #2399)
Return: ???
SeeAlso: SI=0003h

Format of PCM driver functio 000Bh parameters:
Offset Size Description (Table 2399)
00h DWORD -> memory block to contain DMA buffer
04h WORD desired size of DMA buffer
--------s-94----SI000D-----------------------
INT 94 u - Media Vision PCM.COM - GET STATUS
SI = 000Dh
Return: AX = status (0000h = waiting) (see #2400)

Bitfields for PCM.COM status:
Bit(s) Description (Table 2400)
0 playing
1 recording
2 SBplaying
3 SBrecording
14 SBpaused
15 paused
--------s-94----SI8000-----------------------
INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER ADDRESS
SI = 8000h
Return: DX:AX -> DMA buffer
Program: PCM.COM is a superset of the standard PCM driver which provides
additional functions for fine control of the driver
Note: the installation check for the Media Vision PCM.COM "shark" functions
consists of testing for the signature "PCM-SHARK" at offset 107h in
the INT 94 handler's segment
SeeAlso: SI=8001h,SI=8004h
Index: installation check;Media Vision PCM.COM|PCM.COM;installation check
Index: Media Vision PCM.COM;"shark" functions
--------s-94----SI8001-----------------------
INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER SIZE AND DIVISIONS
SI = 8001h
Return: AX = DMA buffer size
DX = divisions
SeeAlso: SI=8000h
--------s-94----SI8002-----------------------
INT 94 u - Media Vision PCM.COM - CHECK BOARD ADDRESS
SI = 8002h
Return: AX = status
0000h if board not at specified I/O address
other if board found
Note: the I/O address is specified by ORing the base I/O port shifted left
four bits into SI before calling INT 94
SeeAlso: SI=8000h
--------s-94----SI8004-----------------------
INT 94 u - Media Vision PCM.COM - GET INTERNAL NOTE BUFFER
SI = 8004h
Return: AX = offset of note buffer (segment = segment of internal DMA buffer)
DX = size of buffer in note structures
SeeAlso: SI=8000h
--------s-94----SI8005-----------------------
INT 94 u - Media Vision PCM.COM - SINGLE-STEP QUEUE
SI = 8005h
Return: ???
--------s-94----SI8011-----------------------
INT 94 u - Media Vision PCM.COM - INITIALIZE
SI = 8011h
ES:BX -> "iobf91" structure
Return: ???
--------s-94----SI8012-----------------------
INT 94 u - Media Vision PCM.COM - LOAD SOUND FOR LATER PLAY THROUGH KEYBOARD
SI = 8012h
ES:BX -> "i94f92buf" structure
Return: ???
SeeAlso: SI=8013h,SI=8014h
--------s-94----SI8013-----------------------
INT 94 u - Media Vision PCM.COM - GET INTERNAL SOUND USAGE
SI = 8013h
Return: AX = number of sounds used
DX = maximum handles
--------s-94----SI8014-----------------------
INT 94 u - Media Vision PCM.COM - GET DATA FOR SPECIFIED SOUND
SI = 8014h
ES:BX -> "i94f92buf" structure to be filled in
sound number field set to desired sound
Return: AX = status
0000h successful
FFFFh sound number out of range
SeeAlso: SI=8012h,SI=8013h
--------s-94----SI8015-----------------------
INT 94 u - Media Vision PCM.COM - GET/SET INTERNAL DMA BUFFER
SI = 8015h
ES:BX -> DMA info structure (see #2401)
Return: ???

Format of PCM.COM DMA info structure:
Offset Size Description (Table 2401)
00h DWORD -> DMA buffer (offset FFFFh = return current buffer info)
04h WORD DMA buffer size
06h WORD divisions
--------s-94----SI8016-----------------------
INT 94 u - Media Vision PCM.COM - SIMULATE DOUBLE-SHIFT HOTKEY
SI = 8016h
AX = hotkey number (01h-08h)
Return: ???
SeeAlso: AL=02h/SI=8017h
--------s-94--01SI8017-----------------------
INT 94 u - Media Vision PCM.COM - CTRL-G INTERCEPT
AL = 01h
SI = 8017h
AH = new state (00h off, 01h on)
Return: ???
SeeAlso: AL=02h/SI=8017h
--------s-94--02SI8017-----------------------
INT 94 u - Media Vision PCM.COM - DOUBLE-SHIFT-HOTKEY SOUND FEATURE
AL = 02h
SI = 8017h
AH = new state (00h off, 01h on)
Return: ???
--------s-94--04SI8017-----------------------
INT 94 u - Media Vision PCM.COM - RANDOM SOUND FEATURE
AL = 04h
SI = 8017h
AH = new state
00h off
01h on
CX = minimum delay
DX = maximum delay
Return: ???
--------s-94--08SI8017-----------------------
INT 94 u - Media Vision PCM.COM - NO ACTIVITY FEATURE
AL = 08h
SI = 8017h
AH = new state
00h off
01h on
DX:CX = delay
Return: ???
SeeAlso: AL=10h/SI=8017h
--------s-94--10SI8017-----------------------
INT 94 u - Media Vision PCM.COM - TIMER CONTROL
AL = 10h
SI = 8017h
AH bit 7: set timer
AH bit 6: timer active (timer turned off if clear)
AH bits 5-0: timer number
DX:CX = delay if AH bit 7 set (one-shot if DX bit 15 set)
Return: ???
SeeAlso: AL=08h/SI=8017h
--------s-94----SI8018-----------------------
INT 94 u - Media Vision PCM.COM - GET INFO
SI = 8018h
AL = what to get
00h "F92state"
01h "F92bkgd"
02h "I10timer"
03h "I08state"
Return: DX:AX -> desired information
--------r-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
--------r-95---------------------------------
INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
Note: use only when the R= option is invoked on entering APL
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
SeeAlso: INT 80"BASIC",INT 99,INT 9B
--------r-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
SeeAlso: INT 80"BASIC",INT 9A,INT 9C"BASIC"
--------r-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
SeeAlso: INT 80"BASIC",INT 9B,INT 9D"BASIC"
--------v-9C---------------------------------
INT 9C - VIRUS - "INT13" - ORIGINAL INT 13h VECTOR
SeeAlso: INT 8B"VIRUS",INT 9D"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
--------r-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
SeeAlso: INT 80"BASIC",INT 9C"BASIC",INT 9E"BASIC"
--------v-9D---------------------------------
INT 9D - VIRUS - "INT13" - ROM INT 13h ENTRY POINT
Note: this vector is used by the virus to store the result of a call to
INT 2F/AH=13h
SeeAlso: INT 2F/AH=13h,INT 9C"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
--------r-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
SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT 9F"BASIC"
--------v-9E---------------------------------
INT 9E - VIRUS - "INT13" - ORIGINAL INT 21h VECTOR
SeeAlso: INT 70"VIRUS",INT 9C"VIRUS",INT 9D"VIRUS",INT E0"VIRUS"
--------r-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
SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT A0"BASIC"
--------v-9F---------------------------------
INT 9F - VIRUS - "INT13" - STORAGE FOR USER INT 13h VECTOR
Note: while it is infecting a file, the INT13 virus grabs INT 13 and uses
this interrupt to store the existing INT 13 vector for later
restoration
SeeAlso: INT 9C"VIRUS",INT 9D"VIRUS"
--------r-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
SeeAlso: INT 80"BASIC",INT 9F"BASIC",INT A1"BASIC"
--------r-A0---------------------------------
INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
SeeAlso: INT 59
--------r-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
SeeAlso: INT 80"BASIC",INT A0"BASIC",INT A2"BASIC"
--------r-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
SeeAlso: INT 80"BASIC",INT A1"BASIC",INT A3"BASIC"
--------r-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
SeeAlso: INT 80"BASIC",INT A2"BASIC",INT A4"BASIC"
--------r-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
SeeAlso: INT 80"BASIC",INT A3"BASIC",INT A5"BASIC"
--------U-A4---------------------------------
INT A4 U - Right Hand Man - API
AH = function number (v3.3 supports functions 00h-52h)
Return: CF set on error
CF clear if successful
Program: Right Hand Man is a TSR desk-top utility originally by Red E Products
which has evolved into Futurus Team
Note: this interrupt is only hooked while popped up
SeeAlso: INT 2F/AX=A4E0h
--------r-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
SeeAlso: INT 80"BASIC",INT A4"BASIC",INT A6"BASIC"
--------r-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
SeeAlso: INT 80"BASIC",INT A5"BASIC",INT A7"BASIC"
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------U-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
Program: ZIPKEY is a resident ZIPCODE database by Eric Isaacson
Note: 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)
--------U-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
--------U-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
--------U-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
--------U-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
--------U-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
--------U-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,AH=7Eh
--------U-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
--------U-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
--------U-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
--------U-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
--------U-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, or FFh if none
CX:DX = internal code identifying last city search
AX destroyed
SeeAlso: AH=7Ch
--------U-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, or 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
--------U-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 = error code
FDh already busy with another request
FEh illegal function
CF clear if successful
AX destroyed
window popped up and was closed by the user
SeeAlso: AH=70h
--------U-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
SeeAlso: AH=76h
--------U-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
--------U-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
--------r-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
--------r-B4---------------------------------
INT B4 - StackMan - REQUEST NEW STACK
Return: SS:SP -> new stack
Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
which functions as a replacement for the DOS STACK= command as well
as permitting multiple TSRs to share a pool of stack space
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"
Index: installation check;STACKMAN
--------r-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
SeeAlso: INT 80"BASIC",INT B4"BASIC",INT B6"BASIC"
--------r-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"
--------m-B5---------------------------------
INT B5 U - Netroom NETSWAP4 - ???
???
Return: ???
SeeAlso: INT 31/AH=57h
--------r-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
SeeAlso: INT 80"BASIC",INT B5"BASIC",INT B7"BASIC"
--------y-B6---------------------------------
INT B6 - (NOT A VECTOR!) - USED BY TBFENCE
Program: TBFence is a security program by ESaSS B.V. which transparently
encrypts floppies and optionally allows only encrypted diskettes to
be accessed
Note: the low word of this vector (0000h:02D8h) contains the segment of the
TBFence INT 13h code, which starts with the signature word E487h;
this forms the installation check
the highest byte of this vector contains the start of a FAR JMP

instruction to ???
SeeAlso: INT B7"TBFENCE"
Index: installation check;TBFence
--------r-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
SeeAlso: INT 80"BASIC",INT B6"BASIC",INT B8"BASIC"
--------y-B7---------------------------------
INT B7 - TBFENCE - ???
SeeAlso: INT B6"TBFENCE"
--------r-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
SeeAlso: INT 80"BASIC",INT B7"BASIC",INT B9"BASIC"
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
SeeAlso: INT 80"BASIC",INT BD"BASIC",INT BF"BASIC"
--------Q-BE---------------------------------
INT BE - DESQview/X - ???
Note: points at an IRET
SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63"DESQview"
--------r-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
SeeAlso: INT 80"BASIC",INT BE"BASIC",INT C0"BASIC"
--------r-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
SeeAlso: INT 80"BASIC",INT BF"BASIC",INT C1"BASIC"
--------d-C0---------------------------------
INT C0 - AMI BIOS - DRIVE 0 DATA
Note: this vector is used by some AMI BIOSes to store the first four bytes
of the hard disk parameter table
SeeAlso: INT 41,INT 60"Adaptec",INT C1"AMI",INT C2"AMI",INT C3"AMI",INT C4"AMI"
--------r-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
SeeAlso: INT 80"BASIC",INT C0"BASIC",INT C2"BASIC"
--------d-C1---------------------------------
INT C1 - AMI BIOS - DRIVE 0 DATA
Note: this vector is used by some AMI BIOSes to store the second four bytes
of the hard disk parameter table
SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C2"AMI",INT C3"AMI"
--------r-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
SeeAlso: INT 80"BASIC",INT C1"BASIC",INT C3"BASIC"
--------d-C2---------------------------------
INT C2 - AMI BIOS - DRIVE 0 DATA
Note: this vector is used by some AMI BIOSes to store the third four bytes
of the hard disk parameter table
SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C3"AMI"
--------r-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
SeeAlso: INT 80"BASIC",INT C2"BASIC",INT C4"BASIC"
--------d-C3---------------------------------
INT C3 - AMI BIOS - DRIVE 0 DATA
Note: this vector is used by some AMI BIOSes to store the final four bytes
of the hard disk parameter table
SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C2"AMI"
--------r-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
SeeAlso: INT 80"BASIC",INT C3"BASIC",INT C5"BASIC"
--------d-C4---------------------------------
INT C4 - AMI BIOS - DRIVE 1 DATA
Note: this vector is used by some AMI BIOSes to store the first four bytes
of the second hard disk's parameter table
SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C5"AMI",INT C6"AMI",INT C7"AMI"
--------r-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
SeeAlso: INT 80"BASIC",INT C4"BASIC",INT C6"BASIC"
--------d-C5---------------------------------
INT C5 - AMI BIOS - DRIVE 1 DATA
Note: this vector is used by some AMI BIOSes to store the second four bytes
of the second hard disk's parameter table
SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C6"AMI",INT C7"AMI"
--------r-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
SeeAlso: INT 80"BASIC",INT C5"BASIC",INT C7"BASIC"
--------r-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"
--------d-C6---------------------------------
INT C6 - AMI BIOS - DRIVE 1 DATA
Note: this vector is used by some AMI BIOSes to store the third four bytes
of the second hard disk's parameter table
SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C5"AMI",INT C7"AMI"
--------r-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
SeeAlso: INT 80"BASIC",INT C6"BASIC",INT C8"BASIC"
--------r-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"
--------d-C7---------------------------------
INT C7 - AMI BIOS - DRIVE 1 DATA
Note: this vector is used by some AMI BIOSes to store the final four bytes
of the second hard disk's parameter table
SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C5"AMI",INT C6"AMI"
--------r-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
SeeAlso: INT 80"BASIC",INT C7"BASIC",INT C9"BASIC"
--------r-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"
--------r-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
SeeAlso: INT 80"BASIC",INT C8"BASIC",INT CA"BASIC"
--------r-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"
--------r-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
SeeAlso: INT 80"BASIC",INT C9"BASIC",INT CB"BASIC"
--------r-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"
--------r-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
SeeAlso: INT 80"BASIC",INT CA"BASIC",INT CC"BASIC"
--------r-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"
--------r-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
SeeAlso: INT 80"BASIC",INT CB"BASIC",INT CD"BASIC"
--------r-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"
--------r-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
SeeAlso: INT 80"BASIC",INT CC"BASIC",INT CE"BASIC"
--------r-CD---------------------------------
INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------r-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
SeeAlso: INT 80"BASIC",INT CD"BASIC",INT CF"BASIC"
--------r-CE---------------------------------
INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------r-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
SeeAlso: INT 80"BASIC",INT CE"BASIC",INT D0"BASIC"
--------r-CF---------------------------------
INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
SeeAlso: INT E0"APL"
--------r-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
SeeAlso: INT 80"BASIC",INT CF"BASIC",INT D1"BASIC"
--------r-D0---------------------------------
INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------U-D0---------------------------------
INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR
Program: NJFRERAM is a resident free-memory display utility by Mike "Nifty
James" Blaszczak
Note: if NJFRERAM is installed, this vector points at the signature "NJ"
Index: installation check;NJFRERAM
--------r-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
SeeAlso: INT 80"BASIC",INT D0"BASIC",INT D2"BASIC"
--------r-D1---------------------------------
INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------r-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
SeeAlso: INT 80"BASIC",INT D1"BASIC",INT D3"BASIC"
--------r-D2---------------------------------
INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------r-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
SeeAlso: INT 80"BASIC",INT D2"BASIC",INT D4"BASIC"
--------r-D3---------------------------------
INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------r-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
SeeAlso: INT 80"BASIC",INT D3"BASIC",INT D5"BASIC"
--------r-D4---------------------------------
INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------O-D400-------------------------------
INT D4 O - PC-MOS/386 v5.01 - OBSOLETE FUNCTIONS
AH = 00h and 01h
Return: nothing
Desc: PC-MOS/386 v5.01 reports that these functions are no longer supported
and enters an endless loop
Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
system by The Software Link, Inc.
--------O-D402-------------------------------
INT D4 - PC-MOS/386 v3.0+ - GET SYSTEM CONTROL BLOCK POINTER
AH = 02h
Return: AX = 0000h
ES:BX -> System Control Block in V86 mode (see #2402)
ES:EBX -> System Control Block in native mode (see #2402)
Note: superseded by AH=26h
SeeAlso: AH=04h,AH=10h,AH=26h,AH=28h,AH=29h,AH=2Ah,INT 21/AX=3000h,INT 38

Format of PC-MOS/386 System Control Block:
Offset Size Description (Table 2402)
00h WORD pointer to first TCB in chain
02h 17 BYTEs reserved
13h WORD pointer to current task's TCB
15h WORD pointer to TCB of visible (console) task
--------O-D403-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET/SET EXTENDED DIRECTORY INFORMATION
AH = 03h
AL = subfunction (00h get, 01h set)
DS:(E)DX -> pathname
ES:(E)BX -> 10-byte buffer for directory information (see #2403)
Return: CF clear if successful
AL = permitted access level for file (00h-03h)
ES:(E)BX -> modified buffer (AL=01h on entry)
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
Notes: BX/DX are used in V86 mode, EBX/EDX in native mode
the file class cannot be changed for files because it affects the
encryption method, but directories can have their classes changed

Format of PC-MOS/386 directory information:
Offset Size Description (Table 2403)
00h BYTE reserved (0)
01h BYTE file class ('A'-'Z' or 00h)
02h DWORD user ID of file creator
06h WORD file creation time (see #0802 at INT 21/AX=5700h)
08h WORD file creation date (see #0803 at INT 21/AX=5700h)
--------O-D404-------------------------------
INT D4 - PC-MOS/386 v3.0+ - GET TASK CONTROL BLOCK
AH = 04h
BX = task ID or FFFFh for calling task
Return: CF clear if successful
ES = segment of Task Control Block (TCB) (see #2404)
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
Note: superseded by AH=27h
SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah,INT 38

Format of PC-MOS/386 Task Control Block:
Offset Size Description (Table 2404)
00h BYTE signature byte "H" if allocated from system memory pool
01h BYTE header block ID, "T" = TCB
02h WORD length of block in paragraphs
04h WORD segment address of next header block (0000h if last)
06h WORD segment address of previous header block (0000h if first)
08h WORD pointer to next TCB
0Ah WORD pointer to previous TCB
0Ch WORD pointer to associated TCB (if applicable)
0Eh WORD reserved
---TCB---
10h WORD TCB task ID
12h WORD native context save area
14h WORD start address of task
16h WORD end address of task
18h BYTE task priority
19h BYTE task time slice
1Ah BYTE "TCBWAIT" run status of task
1Bh BYTE "TCBSTAT" what the task is waiting for
1Ch DWORD address of polling routine
20h BYTE error code from last function call
21h 11 BYTEs name of currently executing task
2Ch 4 BYTEs ???
30h BYTE keyboard disabled if bit 1 set
31h BYTE current shift state and toggles
32h 2 BYTEs ???
34h BYTE current video mode
35h BYTE current video page
36h BYTE number of text columns per screen
37h BYTE number of text rows per screen
38h WORD length of video buffer
3Ah WORD video page length
3Ch WORD apge start address in video RAM
3Eh 4 WORDs current cursor positions for four screen pages
46h 8 BYTEs ???
4Eh WORD current cursor type
50h BYTE current palette setting
51h BYTE original video mode
52h BYTE start CRT row (00h or 01h)
53h BYTE video RAM in task active
54h WORD handle of video save area
56h WORD page count of video save area
58h WORD segment address of video save area

5Ah WORD poitner to first Task File Block (see #2407)
5Ch WORD pointer to first Current Directory Block (see #2410)
5Eh WORD pointer to active Current Directory Block (see #2410)
60h BYTE number of drives
61h BYTE current drive (0=A:, etc.)
62h DWORD disk transfer address
66h 4 BYTEs ???
6Ah BYTE verify flag (nonzero = on)
6Bh BYTE break flag (nonzero = on)
6Ch WORD share/lock retry count
6Eh WORD ticks between share/lock retries
70h BYTE remote printer flags (see #2405)
71h BYTE ETX/ACK delay count
72h WORD spooler segment address
74h 2 BYTEs ???
76h 3 BYTEs remote printer redirection for LPT1 through LPT3 (see #2406)
79h 2 BYTEs ???
7Bh DWORD offset of username in TCB
7Fh BYTE current output class
80h 7 BYTEs protection access rights, 2 bits per class (writeable!)
87h 122 BYTEs ???
101h BYTE TCB sleep downcounter value
102h 20 BYTEs ???
116h BYTE last scan code
...
5D0h DWORD far pointer to Device Driver Terminal's entry point
5D4h WORD offset of logical screen
5D6h WORD segment of logical screen
5D8h WORD cursor offset within page
5DAh BYTE screen columns
5DBh WORD async port number (0000h = none)
5DDh DWORD physical baudrate
5E1h 19 BYTEs reserved for Device Driver Terminal (DDT)
...
7A6h DWORD far pointer to unregister calling chain

Bitfields for PC-MOS/386 remote printer flags:
Bit(s) Description (Table 2405)
0 LPT1 to terminal
1 LPT2 to terminal
2 LPT3 to terminal
3 escape to printer pending
4 use XON/XOFF
5 use ETX/ACK
6 waiting for ACK or XON
7 transparent printing on

(Table 2406)
Values for PC-MOS/386 remote printer redirection:
00h not redirected
01h redirected to COM1
...
18h redirected to COM24
51h redirected to LPT1
52h redirected to LPT2
53h redirected to LPT3

Format of PC-MOS/386 Task File Block:
Offset Size Description (Table 2407)
00h BYTE signature byte "H" if allocated from system memory pool
01h BYTE header block ID, "F" = task file block
02h WORD length of block in paragraphs
04h WORD segment address of next header block (0000h if last)
06h WORD segment address of previous header block (0000h if first)
08h WORD pointer to next TCB
0Ah WORD pointer to previous TCB
0Ch WORD pointer to associated TCB (if applicable)
0Eh WORD reserved
---TFB---
10h WORD segment address of next TFB
12h WORD segment address of previous TFB
14h WORD segment address of TFB's Global File Block (see #2409)
16h WORD segment address of owner's PSP
18h WORD file handle
1Ah 3 BYTEs ???
1Dh DWORD file position
21h 4 BYTEs ???
25h BYTE IOCTL flags (see #2408)
26h 2 BYTEs ???

Bitfields for PC-MOS/386 IOCTL flags:
Bit(s) Description (Table 2408)
0 stdin
1 stdout
2 null device
3 clock device
4 reserved
5 ASCII mode instead of binary
6 EOF encountered on input
7 device rather than file

Format of PC-MOS/386 Global File Block:
Offset Size Description (Table 2409)
00h BYTE signature byte "H" if allocated from system memory pool
01h BYTE header block ID, "G" = global file block
02h WORD length of block in paragraphs
04h WORD segment address of next header block (0000h if last)
06h WORD segment address of previous header block (0000h if first)
08h WORD pointer to next TCB
0Ah WORD pointer to previous TCB
0Ch WORD pointer to associated TCB (if applicable)
0Eh WORD reserved
---GFB---
10h 10 BYTEs ???
1Ah WORD file attribute
1Ch BYTE ???
1Dh DWORD address of device driver
21h WORD first cluster
23h WORD time of last modification
25h WORD date of last modification
27h DWORD size of file in bytes
2Bh 11 BYTEs ???
36h 11 BYTEs device name or FCB-format filename
41h WORD segment address of TFB list
43h WORD segment address of first RLB (see #2412) (0000h = none)
45h BYTE flag: nonzero if GFB refers to character device
46h WORD address of Block Device Block (see #2411)
48h WORD sector of file's directory entry
4Ah WORD high word of file's directory entry
4Ch WORD ofsset of directory entry within sector

Format of PC-MOS/386 Current Directory Block:
Offset Size Description (Table 2410)
00h BYTE signature byte "H" if allocated from system memory pool
01h BYTE header block ID, "C" = current directory block
02h WORD length of block in paragraphs
04h WORD segment address of next header block (0000h if last)
06h WORD segment address of previous header block (0000h if first)
08h WORD pointer to next TCB
0Ah WORD pointer to previous TCB
0Ch WORD pointer to associated TCB (if applicable)
0Eh WORD reserved
---CDB---
10h BYTE drive number
11h BYTE ???
12h 64 BYTEs directory name
52h WORD first directory cluster (0000h = root)

Format of PC-MOS/386 Block Device Block:
Offset Size Description (Table 2411)
00h BYTE signature byte "H" if allocated from system memory pool
01h BYTE header block ID, "B" = block device block
02h WORD length of block in paragraphs
04h WORD segment address of next header block (0000h if last)
06h WORD segment address of previous header block (0000h if first)
08h WORD pointer to next TCB
0Ah WORD pointer to previous TCB
0Ch WORD pointer to associated TCB (if applicable)
0Eh WORD reserved
---BDB---
10h BYTE logical drive
11h BYTE unit passed to driver
12h WORD sector size
14h BYTE cluster mask
15h BYTE cluster shift count
16h WORD starting sector of first FAT
18h BYTE number of FATs
19h WORD number of root directories
1Bh WORD sector number of first data sector (cluster 0002h)
1Dh WORD number of clusters + 1 (number of highest data cluster)
1Fh BYTE number of sectors in FAT
20h WORD beginning root directory sector number
22h DWORD device driver address
26h BYTE media descriptor byte
27h 5 BYTEs ???
2Ch BYTE flag: volume > 32MB
2Dh BYTE ???
2Eh BYTE number of sectors per cluster
2Fh WORD number of clusters on device
31h WORD number of free clusters (FFFFh = unknown)
33h WORD root directory cluster number
35h WORD pointer to alias/subst string
37h WORD TCB segment address of owner (0000h = none)

Format of PC-MOS/386 Record Lock Block:
Offset Size Description (Table 2412)
00h BYTE signature byte "H" if allocated from system memory pool
01h BYTE header block ID, "R" = record lock block
02h WORD length of block in paragraphs
04h WORD segment address of next header block (0000h if last)
06h WORD segment address of previous header block (0000h if first)
08h WORD pointer to next TCB
0Ah WORD pointer to previous TCB
0Ch WORD pointer to associated TCB (if applicable)
0Eh WORD reserved
---RLB---
10h WORD segment address of owner's PSP
12h WORD segment address of Global File Block (see #2409)
14h WORD segment address of owner's Task File Block (see #2407)
16h DWORD file offset of locked region start
1Ah DWORD length of locked region
1Eh WORD owner's handle for file
--------O-D407-------------------------------
INT D4 - PC-MOS/386 v3.0+ - WAIT FOR EVENT
AH = 07h
AL = events to monitor (see #2413)
BX = number of timer ticks until timeout if AL bit 1 set
CX = bitmap of IRQs to monitor if AL bit 2 set
(bit 0 = IRQ0 .. bit 15 = IRQ15)
DX = port to monitor if AL bit 3 set
Return: CF clear if successful
AL = type of event which woke up task (see above)
CX = IRQ (if any) which awakened task
DX = port (if any) which awakened task
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
Note: a device driver may make this call with AL=00h, which indicates that
the driver is responsible for setting and clearing the TCBWAIT field
in the TCB. To put task to sleep, set TCBWAIT bits 2-0 to 001; to
reawaken it, set bit 1 (leaving other bits unchanged)
SeeAlso: AH=04h,INT 16/AH=00h,INT 38

Bitfields for PC-MOS/386 events to monitor:
Bit(s) Description (Table 2413)
0 keystroke
1 timeout
2 IRQ
3 port access
7 return status of user poll routine (other ignored if set)
--------O-D410-------------------------------
INT D4 - PC-MOS/386 v3.0+ - ENTER/LEAVE NATIVE 386 EXECUTION MODE
AH = 10h
AL = direction (00h return to V86 mode, 01h enter native mode)
CX = length in bytes of Native Context Area ( >=1024 )
DX = segment of Native Context Area
Return: CF clear if successful
running in desired mode at instruction following INT D4 call
all segment registers converted to appropriate selectors/segments
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
Note: MS-DOS calls are available in protected mode
SeeAlso: AH=11h,AH=12h,AH=13h,INT 2F/AX=1687h,INT 67/AX=DE0Ch,INT 38
--------O-D411-------------------------------
INT D4 - PC-MOS/386 v3.0+ - ALLOCATE NATIVE MODE MEMORY BLOCK
AH = 11h
EBX = block length in bytes
Return: CF clear if successful
EBX = number of bytes actually allocated
ES = selector for allocated block
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
system by The Software Link, Inc.
Note: the memory must be released before the program terminates
SeeAlso: AH=10h,AH=12h,INT 38
--------O-D412-------------------------------
INT D4 - PC-MOS/386 v3.0+ - FREE NATIVE MODE MEMORY BLOCK
AH = 12h
ES = selector for block to free
Return: CF clear if successful
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
SeeAlso: AH=10h,AH=11h,AH=13h,INT 38
--------O-D413-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET ALIAS FOR SELECTOR (NATIVE MODE ONLY)
AH = 13h
AL = type of alias selector (00h data, 01h stack, 02h code)
BX = selector
Return: CF clear if successful
AX = new selector or 0000h if BX selector not found
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
SeeAlso: AH=11h,AH=12h
--------O-D416-------------------------------
INT D4 - PC-MOS/386 v5.01 - SET/CLEAR IRQ RESERVATION
AH = 16h
AL = function (00h clear, 01h set reservation)
CX = IRQ number
Return: AX = status
(0000h successful, 0001h currently reserved by another task)
SeeAlso: AH=07h,INT 14/AH=11h"PC-MOS"
--------O-D419-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET TASK ID
AH = 19h
Return: BX = caller's task ID
Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
system by The Software Link, Inc.
SeeAlso: AH=1Dh,AH=1Eh
--------O-D41A-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET/SET TASK PRIORITY
AH = 1Ah
AL = subfunction (00h read, 01h set, 02h get and set)
BX = task ID (FFFFh for current task)
CL = new priority value
Return: CF clear if successful
CL = current priority value
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
SeeAlso: AH=1Bh,AH=1Ch
--------O-D41B-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET/SET TIME SLICE
AH = 1Bh
AL = subfunction (00h read, 01h set, 02h get and set)
BX = task ID (FFFFh for current task) (see AH=19h)
CL = new time slice value
Return: CF clear if successful
CL = current time slice value
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
SeeAlso: AH=1Ah,AH=1Ch
--------O-D41C-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET/SET KEYBOARD MODE
AH = 1Ch
AL = subfunction (00h enable, 01h disable, 02h get mode)
BX = task ID (FFFFh for current task)
Return: CF clear if successful
CL = current keyboard state
CF set on error
AX = error code (INT 21/AH=59h)
Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
system by The Software Link, Inc.
SeeAlso: AH=1Ah,AH=1Bh
--------O-D41D-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET CURRENT PROGRAM NAME
AH = 1Dh
BX = task ID (FFFFh for current task) (see AH=19h)
ES:DI -> buffer for program name (see #2414)
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
SeeAlso: AH=19h,AH=1Eh

Format of PC-MOS/386 program name buffer:
Offset Size Description (Table 2414)
00h 8 BYTEs filename
08h 3 BYTEs extension
--------O-D41E-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET CURRENT USERNAME AND SECURITY CLASS
AH = 1Eh
BX = task ID (FFFFh for current task)
ES:DI -> 4-byte buffer for username
Return: CF clear if successful
CL = security class
20h (' ') none
41h-5Ah ('A'-'Z') security level
ES:DI buffer filled
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
SeeAlso: AH=19h,AH=1Dh
--------O-D41F-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET TASK PARTITION INFORMATION
AH = 1Fh
BX = task ID (FFFFh for current task) (see AH=19h)
Return: CF clear if successful
CX = start segment of task
DX = ending segment of task
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
system by The Software Link, Inc.
SeeAlso: AH=2Dh
--------O-D420-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET PORT AND BAUDRATE INFORMATION
AH = 20h
BX = task ID (FFFFh for current task) (see AH=19h)
Return: CF clear if successful
CX = port number (0000h if none)
DI:SI = baudrate (if CX nonzero)
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
SeeAlso: INT 14/AH=0Ch"FOSSIL"
--------O-D421-------------------------------
INT D4 - PC-MOS/386 v5.01 - REMOVE A TASK
AH = 21h
BX = task ID (FFFFh for current task) (see AH=19h)
Return: CF clear if successful
AX = ASCII percentage of System Memory Pool used
(AH = tens digit, AL = ones digit)
DS,SI destroyed
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
system by The Software Link, Inc.
SeeAlso: AH=22h
--------O-D422-------------------------------
INT D4 - PC-MOS/386 v5.01 - ADD A TASK TO THE SYSTEM
AH = 22h
DS:SI -> addtask data structure (see #2416)
Return: CF clear if successful
ES = segment address of the new task's TCB data structure
CF set on error
AX = error code (see #2415)
SeeAlso: AH=21h

(Table 2415)
Values for PC-MOS/386 error code:
08h insufficient memory
0Bh invalid addtask structure format
12h insufficient available space in system memory pool
1Fh general failure
55h already allocated
57h if task already in use or invalid parameter

Format of PC-MOS/386 addtask data structure:
Offset Size Description (Table 2416)
00h WORD task size in KB (min 16KB)
02h WORD task ID (0000h for automatic selection)
04h BYTE task class (' ' or 'A'-'Z')
05h DWORD -> ASCIZ name of task startup batchfile
09h DWORD -> task's terminal driver (0000000h = background task)
0Dh WORD task port
0Fh DWORD task baud rate
13h DWORD (return) total extended memory
17h DWORD (return) number of 4K extended memory pages allocated
1Bh WORD (return) paragraphs of system memory pool allocated
1Dh WORD (return) system memory pool size in paragraphs
1Fh WORD (return) ASCII task percentage of system memory pool
21h 3 BYTEs reserved
--------O-D423-------------------------------
INT D4 - PC-MOS/386 v5.01 - CHANGE TERMINAL DRIVER
AH = 23h
BX = task ID (FFFFh for current task)
DS:SI -> entry point of the new Device Driver Terminal
Return: CF clear if successful
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
--------O-D424-------------------------------
INT D4 U - PC-MOS/386 v5.01 - GET OPERATING SYSTEM SERIAL NUMBER
AH = 24h
Return: DS:DX -> '$'-terminated string containing the serial number
--------O-D425-------------------------------
INT D4 - PC-MOS/386 v5.01 - IDENTIFY LOAD ADDRESS OF DEVICE DRIVER LOCATION
AH = 25h
DX = driver's CS value
Return: AX = segment address of driver in system memory pool
(0000h if the driver is not within the system memory pool)
Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
system by The Software Link, Inc.
--------O-D426-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET SYSTEM CONTROL BLOCK SEGMENT/SELECTOR
AH = 26h
Return: DX = segment/selector of the System Control Block (see #2402)
Note: this function supersedes AH=02h
SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah
--------O-D427-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET TASK CONTROL BLOCK SEGMENT/SELECTOR
AH = 27h
BX = task ID (FFFFh if current task) (see AH=19h)
Return: CF clear if successful
DX = segment/selector for the Task Control Block (see #2404)
CF set on error
AX = error code (INT 21/AH=59h)
Note: this function supersedes AH=04h
SeeAlso: AH=26h,AH=28h,AH=29h,AH=2Ah
--------O-D428-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET CONTROL BLOCK DATA FROM SCB OR TCB
AH = 28h
BX = offset into control block at which to start reading
CX = number of bytes to read
DX = segment/selector of control block obtained via AH=26h or AH=27h
ES:DI -> buffer for data
Return: CF clear if successful
CF set on error
AX = error code (see also INT 21/AH=59h)
05h access denied due to an invalid segment/selector
SeeAlso: AH=26h,AH=27h,AH=29h,AH=2Ah
--------O-D429-------------------------------
INT D4 - PC-MOS/386 v5.01 - WRITE CONTROL BLOCK DATA INTO SCB OR TCB
AH = 29h
BX = offset into control block at which to start writing
CX = number of bytes to write
DX = segment/selector of control block obtained via AH=26h or AH=27h
DS:SI -> buffer containing data to be written
Return: CF clear if successful
CF set on errro
AX = error code (see also INT 21/AH=59h)
05h access denied due to an invalid segment/selector
Note: this function performs no bounds checking
Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
system by The Software Link, Inc.
SeeAlso: AH=26h,AH=27h,AH=28h,AH=2Ah
--------O-D42A-------------------------------
INT D4 - PC-MOS/386 v5.01 - SWAP CONTROL BLOCK DATA OF SCB OR TCB
AH = 2Ah
BX = offset into control block at which to start swap
CX = number of bytes to swap
DX = segment/selector of control block obtained via AH=26h or AH=27h
DS:SI -> buffer containing new data and to receive current data
Return: CF clear if successful
CF set on error
AX = error code (see also INT 21/AH=59h)
05h access denied due to an invalid segment/selector
Note: the interrupts are disabled during the swap to prevent corruption
SeeAlso: AH=26h,AH=27h,AH=28h,AH=29h
--------O-D42C-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET/SET SPOOLER PARAMETERS
AH = 2Ch
AL = function
00h set spooler timeout
CX = timout value in seconds
01h get spooler timeout
Return: CX = current timeout in seconds
02h get spooler parameters
Return: CH = priority (00h-09h)
CL = disposition (d, h, i, n, s)
SI = class (a - z)
03h set spooler parameters
CH = priority (00h-09h)
CL = disposition (d, h, i, n, s)
SI = class (a - z)
BX = task ID (FFFFh for current task)
DX = LPT number
Return: CF clear if successful
CF set on error
AX = error code (see #0811 at INT 21/AH=59h)
SeeAlso: AH=00h,AH=02h,AH=03h
--------O-D42D-------------------------------
INT D4 - PC-MOS/386 v5.01 - GET MAXIMUM TASK SIZE
AH = 2Dh
Return: DX = maximum task size in paragraphs
BX = start address of task space
Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
system by The Software Link, Inc.
SeeAlso: AH=1Fh,AH=22h
--------r-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
SeeAlso: INT 80"BASIC",INT D4"BASIC",INT D6"BASIC"
--------r-D5---------------------------------
INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------r-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
SeeAlso: INT 80"BASIC",INT D5"BASIC",INT D7"BASIC"
--------r-D6---------------------------------
INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------r-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
SeeAlso: INT 80"BASIC",INT D6"BASIC",INT D8"BASIC"
--------r-D7---------------------------------
INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------r-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
SeeAlso: INT 80"BASIC",INT D7"BASIC",INT D9"BASIC"
--------r-D8---------------------------------
INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------H-D8---------------------------------
INT D8 - Screen Thief v1.00 - RELOCATED IRQ0
Range: INT 78h to INT E0h, selected by commandline switch
Note: Screen Thief relocates IRQs 0 through 7 to INT D8 to INT DF by default,
but may be directed via a commandline switch to use any range
starting at a multiple of 8 between 78h and E0h
SeeAlso: INT 08"IRQ0",INT 2D/AL=10h"Screen Thief",INT 50"DESQview"
SeeAlso: INT D9"Screen Thief"
--------r-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
SeeAlso: INT 80"BASIC",INT D8"BASIC",INT DA"BASIC"
--------r-D9---------------------------------
INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------H-D9---------------------------------
INT D9 - Screen Thief v1.00 - RELOCATED IRQ1
Range: INT 79h to INT E1h, selected by commandline switch
Note: (see INT D8"Screen Thief")
SeeAlso: INT 09"IRQ1",INT D8"Screen Thief",INT DA"Screen Thief"
--------r-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
SeeAlso: INT 80"BASIC",INT D9"BASIC",INT DB"BASIC"
--------r-DA---------------------------------
INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------H-DA---------------------------------
INT DA - Screen Thief v1.00 - RELOCATED IRQ2
Range: INT 7Ah to INT E2h, selected by commandline switch
Note: (see INT D8"Screen Thief")
SeeAlso: INT 0A"IRQ2",INT D9"Screen Thief",INT DB"Screen Thief"
--------r-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
SeeAlso: INT 80"BASIC",INT DA"BASIC",INT DC"BASIC"
--------r-DB---------------------------------
INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------H-DB---------------------------------
INT DB - Screen Thief v1.00 - RELOCATED IRQ3
Range: INT 7Bh to INT E3h, selected by commandline switch
Note: (see INT D8"Screen Thief")
SeeAlso: INT 0B"IRQ3",INT DA"Screen Thief",INT DC"Screen Thief"
--------u-DC---------------------------------
INT DC - PC/370 v4.1- - API
SeeAlso: INT 60"PC/370"
--------r-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
SeeAlso: INT 80"BASIC",INT DB"BASIC",INT DD"BASIC"
--------r-DC---------------------------------
INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
--------H-DC---------------------------------
INT DC - Screen Thief v1.00 - RELOCATED IRQ4
Range: INT 7Ch to INT E4h, selected by commandline switch
Note: (see INT D8"Screen Thief")
SeeAlso: INT 0C"IRQ4",INT DB"Screen Thief",INT DD"Screen Thief"
--------r-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
SeeAlso: INT 80"BASIC",INT DC"BASIC",INT DE"BASIC"
--------r-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
--------H-DD---------------------------------
INT DD - Screen Thief v1.00 - RELOCATED IRQ5
Range: INT 7Dh to INT E5h, selected by commandline switch
Note: (see INT D8"Screen Thief")
SeeAlso: INT 0D"IRQ5",INT DC"Screen Thief",INT DE"Screen Thief"
--------r-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
SeeAlso: INT 80"BASIC",INT DD"BASIC",INT DF"BASIC"
--------r-DE---------------------------------
INT DE - APL*PLUS/PC - ???
Note: appears to be the same as INT 16
--------H-DE---------------------------------
INT DE - Screen Thief v1.00 - RELOCATED IRQ6
Range: INT 7Eh to INT E6h, selected by commandline switch
Note: (see INT D8"Screen Thief")
SeeAlso: INT 0E"IRQ6",INT DD"Screen Thief",INT DF"Screen Thief"
--------b-DF---------------------------------
INT DF - Victor 9000 - SuperBIOS
--------r-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
SeeAlso: INT 80"BASIC",INT DE"BASIC",INT E0"BASIC"
--------r-DF---------------------------------
INT DF - APL*PLUS/PC - SAME AS INT 10
SeeAlso: INT 10
--------H-DF---------------------------------
INT DF - Screen Thief v1.00 - RELOCATED IRQ7
Range: INT 7Fh to INT E7h, selected by commandline switch
Note: (see INT D8"Screen Thief")
SeeAlso: INT 0F"IRQ7",INT DE"Screen Thief"
--------r-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
SeeAlso: INT 80"BASIC",INT DF"BASIC",INT E1"BASIC"
--------r-E0---------------------------------
INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
SeeAlso: INT CF"APL"
--------v-E0---------------------------------
INT E0 - VIRUS - "Micro-128" - ???
Note: Micro-128 also overwrites the upper half of the interrupt table
SeeAlso: INT 9E"VIRUS",INT F1"VIRUS"
--------O-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
Notes: several functions are covered in more detail in following entries
most of these calls are also supported by Digital Research's DOS Plus
v2.1; the unsupported functions are 26h,29h-2Bh,3Ah,3Dh-62h,71h-8Ch,
90h-92h,94h-97h,9Bh-ABh, and AEh-FFh
SeeAlso: INT 21/AX=4459h,INT 21/AH=E0h"DOS Plus"


(Table 2417)
Values for CP/M-86,DR Multiuser DOS function number:
00h terminate calling process (see also INT 21/AH=00h)
01h read a character
02h write character to default console (see also INT 21/AH=02h)
03h read character from default AUX (see also INT 21/AH=03h)
04h write character to default AUX (see also INT 21/AH=04h)
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,#0506)
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 (see also INT 21/AX=4301h)
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 (not in DR DOS Plus v2.1)
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 (see also INT 21/AH=4Bh)
30h flush write-deferred buffers
31h get/set system variable (DOS Plus v2.1)
32h call BIOS (XIOS) character routine (see #2418)
33h set DMA address segment
34h get DMA buffer address
35h CP/M-86 allocate maximum memory
36h allocate maximum memory at specified segment
37h CP/M-86 allocate memory segment (see also INT 21/AH=48h)
38h allocate memory at specified segment
39h CP/M-86 free specified memory segment (see also INT 21/AH=49h)
3Ah CP/M-86 free all memory (not in DOS Plus v2.1)
3Bh load .CMD file into memory
3Ch (DOS Plus v2.1) call RSX program

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
6Ch (DOS Plus v2.1) get/set program return code
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 (yield CPU)
8Fh terminate calling process (same as function 00h)
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 (SYSDAT)
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
ADh (DOS Plus v2.1) write block to 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

(Table 2418)
Values for DOS Plus v2.1 XIOS functions:
00h terminate program
01h ???
02h check for console input status
03h read character from console
04h write character to console
05h write character to list device
06h write character to auxiliary device
07h read cahracter from auxiliary device
0Fh get list device status
10h-14h reserved
15h device initialization
16h check console output status
17h-7Fh reserved
---BBC Acorn---
80h get XIOS version
81h get Tube semaphore
82h release Tube semaphore
83h select text/graphics
84h update B&W graphics rectangle
85h update color graphics rectangle
86h get/release/update mouse
87h get system error info
88h entry in CLOCK called by WatchDog RSP
89h BBC OSBYTE function
8Ah BBC OSWORD function

(Table 2419)
Values for DR Multiuser DOS Error Return Code:
00h no error
01h system call not implemented
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
--------O-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
--------O-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
--------O-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
Desc: determine whether the current AUX device has input available
SeeAlso: INT E0/CL=03h,INT E0/CL=08h
--------O-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
Desc: determine whether the current AUX device is able to accept more output
SeeAlso: INT E0/CL=04h,INT E0/CL=07h
--------O-E0----CL59-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "S_MEMORY" - RESERVE MEMORY IN GLOBAL AREA
CL = 59h
DX = size in bytes
Return: AX = status
FFFFh failed
other successful
ES:BX -> reserved memory
--------O-E0----CL86-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE
CL = 86h
DS:DX -> queue descriptor (see #2420)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #2419)
SeeAlso: INT E0/CL=87h

Format of DR Multiuser DOS queue descriptor:
Offset Size Description (Table 2420)
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
--------O-E0----CL87-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_OPEN" - OPEN MESSAGE QUEUE
CL = 87h
DS:DX -> queue parameter block (see #2421)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #2419)
SeeAlso: INT E0/CL=86h,INT E0/CL=89h

Format of DR Multiuser DOS queue parameter block:
Offset Size Description (Table 2421)
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
--------O-E0----CL89-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_READ" - READ MESSAGE QUEUE
CL = 89h
DS:DX -> queue parameter block (see #2421)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #2419)
SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh
--------O-E0----CL8A-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CREAD" - CONDITIONALLY READ MSG QUEUE
CL = 8Ah
DS:DX -> queue parameter block (see #2421)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #2419)
SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch
--------O-E0----CL8B-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_WRITE" - WRITE MESSAGE QUEUE
CL = 8Bh
DS:DX -> queue parameter block (see #2421)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #2419)
SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch
--------O-E0----CL8C-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CWRITE" - CONDITIONALLY WRITE MSG QUEUE
CL = 8Ch
DS:DX -> queue parameter block (see #2421)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #2419)
SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh
--------O-E0----CL8E-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "P_DISPATCH" - CALL DISPATCHER
CL = 8Eh
DX = FFFFh (optional) to force dispatch
Return: nothing
Desc: allow other processes of the same or higher priority to run if they
are ready
Note: if DX=FFFFh, a dispatch is forced even if no other process is ready
SeeAlso: INT E0/CL=91h
--------O-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
--------O-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
SeeAlso: INT E0/CL=A6h
--------O-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
--------O-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=93h,INT E0/CL=A5h,INT E0/CL=A7h
--------O-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
--------O-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
Desc: specify which physical device will become AUX
SeeAlso: INT E0/CL=A5h,INT E0/CL=A9h
--------O-E0----CLA9-------------------------
INT E0 - DR Multiuser DOS - "A_GET" - GET DEFAULT AUX DEVICE NUMBER
CL = A9h
Return: AL = current default auxiliary device number
Desc: determine which physical device is currently AUX
SeeAlso: INT E0/CL=A8h
--------O-E0----CLAC-------------------------
INT E0 - DR Multiuser DOS - "A_READBLK" - READ STRING FROM AUX DEVICE
CL = ACh
DS:DX -> character control block (CHCB) (see #2422)
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 DR Multiuser DOS character control block (CHCB):
Offset Size Description (Table 2422)
00h DWORD pointer to character buffer
04h WORD length of character buffer
--------O-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
--------O-E0----CLB0-------------------------
INT E0 - DR Multiuser DOS - "A_CONFIG" - GET/SET AUX DEVICE PARAMETERS
CL = B0h
DX:DX -> AUX device parameter block (see #2423)
Return: AX = status
0000h successful
parameter block updated
FFFFh failed
CX = error code
SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h

Format of DR Multiuser DOS AUX device parameter block:
Offset Size Description (Table 2423)
00h BYTE function (00h get, 01h set)
01h BYTE baud rate (see #2425) FFh = don't change/unknown
02h BYTE parity (see #2424)
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

(Table 2424)
Values for DR Multiuser DOS AUX parity:
00h none
01h odd
02h none
03h even
04h stick parity bit
FFh don't change/unknown

(Table 2425)
Values for DR Multiuser DOS AUX 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
--------O-E0----CLB1-------------------------
INT E0 - DR Multiuser DOS - "A_CONTROL" - GET/SET AUX CONTROL PARAMETERS
CL = B1h
DS:DX -> AUX device control block (see #2426)
Return: AX = status
0000h successful
control block updated
FFFFh failed
CX = error code
SeeAlso: INT E0/CL=B0h,INT E0/CL=B2h

Format of DR Multiuser DOS AUX device control block:
Offset Size Description (Table 2426)
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)
--------O-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
--------O-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
SeeAlso: INT 15/AH=86h,INT 1A/AX=FF01h,INT 2F/AX=1224h,INT 62/AX=0096h
--------g-E00000-----------------------------
INT E0 - PCROBOTS v1.41 - "SWAPTASK" - END CURRENT ROBOT'S TURN
AX = 0000h
Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
which specially-written .COM or .EXE programs form robots battling
each other in a user-defined arena
--------g-E00001-----------------------------
INT E0 - PCROBOTS v1.41 - "MOVEMENT" - START MOVING
AX = 0001h
BX = speed (0-maximum for robot)
CX = direction (0-359 degrees)
Notes: the speed will change to the specified value at the maximum
acceleration the robot is capable of; if the robot is already moving
faster than its maximum maneuverability speed, it will not be able
to change direction
this call also terminates the current robot's turn
SeeAlso: AX=0000h,AX=0002h,AX=0003h
--------g-E00002-----------------------------
INT E0 - PCROBOTS v1.41 - "SCAN" - SCAN FOR OTHER ROBOTS IN THE GIVEN DIRECTION
AX = 0002h
BX = direction (0-359 degrees)
CX = resolution (0-45 degrees)
Return: AX = status
FFFFh if nothing detected
else robot ID (0-19)
BX = range to detected robot
Notes: the scan searches within CX degrees to either side of the specified
direction
the scanner will see right through walls, but shells will not pass
through walls
this call also terminates the current robot's turn
SeeAlso: AX=0000h,AX=0001h,AX=0003h
--------g-E00003-----------------------------
INT E0 - PCROBOTS v1.41 - "SHOOT" - FIRE A SHELL AT ANOTHER ROBOT
AX = 0003h
BX = direction (0-359 degrees)
CX = range (0-700)
Return: AX = status (0000h not fired, else ID of shell fired)
Notes: up to seven shells may be in flight for a robot at one time; the cannon
takes 50 ticks to reload
this call also terminates the current robot's turn
SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=002Ch
--------g-E00010-----------------------------
INT E0 - PCROBOTS v1.41 - "GETXY" - GET ROBOT'S CURRENT POSITION
AX = 0010h
Return: BX = current X coordinate (0-999)
CX = current Y coordinate (0-999)
--------g-E00011-----------------------------
INT E0 - PCROBOTS v1.41 - "TRANSMIT" - SEND DATA TO ANOTHER ROBOT
AX = 0011h
BX = target robot ID
CX = data to be sent
Return: AX = status (0000h data could not be sent, 0001h data sent)
Note: this call costs one unit of battery power
--------g-E00012-----------------------------
INT E0 - PCROBOTS v1.41 - "RECEIVE" - GET DATA FROM OTHER ROBOTS
AX = 0012h
Return: AX = status
0000h no data available
0001h data retrieved
BX = sender's ID
CX = data
Note: each robot has a 20-word receive FIFO; if the FIFO is full, other
robots will be unable to send more data until some is read
--------g-E00013-----------------------------
INT E0 - PCROBOTS v1.41 - "DAMAGE" - DETERMINE HOW MUCH DAMAGE SUSTAINED
AX = 0013h
Return: BX = damage status
Note: the initial value depends on configuration, but is typically 100; as
the robot is damaged, it decreases
--------g-E00014-----------------------------
INT E0 - PCROBOTS v1.41 - "SPEED" - DETERMINE HOW FAST ROBOT IS MOVING
AX = 0014h
Return: BX = current speed
--------g-E00015-----------------------------
INT E0 - PCROBOTS v1.41 - "BATTERY" - DETERMINE HOW MUCH BATTERY POWER LEFT
AX = 0015h
Return: BX = current battery charge
Note: the battery starts off with 1000 units of charge, and is constantly
being charged by solar panels and constantly discharged by motion;
the battery is charged at 4 units per turn and discharged at
0.1*speed units per turn.
--------g-E00016-----------------------------
INT E0 - PCROBOTS v1.41 - "TICKS" - DETERMINE HOW LONG SINCE GAME STARTED
AX = 0016h
Return: BX:CX = number of game ticks elapsed (not related to real time)
--------g-E00017-----------------------------
INT E0 - PCROBOTS v1.41 - "L_SIN" - GET SCALED SINE OF AN ANGLE
AX = 0017h
BX = angle (0-359 degrees)
Return: BX:CX = 100000*sine of angle
SeeAlso: AX=0018h,AX=0019h,AX=001Ah,AX=001Bh
--------g-E00018-----------------------------
INT E0 - PCROBOTS v1.41 - "L_COS" - GET SCALED COSINE OF AN ANGLE
AX = 0018h
BX = angle (0-359 degrees)
Return: BX:CX = 100000*cosine of angle
SeeAlso: AX=0017h,AX=0019h,AX=001Ah
--------g-E00019-----------------------------
INT E0 - PCROBOTS v1.41 - "L_TAN" - GET SCALED TANGENT OF AN ANGLE
AX = 0019h
BX = angle (0-359 degrees)
Return: BX:CX = 100000*tangent of angle
SeeAlso: AX=0017h,AX=0018h,AX=001Ah
--------g-E0001A-----------------------------
INT E0 - PCROBOTS v1.41 - "L_ATAN" - GET ANGLE GIVEN SCALED TANGENT
AX = 001Ah
BX:CX = 100000*tangent of an angle
Return: AX = angle (-90 to +90 degrees)
SeeAlso: AX=0017h,AX=0018h,AX=0019h
--------g-E0001B-----------------------------
INT E0 - PCROBOTS v1.41 - "SQRT" - DETERMINE SQUARE ROOT OF A NUMBER
AX = 001Bh
BX:CX = value
Return: BX:CX = square root
SeeAlso: AX=0017h
--------g-E0001C-----------------------------
INT E0 - PCROBOTS v1.41 - "SET_PATTERN" - SPECIFY ROBOT'S DISPLAY IMAGE
AX = 001Ch
BX:CX -> pattern array
Note: the pattern array consists of five bytes, the low five bits of each
specifying the bit pattern for one line of the robot's screen display
--------g-E0001D-----------------------------
INT E0 - PCROBOTS v1.41 - "DEBUG_FLAG" - SET/CLEAR MARKERS NEXT TO ROBOT'S NAME
AX = 001Dh
BX = flag number (0 or 1)
CX = new value (0 reset, 1 set)
Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
which specially-written .COM or .EXE programs form robots battling
each other in a user-defined arena
Note: the two flag markers may be used for any purpose, typically for
debugging to provide a visual display of progress
--------g-E0001E-----------------------------
INT E0 - PCROBOTS v1.41 - "BUY_ARMOUR" - BUY OR SELL ARMOR FOR ROBOT
AX = 001Eh
BX = number of armor units to buy (negative to sell)
Note: each armor unit is worth 50 battery units; the robot's armor rating
will not go above its initial rating, so attempts to purchase more
will waste battery units
SeeAlso: AX=001Fh
--------g-E0001F-----------------------------
INT E0 - PCROBOTS v1.41 - "BUY_SHELLS" - BUY ADDITIONAL CANNON SHELLS
AX = 001Fh
BX = number of shells to buy
Note: each shell costs ten battery units
SeeAlso: AX=001Eh,AX=0020h
--------g-E00020-----------------------------
INT E0 - PCROBOTS v1.41 - "SHELLS LEFT" - DETERMINE HOW MANY SHELLS ROBOT HAS
AX = 0020h
Return: BX = number of shells remaining
SeeAlso: AX=001Fh
--------g-E00021-----------------------------
INT E0 - PCROBOTS v1.41 - "GET LOCAL MAP"
AX = 0021h
BX:CX -> 81-byte buffer for map
Return: buffer filled with 9x9 area of map centered on robot's position

(Table 2427)
Values for PCROBOTS map squares:
2Eh '.' empty square
44h 'D' damaging trap
52h 'R' refueling point
58h 'X' wall
--------g-E00022-----------------------------
INT E0 - PCROBOTS v1.41 - "INVISIBILITY" - CONTROL ROBOT'S INVISIBILITY DEVICE
AX = 0022h
BX = new state (0000h become visible, 0001h become invisible)
Notes: this function has no effect if the robot is not capable of invisibility
the robot can only stay invisible for 100 turns, after which it will
automatically become visible; it must also be remain visible for
as many turns as it was invisible before it can turn invisible
again
SeeAlso: AX=0024h,AX=0080h
--------g-E00023-----------------------------
INT E0 - PCROBOTS v1.41 - "GET_SHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
AX = 0023h
Return: BX = status of last shell to land
0000h missed completely
0001h hit a wall
0002h hit a robot within 50-square radius
0003h hit a robot within 25-square radius
0004h hit a robot within 5-square radius
--------g-E00024-----------------------------
INT E0 - PCROBOTS v1.41 - "IS_INVISIBLE" - DETERMINE WHETHER ROBOT IS INVISIBLE
AX = 0024h
Return: BX = visibility (0000h visible, 0001h invisible)
SeeAlso: AX=0022h,AX=0080h
--------g-E00025-----------------------------
INT E0 - PCROBOTS v1.41 - "L_ATAN2" - GET ARCTANGENT
AX = 0025h
BX = Y
CX = X
Return: AX = angle (arctangent of Y/X)
--------g-E00026-----------------------------
INT E0 - PCROBOTS v1.41 - "GET_ROBOT_ID" - DETERMINE CURRENT ROBOT'S IDENTIFIER
AX = 0026h
Return: AX = robot ID
--------g-E00027-----------------------------
INT E0 - PCROBOTS v1.41 - "REGISTER_IFF" - REGISTER FRIEND/FOE IDENT STRING

AX = 0027h
BX:CX = ASCIZ IFF string
Note: the IFF string may only be set once
SeeAlso: AX=0028h,AX=0029h
--------g-E00028-----------------------------
INT E0 - PCROBOTS v1.41 - "CHECK_IFF" - QUERY FRIEND/FOE IDENTIFICATION STRING
AX = 0028h
BX = robot ID to test
Return: AX = status
0000h IFF strings match
0001h IFF strings differ or invalid robot ID
SeeAlso: AX=0027h
--------g-E00029-----------------------------
INT E0 - PCROBOTS v1.41 - "REGISTER_NAME" - SPECIFY ROBOT'S NAME
AX = 0029h
BX:CX -> ASCIZ name string
Note: the name may only be set once
SeeAlso: AX=0027h,AX=002Ah
--------g-E0002A-----------------------------
INT E0 - PCROBOTS v1.41 - "FIND_NAME" - SEARCH FOR ROBOT WITH GIVEN NAME
AX = 002Ah
BX:CX -> ASCIZ name string
DX = first ID to check
Return: AX = robot ID or FFFFh if no robot with specified name
SeeAlso: AX=0028h,AX=0029h,AX=002Bh
--------g-E0002B-----------------------------
INT E0 - PCROBOTS v1.41 - "GET_TEAM_ID" - DETERMINE TEAM MEMBERSHIP OF ROBOT
AX = 002Bh
Return: AX = team ID (0-2) or FFFFh if 'loner'
SeeAlso: AX=0029h
--------g-E0002C-----------------------------
INT E0 - PCROBOTS v1.41 - "GET_ASHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
AX = 002Ch
BX = shell ID
Return: AX = status
0000h missed completely
0001h hit a wall
0002h hit a robot within a 50-square radius
0003h hit a robot within a 25-square radius
0004h hit a robot within a 5-square radius
0005h shell not known (too old or not yet fired)
0006h shell still in flight
SeeAlso: AX=0003h
--------g-E0002D-----------------------------
INT E0 - PCROBOTS v1.41 - "REGISTER_X" - SELECT AUTOMATIC X POSITION UPDATES
AX = 002Dh
BX:CX -> X word variable
Return: AX = status (0001h OK, 0000h problem with address)
Note: after this call, PCROBOTS will automatically update the specified
word whenever the robot moves
SeeAlso: AX=002Eh
--------g-E0002E-----------------------------
INT E0 - PCROBOTS v1.41 - "REGISTER_Y" - SELECT AUTOMATIC Y POSITION UPDATES
AX = 002Eh
BX:CX -> Y word variable
Return: AX = status (0001h OK, 0000h problem with address)
Note: after this call, PCROBOTS will automatically update the specified
word whenever the robot moves
SeeAlso: AX=002Dh
--------g-E00080-----------------------------
INT E0 - PCROBOTS v1.41 - "CONFIGURE" - CUSTOMIZE ROBOT
AX = 0080h
BX = basic configuration (see #2428)
CX = advanced configuration (see #2429)
Return: AX = status (0001h OK, 0000h not first call in program)
Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
which specially-written .COM or .EXE programs form robots battling
each other in a user-defined arena
Notes: a maximum of ten points may be allocated to the robot; if you attempt
to allocate more, some items will be given a value of zero. If this
function is not called, each attribute is set to the default value
of 2.
if the invisibility option is chosen, the robot will start with only
900 cannon shells instead of the default 1000

Bitfields for PCROBOTS basic configuration:
Bit(s) Description (Table 2428)
0-3 maximum speed (0-4 = 50,75,100,150,200)
4-7 maneuverability (0-4 = 20%,35%,50%,75%,100%)
8-11 cannon range (0-4 = 300,500,700,1000,1500)
12-15 robot armor (0-4 = 50,75,100,150,200)

Bitfields for PCROBOTS advanced configuration:
Bit(s) Description (Table 2429)
0-2 robot acceleration (0-4 = 5,7,10,15,20)
3 capable of invisibility
--------r-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
--------N-E1---------------------------------
INT E1 - PC Cluster Disk Server Information (NOT A VECTOR!)
Desc: points at a data table
SeeAlso: INT E2
--------r-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
--------N-E2---------------------------------
INT E2 - PC Cluster Program - RELOCATED INT 1C
SeeAlso: INT 1C
--------r-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
--------r-E40005-----------------------------
INT E4 - Logitech Modula v2.0 - MonitorEntry
AX = 0005h
BX = priority
SeeAlso: AX=0006h
--------r-E40006-----------------------------
INT E4 - Logitech Modula v2.0 - MonitorExit
AX = 0006h
SeeAlso: AX=0005h
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------r-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
--------N-EC---------------------------------
INT EC - used by Alloy NTNX
--------r-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
Desc: 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 MS-DOS.
Note: the interrupt handler removes the return address and flags placed on
the stack by the INT EC, then jumps to the appropriate function
--------r-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
INT 80 through INT ED are modified but not restored by Direct Access
v4.0, and may be left dangling by other programs written with the
same version of compiled BASIC
SeeAlso: INT EC"BASIC",INT EE"BASIC"
--------r-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
SeeAlso: INT ED"BASIC",INT EE"BASIC"
--------r-EF---------------------------------
INT EF - BASIC - ORIGINAL INT 09 VECTOR
Note: BASIC.COM/BASICA.COM do not restore vector on termination
SeeAlso: INT EE"BASIC",INT F0"BASIC"
--------O-EF----CX0473-----------------------
INT EF - GEM - INTERFACE
CX = 0473h
DS:DX -> GEM parameter block
--------r-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
--------s-F1---------------------------------
INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
DS:BX -> '$'-terminated text string
Program: SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
--------s-F1---------------------------------
INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
SeeAlso: INT F2"SPEECH"
--------U-F1---------------------------------
INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS
Return: AX:BX -> data area
Program: AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1
and COM2 in software
Note: 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
Index: installation check;AQUEDUCT|installation check;PIPELINE
--------N-F1---------------------------------
INT F1 - NetWare Remote Boot - INSTALLATION CHECK (NOT A VECTOR!)
Note: if this vector contains the value 5774654Eh ("NetW"), the remote boot
BIOS extension is active, and access to the floppy disk is redirected
to an image file in the server's SYS:LOGIN directory
--------v-F1---------------------------------
INT F1 - VIRUS - "Violetta" - ???
Note: used but not chained by virus
SeeAlso: INT E0"VIRUS",INT FF"VIRUS"
--------*-F2---------------------------------
INT F2 - reserved for user interrupt
--------s-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 number (see #2430)
???
Return: ???
Program: ImageCapture is a product of International Computers
SeeAlso: INT F3"ICCTSR"

(Table 2430)
Values for ImageCapture 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
--------*-F3---------------------------------
INT F3 - reserved for user interrupt
--------s-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
Program: ImageCapture is a product of International Computers
SeeAlso: INT F2"ICCTSR"
--------*-F4---------------------------------
INT F4 - reserved for user interrupt
--------T-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
--------T-F5---------------------------------
INT F5 - DoubleDOS - ???
--------*-F6---------------------------------
INT F6 - reserved for user interrupt
--------T-F6---------------------------------
INT F6 - DoubleDOS - ???
--------*-F7---------------------------------
INT F7 - reserved for user interrupt
--------T-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 - reserved for user interrupt
--------h-F8---------------------------------
INT F8 - TANDY??? - 100 HZ INTERRUPT
Note: this vector is not used on the Tandy 1000TL
SeeAlso: INT FA"USART"
--------T-F8---------------------------------
INT F8 - DoubleDOS - ???
--------*-F9---------------------------------
INT F9 - reserved for user interrupt
--------T-F9---------------------------------
INT F9 - DoubleDOS - ???
--------*-FA---------------------------------
INT FA - reserved for user interrupt
--------h-FA---------------------------------
INT FA - TANDY??? - SERIAL PORT USART INTERRUPT
Note: this vector is not used on the Tandy 1000TL
SeeAlso: INT F8"100 HZ",INT FB"USART"
--------T-FA---------------------------------
INT FA - DoubleDOS - TURN OFF TIMESHARING
SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
--------*-FB---------------------------------
INT FB - reserved for user interrupt
--------h-FB---------------------------------
INT FB - TANDY??? - KEYBOARD USART RECEIVE INTERRUPT
SeeAlso: INT FA"USART"
--------T-FB---------------------------------
INT FB - DoubleDOS - TURN ON TIMESHARING
SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
--------*-FC---------------------------------
INT FC - reserved for user interrupt
--------T-FC---------------------------------
INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
Return: ES = segment of display buffer
Desc: determine the address of the virtual screen to which the program
should write instead of the actual video memory, so that the
multitasked programs do not interfere with each other's output
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
--------T-FD---------------------------------
INT FD - DoubleDOS - ???
--------S-FD---------------------------------
INT FD - TFPCX - INSTALLATION CHECK
AH = function (see separate entries below)
Program: TFPCX is an interface between modem and terminal program for packet-
radio communications
Notes: the installation check consists of testing for the string "N5NX" three
bytes beyond the interrupt handler; INT FD is the default, but may
be changed, so the full installation check consists of scanning
for the signature
TFPCX returns AX=FFFFh on any unsupported function call
SeeAlso: AH=01h,AH=03h,AH=FEh
--------S-FD01-------------------------------
INT FD - TFPCX - TEST FOR CHARACTER WAITING
AH = 01h
Return: AX = status
0000h no characters waiting
0001h character available for input
Program: TFPCX is an interface between modem and terminal program for packet-
radio communications
SeeAlso: AH=02h
--------S-FD02-------------------------------
INT FD - TFPCX - GET CHARACTER
AH = 02h
Return: AL = character
Notes: this call is only allowed if AH=01h indicated that a character is
available
all available characters should be read before sending any additional
characters
SeeAlso: AH=01h,AH=03h
--------S-FD03-------------------------------
INT FD - TFPCX - OUTPUT CHARACTER
AH = 03h
AL = character to send
SeeAlso: AH=02h
--------S-FDFE-------------------------------
INT FD - TFPCX - GET VERSION
AH = FEh
Return: AH = major version
AL = minor version
Program: TFPCX is an interface between modem and terminal program for packet-
radio communications
SeeAlso: AH=01h,AH=03h
--------B-FE---------------------------------
INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
Note: the ROM BIOS uses 0030h:0100h as the initial stack on startup, which
is the last fourth of the interrupt vector table. If the processor
is returned to real mode via a hardware reset (the only possibility
on an 80286, though there are a number of ways of generating one),
then the BIOS startup code stacks three words on its scratch stack
before determining that a return to real mode has been requested.
As a result, INT FE and INT FF are corrupted.
SeeAlso: INT FF"XT286"
--------T-FE---------------------------------
INT FE - DoubleDOS - GIVE UP TIME
AL = number of 55ms time slices to give away
Return: after other program (if active) has run
SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
--------G-FE---------------------------------
INT FE - Turbo Debugger 8086 v2.5+ - OVERLAY MANAGER
SeeAlso: INT 3F
--------B-FF---------------------------------
INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
Note: (see INT FE"XT286")
SeeAlso: INT FE"XT286"
--------b-FF---------------------------------
INT FF - Z100 - WARM BOOT
SeeAlso: INT 40"Z100"
--------Q-FF---------------------------------
INT FF U - QEMM-386.SYS v6.0+ - internal
Notes: requires that a byte in the conventional-memory stub be set to the
desired function number (00h through 0Ch)

(Table 2431)
Values for QEMM internal functions:
00h reflect back to Virtual86-mode interrupt handler (default)
01h ???
02h access DR7???
03h QPI upcall (see INT 67/AH=3Fh)
04h ???
05h ???
06h INT 15/AH=87h
07h EMS services (see INT 67/AH=40h,INT 67/AH=5Dh)
08h ???
09h QEMM exception handler
0Ah XMS services (see INT 2F/AX=4310h)
0Bh Virtual DMA Services (see INT 4B/AX=8102h)
0Ch ???
--------v-FF---------------------------------
INT FF - VIRUS - "Violetta" - ???
Note: used but not chained by virus
SeeAlso: INT E0"VIRUS",INT F1"VIRUS"
--------!---Admin----------------------------
Highest Table Number = 2431
--------!---FILELIST-------------------------
Please redistribute all of the files comprising the interrupt list (listed at
the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a
trio of archives named INTER43A through INTER43C (preferably the original
authenticated PKZIP archives), and the utility programs in a fourth archive
called INTER43D.ZIP

This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
--------!---CONTACT_INFO---------------------
Internet: [email protected]
UUCP: {uunet,harvard}!telerama.lm.com!ralf
FIDO: Ralf Brown 1:129/26.1
or post a message to me in the DR_DEBUG echo (I probably won't see it
unless you address it to me)
CIS: >INTERNET:[email protected]


  3 Responses to “Category : Tutorials + Patches
Archive   : INTER43C.ZIP
Filename : INTERRUP.L

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/